Fixed addDhcpEntry/userdata/password in VPC setup
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/7e119e4c Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/7e119e4c Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/7e119e4c Branch: refs/heads/vpc Commit: 7e119e4c94b193d319cfd5ec944c3031f8380982 Parents: c6364df Author: Alena Prokharchyk <[email protected]> Authored: Mon Jun 11 13:37:38 2012 -0700 Committer: Alena Prokharchyk <[email protected]> Committed: Fri Jun 15 14:27:24 2012 -0700 ---------------------------------------------------------------------- .../src/com/cloud/network/NetworkManagerImpl.java | 2 +- .../network/element/VirtualRouterElement.java | 119 ++++++--------- .../network/element/VpcVirtualRouterElement.java | 76 ++++------ .../router/VirtualNetworkApplianceManagerImpl.java | 32 +++- server/src/com/cloud/network/vpc/VpcManager.java | 7 + .../src/com/cloud/network/vpc/VpcManagerImpl.java | 9 + server/src/com/cloud/vm/VirtualMachineManager.java | 3 +- .../com/cloud/vm/VirtualMachineManagerImpl.java | 7 +- .../cloud/vm/MockVirtualMachineManagerImpl.java | 2 +- wscript | 2 +- 10 files changed, 122 insertions(+), 137 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/src/com/cloud/network/NetworkManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 3ef93dd..d67b9ea 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -3395,7 +3395,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag private boolean shutdownNetworkElementsAndResources(ReservationContext context, boolean cleanupElements, NetworkVO network) { // 1) Cleanup all the rules for the network. If it fails, just log the failure and proceed with shutting down -// the elements + // the elements boolean cleanupResult = true; try { cleanupResult = shutdownNetworkResources(network.getId(), context.getAccount(), context.getCaller().getId()); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/src/com/cloud/network/element/VirtualRouterElement.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index f22b348..47fd9f8 100755 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -80,6 +80,7 @@ import com.cloud.vm.ReservationContext; import com.cloud.vm.UserVmManager; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.State; +import com.cloud.vm.VirtualMachine.Type; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.UserVmDao; @@ -174,15 +175,6 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl DataCenter.class, network.getDataCenterId()); } - for (VirtualRouter router : routers) { - //Add router to guest network - if (!_routerMgr.addRouterToGuestNetwork(router, network, false)) { - throw new CloudRuntimeException("Failed to add router " + router + " to guest network " + network); - } else { - s_logger.debug("Successfully added router " + router + " to guest network " + network); - } - } - return true; } @@ -216,12 +208,16 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl DataCenter.class, network.getDataCenterId()); } - for (VirtualRouter router : routers) { - //Add router to guest network - if (!_routerMgr.addRouterToGuestNetwork(router, network, false)) { - throw new CloudRuntimeException("Failed to add router " + router + " to guest network " + network); - } else { - s_logger.debug("Successfully added router " + router + " to guest network " + network); + if (vm.getType() == Type.User) { + for (VirtualRouter router : routers) { + if (!_networkMgr.isVmPartOfNetwork(router.getId(), network.getId())) { + //Add router to guest network + if (!_routerMgr.addRouterToGuestNetwork(router, network, false)) { + throw new CloudRuntimeException("Failed to add router " + router + " to guest network " + network); + } else { + s_logger.debug("Successfully added router " + router + " to guest network " + network); + } + } } } @@ -790,35 +786,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @SuppressWarnings("unchecked") VirtualMachineProfile<UserVm> uservm = (VirtualMachineProfile<UserVm>) vm; - boolean publicNetwork = false; - if (_networkMgr.isProviderSupportServiceInNetwork(network.getId(), Service.SourceNat, getProvider())) { - publicNetwork = true; - } - boolean isPodBased = (dest.getDataCenter().getNetworkType() == NetworkType.Basic - || _networkMgr.isSecurityGroupSupportedInNetwork(network)) && - network.getTrafficType() == TrafficType.Guest; - - List<DomainRouterVO> routers; - - if (publicNetwork) { - routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); - } else { - Long podId = dest.getPod().getId(); - if (isPodBased) { - routers = _routerDao.listByNetworkAndPodAndRole(network.getId(), podId, Role.VIRTUAL_ROUTER); - } else { - routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); - } - } - - // for Basic zone, add all Running routers - we have to send Dhcp/vmData/password info to them when - // network.dns.basiczone.updates is set to "all" - Long podId = dest.getPod().getId(); - if (isPodBased && _routerMgr.getDnsBasicZoneUpdate().equalsIgnoreCase("all")) { - List<DomainRouterVO> allRunningRoutersOutsideThePod = _routerDao.findByNetworkOutsideThePod(network.getId(), - podId, State.Running, Role.VIRTUAL_ROUTER); - routers.addAll(allRunningRoutersOutsideThePod); - } + List<DomainRouterVO> routers = getRouters(network, dest); if ((routers == null) || (routers.size() == 0)) { throw new ResourceUnavailableException("Can't find at least one router!", DataCenter.class, network.getDataCenterId()); @@ -841,35 +809,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @SuppressWarnings("unchecked") VirtualMachineProfile<UserVm> uservm = (VirtualMachineProfile<UserVm>) vm; - boolean publicNetwork = false; - if (_networkMgr.isProviderSupportServiceInNetwork(network.getId(), Service.SourceNat, getProvider())) { - publicNetwork = true; - } - boolean isPodBased = (dest.getDataCenter().getNetworkType() == NetworkType.Basic - || _networkMgr.isSecurityGroupSupportedInNetwork(network)) && - network.getTrafficType() == TrafficType.Guest; - - List<DomainRouterVO> routers; - - if (publicNetwork) { - routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); - } else { - Long podId = dest.getPod().getId(); - if (isPodBased) { - routers = _routerDao.listByNetworkAndPodAndRole(network.getId(), podId, Role.VIRTUAL_ROUTER); - } else { - routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); - } - } - - // for Basic zone, add all Running routers - we have to send Dhcp/vmData/password info to them when - // network.dns.basiczone.updates is set to "all" - Long podId = dest.getPod().getId(); - if (isPodBased && _routerMgr.getDnsBasicZoneUpdate().equalsIgnoreCase("all")) { - List<DomainRouterVO> allRunningRoutersOutsideThePod = _routerDao.findByNetworkOutsideThePod(network.getId(), - podId, State.Running, Role.VIRTUAL_ROUTER); - routers.addAll(allRunningRoutersOutsideThePod); - } + List<DomainRouterVO> routers = getRouters(network, dest); if ((routers == null) || (routers.size() == 0)) { throw new ResourceUnavailableException("Can't find at least one router!", DataCenter.class, network.getDataCenterId()); @@ -880,6 +820,39 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl return false; } + protected List<DomainRouterVO> getRouters(Network network, DeployDestination dest) { + boolean publicNetwork = false; + if (_networkMgr.isProviderSupportServiceInNetwork(network.getId(), Service.SourceNat, getProvider())) { + publicNetwork = true; + } + boolean isPodBased = (dest.getDataCenter().getNetworkType() == NetworkType.Basic + || _networkMgr.isSecurityGroupSupportedInNetwork(network)) && + network.getTrafficType() == TrafficType.Guest; + + List<DomainRouterVO> routers; + + if (publicNetwork) { + routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); + } else { + Long podId = dest.getPod().getId(); + if (isPodBased) { + routers = _routerDao.listByNetworkAndPodAndRole(network.getId(), podId, Role.VIRTUAL_ROUTER); + } else { + routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER); + } + } + + // for Basic zone, add all Running routers - we have to send Dhcp/vmData/password info to them when + // network.dns.basiczone.updates is set to "all" + Long podId = dest.getPod().getId(); + if (isPodBased && _routerMgr.getDnsBasicZoneUpdate().equalsIgnoreCase("all")) { + List<DomainRouterVO> allRunningRoutersOutsideThePod = _routerDao.findByNetworkOutsideThePod(network.getId(), + podId, State.Running, Role.VIRTUAL_ROUTER); + routers.addAll(allRunningRoutersOutsideThePod); + } + return routers; + } + @Override public List<? extends VirtualRouterProvider> searchForVirtualRouterElement(ListVirtualRouterElementsCmd cmd) { Long id = cmd.getId(); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/src/com/cloud/network/element/VpcVirtualRouterElement.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java index cf4bd0b..5534e0d 100644 --- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java @@ -31,18 +31,19 @@ import com.cloud.network.Network.Capability; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; import com.cloud.network.NetworkService; -import com.cloud.network.VpcVirtualNetworkApplianceService; import com.cloud.network.router.VirtualRouter; import com.cloud.network.router.VpcVirtualNetworkApplianceManager; import com.cloud.network.vpc.Vpc; -import com.cloud.network.vpc.VpcService; +import com.cloud.network.vpc.VpcManager; import com.cloud.offering.NetworkOffering; +import com.cloud.uservm.UserVm; import com.cloud.utils.component.Inject; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.NicProfile; import com.cloud.vm.ReservationContext; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.Type; import com.cloud.vm.VirtualMachineProfile; /** @@ -54,15 +55,12 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc @Inject NetworkService _ntwkService; @Inject - VpcService _vpcService; + VpcManager _vpcMgr; @Inject - VpcVirtualNetworkApplianceService _vpcMgr; + VpcVirtualNetworkApplianceManager _vpcRouterMgr; private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities(); - - @Inject - VpcVirtualNetworkApplianceManager _vpcRouterMgr; @Override @@ -133,7 +131,7 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc return false; } - Vpc vpc = _vpcService.getActiveVpc(vpcId); + Vpc vpc = _vpcMgr.getActiveVpc(vpcId); if (vpc == null) { s_logger.warn("Unable to find Enabled VPC by id " + vpcId); return false; @@ -148,15 +146,6 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc DataCenter.class, network.getDataCenterId()); } - for (VirtualRouter router : routers) { - //Add router to guest network - if (!_vpcMgr.addVpcRouterToGuestNetwork(router, network, false)) { - throw new CloudRuntimeException("Failed to add VPC router " + router + " to guest network " + network); - } else { - s_logger.debug("Successfully added VPC router " + router + " to guest network " + network); - } - } - return true; } @@ -171,7 +160,7 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc return false; } - Vpc vpc = _vpcService.getActiveVpc(vpcId); + Vpc vpc = _vpcMgr.getActiveVpc(vpcId); if (vpc == null) { s_logger.warn("Unable to find Enabled VPC by id " + vpcId); return false; @@ -187,14 +176,18 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc DataCenter.class, network.getDataCenterId()); } - for (VirtualRouter router : routers) { - //Add router to guest network - if (!_vpcMgr.addVpcRouterToGuestNetwork(router, network, false)) { - throw new CloudRuntimeException("Failed to add VPC router " + router + " to guest network " + network); - } else { - s_logger.debug("Successfully added VPC router " + router + " to guest network " + network); + if (vm.getType() == Type.User) { + for (VirtualRouter router : routers) { + //Add router to guest network + if (!_networkMgr.isVmPartOfNetwork(router.getId(), network.getId())) { + if (!_vpcRouterMgr.addVpcRouterToGuestNetwork(router, network, false)) { + throw new CloudRuntimeException("Failed to add VPC router " + router + " to guest network " + network); + } else { + s_logger.debug("Successfully added VPC router " + router + " to guest network " + network); + } + } } - } + } return true; } @@ -202,30 +195,7 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc @Override public boolean shutdown(Network network, ReservationContext context, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException { - boolean success = true; - Long vpcId = network.getVpcId(); - if (vpcId == null) { - s_logger.debug("Network " + network + " doesn't belong to any vpc, so skipping unplug nic part"); - return success; - } - - List<? extends VirtualRouter> routers = _routerDao.listRoutersByVpcId(vpcId); - for (VirtualRouter router : routers) { - //1) Check if router is already a part of the network - if (!_ntwkService.isVmPartOfNetwork(router.getId(), network.getId())) { - s_logger.debug("Router " + router + " is not a part the network " + network); - continue; - } - //2) Call unplugNics in the network service - success = success && _vpcRouterMgr.removeRouterFromGuestNetwork(router, network, false); - if (!success) { - s_logger.warn("Failed to unplug nic in network " + network + " for virtual router " + router); - } else { - s_logger.debug("Successfully unplugged nic in network " + network + " for virtual router " + router); - } - } - - return success; + return true; } @Override @@ -299,5 +269,13 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc //TODO - add implementation here return true; } + + + + @Override + protected List<DomainRouterVO> getRouters(Network network, DeployDestination dest) { + return _vpcMgr.getVpcRouters(network.getVpcId()); + } + } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index ea9083e..4c8ea96 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -128,6 +128,8 @@ import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; import com.cloud.network.NetworkManager; import com.cloud.network.NetworkVO; +import com.cloud.network.Networks.BroadcastDomainType; +import com.cloud.network.Networks.IsolationType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.network.PublicIpAddress; @@ -1952,8 +1954,11 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian //add router to public and guest networks for (Nic publicNic : publicNics.keySet()) { Network publicNtwk = publicNics.get(publicNic); - if (!addRouterToPublicNetwork(router, publicNtwk, _ipAddressDao.findByIpAndSourceNetworkId(publicNtwk.getId(), - publicNic.getIp4Address()))) { + IPAddressVO userIp = _ipAddressDao.findByIpAndSourceNetworkId(publicNtwk.getId(), + publicNic.getIp4Address()); + PublicIp publicIp = new PublicIp(userIp, _vlanDao.findById(userIp.getVlanId()), + NetUtils.createSequenceBasedMacAddress(userIp.getMacAddress())); + if (!addRouterToPublicNetwork(router, publicNtwk, publicIp)) { s_logger.warn("Failed to plug nic " + publicNic + " to router " + router); return false; } @@ -2109,7 +2114,8 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian } @Override - public boolean applyDhcpEntry(Network network, final NicProfile nic, VirtualMachineProfile<UserVm> profile, DeployDestination dest, List<DomainRouterVO> routers) + public boolean applyDhcpEntry(Network network, final NicProfile nic, VirtualMachineProfile<UserVm> profile, + DeployDestination dest, List<DomainRouterVO> routers) throws ResourceUnavailableException { _userVmDao.loadDetails((UserVmVO) profile.getVirtualMachine()); @@ -3147,7 +3153,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian _routerDao.addRouterToGuestNetwork(routerVO, network); } - NicProfile guestNic = _itMgr.addVmToNetwork(router, network); + NicProfile guestNic = _itMgr.addVmToNetwork(router, network, null); //setup guest network if (guestNic != null) { result = setupGuestNetwork(network, router, true, isRedundant, guestNic, setupDns); @@ -3209,7 +3215,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian return result; } - protected boolean addRouterToPublicNetwork(VirtualRouter router, Network publicNetwork, IpAddress publicIpAddr) + protected boolean addRouterToPublicNetwork(VirtualRouter router, Network publicNetwork, PublicIp sourceNatIp) throws ConcurrentOperationException,ResourceUnavailableException, InsufficientCapacityException { if (publicNetwork.getTrafficType() != TrafficType.Public) { @@ -3220,13 +3226,23 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian //Add router to the Public network boolean result = true; try { + NicProfile defaultNic = new NicProfile(); + + defaultNic.setDefaultNic(true); + defaultNic.setIp4Address(sourceNatIp.getAddress().addr()); + defaultNic.setGateway(sourceNatIp.getGateway()); + defaultNic.setNetmask(sourceNatIp.getNetmask()); + defaultNic.setMacAddress(sourceNatIp.getMacAddress()); + defaultNic.setBroadcastType(BroadcastDomainType.Vlan); + defaultNic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(sourceNatIp.getVlanTag())); + defaultNic.setIsolationUri(IsolationType.Vlan.toUri(sourceNatIp.getVlanTag())); - NicProfile publicNic = _itMgr.addVmToNetwork(router, publicNetwork); + NicProfile publicNic = _itMgr.addVmToNetwork(router, publicNetwork, defaultNic); //setup public network if (publicNic != null) { publicNic.setDefaultNic(true); - if (publicIpAddr != null) { - IPAddressVO ipVO = _ipAddressDao.findById(publicIpAddr.getId()); + if (sourceNatIp != null) { + IPAddressVO ipVO = _ipAddressDao.findById(sourceNatIp.getId()); PublicIp publicIp = new PublicIp(ipVO, _vlanDao.findById(ipVO.getVlanId()), NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress())); result = setupPublicNetwork(publicNetwork, router, false, publicIp); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/src/com/cloud/network/vpc/VpcManager.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/vpc/VpcManager.java b/server/src/com/cloud/network/vpc/VpcManager.java index 9612690..55a607f 100644 --- a/server/src/com/cloud/network/vpc/VpcManager.java +++ b/server/src/com/cloud/network/vpc/VpcManager.java @@ -24,6 +24,7 @@ import com.cloud.network.element.VpcProvider; import com.cloud.network.vpc.VpcOffering.State; import com.cloud.offering.NetworkOffering; import com.cloud.user.Account; +import com.cloud.vm.DomainRouterVO; /** @@ -89,4 +90,10 @@ public interface VpcManager extends VpcService{ * @throws ResourceUnavailableException */ boolean destroyVpc(Vpc vpc) throws ConcurrentOperationException, ResourceUnavailableException; + + /** + * @param vpcId + * @return + */ + List<DomainRouterVO> getVpcRouters(long vpcId); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/src/com/cloud/network/vpc/VpcManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index c2b85dc..55e95be 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -65,8 +65,10 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.net.NetUtils; +import com.cloud.vm.DomainRouterVO; import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContextImpl; +import com.cloud.vm.dao.DomainRouterDao; /** * @author Alena Prokharchyk @@ -93,6 +95,8 @@ public class VpcManagerImpl implements VpcManager, Manager{ NetworkManager _ntwkMgr; @Inject IPAddressDao _ipAddressDao; + @Inject + DomainRouterDao _routerDao; private VpcProvider vpcElement = null; @@ -907,4 +911,9 @@ public class VpcManagerImpl implements VpcManager, Manager{ _vpcDao.update(vpc.getId(), vpc); } } + + @Override + public List<DomainRouterVO> getVpcRouters(long vpcId) { + return _routerDao.listRoutersByVpcId(vpcId); + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/src/com/cloud/vm/VirtualMachineManager.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/VirtualMachineManager.java b/server/src/com/cloud/vm/VirtualMachineManager.java index 0cde9fb..049875b 100644 --- a/server/src/com/cloud/vm/VirtualMachineManager.java +++ b/server/src/com/cloud/vm/VirtualMachineManager.java @@ -138,12 +138,13 @@ public interface VirtualMachineManager extends Manager { /** * @param vm * @param network + * @param requested TODO * @return * @throws ConcurrentOperationException * @throws ResourceUnavailableException * @throws InsufficientCapacityException */ - NicProfile addVmToNetwork(VirtualMachine vm, Network network) throws ConcurrentOperationException, + NicProfile addVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException; /** http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/src/com/cloud/vm/VirtualMachineManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 8522a03..a30e112 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -2432,9 +2432,10 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene } @Override - public NicProfile addVmToNetwork(VirtualMachine vm, Network network) throws ConcurrentOperationException, + public NicProfile addVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { + s_logger.debug("Adding vm " + vm + " to network " + network); VMInstanceVO vmVO = _vmDao.findById(vm.getId()); NetworkVO networkVO = _networkDao.findById(network.getId()); ReservationContext context = new ReservationContextImpl(null, null, _accountMgr.getActiveUser(User.UID_SYSTEM), @@ -2458,7 +2459,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene //1) allocate nic and prepare nic if needed int deviceId = _nicsDao.countNics(vm.getId()); - nic = _networkMgr.allocateNic(null, network, false, + nic = _networkMgr.allocateNic(requested, network, false, deviceId, vmProfile).first(); if (nic == null) { @@ -2470,7 +2471,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene nic = _networkMgr.prepareNic(vmProfile, dest, context, nic.getId(), networkVO); s_logger.debug("Nic is prepared successfully for vm " + vm + " in network " + network); - + } //2) Convert vmProfile to vmTO http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java b/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java index f2e69bc..465a4a4 100755 --- a/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java +++ b/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java @@ -240,7 +240,7 @@ public class MockVirtualMachineManagerImpl implements VirtualMachineManager { * @see com.cloud.vm.VirtualMachineManager#addVmToNetwork(com.cloud.vm.VirtualMachine, com.cloud.network.Network) */ @Override - public NicProfile addVmToNetwork(VirtualMachine vm, Network network) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { + public NicProfile addVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { // TODO Auto-generated method stub return false; } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7e119e4c/wscript ---------------------------------------------------------------------- diff --git a/wscript b/wscript index e854403..fe19efe 100644 --- a/wscript +++ b/wscript @@ -5,7 +5,7 @@ # if you change 'em here, you need to change it also in cloud.spec, add a %changelog entry there, and add an entry in debian/changelog -VERSION = '3.0.3.2012-06-11T16:40:18Z' +VERSION = '3.0.3.2012-06-11T20:32:53Z' APPNAME = 'cloud' import shutil,os
