Fix netconf csit looking up nonexistant version
[integration/test.git] / csit / libraries / OVSDB.robot
index c2963e621b07a568372addfd716ab6f1a0617d0f..39290747e3a9a0586d795e16e3b4aec8710787f7 100644 (file)
@@ -34,7 +34,7 @@ Create OVSDB Node
     BuiltIn.Log    URI is ${uri}
     BuiltIn.Log    data: ${body}
     ${resp} =    RequestsLibrary.Post Request    session    ${uri}    data=${body}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Connect To Ovsdb Node
@@ -47,7 +47,7 @@ Connect To Ovsdb Node
     BuiltIn.Log    URI is ${uri}
     BuiltIn.Log    data: ${body}
     ${resp} =    RequestsLibrary.Put Request    session    ${uri}    data=${body}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Disconnect From Ovsdb Node
@@ -71,7 +71,7 @@ Add Bridge To Ovsdb Node
     BuiltIn.Log    URI is ${uri}
     BuiltIn.Log    data: ${body}
     ${resp} =    RequestsLibrary.Put Request    session    ${uri}    data=${body}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Delete Bridge From Ovsdb Node
@@ -122,21 +122,22 @@ Get OVSDB UUID
     ...    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
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
-    ${resp_json} =    RequestsLibrary.To Json    ${resp.content}
+    ${resp_json} =    RequestsLibrary.To Json    ${resp.text}
     ${topologies} =    Collections.Get From Dictionary    ${resp_json}    topology
     ${topology} =    Collections.Get From List    ${topologies}    0
     ${node_list} =    Collections.Get From Dictionary    ${topology}    node
     BuiltIn.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} =    Collections.Get From Dictionary    ${node}    node-id
-    \    ${node_uuid} =    String.Replace String    ${node_id}    ovsdb://uuid/    ${EMPTY}
-    \    ${status}    ${connection_info} =    BuiltIn.Run Keyword And Ignore Error    Collections.Get From Dictionary    ${node}    ovsdb:connection-info
-    \    ${status}    ${remote_ip} =    BuiltIn.Run Keyword And Ignore Error    Collections.Get From Dictionary    ${connection_info}    remote-ip
-    \    ${uuid} =    Set Variable If    '${remote_ip}' == '${ovs_system_ip}'    ${node_uuid}    ${uuid}
+    FOR    ${node}    IN    @{node_list}
+        ${node_id} =    Collections.Get From Dictionary    ${node}    node-id
+        ${node_uuid} =    String.Replace String    ${node_id}    ovsdb://uuid/    ${EMPTY}
+        ${status}    ${connection_info} =    BuiltIn.Run Keyword And Ignore Error    Collections.Get From Dictionary    ${node}    ovsdb:connection-info
+        ${status}    ${remote_ip} =    BuiltIn.Run Keyword And Ignore Error    Collections.Get From Dictionary    ${connection_info}    remote-ip
+        ${uuid} =    Set Variable If    '${remote_ip}' == '${ovs_system_ip}'    ${node_uuid}    ${uuid}
+    END
     [Return]    ${uuid}
 
 Collect OVSDB Debugs
@@ -183,9 +184,10 @@ Add Multiple Managers to OVS
     ${index_list} =    ClusterManagement.List Indices Or All    given_list=${controller_index_list}
     Utils.Clean Mininet System    ${tools_system}
     ${ovs_opt} =    BuiltIn.Set Variable
-    : FOR    ${index}    IN    @{index_list}
-    \    ${ovs_opt} =    BuiltIn.Catenate    ${ovs_opt}    ${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ovs_mgr_port}
-    \    BuiltIn.Log    ${ovs_opt}
+    FOR    ${index}    IN    @{index_list}
+        ${ovs_opt} =    BuiltIn.Catenate    ${ovs_opt}    ${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ovs_mgr_port}
+        BuiltIn.Log    ${ovs_opt}
+    END
     Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl set-manager ${ovs_opt}
     ${output} =    BuiltIn.Wait Until Keyword Succeeds    5s    1s    Verify OVS Reports Connected    ${tools_system}
     BuiltIn.Log    ${output}
