Check cluster status after rejoin
[integration/test.git] / csit / libraries / OVSDB.robot
index 40893e4d719d30057e1b107346359a933e199c5c..e09f1e2e54779dbfbe9008ea357e1796628cb125 100644 (file)
@@ -56,19 +56,35 @@ Delete Bridge From Ovsdb Node
 Add Vxlan To Bridge
     [Arguments]    ${mininet_ip}    ${bridge_num}    ${vxlan_port}    ${remote_ip}    ${custom_port}=create_port.json
     [Documentation]    This request will create vxlan port for vxlan tunnel and attach it to the specific 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}/
-    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}
+    Add Termination Point    ${mininet_ip}:${OVSDB_PORT}    ${bridge_num}    ${vxlan_port}    ${remote_ip}
+
+Add Termination Point
+    [Arguments]    ${node_id}    ${bridge_name}    ${tp_name}    ${remote_ip}=${TOOLS_SYSTEM_IP}
+    [Documentation]    Using the json data body file as a template, a REST config request is made to
+    ...    create a termination-point ${tp_name} on ${bridge_name} for the given ${node_id}. The ports
+    ...    remote-ip defaults to ${TOOLS_SYSTEM_IP}
+    ${body}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_port.json
+    ${body}    Replace String    ${body}    192.168.0.21    ${remote_ip}
+    ${body}    Replace String    ${body}    vxlanport    ${tp_name}
+    ${uri}=    Set Variable    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${node_id}%2Fbridge%2F${bridge_name}
+    ${resp}    RequestsLibrary.Put Request    session    ${uri}/termination-point/${tp_name}/    data=${body}
     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}=    Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl show
-    Should Contain    ${output}    is_connected
+    ${output}    Verify Ovs-vsctl Output    show    is_connected    ${tools_system}
+    [Return]    ${output}
+
+Verify Ovs-vsctl Output
+    [Arguments]    ${vsctl_args}    ${expected_output}    ${ovs_system}=${TOOLS_SYSTEM_IP}    ${should_match}=True
+    [Documentation]    A wrapper keyword to make it easier to validate ovs-vsctl output, and gives an easy
+    ...    way to check this output in a WUKS. The argument ${should_match} can control if the match should
+    ...    exist (True} or not (False) or don't care (anything but True or False). ${should_match} is True by default
+    ${output}=    Utils.Run Command On Mininet    ${ovs_system}    sudo ovs-vsctl ${vsctl_args}
+    Log    ${output}
+    Run Keyword If    "${should_match}"=="True"    Should Contain    ${output}    ${expected_output}
+    Run Keyword If    "${should_match}"=="False"    Should Not Contain    ${output}    ${expected_output}
     [Return]    ${output}
 
 Get OVSDB UUID
@@ -114,9 +130,18 @@ Clean OVSDB Test Environment
     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
 
+Restart OVSDB
+    [Arguments]    ${ovs_ip}
+    [Documentation]    Restart the OVS node without cleaning the current configuration.
+    ${output} =    Utils.Run Command On Mininet    ${ovs_ip}    sudo /usr/share/openvswitch/scripts/ovs-ctl stop
+    Log    ${output}
+    ${output} =    Utils.Run Command On Mininet    ${ovs_ip}    sudo /usr/share/openvswitch/scripts/ovs-ctl start
+    Log    ${output}
+
 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}
+    [Arguments]    ${tools_system}    ${bridge}    ${controller_opt}    ${ofversion}=13
+    [Documentation]    Sets controller for the OVS bridge ${bridge} using ${controller_opt} and OF version ${ofversion}.
+    Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl set bridge ${bridge} protocols=OpenFlow${ofversion}
     Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl set-controller ${bridge} ${controller_opt}
 
 Check OVS OpenFlow Connections
@@ -129,7 +154,7 @@ Check OVS OpenFlow 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}
+    ${index_list} =    ClusterManagement.List Indices Or All    given_list=${controller_index_list}
     Log    Clear any existing mininet
     Utils.Clean Mininet System    ${tools_system}
     ${ovs_opt}=    Set Variable
@@ -175,3 +200,19 @@ Get Default Gateway
     ${gateway} =    Run Command On Remote System    ${ip}    /usr/sbin/route -n | grep '^0.0.0.0' | cut -d " " -f 10
     Log    ${gateway}
     [Return]    ${gateway}
+
+Add OVS Logging
+    [Arguments]    ${conn_id}
+    [Documentation]    Add higher levels of OVS logging
+    SSHLibrary.Switch Connection    ${conn_id}
+    @{modules} =    BuiltIn.Create List    bridge:file:dbg    connmgr:file:dbg    inband:file:dbg    ofp_actions:file:dbg    ofp_errors:file:dbg
+    ...    ofp_msgs:file:dbg    ovsdb_error:file:dbg    rconn:file:dbg    tunnel:file:dbg    vconn:file:dbg
+    : FOR    ${module}    IN    @{modules}
+    \    Write Commands Until Expected Prompt    sudo ovs-appctl --target ovs-vswitchd vlog/set ${module}    ${DEFAULT_LINUX_PROMPT_STRICT}
+    Write Commands Until Expected Prompt    sudo ovs-appctl --target ovs-vswitchd vlog/list    ${DEFAULT_LINUX_PROMPT_STRICT}
+
+Reset OVS Logging
+    [Arguments]    ${conn_id}
+    [Documentation]    Reset the OVS logging
+    SSHLibrary.Switch Connection    ${conn_id}
+    ${output} =    Write Commands Until Expected Prompt    sudo ovs-appctl --target ovs-vswitchd vlog/set :file:info    ${DEFAULT_LINUX_PROMPT_STRICT}