[
https://issues.apache.org/jira/browse/CLOUDSTACK-8832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14876429#comment-14876429
]
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_r39901557
--- Diff:
plugins/network-elements/nuage-vsp/src/com/cloud/network/guru/NuageVspGuestNetworkGuru.java
---
@@ -129,66 +131,97 @@ public Network design(NetworkOffering offering,
DeploymentPlan plan, Network use
@Override
public Network implement(Network network, NetworkOffering offering,
DeployDestination dest, ReservationContext context) throws
InsufficientVirtualNetworkCapacityException {
-
- assert (network.getState() == State.Implementing) : "Why are we
implementing " + network;
-
- long dcId = dest.getDataCenter().getId();
- //Get physical network id
- Long physicalNetworkId = network.getPhysicalNetworkId();
- //Physical network id can be null in Guest Network in Basic zone,
so locate the physical network
- if (physicalNetworkId == null) {
- physicalNetworkId = _networkModel.findPhysicalNetworkId(dcId,
offering.getTags(), offering.getTrafficType());
- }
- NetworkVO implemented = new NetworkVO(network.getTrafficType(),
network.getMode(), network.getBroadcastDomainType(),
network.getNetworkOfferingId(), State.Allocated,
- network.getDataCenterId(), physicalNetworkId,
offering.getRedundantRouter());
- if (network.getGateway() != null) {
- implemented.setGateway(network.getGateway());
- }
- if (network.getCidr() != null) {
- implemented.setCidr(network.getCidr());
- }
- Collection<String> ipAddressRange = new ArrayList<String>();
- String virtualRouterIp = getVirtualRouterIP(network,
ipAddressRange);
- String networkUuid = implemented.getUuid();
- String tenantId = context.getDomain().getName() + "-" +
context.getAccount().getAccountId();
- String broadcastUriStr = networkUuid + "/" + virtualRouterIp;
-
implemented.setBroadcastUri(Networks.BroadcastDomainType.Vsp.toUri(broadcastUriStr));
-
implemented.setBroadcastDomainType(Networks.BroadcastDomainType.Vsp);
- //Check if the network is associated to a VPC
- Long vpcId = network.getVpcId();
- boolean isVpc = (vpcId != null);
- //Check owner of the Network
- Domain networksDomain = _domainDao.findById(network.getDomainId());
- //Get the Account details and find the type
- AccountVO networksAccount =
_accountDao.findById(network.getAccountId());
- if (networksAccount.getType() == Account.ACCOUNT_TYPE_PROJECT) {
- String errorMessage = "CS project support is not yet
implemented in NuageVsp";
- s_logger.debug(errorMessage);
- throw new
InsufficientVirtualNetworkCapacityException(errorMessage, Account.class,
network.getAccountId());
- }
- boolean isL3Network = isL3Network(offering.getId());
- String vpcName = null;
- String vpcUuid = null;
- if (isVpc) {
- Vpc vpcObj = _vpcDao.findById(vpcId);
- vpcName = vpcObj.getName();
- vpcUuid = vpcObj.getUuid();
+ long networkId = network.getId();
+ network = _networkDao.acquireInLockTable(network.getId(), 1200);
+ if (network == null) {
+ throw new ConcurrentOperationException("Unable to acquire lock
on network " + networkId);
}
- HostVO nuageVspHost = getNuageVspHost(physicalNetworkId);
- ImplementNetworkVspCommand cmd = new
ImplementNetworkVspCommand(networksDomain.getName(), networksDomain.getPath(),
networksDomain.getUuid(),
- networksAccount.getAccountName(),
networksAccount.getUuid(), network.getName(), network.getCidr(),
network.getGateway(), network.getUuid(), isL3Network, vpcName,
- vpcUuid, offering.getEgressDefaultPolicy(),
ipAddressRange);
- ImplementNetworkVspAnswer answer =
(ImplementNetworkVspAnswer)_agentMgr.easySend(nuageVspHost.getId(), cmd);
+ NetworkVO implemented = null;
+ try {
+ assert (network.getState() == State.Implementing) : "Why are
we implementing " + network;
+
+ long dcId = dest.getDataCenter().getId();
+ //Get physical network id
+ Long physicalNetworkId = network.getPhysicalNetworkId();
+ //Physical network id can be null in Guest Network in Basic
zone, so locate the physical network
+ if (physicalNetworkId == null) {
+ physicalNetworkId =
_networkModel.findPhysicalNetworkId(dcId, offering.getTags(),
offering.getTrafficType());
+ }
+ implemented = new NetworkVO(network.getTrafficType(),
network.getMode(), network.getBroadcastDomainType(),
network.getNetworkOfferingId(), State.Allocated,
+ network.getDataCenterId(), physicalNetworkId,
offering.getRedundantRouter());
+ if (network.getGateway() != null) {
+ implemented.setGateway(network.getGateway());
+ }
+ if (network.getCidr() != null) {
+ implemented.setCidr(network.getCidr());
+ }
+ Collection<String[]> ipAddressRanges = new
ArrayList<String[]>();
+ String virtualRouterIp = getVirtualRouterIP(network,
ipAddressRanges);
+ String networkUuid = implemented.getUuid();
+ String tenantId = context.getDomain().getName() + "-" +
context.getAccount().getAccountId();
+ String broadcastUriStr = networkUuid + "/" + virtualRouterIp;
+
implemented.setBroadcastUri(Networks.BroadcastDomainType.Vsp.toUri(broadcastUriStr));
+
implemented.setBroadcastDomainType(Networks.BroadcastDomainType.Vsp);
+ //Check if the network is associated to a VPC
+ Long vpcId = network.getVpcId();
+ boolean isVpc = (vpcId != null);
+ //Check owner of the Network
+ Domain networksDomain =
_domainDao.findById(network.getDomainId());
+ //Get the Account details and find the type
+ AccountVO networksAccount =
_accountDao.findById(network.getAccountId());
+ if (networksAccount.getType() == Account.ACCOUNT_TYPE_PROJECT)
{
+ String errorMessage = "CS project support is not yet
implemented in NuageVsp";
+ s_logger.debug(errorMessage);
+ throw new
InsufficientVirtualNetworkCapacityException(errorMessage, Account.class,
network.getAccountId());
+ }
+ String vpcName = null;
+ String vpcUuid = null;
+ String preConfiguredDomainTemplateName = null;
+ boolean isL3Network = false, isSharedNetwork = false;
+ if (isVpc) {
+ Vpc vpcObj = _vpcDao.findById(vpcId);
+ vpcName = vpcObj.getName();
+ vpcUuid = vpcObj.getUuid();
+ preConfiguredDomainTemplateName =
_configDao.getValue(NuageVspManager.NuageVspVpcDomainTemplateName.key());
+ } else {
+ if (offering.getGuestType() == GuestType.Shared) {
+ isL3Network = true;
+ isSharedNetwork = true;
+ preConfiguredDomainTemplateName =
_configDao.getValue(NuageVspManager.NuageVspSharedNetworkDomainTemplateName.key());
+
+ ipAddressRanges = new ArrayList<String[]>();
+ List<VlanVO> vlans =
_vlanDao.listVlansByNetworkId(network.getId());
+ for (VlanVO vlan : vlans) {
+ boolean isIpv4 =
StringUtils.isNotBlank(vlan.getIpRange());
+ String[] range = isIpv4 ?
vlan.getIpRange().split("-") : vlan.getIp6Range().split("-");
--- End diff --
The ``spilt`` calls are identical. Extract the ternary to statement to
retrieve the raw range and consolidate the split calls to DRY out the 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
>
> 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)