Add Netvirt L2GW test cases 73/67173/28
authorVictor Pickard <vpickard@redhat.com>
Mon, 15 Jan 2018 21:11:57 +0000 (16:11 -0500)
committerVictor Pickard <vpickard@redhat.com>
Thu, 15 Feb 2018 13:21:40 +0000 (08:21 -0500)
Add test cases to cover the use case where a port
is added to an L2GW that has an existing L2GW
connection.

This is only supported on ODL oxygen and later.
As well, OpenStack must be queens or later.

Change-Id: I31ce6ff930e93ceca48def7ea92281bd4106fb05
Signed-off-by: Victor Pickard <vpickard@redhat.com>
csit/libraries/L2GatewayOperations.robot
csit/libraries/OpenStackOperations.robot
csit/suites/l2gw/01_Configure_verify_l2gateway.robot
csit/variables/l2gw/Variables.robot

index d7490cc2c8eaae02c769c59009a58c399cd671c8..e4724a076b43026beca0b83a789039b06329a7d9 100644 (file)
@@ -73,6 +73,19 @@ Create Verify L2Gateway
     Utils.Check For Elements At URI    ${L2GW_LIST_REST_URL}    ${list_to_check}    session
     [Return]    ${l2gw_output}
 
+Update And Verify L2Gateway
+    [Arguments]    ${bridge_name}    ${gw_name}    ${intf_name_1}    ${intf_name_2}
+    [Documentation]    Keyword to add interface {intf_name_2} to an existing L2 Gateway ${gw_name} for bridge ${bridge_name} (Using Neutron CLI).
+    ${l2gw_output}=    OpenStackOperations.Update L2Gateway    ${bridge_name}    ${gw_name}    ${intf_name_1}    ${intf_name_2}
+    ${output}=    OpenStackOperations.Get All L2Gateway
+    Log    ${output}
+    Should Contain    ${output}    ${gw_name}
+    Should Contain    ${output}    ${intf_name_1}
+    Should Contain    ${output}    ${intf_name_2}
+    @{list_to_check}=    Create List    ${gw_name}
+    Utils.Check For Elements At URI    ${L2GW_LIST_REST_URL}    ${list_to_check}    session
+    [Return]    ${l2gw_output}
+
 Delete L2Gateway
     [Arguments]    ${gw_name}
     [Documentation]    Keyword to delete the L2 Gateway ${gw_name} received in argument.
@@ -94,6 +107,17 @@ Create Verify L2Gateway Connection
     Utils.Check For Elements At URI    ${L2GW_CONN_LIST_REST_URL}    ${list_to_check}    session
     [Return]    ${l2gw_output}
 
+Verify L2Gateway Connection
+    [Arguments]    ${gw_name}    ${net_name}
+    [Documentation]    Keyword to verify existing L2 Gateway Connection for ${gw_name} to ${net_name} $(Using Neutron CLI).
+    ${l2gw_id}=    OpenStackOperations.Get L2gw Id    ${gw_name}
+    ${output}=    OpenStackOperations.Get All L2Gateway Connection
+    Log    ${output}
+    Should Contain    ${output}    ${l2gw_id}
+    @{list_to_check}=    Create List    ${l2gw_id}
+    Utils.Check For Elements At URI    ${L2GW_CONN_LIST_REST_URL}    ${list_to_check}    session
+    [Return]    ${l2gw_output}
+
 Delete L2Gateway Connection
     [Arguments]    ${gw_name}
     [Documentation]    Delete the L2 Gateway connection existing for Gateway ${gw_name} received in argument (Using Neutron CLI).
index 41b4a5e0ed932285cbadcba2832dede69462a2a2..59ea39d383b3b08388e9269b78f11033777010f5 100644 (file)
@@ -749,6 +749,13 @@ Create L2Gateway
     BuiltIn.Log    ${l2gw_output}
     [Return]    ${l2gw_output}
 
+Update L2Gateway
+    [Arguments]    ${bridge_name}    ${gw_name}    ${intf_name_1}    ${intf_name_2}
+    [Documentation]    Keyword to add {intf_name_list} to an existing L2 Gateway ${gw_name} (Using Neutron CLI).
+    ${rc}    ${l2gw_output}=    Run And Return Rc And Output    ${L2GW_UPDATE} name=${bridge_name},interface_names="${intf_name_1};${intf_name_2}" ${gw_name}
+    Log    ${l2gw_output}
+    [Return]    ${l2gw_output}
+
 Create L2Gateway Connection
     [Arguments]    ${gw_name}    ${net_name}
     [Documentation]    Keyword would create a new L2 Gateway Connection for ${gw_name} to ${net_name} (Using Neutron CLI).
