${sample1} Replace String ${sample} 127.0.0.1 ${mininet_ip}
${body} Replace String ${sample1} 61644 ${OVSDB_PORT}
Log URL is ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}
- ${resp} RequestsLibrary.Put session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT} data=${body}
+ 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
Disconnect From Ovsdb Node
[Arguments] ${mininet_ip}
[Documentation] This request will disconnect the OVSDB node from the controller
- ${resp} RequestsLibrary.Delete session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}
+ ${resp} RequestsLibrary.Delete Request session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}
Should Be Equal As Strings ${resp.status_code} 200
Add Bridge To Ovsdb Node
[Arguments] ${mininet_ip} ${bridge_num} ${datapath_id}
[Documentation] This will create a bridge and add it to the OVSDB node.
${sample} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_bridge.json
- ${sample1} Replace String ${sample} tcp:127.0.0.1:6633 tcp:${CONTROLLER}:6633
+ ${sample1} Replace String ${sample} tcp:127.0.0.1:6633 tcp:${ODL_SYSTEM_IP}:6633
${sample2} Replace String ${sample1} 127.0.0.1 ${mininet_ip}
${sample3} Replace String ${sample2} br01 ${bridge_num}
${sample4} Replace String ${sample3} 61644 ${OVSDB_PORT}
${body} Replace String ${sample4} 0000000000000001 ${datapath_id}
Log URL is ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num}
- ${resp} RequestsLibrary.Put session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num} data=${body}
+ 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
Delete Bridge From Ovsdb Node
[Arguments] ${mininet_ip} ${bridge_num}
[Documentation] This request will delete the bridge node from the OVSDB
- ${resp} RequestsLibrary.Delete session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num}
+ ${resp} RequestsLibrary.Delete Request session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num}
Should Be Equal As Strings ${resp.status_code} 200
Add Vxlan To Bridge
${sample} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/${custom_port}
${body} Replace String ${sample} 192.168.0.21 ${remote_ip}
Log URL is ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num}/termination-point/${vxlan_port}/
- ${resp} RequestsLibrary.Put session ${SOUTHBOUND_CONFIG_API}${mininet_ip}:${OVSDB_PORT}%2Fbridge%2F${bridge_num}/termination-point/${vxlan_port}/ data=${body}
+ 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
+Verify OVS Reports Connected
+ [Arguments] ${tools_system}=${TOOLS_SYSTEM_IP}
+ [Documentation] Uses "vsctl show" to check for string "is_connected"
+ ${output}= Utils.Run Command On Remote System ${tools_system} sudo ovs-vsctl show
+ Should Contain ${output} is_connected
+
+Get OVSDB UUID
+ [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_ip}=${ODL_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.
+ ${uuid}= Set Variable ${EMPTY}
+ ${resp}= RequestsLibrary.Get Request ${controller_http_session} ${OPERATIONAL_TOPO_API}/topology/ovsdb:1
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${resp_json}= To Json ${resp.content}
+ ${topologies}= Get From Dictionary ${resp_json} topology
+ ${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}
+ \ ${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}
+ [Return] ${uuid}
+
Collect OVSDB Debugs
[Arguments] ${switch}=br-int
[Documentation] Used to log useful test debugs for OVSDB related system tests.
- ${output}= Run Command On Remote System ${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 Remote System ${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
+ [Arguments] ${tools_system}=${TOOLS_SYSTEM_IP}
+ [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.
+ 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} ${controller_index_list} ${ovs_mgr_port}=6640
+ [Documentation] Connect OVS to all controllers in the ${controller_index_list}.
+ Log Clear any existing mininet
+ Utils.Clean Mininet System ${tools_system}
+ ${ovs_opt}= Set Variable
+ : FOR ${index} IN @{controller_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 configuratiom
+ ${output}= Utils.Run Command On Mininet ${tools_system} sudo ovs-vsctl show
Log ${output}
+ ${ovsdb_uuid}= Get OVSDB UUID controller_http_session=controller1
+ [Return] ${ovsdb_uuid}