[
https://issues.apache.org/jira/browse/CLOUDSTACK-8832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14876496#comment-14876496
]
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_r39903745
--- Diff:
plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
---
@@ -152,53 +226,181 @@ 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 = Objects.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(Objects.firstNonNull(cmd.getApiRetryCount(),
clientDefaults.get("DEFAULT_API_RETRY_COUNT"))));
+ params.put("retryinterval",
String.valueOf(Objects.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) {
+ } catch (Exception e) {
throw new CloudRuntimeException(e.getMessage());
--- End diff --
Why only pass the message and not the ``Exception`` reference into the
``CloudRuntimeException`` constructor?
> 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)