diff --git a/api/src/com/cloud/agent/api/PlugNicCommand.java b/api/src/com/cloud/agent/api/PlugNicCommand.java index 7d340046bb2..1dbd79c6896 100644 --- a/api/src/com/cloud/agent/api/PlugNicCommand.java +++ b/api/src/com/cloud/agent/api/PlugNicCommand.java @@ -13,19 +13,14 @@ package com.cloud.agent.api; import com.cloud.agent.api.to.NicTO; -import com.cloud.agent.api.to.VirtualMachineTO; /** * @author Alena Prokharchyk */ public class PlugNicCommand extends Command { - VirtualMachineTO vm; - NicTO nic; - - public VirtualMachineTO getVirtualMachine() { - return vm; - } + NicTO nic; + String instanceName; public NicTO getNic() { return nic; @@ -39,9 +34,12 @@ public class PlugNicCommand extends Command { protected PlugNicCommand() { } - public PlugNicCommand(VirtualMachineTO vm, NicTO nic) { - this.vm = vm; + public PlugNicCommand(NicTO nic, String instanceName) { this.nic = nic; + this.instanceName = instanceName; } + public String getVmName() { + return instanceName; + } } diff --git a/api/src/com/cloud/agent/api/UnPlugNicCommand.java b/api/src/com/cloud/agent/api/UnPlugNicCommand.java index 26d9441092f..d5cffb3ea96 100644 --- a/api/src/com/cloud/agent/api/UnPlugNicCommand.java +++ b/api/src/com/cloud/agent/api/UnPlugNicCommand.java @@ -13,18 +13,13 @@ package com.cloud.agent.api; import com.cloud.agent.api.to.NicTO; -import com.cloud.agent.api.to.VirtualMachineTO; /** * @author Alena Prokharchyk */ public class UnPlugNicCommand extends Command{ - VirtualMachineTO vm; NicTO nic; - - public VirtualMachineTO getVirtualMachine() { - return vm; - } + String instanceName; public NicTO getNic() { return nic; @@ -38,8 +33,12 @@ public class UnPlugNicCommand extends Command{ protected UnPlugNicCommand() { } - public UnPlugNicCommand(VirtualMachineTO vm, NicTO nic) { - this.vm = vm; + public UnPlugNicCommand(NicTO nic, String instanceName) { this.nic = nic; + this.instanceName = instanceName; + } + + public String getInstanceName() { + return instanceName; } } diff --git a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index cf088c186c7..b28c58cffd5 100755 --- a/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/core/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -1105,7 +1105,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa try { VmwareHypervisorHost hyperHost = getHyperHost(context); - String vmName = cmd.getVirtualMachine().getName(); + String vmName = cmd.getVmName(); VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(vmName); if(vmMo == null) { @@ -1179,7 +1179,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa try { VmwareHypervisorHost hyperHost = getHyperHost(context); - String vmName = cmd.getVirtualMachine().getName(); + String vmName = cmd.getInstanceName(); VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(vmName); if(vmMo == null) { diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 9d0d94f1abb..e0b571fdf37 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -7223,8 +7223,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe */ private UnPlugNicAnswer execute(UnPlugNicCommand cmd) { Connection conn = getConnection(); - VirtualMachineTO vmto = cmd.getVirtualMachine(); - String vmName = vmto.getName(); + String vmName = cmd.getInstanceName(); try { Set vms = VM.getByNameLabel(conn, vmName); if ( vms == null || vms.isEmpty() ) { @@ -7259,8 +7258,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe */ private PlugNicAnswer execute(PlugNicCommand cmd) { Connection conn = getConnection(); - VirtualMachineTO vmto = cmd.getVirtualMachine(); - String vmName = vmto.getName(); + String vmName = cmd.getVmName(); try { Set vms = VM.getByNameLabel(conn, vmName); if ( vms == null || vms.isEmpty() ) { diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index c9fc65cb477..191ebde33b8 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -3400,9 +3400,10 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura sc.addAnd("systemOnly", SearchCriteria.Op.EQ, false); // if networkId is specified, list offerings available for upgrade only (for this network) + Network network = null; if (networkId != null) { // check if network exists and the caller can operate with it - Network network = _networkMgr.getNetwork(networkId); + network = _networkMgr.getNetwork(networkId); if (network == null) { throw new InvalidParameterValueException("Unable to find the network by id", null); } @@ -3462,7 +3463,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura boolean listBySupportedServices = (supportedServicesStr != null && !supportedServicesStr.isEmpty() && !offerings.isEmpty()); boolean checkIfProvidersAreEnabled = (zoneId != null); boolean parseOfferings = (listBySupportedServices || sourceNatSupported != null || checkIfProvidersAreEnabled - || forVpc != null); + || forVpc != null || network != null); if (parseOfferings) { List supportedOfferings = new ArrayList(); @@ -3511,7 +3512,9 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura } if (forVpc != null) { - addOffering = addOffering && (isOfferingForVpc(offering) == forVpc.booleanValue()); + addOffering = addOffering && (isOfferingForVpc(offering) == forVpc.booleanValue()); + } else if (network != null){ + addOffering = addOffering && (isOfferingForVpc(offering) == (network.getVpcId() != null)); } if (addOffering) { diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index cc2255dd3c6..9bb2ae3c147 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -2528,17 +2528,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag _nicDao.expunge(nic.getId()); } } - - private String getCidrAddress(String cidr) { - String[] cidrPair = cidr.split("\\/"); - return cidrPair[0]; - } - - private int getCidrSize(String cidr) { - String[] cidrPair = cidr.split("\\/"); - return Integer.parseInt(cidrPair[1]); - } - + + @Override public void checkVirtualNetworkCidrOverlap(Long zoneId, String cidr) { if (zoneId == null) { @@ -4677,6 +4668,14 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag idList.add(new IdentityProxy(networkOffering, networkOfferingId, "networkOfferingId")); throw new InvalidParameterValueException("Network offering with specified id is not in " + NetworkOffering.State.Enabled + " state, can't upgrade to it", idList); } + + //can't update from vpc to non-vpc network offering + boolean forVpcNew = _configMgr.isOfferingForVpc(networkOffering); + boolean vorVpcOriginal = _configMgr.isOfferingForVpc(_configMgr.getNetworkOffering(oldNetworkOfferingId)); + if (forVpcNew != vorVpcOriginal) { + String errMsg = forVpcNew ? "a vpc offering " : "not a vpc offering"; + throw new InvalidParameterValueException("Can't update as the new offering is " + errMsg); + } //perform below validation if the network is vpc network if (network.getVpcId() != null) { @@ -4739,7 +4738,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag ReservationContext context = new ReservationContextImpl(null, null, callerUser, callerAccount); // 1) Shutdown all the elements and cleanup all the rules. Don't allow to shutdown network in intermediate -// states - Shutdown and Implementing + // states - Shutdown and Implementing boolean validStateToShutdown = (network.getState() == Network.State.Implemented || network.getState() == Network.State.Setup || network.getState() == Network.State.Allocated); if (restartNetwork) { if (validStateToShutdown) { diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index e2143a8817f..bfb53ce2150 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -326,7 +326,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian DomainRouterVO router = _routerDao.findById(vm.getId()); if (router.getState() == State.Running) { try { - PlugNicCommand plugNicCmd = new PlugNicCommand(vm, nic); + PlugNicCommand plugNicCmd = new PlugNicCommand(nic, vm.getName()); Commands cmds = new Commands(OnError.Stop); cmds.addCommand("plugnic", plugNicCmd); @@ -361,7 +361,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian if (router.getState() == State.Running) { try { - UnPlugNicCommand unplugNicCmd = new UnPlugNicCommand(vm, nic); + UnPlugNicCommand unplugNicCmd = new UnPlugNicCommand(nic, vm.getName()); Commands cmds = new Commands(OnError.Stop); cmds.addCommand("unplugnic", unplugNicCmd); _agentMgr.send(dest.getHost().getId(), cmds); @@ -794,7 +794,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } } - PlugNicCommand plugNicCmd = new PlugNicCommand(_itMgr.toVmTO(profile), getNicTO(router, publicNic.getNetworkId(), publicNic.getBroadcastUri().toString())); + PlugNicCommand plugNicCmd = new PlugNicCommand(getNicTO(router, publicNic.getNetworkId(), publicNic.getBroadcastUri().toString()), router.getInstanceName()); cmds.addCommand(plugNicCmd); } @@ -807,7 +807,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian for (Pair nicNtwk : guestNics) { Nic guestNic = nicNtwk.first(); //plug guest nic - PlugNicCommand plugNicCmd = new PlugNicCommand(_itMgr.toVmTO(profile), getNicTO(router, guestNic.getNetworkId(), null)); + PlugNicCommand plugNicCmd = new PlugNicCommand(getNicTO(router, guestNic.getNetworkId(), null), router.getInstanceName()); cmds.addCommand(plugNicCmd); if (!_networkMgr.isPrivateGateway(guestNic)) {