index d2fb73dacd0ade4292ec1c46afbac7f83feb4e10..4edb99669a6573ca5b0eda190b2f56971b489448 100644 (file)
@@ -4,12 +4,15 @@ Suite Setup       Basic Suite Setup
 Suite Teardown    Basic Suite Teardown
 Test Teardown     Get L2gw Debug Info
 Resource          ../../libraries/L2GatewayOperations.robot
+Resource          ../../libraries/CompareStream.robot
 
 *** Test Cases ***
 TC01 Configure Hwvtep Manager OVS Manager Controller And Verify
+    [Documentation]    Configure ODL at ${ODL_IP} as manager for HWVTEP
     L2GatewayOperations.Add Vtep Manager And Verify    ${ODL_IP}
 
 TC02 Create First Set Of Network Subnet And Ports
+    [Documentation]    Create Networks and Ports
     OpenStackOperations.Create Network    ${NET_1}    ${NET_ADDT_ARG} ${NET_1_SEGID}
     ${output}=    OpenStackOperations.List Networks
     Should Contain    ${output}    ${NET_1}
@@ -29,18 +32,21 @@ TC02 Create First Set Of Network Subnet And Ports
     Append To List    ${port_ip_list}    ${port_ip}
 
 TC03 Update Port For Hwvtep And Attach Port To Namespace
+    [Documentation]    Update the Neutron Ports for required to connect to HWVTEP and attach that port to tap port in namespace
     L2GatewayOperations.Update Port For Hwvtep    ${HWVTEP_PORT_1}
     Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Attach Port To Hwvtep Namespace    ${port_mac_list[1]}    ${HWVTEP_NS1}    ${NS_TAP1}
 
 TC04 Create Vms On Compute Node
+    [Documentation]    Create VM on compute node and verify that VM got IP address
+    # FIXME! Don't need this in queens, but do in earlier releases
     OpenStackOperations.Create Nano Flavor
-    ${hostname_compute_node}=    Get Hypervisor Hostname From IP    ${OVS_IP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${OVS_PORT_1}    ${OVS_VM1_NAME}    ${hostname_compute_node}    sg=${SECURITY_GROUP_L2GW}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${OVS_PORT_1}    ${OVS_VM1_NAME}    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP_L2GW}
     ${vm_ip}=    Wait Until Keyword Succeeds    60s    2s    L2GatewayOperations.Verify Nova VM IP    ${OVS_VM1_NAME}
     Log    ${vm_ip}
     Should Contain    ${vm_ip}    ${port_ip_list[0]}
 
 TC05 Create L2Gateway And Connection And Verify
+    [Documentation]    Create L2GW and Connection using Neutron CLI. Verify info in hardware_vtep db in HWVTEP emulator.
     ${output}=    L2GatewayOperations.Create Verify L2Gateway    ${HWVTEP_BRIDGE}    ${NS_PORT1}    ${L2GW_NAME1}
     Log    ${output}
     ${output}=    Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Create Verify L2Gateway Connection    ${L2GW_NAME1}    ${NET_1}
@@ -57,9 +63,11 @@ TC05 Create L2Gateway And Connection And Verify
     Wait Until Keyword Succeeds    30s    1s    L2GatewayOperations.Verify Vtep List    ${hwvtep_conn_id}    ${UCAST_MACS_REMOTE_TABLE}    ${port_mac_list[0]}
 
 TC06 Dhcp Ip Allocation For Hwvtep Tap Port
+    [Documentation]    Verify that HWVTEP port gets an IP address
     Wait Until Keyword Succeeds    180s    10s    L2GatewayOperations.Namespace Dhclient Verify    ${HWVTEP_NS1}    ${NS_TAP1}    ${port_ip_list[1]}
 
 TC07 Verify Ping From Compute Node Vm To Hwvtep
+    [Documentation]    Verify that VM on Compute Node can ping HWVTEP port
     ${output}=    Wait Until Keyword Succeeds    60s    10s    Execute Command on VM Instance    ${NET_1}    ${port_ip_list[0]}
     ...    ping -c 3 ${port_ip_list[1]}
     Log    ${output}
