blob: 98bf849cc6813da87af1e5cb83f8e46dfc10fffb [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.network;
import com.cloud.network.vpc.Vpc;
import com.cloud.offering.NetworkOffering;
/**
* The NetworkMigrationManager should be used for migration purpose ONLY.
*/
public interface NetworkMigrationManager {
String MIGRATION = "migration";
/**
* Returns a copy of the provided network.
* All nics in the orginal network will be re-assigned to the newly created network.
* All network details will be copied to the newly created network.
* @param network the network to be copied
* @param networkOffering the network offering of the network that is copied
* @return the networkid of the copy
*/
long makeCopyOfNetwork(Network network, NetworkOffering networkOffering, Long vpcId);
/**
* Returns a copy of the provided vpc
* All acls rules and public ips will be re-assigned to the newly created vpc.
* @param vpcId the vpc id of the vpc that needs to be copied
* @param vpcOfferingId the new vpc offering id
* @return the vpc id of the copy
*/
Long makeCopyOfVpc(long vpcId, long vpcOfferingId);
/**
* Starts the vpc if, the vpc is not already started
*/
void startVpc(Vpc vpc);
/**
* Upgrade the physical network and the offering of a network.
* @param networkId the networkid of the network that needs to be upgraded.
* @param newPhysicalNetworkId the id of the new physical network where the network should be moved to.
* @param networkOfferingId the new network offering.
* @return the networkid of the upgraded network
*/
Network upgradeNetworkToNewNetworkOffering (long networkId, long newPhysicalNetworkId, long networkOfferingId, Long vpcId);
/**
* Deletes the copy of a network which was previously created by the networkMigrationManager
* For deletion of the copy the old UUID of the original network is used to assure that plugins, using the UUID, clean up the network correctly.
* @param networkCopyId the networkId of the copied network
* @param originalNetworkId the networkId of the original network
*/
void deleteCopyOfNetwork(long networkCopyId, long originalNetworkId);
/**
* Deletes the copy of a vpc which was previously created by the networkMigrationManager
* For deletion the copy of the old UUID of the original vpc is used to assure that plugins, using the UUID, clean up the vpc correctly.
* @param vpcCopyId the vpc id of the copied vpc
* @param originalVpcId the vpc id of the original vpc
*/
void deleteCopyOfVpc(long vpcCopyId, long originalVpcId);
/**
* Moves all the nics from the srcNetwork to the network in the new physical network.
* The nics in the source network will be marked as removed afterwards.
* @param srcNetwork the source network containing the nics to be moved
* @param networkInNewPhysicalNet the destination network where the nics need to be recreated.
*/
void assignNicsToNewPhysicalNetwork(Network srcNetwork, Network networkInNewPhysicalNet);
}