*** Settings ***
-Documentation L2Gateway Operations Library. This library has useful keywords for various actions on Hwvtep and Ovs connectivity. Most of the keywords expects that ovs_conn_id,ovs2_conn_id, hwvtep_conn_id, hwvtep2_conn_id and devstack_conn_id are available.
+Documentation L2Gateway Operations Library. This library has useful keywords for various actions on Hwvtep and Ovs connectivity. Most of the keywords expects that ovs_conn_id,ovs2_conn_id, hwvtep_conn_id, hwvtep2_conn_id and OS_CNTL_CONN_ID are available.
Library SSHLibrary
Library Collections
Library RequestsLibrary
*** Keywords ***
Add Ovs Bridge Manager Controller And Verify
- [Arguments] ${conn_id}=${ovs_conn_id} ${hwvtep_bridge}=${HWVTEP_BRIDGE}
+ [Arguments] ${conn_id}=${OS_CMP1_CONN_ID} ${hwvtep_bridge}=${HWVTEP_BRIDGE}
[Documentation] Keyword to set OVS manager and controller to ${ODL_IP} for the OVS IP connected in ${conn_id} and verify the entries in OVSDB NETWORK TOPOLOGY and NETSTAT results.
${output}= Exec Command ${conn_id} ${OVS_RESTART}
${output}= Exec Command ${conn_id} ${OVS_DEL_MGR}
- ${output}= Exec Command ${conn_id} ${OVS_DEL_CTRLR} ${OVS_BRIDGE}
- ${output}= Exec Command ${conn_id} ${DEL_OVS_BRIDGE} ${OVS_BRIDGE}
+ ${output}= Exec Command ${conn_id} ${OVS_DEL_CTRLR} ${INTEGRATION_BRIDGE}
+ ${output}= Exec Command ${conn_id} ${DEL_OVS_BRIDGE} ${INTEGRATION_BRIDGE}
${output}= Exec Command ${conn_id} ${OVS_SHOW}
Should Not Contain ${output} Manager
Should Not Contain ${output} Controller
- ${output}= Exec Command ${conn_id} ${CREATE_OVS_BRIDGE} ${OVS_BRIDGE}
- ${output}= Exec Command ${conn_id} ${SET_FAIL_MODE} ${OVS_BRIDGE} secure
+ ${output}= Exec Command ${conn_id} ${CREATE_OVS_BRIDGE} ${INTEGRATION_BRIDGE}
+ ${output}= Exec Command ${conn_id} ${SET_FAIL_MODE} ${INTEGRATION_BRIDGE} secure
${output}= Exec Command ${conn_id} ${OVS_SET_MGR}:${ODL_IP}:${OVSDBPORT}
- ${output}= Exec Command ${conn_id} ${OVS_SET_CTRLR} ${OVS_BRIDGE} tcp:${ODL_IP}:${ODL_OF_PORT}
+ ${output}= Exec Command ${conn_id} ${OVS_SET_CTRLR} ${INTEGRATION_BRIDGE} tcp:${ODL_IP}:${ODL_OF_PORT}
Wait Until Keyword Succeeds 60s 2s Verify Strings In Command Output ${conn_id} ${OVS_SHOW} Manager "tcp:${ODL_IP}:${OVSDBPORT}"
... Controller "tcp:${ODL_IP}:${ODL_OF_PORT}"
${output}= Exec Command ${conn_id} ${NETSTAT}
Wait Until Keyword Succeeds 30s 2s Validate Regexp In String ${output} ${NETSTAT_OVSDB_REGEX}
Wait Until Keyword Succeeds 30s 2s Validate Regexp In String ${output} ${NETSTAT_OF_REGEX}
- @{list_to_check}= Create List bridge/${OVS_BRIDGE} bridge/${hwvtep_bridge}
+ @{list_to_check}= Create List bridge/${INTEGRATION_BRIDGE} bridge/${hwvtep_bridge}
Wait Until Keyword Succeeds 30s 2s Check For Elements At URI ${OVSDB_NETWORK_TOPOLOGY} ${list_to_check} session
Create Itm Tunnel Between Hwvtep and Ovs
${output}= Exec Command ${conn_id} ${NETSTAT}
Should Contain ${output} ${OVSDBPORT}
@{list_to_check}= Create List ${odl_ip}
- Utils.Check For Elements At URI ${HWVTEP_NETWORK_TOPOLOGY} ${list_to_check} session
+ Wait Until Keyword Succeeds 30s 2s Utils.Check For Elements At URI ${HWVTEP_NETWORK_TOPOLOGY} ${list_to_check} session
Create Verify L2Gateway
[Arguments] ${bridge_name} ${intf_name} ${gw_name}
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.
- ${output}= Exec Command ${devstack_conn_id} ${L2GW_DELETE} ${gw_name}
+ ${output}= Exec Command ${OS_CNTL_CONN_ID} ${L2GW_DELETE} ${gw_name}
Log ${output}
@{list_to_check}= Create List ${gw_name}
- Utils.Check For Elements Not At URI ${L2GW_LIST_REST_URL} ${list_to_check} session
+ BuiltIn.Wait Until Keyword Succeeds 5s 1s Utils.Check For Elements Not At URI ${L2GW_LIST_REST_URL} ${list_to_check} session
Create Verify L2Gateway Connection
[Arguments] ${gw_name} ${net_name}
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
+
Delete L2Gateway Connection
[Arguments] ${gw_name}
[Documentation] Delete the L2 Gateway connection existing for Gateway ${gw_name} received in argument (Using Neutron CLI).
${l2gw_conn_id}= OpenStackOperations.Get L2gw Connection Id ${gw_name}
- ${output}= Exec Command ${devstack_conn_id} ${L2GW_CONN_DELETE} ${l2gw_conn_id}
- @{list_to_check}= Create List ${l2gw_conn_id}
- Utils.Check For Elements Not At URI ${L2GW_CONN_LIST_REST_URL} ${list_to_check} session
+ ${output}= Exec Command ${OS_CNTL_CONN_ID} ${L2GW_CONN_DELETE} ${l2gw_conn_id}
Log ${output}
+ @{list_to_check}= Create List ${l2gw_conn_id}
+ BuiltIn.Wait Until Keyword Succeeds 5s 1s Utils.Check For Elements Not At URI ${L2GW_CONN_LIST_REST_URL} ${list_to_check} session
Update Port For Hwvtep
[Arguments] ${port_name}
[Documentation] Keyword to update the Neutron Ports for specific configuration required to connect to HWVTEP (Using REST).
- ${port_id}= Get Port Id ${port_name} ${devstack_conn_id}
+ ${port_id}= Get Port Id ${port_name}
Log ${port_id}
${json_data}= Get Neutron Port Rest ${port_id}
Should Contain ${json_data} ${STR_VIF_TYPE}
${output}= Exec Command ${conn_id} ${NETNS_EXEC} ${ns_name} ping -c3 ${vm_ip} 30s
Log ${output}
Should Not Contain ${output} ${PACKET_LOSS}
- Wait Until Keyword Succeeds 30s 2s Verify Mcas Local Table While Ping ${ns_port_mac} ${conn_id}
+ Wait Until Keyword Succeeds 30s 2s Verify Macs Local Table While Ping ${ns_port_mac} ${conn_id}
Verify Ping Fails In Namespace
[Arguments] ${ns_name} ${ns_port_mac} ${vm_ip} ${conn_id}=${hwvtep_conn_id} ${hwvtep_ip}=${HWVTEP_IP}
Log ${output}
Should Contain ${output} ${PACKET_LOSS}
-Verify Mcas Local Table While Ping
+Verify Macs Local Table While Ping
[Arguments] ${mac} ${conn_id}
[Documentation] Keyword to check if ${mac} is available under UCAST_MACS_LOCALE_TABLE of HWVTEP dump table.
Verify Vtep List ${conn_id} ${UCAST_MACS_LOCALE_TABLE} ${mac}
Log ${resp.content}
${resp} = RequestsLibrary.Get Request session ${OPERATIONAL_API}/network-topology:network-topology/topology/hwvtep:1
Log ${resp.content}
- Exec Command ${devstack_conn_id} cat /etc/neutron/neutron.conf
- Exec Command ${devstack_conn_id} cat /etc/neutron/l2gw_plugin.ini
- Exec Command ${devstack_conn_id} ps -ef | grep neutron-server
+ Exec Command ${OS_CNTL_CONN_ID} cat /etc/neutron/neutron.conf
+ Exec Command ${OS_CNTL_CONN_ID} cat /etc/neutron/l2gw_plugin.ini
+ Exec Command ${OS_CNTL_CONN_ID} ps -ef | grep neutron-server
Start Command In Hwvtep
[Arguments] ${command} ${hwvtep_ip}
Log ${conn_id}
Flexible SSH Login ${DEFAULT_USER} ${DEFAULT_PASSWORD}
Start Command ${command}
- ${output}= Exec Command ${conn_id} sudo ovs-ofctl dump-flows br-int -O Openflow13
+ ${output}= Exec Command ${conn_id} sudo ovs-ofctl dump-flows ${INTEGRATION_BRIDGE} -O Openflow13
Log ${output}
close connection
${output}= Exec Command ${conn_id} ${OVS_SHOW}
Log ${output}
Should Contain ${output} key="${seg_id}", remote_ip="${ovs_ip}"
- ${output}= Exec Command ${ovs_conn_id} ${OVS_SHOW}
+ ${output}= Exec Command ${OS_CMP1_CONN_ID} ${OVS_SHOW}
Log ${output}
Should Contain ${output} key=flow, local_ip="${ovs_ip}", remote_ip="${hwvtep_ip}"
Verify Elan Flow Entries
[Arguments] ${ip} ${srcMacAddrs} ${destMacAddrs}
[Documentation] Verify Flows Are Present For ELAN service
- ${flow_output} = Run Command On Remote System ${ip} sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
+ ${flow_output} = Run Command On Remote System ${ip} sudo ovs-ofctl -O OpenFlow13 dump-flows ${INTEGRATION_BRIDGE}
Log ${flow_output}
Should Contain ${flow_output} table=50
${sMac_output} = Get Lines Containing String ${flow_output} table=50
Should Contain ${flow_output} table=52
${sMac_output} = Get Lines Containing String ${flow_output} table=52
Log ${sMac_output}
+
+Cleanup L2GW Optional Resources
+ [Documentation] Cleanup resources that are only allocated on certain combos...
+ OpenStackOperations.Delete Port ${HWVTEP_PORT_3}