[
https://issues.apache.org/jira/browse/CLOUDSTACK-9074?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15031440#comment-15031440
]
ASF GitHub Bot commented on CLOUDSTACK-9074:
--------------------------------------------
Github user miguelaferreira commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/1094#discussion_r46114722
--- Diff:
plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/resource/wrapper/NiciraNvpConfigureSharedNetworkVlanIdCommandWrapper.java
---
@@ -0,0 +1,93 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package com.cloud.network.resource.wrapper;
+
+import static com.cloud.network.resource.NiciraNvpResource.NAME_MAX_LEN;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.cloud.agent.api.Answer;
+import com.cloud.agent.api.ConfigureSharedNetworkVlanIdAnswer;
+import com.cloud.agent.api.ConfigureSharedNetworkVlanIdCommand;
+import com.cloud.network.nicira.L2GatewayAttachment;
+import com.cloud.network.nicira.LogicalSwitchPort;
+import com.cloud.network.nicira.NiciraNvpApi;
+import com.cloud.network.nicira.NiciraNvpApiException;
+import com.cloud.network.nicira.NiciraNvpTag;
+import com.cloud.network.resource.NiciraNvpResource;
+import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
+
+@ResourceWrapper(handles = ConfigureSharedNetworkVlanIdCommand.class)
+public class NiciraNvpConfigureSharedNetworkVlanIdCommandWrapper extends
CommandWrapper<ConfigureSharedNetworkVlanIdCommand, Answer, NiciraNvpResource>{
+
+ private static final Logger s_logger =
Logger.getLogger(NiciraNvpConfigureSharedNetworkVlanIdCommandWrapper.class);
+
+ @Override
+ public Answer execute(ConfigureSharedNetworkVlanIdCommand command,
NiciraNvpResource niciraNvpResource) {
+ final String logicalSwitchUuid = command.getLogicalSwitchUuid();
+ final String l2GatewayServiceUuid =
command.getL2GatewayServiceUuid();
+ long vlanId = command.getVlanId();
+ final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
+ tags.add(new NiciraNvpTag("cs_account", command.getOwnerName()));
+ final long networkId = command.getNetworkId();
+
+ s_logger.debug("Connecting Logical Switch " + logicalSwitchUuid +
" to L2 Gateway Service " + l2GatewayServiceUuid + ", vlan id " + vlanId + "
network " + networkId);
+ final NiciraNvpApi niciraNvpApi =
niciraNvpResource.getNiciraNvpApi();
+
+ LogicalSwitchPort lsp = null;
+ try {
+ // Create the outside port for the router
+ lsp = new LogicalSwitchPort();
+ lsp.setAdminStatusEnabled(true);
+ lsp.setDisplayName(niciraNvpResource.truncate(networkId +
"-l2Gateway-port", NAME_MAX_LEN));
+ lsp.setTags(tags);
+ lsp = niciraNvpApi.createLogicalSwitchPort(logicalSwitchUuid,
lsp);
+
+ try {
+ // Attach the outside port to the gateway service on the
correct VLAN
+ final L2GatewayAttachment attachment = new
L2GatewayAttachment(l2GatewayServiceUuid);
+ if (command.getVlanId() != 0) {
+ attachment.setVlanId(command.getVlanId());
+ }
+
niciraNvpApi.updateLogicalSwitchPortAttachment(logicalSwitchUuid,
lsp.getUuid(), attachment);
+ }
+ catch (NiciraNvpApiException e){
+ try {
+
niciraNvpApi.deleteLogicalSwitchPort(logicalSwitchUuid, lsp.getUuid());
+ } catch (NiciraNvpApiException e1) {
--- End diff --
Caught exceptions should at least be logged.
> Support shared networking in NiciraNVP Plugin
> ---------------------------------------------
>
> Key: CLOUDSTACK-9074
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9074
> Project: CloudStack
> Issue Type: Improvement
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Affects Versions: 4.7.0
> Reporter: Nicolas Vazquez
> Fix For: 4.7.0
>
>
> h3. Introduction
> Currently NiciraNVP plugin supports only Isolated networking. In this mode of
> operations networks are assigned to individual Cloudstack accounts and on NSX
> side are completely isolated on the L3 level. Many use cases especially in
> corporate environment call for shared networking mode support. In some
> circumstances there also may be a need to translate shared NSX network over
> to a physical VLAN via L2 NSX gateway.
> Features that will be introduced to support Cloudstack shared networks in two
> modes of NiciraNVP plugin:
> * Shared networks mapped to a physical VLAN with L2 NSX gateway
> * Shared networks within the same L3 NSX domain. Multiple L3 NSX domains will
> be supported.
> h3. Features
> h4. 1) Shared networking model support
> # Support native Cloudstack shared network in NiciraNVP plugin.
> # Current code that implements isolated networking mode support will stay
> intact.
> # Designate network service offering by configuring VirtualNetworking
> provider with NiciraNVP.
> # Static/Source NAT is not used and ignored if defined in the network
> offering.
> # Nicira_vvp_router_map table will support non-unique logical routers to
> implement L3 NSX routing domains where multiple Cloudstack networks are
> attached to the same logical router.
> # Shared network with NSX based Virtual networking will go through the
> following states:
> ## Allocated
> ## Implementing
> ## Implemented
> ## Destroy
> h4. 2) Support NSX L2 gateways for L2 based VLANs mapped to a physical network
> # Optional L2gatewayserviceuuid parameter for NiciraNVP controller
> # VLAN ID of a Shared network represents VLAN to pass through L2 gateway
> similar to native Cloudstack shared networking
> # NSX workflow for network allocation
> ## Check if l2gatewayservice defined
> ## Create record in networks table
> ### NiciraNvpGuestNetworkGuru as Guru_name
> ### Lswitch as broadcast_doamin
> ### Vlan://vlan_id as broadcast_uri
> ## Create record in VLAN table
> # NSX workflow for network implementation
> ## Check if l2gatewayservice defined and valid
> ## Create logical switch
> ## Map logical switch to L2gateway service assigning shared network VLAN ID
> # NSX workflow for NIC management and/or hypervisor support
> ## No changes from current implementation
> h4. 3) Support NSX L3 multiple routing domains
> # VLAN ID of a Shared network represents an UUID of a NSX virtual router of a
> particular routing domain. We will support UUID style notation for VLAN ID.
> l3gatewayservice option is not used in shared networking
> # It is assumed that if connectivity to the physical networking is required
> then logical router is configured and connected to the physical network in
> advance. NiciraNVP plugin will not perform any task beyond basic connectivity
> to the logical router
> # Support NSX L3 multiple routing domains
> # NSX workflow for network allocation
> ## Create record in networks table
> ### NiciraNvpGuestNetworkGuru as Guru_name
> ### Lswitch as broadcast_domain
> ### NULL as broadcast_uri
> ## Create record in VLAN table
> ## Create record in nicira_nvp_router_map table
> # NSX workflow for network implementation
> ## Check if logical router exists on NSX side which UUID matches the one
> defined during shared network creation. This mode is activated if VLAN ID
> supplied in UUID style notation
> ## Create logical switch
> ## Attach logical switch to the logical router
> ## Assign shared network default gateway to the inside port of the logical
> router
> # NSX workflow for NIC management and/or hypervisor support
> ## No changes from current implementation
> h4. 4) API Changes
> # Existing API addNiciraNvpDevices will be updated
> ## Adding 1 new optional parameter – l2gatewayserviceuuid
> ## Adding 1 new response tag – l2gatewayserviceuuid
> # Existing API listNiciraNvpDevices will be updated
> ## Adding 1 new response tag – l2gatewayserviceuuid
> # Existing API listNics will be updated
> ## Adding 2 new optional response tag – nsxlogicalswitch, nsxlogicalswitchport
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)