[
https://issues.apache.org/jira/browse/CLOUDSTACK-8832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14953422#comment-14953422
]
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_r41779077
--- Diff:
plugins/network-elements/nuage-vsp/src/com/cloud/network/guru/NuageVspGuestNetworkGuru.java
---
@@ -129,66 +134,94 @@ public Network design(NetworkOffering offering,
DeploymentPlan plan, Network use
@Override
public Network implement(Network network, NetworkOffering offering,
DeployDestination dest, ReservationContext context) throws
InsufficientVirtualNetworkCapacityException {
+ long networkId = network.getId();
+ network = _networkDao.acquireInLockTable(network.getId(), 1200);
+ if (network == null) {
+ throw new ConcurrentOperationException("Unable to acquire lock
on network " + networkId);
+ }
- assert (network.getState() == State.Implementing) : "Why are we
implementing " + network;
+ 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());
+ }
+ List<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";
+ if (s_logger.isDebugEnabled()) {
+ s_logger.debug(errorMessage);
+ }
+ throw new
InsufficientVirtualNetworkCapacityException(errorMessage, Account.class,
network.getAccountId());
+ }
+ String vpcName = null;
+ String vpcUuid = null;
+ String preConfiguredDomainTemplateName =
NuageVspUtil.getPreConfiguredDomainTemplateName(_configDao, network, offering);
+ boolean isSharedNetwork = offering.getGuestType() ==
GuestType.Shared;
+ boolean isL3Network = !isVpc && (isSharedNetwork ||
isL3Network(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();
- }
+ if (isVpc) {
+ Vpc vpcObj = _vpcDao.findById(vpcId);
+ vpcName = vpcObj.getName();
+ vpcUuid = vpcObj.getUuid();
+ }
+
+ if (isSharedNetwork) {
+ 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("-");
+ ipAddressRanges.add(range);
+ }
+ }
- 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);
+ HostVO nuageVspHost = getNuageVspHost(physicalNetworkId);
+ List<String> dnsServers =
_nuageVspManager.getDnsDetails(network);
+ List<String> gatewaySystemIds =
_nuageVspManager.getGatewaySystemIds();
+ ImplementNetworkVspCommand.Builder cmdBuilder = new
ImplementNetworkVspCommand.Builder().networkDomainName(networksDomain.getName()).networkDomainPath(networksDomain.getPath())
+
.networkDomainUuid(networksDomain.getUuid()).networkAccountName(networksAccount.getAccountName()).networkAccountUuid(networksAccount.getUuid())
+
.networkName(network.getName()).networkCidr(network.getCidr()).networkGateway(network.getGateway()).networkAclId(network.getNetworkACLId()).dnsServers(dnsServers)
+
.gatewaySystemIds(gatewaySystemIds).networkUuid(network.getUuid()).isL3Network(isL3Network).isVpc(isVpc).isSharedNetwork(isSharedNetwork).vpcName(vpcName)
+
.vpcUuid(vpcUuid).defaultEgressPolicy(offering.getEgressDefaultPolicy()).ipAddressRange(ipAddressRanges).domainTemplateName(preConfiguredDomainTemplateName);
+ ImplementNetworkVspAnswer answer =
(ImplementNetworkVspAnswer)_agentMgr.easySend(nuageVspHost.getId(),
cmdBuilder.build());
- if (answer == null || !answer.getResult()) {
- s_logger.error("ImplementNetworkNuageVspCommand failed");
- if ((null != answer) && (null != answer.getDetails())) {
- s_logger.error(answer.getDetails());
+ if (answer == null || !answer.getResult()) {
+ s_logger.error("ImplementNetworkNuageVspCommand failed");
--- End diff --
Please provide context information about the Nuage device and network that
failed to configure.
> 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)