@@ -69,9 +77,11 @@ TC07 Verify Ping From Compute Node Vm To Hwvtep
     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Elan Flow Entries    ${OVS_IP}    ${src_mac_list}    ${dst_mac_list}
 
 TC08 Ping Verification From Namespace Tap To Ovs Vm
+    [Documentation]    Verify that HWVTEP port can ping VM on compute node
     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Ping In Namespace Extra Timeout    ${HWVTEP_NS1}    ${port_mac_list[1]}    ${port_ip_list[0]}
 
 TC09 Additional Network Subnet Port Creation
+    [Documentation]    Create 2nd network and ports
     OpenStackOperations.Create Network    ${NET_2}    ${NET_ADDT_ARG} ${NET_2_SEGID}
     ${output}=    OpenStackOperations.List Networks
     Should Contain    ${output}    ${NET_2}
@@ -90,10 +100,10 @@ TC09 Additional Network Subnet Port Creation
     Append To List    ${port_ip_list}    ${port_ip}
 
 TC10 Update And Attach Second Port To Hwvtep Create L2gw Connection
+    [Documentation]    Update ports in Neutron so they can be connected to HWVTEP, create 2nd L2GW and Connection, and Verify
     L2GatewayOperations.Update Port For Hwvtep    ${HWVTEP_PORT_2}
     Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Attach Port To Hwvtep Namespace    ${port_mac_list[3]}    ${HWVTEP_NS2}    ${NS2_TAP1}
-    ${hostname_compute_node}=    Get Hypervisor Hostname From IP    ${OVS_IP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${OVS_PORT_2}    ${OVS_VM2_NAME}    ${hostname_compute_node}    sg=${SECURITY_GROUP_L2GW}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${OVS_PORT_2}    ${OVS_VM2_NAME}    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP_L2GW}
     ${vm_ip}=    Wait Until Keyword Succeeds    60s    2s    L2GatewayOperations.Verify Nova VM IP    ${OVS_VM2_NAME}
     Log    ${vm_ip}
     Should Contain    ${vm_ip}    ${port_ip_list[2]}
@@ -105,6 +115,7 @@ TC10 Update And Attach Second Port To Hwvtep Create L2gw Connection
     Validate Regexp In String    ${phy_port_out}    ${VLAN_BINDING_REGEX}    2
 
 TC11 Dhcp Ip Allocation And Ping Validation Within Second Network
+    [Documentation]    Verify that port in namespace got an IP. Verify flow entries, verify IP connectivity between HWVTEP port and VM
     Wait Until Keyword Succeeds    180s    10s    L2GatewayOperations.Namespace Dhclient Verify    ${HWVTEP_NS2}    ${NS2_TAP1}    ${port_ip_list[3]}
     ${output}=    Wait Until Keyword Succeeds    60s    10s    Execute Command on VM Instance    ${NET_2}    ${port_ip_list[2]}
     ...    ping -c 3 ${port_ip_list[3]}
@@ -116,14 +127,84 @@ TC11 Dhcp Ip Allocation And Ping Validation Within Second Network
     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Ping In Namespace Extra Timeout    ${HWVTEP_NS2}    ${port_mac_list[3]}    ${port_ip_list[2]}
 
 TC12 Ping Between Vm In Second Network To Namespace In First Network
+    [Documentation]    Verify IP Connectivity between VM in 2nd network to NS in 1st network
     ${output}=    Wait Until Keyword Succeeds    60s    10s    Execute Command on VM Instance    ${NET_2}    ${port_ip_list[2]}
     ...    ping -c 3 ${port_ip_list[1]}
     Log    ${output}
     Should Contain    ${output}    ${PACKET_LOSS}
 
 TC13 Ping Between Namespace In Second Network To Vm In First Network
+    [Documentation]    Verify IP Connectivity between port in NS in 2nd network to VM in 1st network
     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Ping Fails In Namespace    ${HWVTEP_NS2}    ${port_mac_list[3]}    ${port_ip_list[0]}
 
