Use RFC8040 URL for OVSDB tests
[integration/test.git] / csit / libraries / OVSDB.robot
index 6414300f05bab959a97de5b4ac36ee44c35f6eb4..be3d13b9755e4e9577e3cfd4abeb1ed13e7a0e1b 100644 (file)
@@ -9,13 +9,11 @@ Resource          ClusterManagement.robot
 Resource          Utils.robot
 Resource          ${CURDIR}/TemplatedRequests.robot
 Resource          ../variables/Variables.robot
+Resource          ../variables/ovsdb/Variables.robot
 Resource          ../variables/netvirt/Variables.robot
 
 *** Variables ***
 ${OVSDB_CONFIG_DIR}    ${CURDIR}/../variables/ovsdb
-${OVSDB_NODE_PORT}    6634
-${SOUTHBOUND_CONFIG_API}    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F
-${SOUTHBOUND_NODE_CONFIG_API}    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2F${TOOLS_SYSTEM_IP}:${OVSDB_NODE_PORT}
 
 *** Keywords ***
 Log Request
@@ -30,11 +28,11 @@ Create OVSDB Node
     ${body} =    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_node.json
     ${body} =    Replace String    ${body}    127.0.0.1    ${node_ip}
     ${body} =    Replace String    ${body}    61644    ${port}
-    ${uri} =    Builtin.Set Variable    ${CONFIG_TOPO_API}/topology/ovsdb:1/
+    ${uri} =    Builtin.Set Variable    ${RFC8040_TOPO_OVSDB1_API}
     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
@@ -43,18 +41,18 @@ Connect To Ovsdb Node
     ${body} =    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/connect.json
     ${body} =    String.Replace String    ${body}    127.0.0.1    ${node_ip}
     ${body} =    String.Replace String    ${body}    61644    ${port}
-    ${uri} =    BuiltIn.Set Variable    ${SOUTHBOUND_CONFIG_API}${node_ip}:${port}
+    ${uri} =    BuiltIn.Set Variable    ${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}
     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
     [Arguments]    ${node_ip}    ${port}=${OVSDB_NODE_PORT}
     [Documentation]    This request will disconnect the OVSDB node from the controller
-    ${resp} =    RequestsLibrary.Delete Request    session    ${SOUTHBOUND_CONFIG_API}${node_ip}:${port}
-    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
+    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_API}${node_ip}%3A${port}
+    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    204
 
 Add Bridge To Ovsdb Node
     [Arguments]    ${node_id}    ${node_ip}    ${bridge}    ${datapath_id}    ${port}=${OVSDB_NODE_PORT}
@@ -66,19 +64,19 @@ Add Bridge To Ovsdb Node
     ${body} =    String.Replace String    ${body}    br01    ${bridge}
     ${body} =    String.Replace String    ${body}    61644    ${port}
     ${body} =    String.Replace String    ${body}    0000000000000001    ${datapath_id}
-    ${node_id_} =    BuiltIn.Evaluate    """${node_id}""".replace("/","%2F")
-    ${uri} =    BuiltIn.Set Variable    ${SOUTHBOUND_CONFIG_API}${node_id_}%2Fbridge%2F${bridge}
+    ${node_id_} =    BuiltIn.Evaluate    """${node_id}""".replace("/","%2F").replace(":","%3A")
+    ${uri} =    BuiltIn.Set Variable    ${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}
     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
     [Arguments]    ${node_id}    ${bridge}
     [Documentation]    This request will delete the bridge node from the OVSDB
-    ${resp} =    RequestsLibrary.Delete Request    session    ${SOUTHBOUND_CONFIG_API}${node_id}%2Fbridge%2F${bridge}
-    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
+    ${resp} =    RequestsLibrary.Delete Request    session    ${RFC8040_SOUTHBOUND_NODE_API}${node_id}%2Fbridge%2F${bridge}
+    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    204
 
 Add Termination Point
     [Arguments]    ${node_id}    ${bridge}    ${tp_name}    ${remote_ip}=${TOOLS_SYSTEM_IP}
@@ -88,9 +86,9 @@ Add Termination Point
     ${body} =    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_port.json
     ${body} =    String.Replace String    ${body}    192.168.0.21    ${remote_ip}
     ${body} =    String.Replace String    ${body}    vxlanport    ${tp_name}
