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

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

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

    https://github.com/apache/cloudstack/pull/801#discussion_r41983983
  
    --- Diff: 
plugins/network-elements/nuage-vsp/src/com/cloud/network/guru/NuageVspGuestNetworkGuru.java
 ---
    @@ -129,66 +134,94 @@ public Network design(NetworkOffering offering, 
DeploymentPlan plan, Network use
     
         @Override
         public Network implement(Network network, NetworkOffering offering, 
DeployDestination dest, ReservationContext context) throws 
InsufficientVirtualNetworkCapacityException {
    +        long networkId = network.getId();
    +        network = _networkDao.acquireInLockTable(network.getId(), 1200);
    +        if (network == null) {
    +            throw new ConcurrentOperationException("Unable to acquire lock 
on network " + networkId);
    +        }
     
    -        assert (network.getState() == State.Implementing) : "Why are we 
implementing " + network;
    +        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());
    +            }
    +            List<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";
    +                if (s_logger.isDebugEnabled()) {
    +                    s_logger.debug(errorMessage);
    +                }
    +                throw new 
InsufficientVirtualNetworkCapacityException(errorMessage, Account.class, 
network.getAccountId());
    +            }
    +            String vpcName = null;
    +            String vpcUuid = null;
    +            String preConfiguredDomainTemplateName = 
NuageVspUtil.getPreConfiguredDomainTemplateName(_configDao, network, offering);
    +            boolean isSharedNetwork = offering.getGuestType() == 
GuestType.Shared;
    +            boolean isL3Network = !isVpc && (isSharedNetwork || 
isL3Network(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();
    -        }
    +            if (isVpc) {
    +                Vpc vpcObj = _vpcDao.findById(vpcId);
    +                vpcName = vpcObj.getName();
    +                vpcUuid = vpcObj.getUuid();
    +            }
    +
    +            if (isSharedNetwork) {
    +                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);
    +                }
    +            }
     
    -        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);
    +            HostVO nuageVspHost = getNuageVspHost(physicalNetworkId);
    +            List<String> dnsServers = 
_nuageVspManager.getDnsDetails(network);
    +            List<String> gatewaySystemIds = 
_nuageVspManager.getGatewaySystemIds();
    +            ImplementNetworkVspCommand.Builder cmdBuilder = new 
ImplementNetworkVspCommand.Builder().networkDomainName(networksDomain.getName()).networkDomainPath(networksDomain.getPath())
    +                    
.networkDomainUuid(networksDomain.getUuid()).networkAccountName(networksAccount.getAccountName()).networkAccountUuid(networksAccount.getUuid())
    +                    
.networkName(network.getName()).networkCidr(network.getCidr()).networkGateway(network.getGateway()).networkAclId(network.getNetworkACLId()).dnsServers(dnsServers)
    +                    
.gatewaySystemIds(gatewaySystemIds).networkUuid(network.getUuid()).isL3Network(isL3Network).isVpc(isVpc).isSharedNetwork(isSharedNetwork).vpcName(vpcName)
    +                    
.vpcUuid(vpcUuid).defaultEgressPolicy(offering.getEgressDefaultPolicy()).ipAddressRange(ipAddressRanges).domainTemplateName(preConfiguredDomainTemplateName);
    +            ImplementNetworkVspAnswer answer = 
(ImplementNetworkVspAnswer)_agentMgr.easySend(nuageVspHost.getId(), 
cmdBuilder.build());
     
    -        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");
    --- End diff --
    
    Added context information to the log statement.


> 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
>         Attachments: nuageVspMarvinLogs.tar.gz
>
>
> 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