*** Settings ***
Library SSHLibrary
-Resource Utils.robot
Library String
Library Collections
-Variables ../variables/Variables.py
Library RequestsLibrary
+Resource Utils.robot
+Resource ClusterManagement.robot
+Resource ${CURDIR}/TemplatedRequests.robot
+Variables ../variables/Variables.py
*** Variables ***
${OVSDB_CONFIG_DIR} ../variables/ovsdb
Log data: ${body}
${resp} RequestsLibrary.Put Request session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT} data=${body}
Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
Disconnect From Ovsdb Node
[Arguments] ${mininet_ip}
Log data: ${body}
${resp} RequestsLibrary.Put Request session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num} data=${body}
Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
Delete Bridge From Ovsdb Node
[Arguments] ${mininet_ip} ${bridge_num}
Log data: ${body}
${resp} RequestsLibrary.Put Request session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num}/termination-point/${vxlan_port}/ data=${body}
Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
Verify OVS Reports Connected
[Arguments] ${tools_system}=${TOOLS_SYSTEM_IP}
[Documentation] Uses "vsctl show" to check for string "is_connected"
- ${output}= Run Command On Remote System ${tools_system} sudo ovs-vsctl show
+ ${output}= Utils.Run Command On Mininet ${tools_system} sudo ovs-vsctl show
Should Contain ${output} is_connected
+ [Return] ${output}
Get OVSDB UUID
- [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_ip}=${ODL_SYSTEM_IP} ${controller_http_session}=session
+ [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_http_session}=session
[Documentation] Queries the topology in the operational datastore and searches for the node that has
... the ${ovs_system_ip} argument as the "remote-ip". If found, the value returned will be the value of
... node-id stripped of "ovsdb://uuid/". If not found, ${EMPTY} will be returned.
${topology}= Get From List ${topologies} 0
${node_list}= Get From Dictionary ${topology} node
Log ${node_list}
+ # Since bridges are also listed as nodes, but will not have the extra "ovsdb:connection-info data,
+ # we need to use "Run Keyword And Ignore Error" below.
: FOR ${node} IN @{node_list}
\ ${node_id}= Get From Dictionary ${node} node-id
\ ${node_uuid}= Replace String ${node_id} ovsdb://uuid/ ${EMPTY}
- # Since bridges are also listed as nodes, but will not have the extra "ovsdb:connection-info data, we need to
- # use "Run Keyword And Ignore Error" below.
\ ${status} ${connection_info} Run Keyword And Ignore Error Get From Dictionary ${node} ovsdb:connection-info
\ ${status} ${remote_ip} Run Keyword And Ignore Error Get From Dictionary ${connection_info} remote-ip
\ ${uuid}= Set Variable If '${remote_ip}' == '${ovs_system_ip}' ${node_uuid} ${uuid}
Collect OVSDB Debugs
[Arguments] ${switch}=br-int
[Documentation] Used to log useful test debugs for OVSDB related system tests.
- ${output}= Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl show
+ ${output}= Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl show
Log ${output}
- ${output}= Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-ofctl -O OpenFlow13 dump-flows ${switch} | cut -d',' -f3-
+ ${output}= Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-ofctl -O OpenFlow13 dump-flows ${switch} | cut -d',' -f3-
Log ${output}
Clean OVSDB Test Environment
[Documentation] General Use Keyword attempting to sanitize test environment for OVSDB related
... tests. Not every step will always be neccessary, but should not cause any problems for
... any new ovsdb test suites.
- Clean Mininet System ${tools_system}
- Run Command On Mininet ${tools_system} sudo ovs-vsctl del-manager
- Run Command On Mininet ${tools_system} sudo /usr/share/openvswitch/scripts/ovs-ctl stop
- Run Command On Mininet ${tools_system} sudo rm -rf /etc/openvswitch/conf.db
- Run Command On Mininet ${tools_system} sudo /usr/share/openvswitch/scripts/ovs-ctl start
+ Utils.Clean Mininet System ${tools_system}
+ Utils.Run Command On Mininet ${tools_system} sudo ovs-vsctl del-manager
+ Utils.Run Command On Mininet ${tools_system} sudo /usr/share/openvswitch/scripts/ovs-ctl stop
+ Utils.Run Command On Mininet ${tools_system} sudo rm -rf /etc/openvswitch/conf.db
+ Utils.Run Command On Mininet ${tools_system} sudo /usr/share/openvswitch/scripts/ovs-ctl start
+
+Set Controller In OVS Bridge
+ [Arguments] ${tools_system} ${bridge} ${controller_opt}
+ [Documentation] Sets controller for a given OVS ${bridge} using controller options in ${controller_opt}
+ Utils.Run Command On Mininet ${tools_system} sudo ovs-vsctl del-controller ${bridge}
+ Utils.Run Command On Mininet ${tools_system} sudo ovs-vsctl set-controller ${bridge} ${controller_opt}
+
+Add Multiple Managers to OVS
+ [Arguments] ${tools_system}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY} ${ovs_mgr_port}=6640
+ [Documentation] Connect OVS to the list of controllers in the ${controller_index_list} or all if no list is provided.
+ ${index_list} = ClusterManagement__Given_Or_Internal_Index_List given_list=${controller_index_list}
+ Log Clear any existing mininet
+ Utils.Clean Mininet System ${tools_system}
+ ${ovs_opt}= Set Variable
+ : FOR ${index} IN @{index_list}
+ \ ${ovs_opt}= Catenate ${ovs_opt} ${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ovs_mgr_port}
+ \ Log ${ovs_opt}
+ Log Configure OVS Managers in the OVS
+ Utils.Run Command On Mininet ${tools_system} sudo ovs-vsctl set-manager ${ovs_opt}
+ Log Check OVS configuration
+ ${output}= Wait Until Keyword Succeeds 5s 1s Verify OVS Reports Connected ${tools_system}
+ Log ${output}
+ ${controller_index}= Collections.Get_From_List ${index_list} 0
+ ${session}= ClusterManagement.Resolve_Http_Session_For_Member member_index=${controller_index}
+ ${ovsdb_uuid}= Wait Until Keyword Succeeds 30s 2s Get OVSDB UUID controller_http_session=${session}
+ [Return] ${ovsdb_uuid}