-    ${node_id_} =    BuiltIn.Evaluate    """${node_id}""".replace("/","%2F")
-    ${uri} =    BuiltIn.Set Variable    ${SOUTHBOUND_CONFIG_API}${node_id_}%2Fbridge%2F${bridge}
-    ${resp} =    RequestsLibrary.Put Request    session    ${uri}/termination-point/${tp_name}/    data=${body}
+    ${node_id_} =    BuiltIn.Evaluate    """${node_id}""".replace("/","%2F").replace(":","%3A")
+    ${uri} =    BuiltIn.Set Variable    ${RFC8040_SOUTHBOUND_NODE_API}${node_id_}%2Fbridge%2F${bridge}
+    ${resp} =    RequestsLibrary.Put Request    session    ${uri}/termination-point=${tp_name}    data=${body}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Add Vxlan To Bridge
@@ -121,11 +119,11 @@ Get OVSDB UUID
     ...    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
-    OVSDB.Log Request    ${resp.content}
+    ${resp} =    RequestsLibrary.Get Request    ${controller_http_session}    ${RFC8040_OPERATIONAL_TOPO_OVSDB1_API}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
-    ${resp_json} =    RequestsLibrary.To Json    ${resp.content}
-    ${topologies} =    Collections.Get From Dictionary    ${resp_json}    topology
+    ${resp_json} =    RequestsLibrary.To Json    ${resp.text}
+    ${topologies} =    Collections.Get From Dictionary    ${resp_json}    network-topology:topology
     ${topology} =    Collections.Get From List    ${topologies}    0
     ${node_list} =    Collections.Get From Dictionary    ${topology}    node
     BuiltIn.Log    ${node_list}
@@ -247,18 +245,18 @@ 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}
-    ${resp} =    RequestsLibrary.Get Request    session    ${OPERATIONAL_TOPO_API}
-    OVSDB.Log Request    ${resp.content}
+    ${resp}    RequestsLibrary.Get Request    session    ${RFC8040_CONFIG_TOPO_API}
+    OVSDB.Log Request    ${resp.text}
+    ${resp} =    RequestsLibrary.Get Request    session    ${RFC8040_OPERATIONAL_TOPO_API}
+    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"}
+    ${config_resp}    RequestsLibrary.Get Request    session    ${RFC8040_CONFIG_TOPO_API}
+    ${operational_resp}    RequestsLibrary.Get Request    session    ${RFC8040_OPERATIONAL_TOPO_API}
+    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}
@@ -274,50 +272,50 @@ Modify Multi Port Body
     ${body} =    Replace String    ${body}    OVS_2_IP    ${TOOLS_SYSTEM_2_IP}
     ${body} =    Replace String    ${body}    OVS_1_PORT_NAME    ${ovs_1_port_name}
     ${body} =    Replace String    ${body}    OVS_2_PORT_NAME    ${ovs_2_port_name}
-    ${uri} =    Builtin.Set Variable    ${CONFIG_TOPO_API}
+    ${uri} =    Builtin.Set Variable    ${RFC8040_TOPO_API}
     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}
 
 Create Qos
     [Arguments]    ${qos}
     ${body} =    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_qos.json
-    ${uri} =    BuiltIn.Set Variable    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:qos-entries/${qos}/
+    ${uri} =    BuiltIn.Set Variable    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${qos}
     ${body} =    Replace String    ${body}    QOS-1    ${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
     [Arguments]    ${queue}
     ${body} =    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_qoslinkedqueue.json
     ${body} =    Replace String    ${body}    QUEUE-1    ${queue}
-    ${uri} =    BuiltIn.Set Variable    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:queues/${queue}/
+    ${uri} =    BuiltIn.Set Variable    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:queues=${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
     [Arguments]    ${qos}
     ${body} =    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/update_existingqos.json
-    ${uri} =    BuiltIn.Set Variable    ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:HOST1/ovsdb:qos-entries/${QOS}/
+    ${uri} =    BuiltIn.Set Variable    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}/ovsdb:qos-entries=${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}
+    ${resp}    RequestsLibrary.Put Request    session    ${RFC8040_SOUTHBOUND_NODE_HOST1_API}    data=${body}
+    OVSDB.Log Request    ${resp.text}
     BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Add OVS Logging
@@ -350,7 +348,7 @@ Suite Teardown
     FOR    ${uri}    IN    @{uris}
         RequestsLibrary.Delete Request    session    ${uri}
     END
-    ${resp} =    RequestsLibrary.Get Request    session    ${CONFIG_TOPO_API}
+    ${resp} =    RequestsLibrary.Get Request    session    ${RFC8040_CONFIG_TOPO_API}
     OVSDB.Log Config And Operational Topology
     RequestsLibrary.Delete All Sessions
 
@@ -431,14 +429,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}
 
@@ -506,3 +504,9 @@ Verify Ovsdb State
     ${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}