+TC14 Create, Update And Attach 2nd Neutron Port to Hwvtep Namespace 1
+    [Documentation]    Create and attach 2nd port to HWVTEP in network 1
+    [Tags]    skip_if_stable/ocata    skip_if_stable/pike
+    BuiltIn.Pass_Execution_If    "skip_if_${OPENSTACK_BRANCH}" in @{TEST_TAGS}    Not supported in Ocata/Pike
+    CompareStream.Run_Keyword_If_At_Most_Nitrogen    BuiltIn.Pass_Execution    Only run on oxygen and later
+    OpenStackOperations.Create Neutron Port With Additional Params    ${NET_1}    ${HWVTEP_PORT_3}    ${SECURITY_GROUP_L2GW_NONE}
+    ${port_mac}=    Get Port Mac    ${HWVTEP_PORT_3}    #port_mac[4]
+    ${port_ip}=    Get Port Ip    ${HWVTEP_PORT_3}    #port_ip[4]
+    Append To List    ${port_mac_list}    ${port_mac}
+    Append To List    ${port_ip_list}    ${port_ip}
+    Namespace Add Port Hwvtep1
+    L2GatewayOperations.Update Port For Hwvtep    ${HWVTEP_PORT_3}
+    Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Attach Port To Hwvtep Namespace    ${port_mac_list[4]}    ${HWVTEP_NS1}    ${NS_TAP1}
+
+TC15 Update Existing L2Gateway With 2nd Port And Verify
+    [Documentation]    Add the new port ${NS_PORT3} to existing L2GW ${L2GW_NAME1} that has an existing connection. ${NS_PORT1} is already attached, adding ${NS_PORT3}
+    [Tags]    skip_if_stable/ocata    skip_if_stable/pike
+    BuiltIn.Pass_Execution_If    "skip_if_${OPENSTACK_BRANCH}" in @{TEST_TAGS}    Not supported in Ocata/Pike
+    CompareStream.Run_Keyword_If_At_Most_Nitrogen    BuiltIn.Pass_Execution    Only run on oxygen and later
+    ${output}=    Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Update And Verify L2Gateway    ${HWVTEP_BRIDGE}    ${L2GW_NAME1}
+    ...    ${NS_PORT1}    ${NS_PORT3}
+
+TC16 Verify L2Gateway Connection
+    [Documentation]    Verify the L2GW connection has the 2nd port. Verify db in hardware vtep emulator tables.
+    [Tags]    skip_if_stable/ocata    skip_if_stable/pike
+    BuiltIn.Pass_Execution_If    "skip_if_${OPENSTACK_BRANCH}" in @{TEST_TAGS}    Not supported in Ocata/Pike
+    CompareStream.Run_Keyword_If_At_Most_Nitrogen    BuiltIn.Pass_Execution    Only run on oxygen and later
+    ${output}=    Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Create Verify L2Gateway Connection    ${L2GW_NAME1}    ${NET_1}
+    Log    ${output}
+    Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Verify Ovs Tunnel    ${HWVTEP_IP}    ${OVS_IP}
+    ${output}=    ITM Get Tunnels
+    Log    ${output}
+    Should Contain    ${output}    physicalswitch/${HWVTEP_BRIDGE}
+    Wait Until Keyword Succeeds    30s    1s    L2GatewayOperations.Verify Vtep List    ${hwvtep_conn_id}    ${TUNNEL_TABLE}    enable="true"
+    ${phy_port_out}=    Get Vtep List    ${PHYSICAL_PORT_TABLE}
+    Validate Regexp In String    ${phy_port_out}    ${VLAN_BINDING_REGEX}    1
+    ${list}=    Create List    ${OVS_IP}    ${HWVTEP_IP}
+    Wait Until Keyword Succeeds    30s    1s    L2GatewayOperations.Verify Vtep List    ${hwvtep_conn_id}    ${PHYSICAL_LOCATOR_TABLE}    @{list}
+    Wait Until Keyword Succeeds    30s    1s    L2GatewayOperations.Verify Vtep List    ${hwvtep_conn_id}    ${UCAST_MACS_REMOTE_TABLE}    ${port_mac_list[0]}
+    Wait Until Keyword Succeeds    30s    1s    L2GatewayOperations.Verify Vtep List    ${hwvtep_conn_id}    ${UCAST_MACS_REMOTE_TABLE}    ${port_mac_list[4]}
+
+TC17 Dhcp Ip Allocation For Hwvtep Tap Port
+    [Documentation]    Verify the 2nd HWVTEP port was able to get an IP address
+    [Tags]    skip_if_stable/ocata    skip_if_stable/pike
+    BuiltIn.Pass_Execution_If    "skip_if_${OPENSTACK_BRANCH}" in @{TEST_TAGS}    Not supported in Ocata/Pike
+    CompareStream.Run_Keyword_If_At_Most_Nitrogen    BuiltIn.Pass_Execution    Only run on oxygen and later
+    Wait Until Keyword Succeeds    180s    10s    L2GatewayOperations.Namespace Dhclient Verify    ${HWVTEP_NS1}    ${NS_TAP1}    ${port_ip_list[4]}
+
+TC18 Verify Ping From Compute Node Vm To Hwvtep Port 2
+    [Documentation]    Verify IP connectivity between VM in net1 and 2nd HWVTEP port in net 1
+    [Tags]    skip_if_stable/ocata    skip_if_stable/pike
+    BuiltIn.Pass_Execution_If    "skip_if_${OPENSTACK_BRANCH}" in @{TEST_TAGS}    Not supported in Ocata/Pike
+    CompareStream.Run_Keyword_If_At_Most_Nitrogen    BuiltIn.Pass_Execution    Only run on oxygen and later
+    ${output}=    Wait Until Keyword Succeeds    60s    10s    Execute Command on VM Instance    ${NET_1}    ${port_ip_list[4]}
+    ...    ping -c 3 ${port_ip_list[4]}
+    Log    ${output}
+    Should Not Contain    ${output}    ${PACKET_LOSS}
+    ${src_mac_list}=    Create List    ${port_mac_list[0]}
+    ${dst_mac_list}=    Create List    ${port_mac_list[4]}
+    Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Elan Flow Entries    ${OVS_IP}    ${src_mac_list}    ${dst_mac_list}
+
+TC19 Ping Verification From Namespace Tap To Ovs Vm
+    [Documentation]    Verify IP connectivity between 2nd HWVTEP port and VM in compute node
+    [Tags]    skip_if_stable/ocata    skip_if_stable/pike
+    BuiltIn.Pass_Execution_If    "skip_if_${OPENSTACK_BRANCH}" in @{TEST_TAGS}    Not supported in Ocata/Pike
+    CompareStream.Run_Keyword_If_At_Most_Nitrogen    BuiltIn.Pass_Execution    Only run on oxygen and later
+    Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Ping In Namespace Extra Timeout    ${HWVTEP_NS1}    ${port_mac_list[4]}    ${port_ip_list[0]}
+
 TC99 Cleanup L2Gateway Connection Itm Tunnel Port Subnet And Network
     L2GatewayOperations.Delete L2Gateway Connection    ${L2GW_NAME1}
     L2GatewayOperations.Delete L2Gateway Connection    ${L2GW_NAME2}
