+
+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 set-controller ${bridge} ${controller_opt}
+
+Check OVS OpenFlow Connections
+ [Arguments] ${tools_system} ${of_connections}
+ [Documentation] Check OVS instance with IP ${tools_system} has ${of_connections} OpenFlow connections.
+ ${output}= Utils.Run Command On Mininet ${tools_system} sudo ovs-vsctl show
+ Log ${output}
+ BuiltIn.Should Contain X Times ${output} is_connected ${of_connections}
+
+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}
+
+Get DPID
+ [Arguments] ${ip}
+ [Documentation] Returns the dpnid from the system at the given ip address using ovs-ofctl assuming br-int is present.
+ ${output} = Run Command On Remote System ${ip} sudo ovs-ofctl show -O Openflow13 br-int | head -1 | awk -F "dpid:" '{print $2}'
+ ${dpnid} = Convert To Integer ${output} 16
+ Log ${dpnid}
+ [Return] ${dpnid}
+
+Get Subnet
+ [Arguments] ${ip}
+ [Documentation] Return the subnet from the system at the given ip address and interface
+ ${output} = Run Command On Remote System ${ip} /usr/sbin/ip addr show | grep ${ip} | cut -d' ' -f6
+ ${interface} = ipaddress.ip_interface ${output}
+ ${network}= Set Variable ${interface.network.__str__()}
+ [Return] ${network}
+
+Get Ethernet Adapter
+ [Arguments] ${ip}
+ [Documentation] Returns the ethernet adapter name from the system at the given ip address using ip addr show.
+ ${adapter} = Run Command On Remote System ${ip} /usr/sbin/ip addr show | grep ${ip} | cut -d " " -f 11
+ Log ${adapter}
+ [Return] ${adapter}
+
+Get Default Gateway
+ [Arguments] ${ip}
+ [Documentation] Returns the default gateway at the given ip address using route command.
+ ${gateway} = Run Command On Remote System ${ip} /usr/sbin/route -n | grep '^0.0.0.0' | cut -d " " -f 10
+ Log ${gateway}
+ [Return] ${gateway}