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

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_r41986636
  
    --- Diff: 
plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
 ---
    @@ -152,50 +243,179 @@ public NuageVspDeviceVO 
addNuageVspDevice(AddNuageVspDeviceCmd cmd) {
                 throw new CloudRuntimeException("A NuageVsp device is already 
configured on this physical network");
             }
     
    -        Map<String, String> params = new HashMap<String, String>();
    -        params.put("guid", UUID.randomUUID().toString());
    -        params.put("zoneId", 
String.valueOf(physicalNetwork.getDataCenterId()));
    -        params.put("physicalNetworkId", 
String.valueOf(physicalNetwork.getId()));
    -        params.put("name", "Nuage VSD - " + cmd.getHostName());
    -        params.put("hostname", cmd.getHostName());
    -        params.put("cmsuser", cmd.getUserName());
    -        String cmsUserPasswordBase64 = 
org.apache.commons.codec.binary.StringUtils.newStringUtf8(Base64.encodeBase64(cmd.getPassword().getBytes(Charset.forName("UTF-8"))));
    -        params.put("cmsuserpass", cmsUserPasswordBase64);
    -        int port = cmd.getPort();
    -        if (0 == port) {
    -            port = 443;
    -        }
    -        params.put("port", String.valueOf(port));
    -        params.put("apirelativepath", "/nuage/api/" + cmd.getApiVersion());
    -        params.put("retrycount", String.valueOf(cmd.getApiRetryCount()));
    -        params.put("retryinterval", 
String.valueOf(cmd.getApiRetryInterval()));
    +        try {
    +            NuageVspPluginClientLoader clientLoader = 
NuageVspPluginClientLoader.getClientLoader(null, null, 1, 1, null);
     
    -        Map<String, Object> hostdetails = new HashMap<String, Object>();
    -        hostdetails.putAll(params);
    +            Map<String, Object> clientDefaults = 
clientLoader.getNuageVspManagerClient().getClientDefaults();
    +            String apiVersion = 
MoreObjects.firstNonNull(cmd.getApiVersion(), (String) 
clientDefaults.get("CURRENT_API_VERSION"));
    +            if 
(!clientLoader.getNuageVspManagerClient().isSupportedApiVersion(apiVersion)) {
    +                throw new CloudRuntimeException("Unsupported API version : 
" + apiVersion);
    +            }
     
    -        try {
    +            Map<String, String> params = new HashMap<String, String>();
    +            params.put("guid", UUID.randomUUID().toString());
    +            params.put("zoneId", 
String.valueOf(physicalNetwork.getDataCenterId()));
    +            params.put("physicalNetworkId", 
String.valueOf(physicalNetwork.getId()));
    +            params.put("name", "Nuage VSD - " + cmd.getHostName());
    +            params.put("hostname", cmd.getHostName());
    +            params.put("cmsuser", cmd.getUserName());
    +            String cmsUserPasswordBase64 = 
org.apache.commons.codec.binary.StringUtils.newStringUtf8(Base64.encodeBase64(cmd.getPassword().getBytes()));
    +            params.put("cmsuserpass", cmsUserPasswordBase64);
    +            int port = cmd.getPort();
    +            if (0 == port) {
    +                port = 8443;
    +            }
    +            params.put("port", String.valueOf(port));
    +            params.put("apiversion", apiVersion);
    +            params.put("apirelativepath", "/nuage/api/" + apiVersion);
    +            params.put("retrycount", 
String.valueOf(MoreObjects.firstNonNull(cmd.getApiRetryCount(), 
clientDefaults.get("DEFAULT_API_RETRY_COUNT"))));
    +            params.put("retryinterval", 
String.valueOf(MoreObjects.firstNonNull(cmd.getApiRetryInterval(), 
clientDefaults.get("DEFAULT_API_RETRY_INTERVAL"))));
    +
    +            final Map<String, Object> hostdetails = new HashMap<String, 
Object>();
    +            hostdetails.putAll(params);
                 resource.configure(cmd.getHostName(), hostdetails);
     
    -            final Host host = _resourceMgr.addHost(zoneId, resource, 
Host.Type.L2Networking, params);
    +            Host host = _resourceMgr.addHost(zoneId, resource, 
Host.Type.L2Networking, params);
                 if (host != null) {
    -                return Transaction.execute(new 
TransactionCallback<NuageVspDeviceVO>() {
    -                    @Override
    -                    public NuageVspDeviceVO 
doInTransaction(TransactionStatus status) {
    -                        NuageVspDeviceVO nuageVspDevice = new 
NuageVspDeviceVO(host.getId(), physicalNetworkId, 
ntwkSvcProvider.getProviderName(), deviceName);
    -                        _nuageVspDao.persist(nuageVspDevice);
    +                NuageVspDeviceVO nuageVspDevice = new 
NuageVspDeviceVO(host.getId(), physicalNetworkId, 
ntwkSvcProvider.getProviderName(), deviceName);
    +                _nuageVspDao.persist(nuageVspDevice);
    +
    +                DetailVO detail = new DetailVO(host.getId(), 
"nuagevspdeviceid", String.valueOf(nuageVspDevice.getId()));
    +                _hostDetailsDao.persist(detail);
    +
    +                ConfigurationVO cmsIdConfig = 
_configDao.findByName("nuagevsp.cms.id");
    +                host = findNuageVspHost(nuageVspDevice.getHostId());
    +                SyncNuageVspCmsIdCommand syncCmd = new 
SyncNuageVspCmsIdCommand(SyncType.REGISTER, null);
    +                SyncNuageVspCmsIdAnswer answer = (SyncNuageVspCmsIdAnswer) 
_agentMgr.easySend(nuageVspDevice.getHostId(), syncCmd);
    +                if (answer != null && answer.getSuccess()) {
    +                    registerNewNuageVspDevice(cmsIdConfig, 
nuageVspDevice.getId() + ":" + answer.getNuageVspCmsId());
    +
    +                    detail = new DetailVO(host.getId(), "nuagevspcmsid", 
answer.getNuageVspCmsId());
    +                    _hostDetailsDao.persist(detail);
    +                    hostdetails.put("nuagevspcmsid", 
answer.getNuageVspCmsId());
    +                    resource.configure((String) 
hostdetails.get("hostname"), hostdetails);
    +
    +                    auditDomainsOnVsp((HostVO) host, true, false);
    +                } else {
    +                    throw new CloudRuntimeException("Failed to register 
CMS ID");
    +                }
    +                return nuageVspDevice;
    +            } else {
    +                throw new CloudRuntimeException("Failed to add Nuage Vsp 
Device due to internal error.");
    +            }
    +        } catch (Exception e) {
    +            throw new CloudRuntimeException(e);
    +        }
    +    }
    +
    +    @Override
    +    public NuageVspDeviceVO updateNuageVspDevice(UpdateNuageVspDeviceCmd 
command) {
    +        ServerResource resource = new NuageVspResource();
    +        final String deviceName = Network.Provider.NuageVsp.getName();
    +        ExternalNetworkDeviceManager.NetworkDevice networkDevice = 
ExternalNetworkDeviceManager.NetworkDevice.getNetworkDevice(deviceName);
    +        final Long physicalNetworkId = command.getPhysicalNetworkId();
    +        PhysicalNetworkVO physicalNetwork = 
_physicalNetworkDao.findById(physicalNetworkId);
    +        if (physicalNetwork == null) {
    +            throw new InvalidParameterValueException("Could not find 
phyical network with ID: " + physicalNetworkId);
    +        }
    +
    +        final PhysicalNetworkServiceProviderVO ntwkSvcProvider = 
_physicalNetworkServiceProviderDao.findByServiceProvider(physicalNetwork.getId(),
    +                networkDevice.getNetworkServiceProvder());
    +        if (ntwkSvcProvider == null) {
    +            throw new CloudRuntimeException("Network Service Provider: " + 
networkDevice.getNetworkServiceProvder() + " is not enabled in the physical 
network: "
    +                    + physicalNetworkId + "to add this device");
    +        } else if (ntwkSvcProvider.getState() == 
PhysicalNetworkServiceProvider.State.Shutdown) {
    +            throw new CloudRuntimeException("Network Service Provider: " + 
ntwkSvcProvider.getProviderName() + " is in shutdown state in the physical 
network: "
    +                    + physicalNetworkId + "to add this device");
    +        }
    +
    +        HostVO nuageVspHost = null;
    +        NuageVspDeviceVO nuageVspDevice = null;
    +        List<NuageVspDeviceVO> nuageVspDevices = 
_nuageVspDao.listByPhysicalNetwork(physicalNetworkId);
    +        if (nuageVspDevices == null || nuageVspDevices.size() == 0) {
    --- End diff --
    
    Used <code>nuageVspDevices.isEmpty()</code>.


> 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