@@ -135,6 +216,7 @@ TC99 Cleanup L2Gateway Connection Itm Tunnel Port Subnet And Network
     OpenStackOperations.Delete Port    ${OVS_PORT_2}
     OpenStackOperations.Delete Port    ${HWVTEP_PORT_1}
     OpenStackOperations.Delete Port    ${HWVTEP_PORT_2}
+    OpenStackOperations.Delete Port    ${HWVTEP_PORT_3}
     OpenStackOperations.Delete SubNet    ${SUBNET_1}
     OpenStackOperations.Delete SubNet    ${SUBNET_2}
     OpenStackOperations.Delete Network    ${NET_1}
@@ -224,9 +306,18 @@ Namespace Intiate Hwvtep1
     Create Configure Namespace    ${HWVTEP_NS1}    ${NS_PORT1}    ${NS_TAP1}    ${HWVTEP_BRIDGE}
     Create Configure Namespace    ${HWVTEP_NS2}    ${NS_PORT2}    ${NS2_TAP1}    ${HWVTEP_BRIDGE}
 
+Namespace Add Port Hwvtep1
+    [Documentation]    Configure the namespace, bridges and ports.
+    Switch Connection    ${hwvtep_conn_id}
+    Configure Namespace    ${HWVTEP_NS1}    ${NS_PORT3}    ${NS_TAP3}    ${HWVTEP_BRIDGE}
+
 Create Configure Namespace
     [Arguments]    ${ns_name}    ${ns_port_name}    ${tap_port_name}    ${hwvtep_bridge}
     Write Commands Until Prompt    ${NETNS_ADD} ${ns_name}    30s
