[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-8832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14876435#comment-14876435
 ] 

ASF GitHub Bot commented on CLOUDSTACK-8832:
--------------------------------------------

Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/801#discussion_r39901691
  
    --- Diff: 
plugins/network-elements/nuage-vsp/src/com/cloud/network/guru/NuageVspGuestNetworkGuru.java
 ---
    @@ -129,66 +131,97 @@ public Network design(NetworkOffering offering, 
DeploymentPlan plan, Network use
     
         @Override
         public Network implement(Network network, NetworkOffering offering, 
DeployDestination dest, ReservationContext context) throws 
InsufficientVirtualNetworkCapacityException {
    -
    -        assert (network.getState() == State.Implementing) : "Why are we 
implementing " + network;
    -
    -        long dcId = dest.getDataCenter().getId();
    -        //Get physical network id
    -        Long physicalNetworkId = network.getPhysicalNetworkId();
    -        //Physical network id can be null in Guest Network in Basic zone, 
so locate the physical network
    -        if (physicalNetworkId == null) {
    -            physicalNetworkId = _networkModel.findPhysicalNetworkId(dcId, 
offering.getTags(), offering.getTrafficType());
    -        }
    -        NetworkVO implemented = new NetworkVO(network.getTrafficType(), 
network.getMode(), network.getBroadcastDomainType(), 
network.getNetworkOfferingId(), State.Allocated,
    -                network.getDataCenterId(), physicalNetworkId, 
offering.getRedundantRouter());
    -        if (network.getGateway() != null) {
    -            implemented.setGateway(network.getGateway());
    -        }
    -        if (network.getCidr() != null) {
    -            implemented.setCidr(network.getCidr());
    -        }
    -        Collection<String> ipAddressRange = new ArrayList<String>();
    -        String virtualRouterIp = getVirtualRouterIP(network, 
ipAddressRange);
    -        String networkUuid = implemented.getUuid();
    -        String tenantId = context.getDomain().getName() + "-" + 
context.getAccount().getAccountId();
    -        String broadcastUriStr = networkUuid + "/" + virtualRouterIp;
    -        
implemented.setBroadcastUri(Networks.BroadcastDomainType.Vsp.toUri(broadcastUriStr));
    -        
implemented.setBroadcastDomainType(Networks.BroadcastDomainType.Vsp);
    -        //Check if the network is associated to a VPC
    -        Long vpcId = network.getVpcId();
    -        boolean isVpc = (vpcId != null);
    -        //Check owner of the Network
    -        Domain networksDomain = _domainDao.findById(network.getDomainId());
    -        //Get the Account details and find the type
    -        AccountVO networksAccount = 
_accountDao.findById(network.getAccountId());
    -        if (networksAccount.getType() == Account.ACCOUNT_TYPE_PROJECT) {
    -            String errorMessage = "CS project support is not yet 
implemented in NuageVsp";
    -            s_logger.debug(errorMessage);
    -            throw new 
InsufficientVirtualNetworkCapacityException(errorMessage, Account.class, 
network.getAccountId());
    -        }
    -        boolean isL3Network = isL3Network(offering.getId());
    -        String vpcName = null;
    -        String vpcUuid = null;
    -        if (isVpc) {
    -            Vpc vpcObj = _vpcDao.findById(vpcId);
    -            vpcName = vpcObj.getName();
    -            vpcUuid = vpcObj.getUuid();
    +        long networkId = network.getId();
    +        network = _networkDao.acquireInLockTable(network.getId(), 1200);
    +        if (network == null) {
    +            throw new ConcurrentOperationException("Unable to acquire lock 
on network " + networkId);
             }
     
    -        HostVO nuageVspHost = getNuageVspHost(physicalNetworkId);
    -        ImplementNetworkVspCommand cmd = new 
ImplementNetworkVspCommand(networksDomain.getName(), networksDomain.getPath(), 
networksDomain.getUuid(),
    -                networksAccount.getAccountName(), 
networksAccount.getUuid(), network.getName(), network.getCidr(), 
network.getGateway(), network.getUuid(), isL3Network, vpcName,
    -                vpcUuid, offering.getEgressDefaultPolicy(), 
ipAddressRange);
    -        ImplementNetworkVspAnswer answer = 
(ImplementNetworkVspAnswer)_agentMgr.easySend(nuageVspHost.getId(), cmd);
    +        NetworkVO implemented = null;
    +        try {
    +            assert (network.getState() == State.Implementing) : "Why are 
we implementing " + network;
    +
    +            long dcId = dest.getDataCenter().getId();
    +            //Get physical network id
    +            Long physicalNetworkId = network.getPhysicalNetworkId();
    +            //Physical network id can be null in Guest Network in Basic 
zone, so locate the physical network
    +            if (physicalNetworkId == null) {
    +                physicalNetworkId = 
_networkModel.findPhysicalNetworkId(dcId, offering.getTags(), 
offering.getTrafficType());
    +            }
    +            implemented = new NetworkVO(network.getTrafficType(), 
network.getMode(), network.getBroadcastDomainType(), 
network.getNetworkOfferingId(), State.Allocated,
    +                    network.getDataCenterId(), physicalNetworkId, 
offering.getRedundantRouter());
    +            if (network.getGateway() != null) {
    +                implemented.setGateway(network.getGateway());
    +            }
    +            if (network.getCidr() != null) {
    +                implemented.setCidr(network.getCidr());
    +            }
    +            Collection<String[]> ipAddressRanges = new 
ArrayList<String[]>();
    +            String virtualRouterIp = getVirtualRouterIP(network, 
ipAddressRanges);
    +            String networkUuid = implemented.getUuid();
    +            String tenantId = context.getDomain().getName() + "-" + 
context.getAccount().getAccountId();
    +            String broadcastUriStr = networkUuid + "/" + virtualRouterIp;
    +            
implemented.setBroadcastUri(Networks.BroadcastDomainType.Vsp.toUri(broadcastUriStr));
    +            
implemented.setBroadcastDomainType(Networks.BroadcastDomainType.Vsp);
    +            //Check if the network is associated to a VPC
    +            Long vpcId = network.getVpcId();
    +            boolean isVpc = (vpcId != null);
    +            //Check owner of the Network
    +            Domain networksDomain = 
_domainDao.findById(network.getDomainId());
    +            //Get the Account details and find the type
    +            AccountVO networksAccount = 
_accountDao.findById(network.getAccountId());
    +            if (networksAccount.getType() == Account.ACCOUNT_TYPE_PROJECT) 
{
    +                String errorMessage = "CS project support is not yet 
implemented in NuageVsp";
    +                s_logger.debug(errorMessage);
    +                throw new 
InsufficientVirtualNetworkCapacityException(errorMessage, Account.class, 
network.getAccountId());
    +            }
    +            String vpcName = null;
    +            String vpcUuid = null;
    +            String preConfiguredDomainTemplateName = null;
    +            boolean isL3Network = false, isSharedNetwork = false;
    +            if (isVpc) {
    +                Vpc vpcObj = _vpcDao.findById(vpcId);
    +                vpcName = vpcObj.getName();
    +                vpcUuid = vpcObj.getUuid();
    +                preConfiguredDomainTemplateName = 
_configDao.getValue(NuageVspManager.NuageVspVpcDomainTemplateName.key());
    +            } else {
    +                if (offering.getGuestType() == GuestType.Shared) {
    +                    isL3Network = true;
    +                    isSharedNetwork = true;
    +                    preConfiguredDomainTemplateName = 
_configDao.getValue(NuageVspManager.NuageVspSharedNetworkDomainTemplateName.key());
    +
    +                    ipAddressRanges = new ArrayList<String[]>();
    +                    List<VlanVO> vlans = 
_vlanDao.listVlansByNetworkId(network.getId());
    +                    for (VlanVO vlan : vlans) {
    +                        boolean isIpv4 = 
StringUtils.isNotBlank(vlan.getIpRange());
    +                        String[] range = isIpv4 ? 
vlan.getIpRange().split("-") : vlan.getIp6Range().split("-");
    +                        ipAddressRanges.add(range);
    +                    }
    +                } else if (isL3Network(network)) {
    +                    isL3Network = true;
    +                    preConfiguredDomainTemplateName = 
_configDao.getValue(NuageVspManager.NuageVspIsolatedNetworkDomainTemplateName.key());
    +                }
    +            }
    +
    +            HostVO nuageVspHost = getNuageVspHost(physicalNetworkId);
    +            List<String> dnsServers = 
_nuageVspManager.getDnsDetails(network);
    +            List<String> gatewaySystemIds = 
_nuageVspManager.getGatewaySystemIds();
    +            ImplementNetworkVspCommand cmd = new 
ImplementNetworkVspCommand(networksDomain.getName(), networksDomain.getPath(), 
networksDomain.getUuid(), networksAccount.getAccountName(),
    +                    networksAccount.getUuid(), network.getName(), 
network.getCidr(), network.getGateway(), network.getNetworkACLId(), dnsServers, 
gatewaySystemIds, network.getUuid(),
    +                    isL3Network, isVpc, isSharedNetwork, vpcName, vpcUuid, 
offering.getEgressDefaultPolicy(), ipAddressRanges, 
preConfiguredDomainTemplateName);
    +            ImplementNetworkVspAnswer answer = 
(ImplementNetworkVspAnswer)_agentMgr.easySend(nuageVspHost.getId(), cmd);
     
    -        if (answer == null || !answer.getResult()) {
    -            s_logger.error("ImplementNetworkNuageVspCommand failed");
    -            if ((null != answer) && (null != answer.getDetails())) {
    -                s_logger.error(answer.getDetails());
    +            if (answer == null || !answer.getResult()) {
    +                s_logger.error("ImplementNetworkNuageVspCommand failed");
    +                if ((null != answer) && (null != answer.getDetails())) {
    +                    s_logger.error(answer.getDetails());
    +                }
    +                return null;
                 }
    -            return null;
    +            s_logger.info("Implemented OK, network " + networkUuid + " in 
tenant " + tenantId + " linked to " + implemented.getBroadcastUri().toString());
    --- End diff --
    
    The call to ``implemented.getBroadcastUri().toString()`` in extraneous.  
Append ``implemented.getBroadcastUri()`` and the compiler will automatically 
insert the ``toString()`` call.


> Update Nuage VSP plugin to work with Nuage VSP release 3.2
> ----------------------------------------------------------
>
>                 Key: CLOUDSTACK-8832
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8832
>             Project: CloudStack
>          Issue Type: Improvement
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: Management Server
>    Affects Versions: 4.6.0
>            Reporter: Nick Livens
>            Assignee: Nick Livens
>
> Nuage VSP 3.2 is being released, we want to bring the plugin up to date for 
> this release



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to