[ 
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)

Reply via email to