cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CLOUDSTACK-8832) Update Nuage VSP plugin to work with Nuage VSP release 3.2
Date Fri, 18 Sep 2015 21:21:05 GMT

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

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_r39902273
  
    --- 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);
    +            boolean isL3Network = isL3Network(network);
    +            boolean isSharedNetwork = networkOffering.getGuestType() == GuestType.Shared;
    +            Long vpcId = network.getVpcId();
    +            String vpcUuid = null;
    +            if (vpcId != null) {
    +                Vpc vpcObj = _vpcDao.findById(vpcId);
    +                vpcUuid = vpcObj.getUuid();
    +            }
    +            HostVO nuageVspHost = getNuageVspHost(network.getPhysicalNetworkId());
    +            IPAddressVO staticNatIp = _ipAddressDao.findByVmIdAndNetworkId(network.getId(),
vm.getId());
    +
    +            ReserveVmInterfaceVspCommand cmd;
    +            if (staticNatIp != null) {
    +                VlanVO staticNatVlan = _vlanDao.findById(staticNatIp.getVlanId());
    +                cmd = new ReserveVmInterfaceVspCommand(nicFrmDB.getUuid(), nic.getMacAddress(),
network.getUuid(), isL3Network, isSharedNetwork, vpcUuid,
    +                        networksDomain.getUuid(), networksAccount.getUuid(), isDomainRouter,
domainRouterIp,
    +                        vm.getInstanceName(), vm.getUuid(), networksDomain.getUuid(),
networksAccount.getUuid(), true, nic.getIPv4Address(), staticNatIp.getUuid(),
    +                        staticNatIp.getAddress().addr(), staticNatIp.getState().equals(IpAddress.State.Allocated),
staticNatIp.isOneToOneNat(), staticNatVlan.getUuid(),
    +                        staticNatVlan.getVlanGateway(), staticNatVlan.getVlanNetmask());
    +            } else {
    +                cmd = new ReserveVmInterfaceVspCommand(nicFrmDB.getUuid(), nic.getMacAddress(),
network.getUuid(), isL3Network, isSharedNetwork, vpcUuid,
    +                        networksDomain.getUuid(), networksAccount.getUuid(), vm.getType().equals(VirtualMachine.Type.DomainRouter),
domainRouterIp,
    +                        vm.getInstanceName(), vm.getUuid(), networksDomain.getUuid(),
networksAccount.getUuid(), true, nic.getIPv4Address(), null, null, false, false,
    +                        null, null, null);
    +            }
    +
    +            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());
    +                }
    +                throw new InsufficientVirtualNetworkCapacityException("Failed to reserve
VM in Nuage VSP.", Network.class, network.getId());
    +            }
    +
    +            if (isDomainRouter) {
    +                nic.setIPv4Address(domainRouterIp);
    +            }
    +
    +        } finally {
    +            if (network != null && lockedNetwork) {
    +                _networkDao.releaseFromLockTable(network.getId());
    +                s_logger.debug("Unlocked network " + network.getId() + " for creation
of user VM " + vm.getInstanceName());
    --- End diff --
    
    Wrap in a if (s_logger.isDebugEnabled()) { ... } block to avoid unnecessary pressure on
the string pool when debug logging is not enabled.


> 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)

Mime
View raw message