+    Configure Namespace    ${ns_name}    ${ns_port_name}    ${tap_port_name}    ${hwvtep_bridge}
+
+Configure Namespace
+    [Arguments]    ${ns_name}    ${ns_port_name}    ${tap_port_name}    ${hwvtep_bridge}
     Write Commands Until Prompt    ${IP_LINK_ADD} ${tap_port_name} type veth peer name ${ns_port_name}    30s
     Write Commands Until Prompt    ${CREATE_OVS_PORT} ${hwvtep_bridge} ${ns_port_name}    30s
     Write Commands Until Prompt    ${IP_LINK_SET} ${tap_port_name} netns ${ns_name}    30s
@@ -236,7 +327,7 @@ Create Configure Namespace
     Log    ${stdout}
 
 Hwvtep Validation
-    [Documentation]    Initial validation of the Hwvtep Configuration to confirm Phyisical_Switch table entries
+    [Documentation]    Initial validation of the Hwvtep Configuration to confirm Physical_Switch table entries
     Switch Connection    ${hwvtep_conn_id}
     ${stdout}=    Write Commands Until Prompt    ${VTEP LIST} ${PHYSICAL_SWITCH_TABLE}    30s
     Should Contain    ${stdout}    ${HWVTEP_BRIDGE}
index 42b0fd7dabd135b2dc80dc7b2f70e346838eb233..1742ecfe74394b4bc1ebb0d256c7c6bb944d52f0 100644 (file)
@@ -7,8 +7,8 @@ ${HWVTEP_IP}      ${TOOLS_SYSTEM_1_IP}
 ${HWVTEP2_IP}     ${TOOLS_SYSTEM_2_IP}
 ${ODL_IP}         ${ODL_SYSTEM_1_IP}
 ${OS_PASSWORD}    ${EMPTY}
-${HWVTEP_BRIDGE}    br-ovs
-${HWVTEP2_BRIDGE}    br-ovs2
+${HWVTEP_BRIDGE}    br-hwvtep-blue
+${HWVTEP2_BRIDGE}    br-hwvtep-red
 ${DEVSTACK_DEPLOY_PATH}    /home/stack/devstack
 ${HWVTEP_NS1}     NS1
 ${HWVTEP_NS2}     NS2
@@ -16,8 +16,9 @@ ${HWVTEP2_NS1}    NS3
 ${HWVTEP2_NS2}    NS4
 ${HWVTEP_PORT_1}    HWVPORT1
 ${HWVTEP_PORT_2}    HWVPORT2
-${HWVTEP2_PORT_1}    HWVPORT3
-${HWVTEP2_PORT_2}    HWVPORT4
+${HWVTEP_PORT_3}    HWVPORT3
+${HWVTEP2_PORT_1}    HWVPORT4
+${HWVTEP2_PORT_2}    HWVPORT5
 ${L2GW_NAME1}     GW1
 ${L2GW_NAME2}     GW2
 ${L2GW_NAME3}     GW3
@@ -28,12 +29,15 @@ ${NET_2_SEGID}    1064
 ${NET_2}          NETHWV2
 ${NS_PORT1}       PORT1
 ${NS_PORT2}       PORT2
-${NS2_PORT1}      PORT3
-${NS2_PORT2}      PORT4
+${NS_PORT3}       PORT3
+${NS2_PORT1}      PORT4
+${NS2_PORT2}      PORT5
 ${NS_TAP1}        TAP1
-${NS2_TAP1}       TAP2
-${NS3_TAP1}       TAP3
-${NS4_TAP1}       TAP4
+${NS_TAP2}        TAP2
+${NS_TAP3}        TAP3
+${NS2_TAP1}       TAP4
+${NS3_TAP1}       TAP5
+${NS4_TAP1}       TAP6
 ${OVS_BRIDGE}     br-int
 ${OVS_PORT_1}     OVSPORT1
 ${OVS_PORT_2}     OVSPORT2
@@ -79,6 +83,7 @@ ${L2GW_CONN_DELETE}    neutron l2-gateway-connection-delete
 ${L2GW_LIST_REST_URL}    /restconf/config/neutron:neutron/l2gateways/
 ${L2GW_CONN_LIST_REST_URL}    /restconf/config/neutron:neutron/l2gatewayConnections/
 ${L2GW_CREATE}    neutron l2-gateway-create --device
+${L2GW_UPDATE}    neutron l2-gateway-update --device
 ${L2GW_DELETE}    neutron l2-gateway-delete
 ${L2GW_GET_CONN_YAML}    neutron l2-gateway-connection-list -f yaml
 ${L2GW_GET_CONN}    neutron l2-gateway-connection-list