Update Check System Status
[integration/test.git] / csit / libraries / OVSDB.robot
index 6fb18fcfe80a90db9577f7cffedc572f76fd361a..d0a72cd71f4b2e081cff833c2736157381f86a96 100644 (file)
@@ -9,6 +9,7 @@ Resource          ClusterManagement.robot
 Resource          Utils.robot
 Resource          ${CURDIR}/TemplatedRequests.robot
 Resource          ../variables/Variables.robot
+Resource          ../variables/netvirt/Variables.robot
 
 *** Variables ***
 ${OVSDB_CONFIG_DIR}    ${CURDIR}/../variables/ovsdb
@@ -139,7 +140,7 @@ Get OVSDB UUID
     [Return]    ${uuid}
 
 Collect OVSDB Debugs
-    [Arguments]    ${switch}=br-int
+    [Arguments]    ${switch}=${INTEGRATION_BRIDGE}
     [Documentation]    Used to log useful test debugs for OVSDB related system tests.
     ${output} =    Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl show
     BuiltIn.Log    ${output}
@@ -198,7 +199,7 @@ Add Multiple Managers to OVS
 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} =    Utils.Run Command On Remote System    ${ip}    sudo ovs-ofctl show -O Openflow13 br-int | head -1 | awk -F "dpid:" '{print $2}'
+    ${output} =    Utils.Run Command On Remote System    ${ip}    sudo ovs-ofctl show -O Openflow13 ${INTEGRATION_BRIDGE} | head -1 | awk -F "dpid:" '{print $2}'
     ${dpnid} =    BuiltIn.Convert To Integer    ${output}    16
     BuiltIn.Log    ${dpnid}
     [Return]    ${dpnid}
@@ -214,17 +215,36 @@ Get Subnet
 Get Ethernet Adapter
     [Arguments]    ${ip}
     [Documentation]    Returns the ethernet adapter name from the system at the given ip address using ip addr show.
-    ${adapter} =    Builtin.Run Command On Remote System    ${ip}    /usr/sbin/ip addr show | grep ${ip} | cut -d " " -f 11
+    ${adapter} =    Utils.Run Command On Remote System    ${ip}    /usr/sbin/ip addr show | grep ${ip} | cut -d " " -f 11
     BuiltIn.Log    ${adapter}
     [Return]    ${adapter}
 
 Get Default Gateway
     [Arguments]    ${ip}
     [Documentation]    Returns the default gateway at the given ip address using route command.
-    ${gateway} =    Builtin.Run Command On Remote System    ${ip}    /usr/sbin/route -n | grep '^0.0.0.0' | cut -d " " -f 10
+    ${gateway} =    Utils.Run Command On Remote System    ${ip}    /usr/sbin/route -n | grep '^0.0.0.0' | cut -d " " -f 10
     BuiltIn.Log    ${gateway}
     [Return]    ${gateway}
 
+Get Port Number
+    [Arguments]    ${subportid}    ${ip_addr}
+    [Documentation]    Get the port number for the given sub-port id
+    ${command} =    Set Variable    sudo ovs-ofctl -O OpenFlow13 show ${INTEGRATION_BRIDGE} | grep ${subportid} | awk '{print$1}'
+    BuiltIn.Log    sudo ovs-ofctl -O OpenFlow13 show ${INTEGRATION_BRIDGE} | grep ${subportid} | awk '{print$1}'
+    ${output} =    Utils.Run Command On Remote System    ${ip_addr}    ${command}
+    ${port_number} =    BuiltIn.Should Match Regexp    ${output}    [0-9]+
+    [Return]    ${port_number}
+
+Get Port Metadata
+    [Arguments]    ${ip_addr}    ${port}
+    [Documentation]    Get the Metadata for a given port
+    ${cmd} =    Set Variable    sudo ovs-ofctl dump-flows -O Openflow13 ${INTEGRATION_BRIDGE} | grep table=0 | grep in_port=${port}
+    ${output} =    Utils.Run Command On Remote System    ${ip_addr}    ${cmd}
+    @{list_any_matches} =    String.Get_Regexp_Matches    ${output}    metadata:(\\w{12})    1
+    ${metadata} =    Builtin.Convert To String    @{list_any_matches}
+    ${output} =    String.Get Substring    ${metadata}    2
+    [Return]    ${output}
+
 Log Config And Operational Topology
     [Documentation]    For debugging purposes, this will log both config and operational topo data stores
     ${resp}    RequestsLibrary.Get Request    session    ${CONFIG_TOPO_API}
@@ -355,3 +375,45 @@ Stop OVS
     [Documentation]    Stop the OVS node.
     ${output} =    Utils.Run Command On Mininet    ${ovs_ip}    sudo /usr/share/openvswitch/scripts/ovs-ctl stop
     BuiltIn.Log    ${output}
+
+Get Bridge Data
+    [Documentation]    This keyword returns first bridge name and UUID from list of bridges.
+    ${result} =    SSHLibrary.Execute Command    sudo ovs-vsctl show
+    ${uuid} =    String.Get Line    ${result}    0
+    ${line}    ${bridge_name}    Builtin.Should Match Regexp    ${result}    Bridge "(\\w+)"
+    [Return]    ${uuid}    ${bridge_name}
+
+Delete OVS Controller
+    [Arguments]    ${ovs_ip}    ${bridge}=${INTEGRATION_BRIDGE}
+    [Documentation]    Delete controller from OVS
+    ${del_ctr} =    Utils.Run Command On Remote System    ${ovs_ip}    sudo ovs-vsctl del-controller ${bridge}
+    BuiltIn.Log    ${del_ctr}
+
+Delete OVS Manager
+    [Arguments]    ${ovs_ip}
+    [Documentation]    Delete manager from OVS
+    ${del_mgr} =    Utils.Run Command On Remote System    ${ovs_ip}    sudo ovs-vsctl del-manager
+    BuiltIn.Log    ${del_mgr}
+
+Delete Groups On Bridge
+    [Arguments]    ${ovs_ip}    ${br}=${INTEGRATION_BRIDGE}
+    [Documentation]    Delete OVS groups from ${br}
+    ${del_grp} =    Utils.Run Command On Remote System    ${ovs_ip}    sudo ovs-ofctl -O Openflow13 del-groups ${br}
+    BuiltIn.Log    ${del_grp}
+
+Get Ports From Bridge By Type
+    [Arguments]    ${ovs_ip}    ${br}    ${type}
+    [Documentation]    Get ${type} ports for a bridge ${br} on node ${ovs_ip}.
+    ${ports} =    Utils.Run Command On Remote System    ${ovs_ip}    sudo ovs-vsctl list-ports ${br} | grep "${type}"
+    ${ports_list} =    String.Split to lines    ${ports}
+    [Return]    ${ports_list}
+
+Delete Ports On Bridge By Type
+    [Arguments]    ${ovs_ip}    ${br}    ${type}
+    [Documentation]    List all ports of ${br} and delete ${type} ports
+    ${ports_present} =    Get Ports From Bridge By Type    ${ovs_ip}    ${br}    ${type}
+    : FOR    ${port}    IN    @{ports_present}
+    \    ${del-ports} =    Utils.Run Command On Remote System    ${ovs_ip}    sudo ovs-vsctl del-port ${br} ${port}
+    \    BuiltIn.Log    ${del-ports}
+    ${ports_present_after_delete} =    Get Ports From Bridge By Type    ${ovs_ip}    ${br}    ${type}
+    BuiltIn.Log    ${ports_present_after_delete}