@@ -246,17 +248,17 @@ Get Port Metadata
 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}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     ${resp} =    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
 
 Config and Operational Topology Should Be Empty
     [Documentation]    This will check that only the expected output is there for both operational and config
     ...    topology data stores. Empty probably means that only ovsdb:1 is there.
     ${config_resp}    RequestsLibrary.Get Request    session    ${CONFIG_TOPO_API}
     ${operational_resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
-    BuiltIn.Should Contain    ${config_resp.content}    {"topology-id":"ovsdb:1"}
-    BuiltIn.Should Contain    ${operational_resp.content}    {"topology-id":"ovsdb:1"}
+    BuiltIn.Should Contain    ${config_resp.text}    {"topology-id":"ovsdb:1"}
+    BuiltIn.Should Contain    ${operational_resp.text}    {"topology-id":"ovsdb:1"}
 
 Modify Multi Port Body
     [Arguments]    ${ovs_1_port_name}    ${ovs_2_port_name}    ${bridge}
@@ -276,7 +278,7 @@ Modify Multi Port Body
     BuiltIn.Log    URI is ${uri}
     BuiltIn.Log    data: ${body}
     ${resp} =    RequestsLibrary.Put Request    session    ${uri}    data=${body}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
     [Return]    ${body}
 
@@ -288,7 +290,7 @@ Create Qos
     BuiltIn.Log    URI is ${uri}
     BuiltIn.Log    data: ${body}
     ${resp} =    RequestsLibrary.Put Request    session    ${uri}    data=${body}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Create Queue
@@ -299,7 +301,7 @@ Create Queue
     BuiltIn.Log    URI is ${uri}
     BuiltIn.Log    data: ${body}
     ${resp} =    RequestsLibrary.Put Request    session    ${uri}    data=${body}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Update Qos
@@ -309,13 +311,13 @@ Update Qos
     BuiltIn.Log    URL is ${uri}
     BuiltIn.Log    data: ${body}
     ${resp} =    RequestsLibrary.Put Request    session    ${uri}    data=${body}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Create Qos Linked Queue
     ${body}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/bug_7160/create_qoslinkedqueue.json
     ${resp}    RequestsLibrary.Put Request    session    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1    data=${body}
-    OVSDB.Log Request    ${resp.content}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Add OVS Logging
@@ -324,8 +326,9 @@ Add 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}
-    \    Utils.Write Commands Until Expected Prompt    sudo ovs-appctl --target ovs-vswitchd vlog/set ${module}    ${DEFAULT_LINUX_PROMPT_STRICT}
+    FOR    ${module}    IN    @{modules}
+        Utils.Write Commands Until Expected Prompt    sudo ovs-appctl --target ovs-vswitchd vlog/set ${module}    ${DEFAULT_LINUX_PROMPT_STRICT}
+    END
     Utils.Write Commands Until Expected Prompt    sudo ovs-appctl --target ovs-vswitchd vlog/list    ${DEFAULT_LINUX_PROMPT_STRICT}
 
 Reset OVS Logging
@@ -344,8 +347,9 @@ Suite Teardown
     [Arguments]    ${uris}=@{EMPTY}
     [Documentation]    Cleans up test environment, close existing sessions.
     OVSDB.Clean OVSDB Test Environment    ${TOOLS_SYSTEM_IP}
-    : FOR    ${uri}    IN    @{uris}
-    \    RequestsLibrary.Delete Request    session    ${uri}
+    FOR    ${uri}    IN    @{uris}
+        RequestsLibrary.Delete Request    session    ${uri}
+    END
     ${resp} =    RequestsLibrary.Get Request    session    ${CONFIG_TOPO_API}
     OVSDB.Log Config And Operational Topology
     RequestsLibrary.Delete All Sessions
@@ -410,9 +414,10 @@ 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}
+    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}
+    END
     ${ports_present_after_delete} =    Get Ports From Bridge By Type    ${ovs_ip}    ${br}    ${type}
     BuiltIn.Log    ${ports_present_after_delete}
 
@@ -426,14 +431,14 @@ Get Tunnel Id And Packet Count
     SSHLibrary.Switch Connection    ${conn_id}
     ${output} =    Utils.Write Commands Until Expected Prompt    ${cmd}    ${DEFAULT_LINUX_PROMPT_STRICT}
     @{list}=    Split to lines    ${output}
