[
https://issues.apache.org/jira/browse/CLOUDSTACK-8832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14876499#comment-14876499
]
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_r39903824
--- 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());
}
}
@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) {
+ 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 (StringUtils.isNotBlank(command.getHostName()) &&
+
!command.getHostName().equals(nuageVspHost.getDetails().get("hostname"))) {
+ paramsTobeUpdated.put("name", "Nuage VSD - " +
command.getHostName());
+ paramsTobeUpdated.put("hostname", command.getHostName());
+ }
+
+ if (StringUtils.isNotBlank(command.getUserName()) &&
+
!command.getUserName().equals(nuageVspHost.getDetails().get("cmsuser"))) {
+ paramsTobeUpdated.put("cmsuser", command.getUserName());
+ }
+
+ if (StringUtils.isNotBlank(command.getPassword())) {
--- End diff --
Use Guava's implementation rather Apache Commons. There is no need for the
duplication.
> 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)