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 Mon, 26 Oct 2015 20:52:27 GMT

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

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_r43050959
  
    --- Diff: plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
---
    @@ -152,50 +241,185 @@ 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);
    -
    -                        DetailVO detail = new DetailVO(host.getId(), "nuagevspdeviceid",
String.valueOf(nuageVspDevice.getId()));
    -                        _hostDetailsDao.persist(detail);
    -
    -                        return 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 (ConfigurationException e) {
    -            throw new CloudRuntimeException(e.getMessage());
    +            s_logger.error("Failed to configure Nuage VSD resource", e);
    +            throw new CloudRuntimeException("Failed to configure Nuage VSD resource",
e);
    +        } catch (ExecutionException ee) {
    +            s_logger.error("Failed to add Nuage VSP device", ee);
    +            throw new CloudRuntimeException("Failed to add Nuage VSP device", ee);
    +        }
    +    }
    +
    +    @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");
    +        }
    +        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.isEmpty()) {
    +            throw new CloudRuntimeException("Nuage VSD is not configured on physical
network " + physicalNetworkId);
    +        } else {
    +            nuageVspDevice = nuageVspDevices.iterator().next();
    +            nuageVspHost = _hostDao.findById(nuageVspDevice.getHostId());
    +            _hostDao.loadDetails(nuageVspHost);
    +        }
    +
    +        Map<String, String> paramsTobeUpdated = new HashMap<String, String>();
    +        if (!Strings.isNullOrEmpty(command.getHostName()) &&
    +                !command.getHostName().equals(nuageVspHost.getDetails().get("hostname")))
{
    +            paramsTobeUpdated.put("name", "Nuage VSD - " + command.getHostName());
    +            paramsTobeUpdated.put("hostname", command.getHostName());
    +        }
    +
    +        if (!Strings.isNullOrEmpty(command.getUserName()) &&
    +                !command.getUserName().equals(nuageVspHost.getDetails().get("cmsuser")))
{
    +            paramsTobeUpdated.put("cmsuser", command.getUserName());
    +        }
    +
    +        if (!Strings.isNullOrEmpty(command.getPassword())) {
    +            String encodedNewPassword = org.apache.commons.codec.binary.StringUtils.newStringUtf8(Base64.encodeBase64(command.getPassword().getBytes()));
    +            if (!encodedNewPassword.equals(nuageVspHost.getDetails().get("cmsuserpass")))
{
    +                paramsTobeUpdated.put("cmsuserpass", org.apache.commons.codec.binary.StringUtils.newStringUtf8(Base64.encodeBase64(command.getPassword().getBytes())));
    +            }
    +        }
    +
    +        if (command.getPort() != null &&
    +                command.getPort() != Integer.parseInt(nuageVspHost.getDetails().get("port")))
{
    +            paramsTobeUpdated.put("port", String.valueOf(command.getPort()));
    +        }
    +
    +        GetClientDefaultsCommand getClientDefaultsCmd = new GetClientDefaultsCommand();
    +        GetClientDefaultsAnswer getClientDefaultsAnswer = (GetClientDefaultsAnswer) _agentMgr.easySend(nuageVspHost.getId(),
getClientDefaultsCmd);
    +        String apiVersion = MoreObjects.firstNonNull(command.getApiVersion(), getClientDefaultsAnswer.getCurrentApiVersion());
    +        SupportedApiVersionCommand supportedApiVersionCmd = new SupportedApiVersionCommand(apiVersion);
    +        Answer supportedApiVersionAnswer = _agentMgr.easySend(nuageVspHost.getId(), supportedApiVersionCmd);
    +        if (!supportedApiVersionAnswer.getResult()) {
    +            throw new CloudRuntimeException("Incorrect API version: Nuage plugin only
supports " + getClientDefaultsAnswer.getCurrentApiVersion());
    +        }
    +
    +        String apiRelativePath = "/nuage/api/" + command.getApiVersion();
    +        if (!apiRelativePath.equals(nuageVspHost.getDetails().get("apirelativepath")))
{
    +            paramsTobeUpdated.put("apirelativepath", apiRelativePath);
    +            paramsTobeUpdated.put("apiversion", apiVersion);
    +        }
    +
    +        final int retryCount = Integer.parseInt(nuageVspHost.getDetails().get("retrycount"));
    +        if (command.getApiRetryCount() != null && command.getApiRetryCount()
!= retryCount) {
    +            paramsTobeUpdated.put("retrycount", String.valueOf(command.getApiRetryCount()));
    +        }
    +
    +        final int apiRetryInterval = Integer.parseInt(nuageVspHost.getDetails().get("retryinterval"));
    +        if (command.getApiRetryInterval() != null && command.getApiRetryInterval()
!= apiRetryInterval) {
    +            paramsTobeUpdated.put("retryinterval", String.valueOf(command.getApiRetryInterval()));
    +        }
    +
    +        if (paramsTobeUpdated.isEmpty()) {
    +            if (s_logger.isDebugEnabled()) {
    --- End diff --
    
    Collapse the ``if`` conditions on lines 395-396 into a single ``if`` 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)

Mime
View raw message