Github user nlivens commented on a diff in the pull request: https://github.com/apache/cloudstack/pull/801#discussion_r39962051 --- Diff: plugins/network-elements/nuage-vsp/src/com/cloud/network/guru/NuageVspGuestNetworkGuru.java --- @@ -201,51 +234,82 @@ public NicProfile allocate(Network network, NicProfile nic, VirtualMachineProfil @Override public void reserve(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) throws InsufficientVirtualNetworkCapacityException, InsufficientAddressCapacityException { - nic.setBroadcastUri(network.getBroadcastUri()); - nic.setIsolationUri(network.getBroadcastUri()); - - s_logger.debug("Handling reserve() call back to with Create a new VM or add an interface to existing VM in network " + network.getName()); - DataCenter dc = _dcDao.findById(network.getDataCenterId()); - Account networksAccount = _accountDao.findById(network.getAccountId()); - DomainVO networksDomain = _domainDao.findById(network.getDomainId()); - //Get the Account details and find the type - long networkOwnedBy = network.getAccountId(); - AccountVO neworkAccountDetails = _accountDao.findById(networkOwnedBy); - if (neworkAccountDetails.getType() == Account.ACCOUNT_TYPE_PROJECT) { - throw new InsufficientVirtualNetworkCapacityException("CS project support is " + "not yet implemented in NuageVsp", DataCenter.class, dc.getId()); + boolean lockedNetwork = lockNetworkForUserVm(network, vm); + if (lockedNetwork) { + s_logger.debug("Locked network " + network.getId() + " for creation of user VM " + vm.getInstanceName()); } - //NicProfile does not contain the NIC UUID. We need this information to set it in the VMInterface and VPort - //that we create in VSP - NicVO nicFrmDB = _nicDao.findById(nic.getId()); - long networkOfferingId = _ntwkOfferingDao.findById(network.getNetworkOfferingId()).getId(); - boolean isL3Network = isL3Network(networkOfferingId); - Long vpcId = network.getVpcId(); - String vpcUuid = null; - if (vpcId != null) { - Vpc vpcObj = _vpcDao.findById(vpcId); - vpcUuid = vpcObj.getUuid(); - } - HostVO nuageVspHost = getNuageVspHost(network.getPhysicalNetworkId()); - ReserveVmInterfaceVspCommand cmd = new ReserveVmInterfaceVspCommand(nicFrmDB.getUuid(), nic.getMacAddress(), network.getUuid(), isL3Network, vpcUuid, - networksDomain.getUuid(), networksAccount.getUuid(), vm.getType().equals(VirtualMachine.Type.DomainRouter), network.getBroadcastUri().getPath().substring(1), - vm.getInstanceName(), vm.getUuid(), networksDomain.getUuid(), networksAccount.getUuid()); - ReserveVmInterfaceVspAnswer answer = (ReserveVmInterfaceVspAnswer)_agentMgr.easySend(nuageVspHost.getId(), cmd); - - if (answer == null || !answer.getResult()) { - s_logger.error("ReserveVmInterfaceNuageVspCommand failed"); - if ((null != answer) && (null != answer.getDetails())) { - s_logger.error(answer.getDetails()); + try { + nic.setBroadcastUri(network.getBroadcastUri()); + nic.setIsolationUri(network.getBroadcastUri()); + + s_logger.debug("Handling reserve() call back to with Create a new VM or add an interface to existing VM in network " + network.getName()); + DataCenter dc = _dcDao.findById(network.getDataCenterId()); + Account networksAccount = _accountDao.findById(network.getAccountId()); + DomainVO networksDomain = _domainDao.findById(network.getDomainId()); + //Get the Account details and find the type + long networkOwnedBy = network.getAccountId(); + AccountVO neworkAccountDetails = _accountDao.findById(networkOwnedBy); + if (neworkAccountDetails.getType() == Account.ACCOUNT_TYPE_PROJECT) { + throw new InsufficientVirtualNetworkCapacityException("CS project support is " + "not yet implemented in NuageVsp", DataCenter.class, dc.getId()); + } + + //NicProfile does not contain the NIC UUID. We need this information to set it in the VMInterface and VPort + //that we create in VSP + NicVO nicFrmDB = _nicDao.findById(nic.getId()); + NetworkOffering networkOffering = _ntwkOfferingDao.findById(network.getNetworkOfferingId()); + boolean isDomainRouter = vm.getType().equals(VirtualMachine.Type.DomainRouter); + String domainRouterIp = network.getBroadcastUri().getPath().substring(1); --- End diff -- We set the broadcastUri to a specific custom value during implementation of this network, so this should never be the case
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---