-    ${output} =    Set Variable    @{list}[0]
+    ${output} =    Set Variable    ${list}[0]
     ${output} =    String.Get Regexp Matches    ${output}    n_packets=([0-9]+),.*set_field:(0x[0-9a-z]+)|n_packets=([0-9]+),.*tun_id=(0x[0-9a-z]+)    1    2    3
     ...    4
-    ${output} =    BuiltIn.Set Variable    @{output}[0]
+    ${output} =    BuiltIn.Set Variable    ${output}[0]
     ${output}    Convert To List    ${output}
-    ${packet_count}    ${tunnel_id} =    BuiltIn.Run Keyword If    "${table_id}" == "${ELAN_DMACTABLE}"    BuiltIn.Set Variable    @{output}[0]    @{output}[1]
-    ...    ELSE IF    "${table_id}" == "${INTERNAL_TUNNEL_TABLE}"    BuiltIn.Set Variable    @{output}[2]    @{output}[3]
-    ...    ELSE IF    "${table_id}" == "${L3_TABLE}"    BuiltIn.Set Variable    @{output}[0]    @{output}[1]
+    ${packet_count}    ${tunnel_id} =    BuiltIn.Run Keyword If    "${table_id}" == "${ELAN_DMACTABLE}"    BuiltIn.Set Variable    ${output}[0]    ${output}[1]
+    ...    ELSE IF    "${table_id}" == "${INTERNAL_TUNNEL_TABLE}"    BuiltIn.Set Variable    ${output}[2]    ${output}[3]
+    ...    ELSE IF    "${table_id}" == "${L3_TABLE}"    BuiltIn.Set Variable    ${output}[0]    ${output}[1]
     ${tunnel_id} =    Convert To Integer    ${tunnel_id}    16
     [Return]    ${tunnel_id}    ${packet_count}
 
@@ -442,9 +447,10 @@ Verify Dump Flows For Specific Table
     [Documentation]    To Verify flows are present for the corresponding table Number
     ${flow_output} =    Utils.Run Command On Remote System    ${compute_ip}    sudo ovs-ofctl -O OpenFlow13 dump-flows ${INTEGRATION_BRIDGE}|grep table=${table_num} ${additional_args}
     Log    ${flow_output}
-    : FOR    ${matching_str}    IN    @{matching_paras}
-    \    BuiltIn.Run Keyword If    ${flag}==True    BuiltIn.Should Contain    ${flow_output}    ${matching_str}
-    \    ...    ELSE    BuiltIn.Should Not Contain    ${flow_output}    ${matching_str}
+    FOR    ${matching_str}    IN    @{matching_paras}
+        BuiltIn.Run Keyword If    ${flag}==True    BuiltIn.Should Contain    ${flow_output}    ${matching_str}
+        ...    ELSE    BuiltIn.Should Not Contain    ${flow_output}    ${matching_str}
+    END
 
 Verify Vni Segmentation Id and Tunnel Id
     [Arguments]    ${port1}    ${port2}    ${net1}    ${net2}    ${vm1_ip}    ${vm2_ip}
@@ -493,3 +499,16 @@ Get Flow Entries On Node
     ${output} =    Utils.Write Commands Until Expected Prompt    sudo ovs-ofctl -O OpenFlow13 dump-flows ${switch}    ${DEFAULT_LINUX_PROMPT_STRICT}
     BuiltIn.Log    ${output}
     [Return]    ${output}
+
+Verify Ovsdb State
+    [Arguments]    ${dpn_ip}    ${state}=ACTIVE
+    [Documentation]    Verify ovsdb state for the given DPN
+    ${output} =    Utils.Run Command On Remote System And Log    ${dpn_ip}    sudo ovsdb-client dump -f list Open_vSwitch Controller | grep state
+    BuiltIn.Log    ${output}
+    BuiltIn.Should Contain    ${output}    state=${state}
+
+Verify Flows Are Present On Node
+    [Arguments]    ${conn_id}    ${match}
+    [Documentation]    Verify Flows Are Present On The Given Node
+    ${output} =    OVSDB.Get Flow Entries On Node    ${conn_id}
+    BuiltIn.Should Contain    ${output}    ${match}