X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FOVSDB.robot;h=be3d13b9755e4e9577e3cfd4abeb1ed13e7a0e1b;hb=20078330665a59096524f83dbde9387087108416;hp=4625802f178ebe79fe1195ef2452cc2c0b48b97d;hpb=cdf3643b5d81cfd5d1608d568abb9695ab589fd0;p=integration%2Ftest.git diff --git a/csit/libraries/OVSDB.robot b/csit/libraries/OVSDB.robot index 4625802f17..be3d13b975 100644 --- a/csit/libraries/OVSDB.robot +++ b/csit/libraries/OVSDB.robot @@ -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,22 +119,23 @@ 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} # 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 @@ -161,9 +160,7 @@ Clean OVSDB Test Environment 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 - BuiltIn.Log ${output} - ${output} = Utils.Run Command On Mininet ${ovs_ip} sudo /usr/share/openvswitch/scripts/ovs-ctl start + ${output} = Utils.Run Command On Mininet ${ovs_ip} sudo systemctl restart openvswitch BuiltIn.Log ${output} Set Controller In OVS Bridge @@ -185,9 +182,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} @@ -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 @@ -326,8 +324,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 @@ -346,9 +345,10 @@ 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} - ${resp} = RequestsLibrary.Get Request session ${CONFIG_TOPO_API} + FOR ${uri} IN @{uris} + RequestsLibrary.Delete Request session ${uri} + END + ${resp} = RequestsLibrary.Get Request session ${RFC8040_CONFIG_TOPO_API} OVSDB.Log Config And Operational Topology RequestsLibrary.Delete All Sessions @@ -380,7 +380,7 @@ 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+)" + ${line} ${bridge_name} Builtin.Should Match Regexp ${result} Bridge ([\\w-]+) [Return] ${uuid} ${bridge_name} Delete OVS Controller @@ -412,41 +412,43 @@ 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} Get Tunnel Id And Packet Count - [Arguments] ${conn_id} ${table_id} ${direction} ${tun_id} ${dst_mac}="" - [Documentation] Get tunnel id and packet count from specified table id and destination port mac address + [Arguments] ${conn_id} ${table_id} ${tun_id} ${mac}="" + [Documentation] Get tunnel id and packet count from specified table id + ... Using regex get the n_packet and the tunnel_id from the table flow. ${tun_id} = BuiltIn.Convert To Hex ${tun_id} prefix=0x lowercase=yes - ${base_cmd} = BuiltIn.Set Variable sudo ovs-ofctl dump-flows br-int -OOpenFlow13 | grep table=${table_id} | grep ${tun_id} - ${full_cmd} = BuiltIn.Run Keyword If "${direction}" == "Egress" BuiltIn.Catenate ${base_cmd} | grep ${dst_mac} | awk '{split($7,a,"[:-]"); print a[2]}' - ... ELSE BuiltIn.Catenate ${base_cmd} | awk '{split($6,a,"[,=]"); {print a[4]}}' - SSHLibrary.Switch Connection ${conn_id} - Utils.Write Commands Until Expected Prompt ${base_cmd} ${DEFAULT_LINUX_PROMPT_STRICT} - ${output} = Utils.Write Commands Until Expected Prompt ${full_cmd} ${DEFAULT_LINUX_PROMPT_STRICT} - @{list} = String.Split String ${output} - ${output} = Set Variable @{list}[0] - ${tunnel_id} = Convert To Integer ${output} 16 - ${full_cmd} = BuiltIn.Run Keyword If "${direction}" == "Egress" BuiltIn.Catenate ${base_cmd} | grep ${dst_mac} | awk '{split($4,a,"[=,]"); {print a[2]}}' - ... ELSE BuiltIn.Catenate ${base_cmd} | awk '{split($4,a,"[=,]"); {print a[2]}}' + ${cmd} = BuiltIn.Run Keyword If "${table_id}" == "${INTERNAL_TUNNEL_TABLE}" BuiltIn.Set Variable sudo ovs-ofctl dump-flows br-int -OOpenFlow13 | grep table=${table_id} | grep ${mac} | grep tun_id=${tun_id} | grep goto_table:${ELAN_DMACTABLE} + ... ELSE BuiltIn.Set Variable sudo ovs-ofctl dump-flows br-int -OOpenFlow13 | grep table=${table_id} | grep ${mac} SSHLibrary.Switch Connection ${conn_id} - ${output} = Utils.Write Commands Until Expected Prompt ${full_cmd} ${DEFAULT_LINUX_PROMPT_STRICT} - @{list} = String.Split String ${output} - ${packet_count} = BuiltIn.Set Variable @{list}[0] + ${output} = Utils.Write Commands Until Expected Prompt ${cmd} ${DEFAULT_LINUX_PROMPT_STRICT} + @{list}= Split to lines ${output} + ${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} 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] + ${tunnel_id} = Convert To Integer ${tunnel_id} 16 [Return] ${tunnel_id} ${packet_count} Verify Dump Flows For Specific Table [Arguments] ${compute_ip} ${table_num} ${flag} ${additional_args}=${EMPTY} @{matching_paras} [Documentation] To Verify flows are present for the corresponding table Number - ${flow_output} = Utils.Run Command On Remote System ${compute_ip} ${DUMP_FLOWS}|grep table=${table_num} ${additional_args} + ${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} @@ -456,32 +458,29 @@ Verify Vni Segmentation Id and Tunnel Id ${port_mac2} = OpenStackOperations.Get Port Mac ${port2} ${segmentation_id1} = OpenStackOperations.Get Network Segmentation Id ${net1} ${segmentation_id2} = OpenStackOperations.Get Network Segmentation Id ${net2} - ${egress_tun_id} ${before_count_egress_port1} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP1_CONN_ID} ${L3_TABLE} direction=${EGRESS} tun_id=${segmentation_id2} - ... dst_mac=${port_mac2} + ${egress_tun_id} ${before_count_egress_port1} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP1_CONN_ID} ${L3_TABLE} tun_id=${segmentation_id2} mac=${port_mac2} BuiltIn.Should Be Equal As Numbers ${segmentation_id2} ${egress_tun_id} - ${egress_tun_id} ${before_count_egress_port2} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP2_CONN_ID} ${L3_TABLE} direction=${EGRESS} tun_id=${segmentation_id1} - ... dst_mac=${port_mac1} + ${egress_tun_id} ${before_count_egress_port2} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP2_CONN_ID} ${L3_TABLE} tun_id=${segmentation_id1} mac=${port_mac1} BuiltIn.Should Be Equal As Numbers ${segmentation_id1} ${egress_tun_id} - ${ingress_tun_id} ${before_count_ingress_port1} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP1_CONN_ID} ${INTERNAL_TUNNEL_TABLE} direction=${INGRESS} tun_id=${segmentation_id1} + ${ingress_tun_id} ${before_count_ingress_port1} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP1_CONN_ID} ${INTERNAL_TUNNEL_TABLE} tun_id=${segmentation_id1} BuiltIn.Should Be Equal As Numbers ${segmentation_id1} ${ingress_tun_id} - ${ingress_tun_id} ${before_count_ingress_port2} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP2_CONN_ID} ${INTERNAL_TUNNEL_TABLE} direction=${INGRESS} tun_id=${segmentation_id2} + ${ingress_tun_id} ${before_count_ingress_port2} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP2_CONN_ID} ${INTERNAL_TUNNEL_TABLE} tun_id=${segmentation_id2} BuiltIn.Should Be Equal As Numbers ${segmentation_id2} ${ingress_tun_id} ${ping_cmd} = BuiltIn.Run Keyword If '${ip}'=='ipv4' BuiltIn.Set Variable ping -c ${DEFAULT_PING_COUNT} ${vm2_ip} ... ELSE BuiltIn.Set Variable ping6 -c ${DEFAULT_PING_COUNT} ${vm2_ip} ${output} = OpenStackOperations.Execute Command on VM Instance ${net1} ${vm1_ip} ${ping_cmd} BuiltIn.Should Contain ${output} 64 bytes BuiltIn.Wait Until Keyword Succeeds 60s 5s OVSDB.Verify Vni Packet Count After Traffic ${before_count_egress_port1} ${before_count_egress_port2} ${before_count_ingress_port1} - ... ${before_count_ingress_port2} ${segmentation_id1} ${segmentation_id2} + ... ${before_count_ingress_port2} ${segmentation_id1} ${segmentation_id2} ${port_mac1} ${port_mac2} Verify Vni Packet Count After Traffic [Arguments] ${before_count_egress_port1} ${before_count_egress_port2} ${before_count_ingress_port1} ${before_count_ingress_port2} ${segmentation_id1} ${segmentation_id2} + ... ${port_mac1} ${port_mac2} [Documentation] Verify the packet count after the traffic sent - ${tun_id} ${after_count_egress_port2} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP2_CONN_ID} ${L3_TABLE} direction=${EGRESS} tun_id=${segmentation_id1} - ... dst_mac=${port_mac1} - ${tun_id} ${after_count_ingress_port2} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP2_CONN_ID} ${INTERNAL_TUNNEL_TABLE} direction=${INGRESS} tun_id=${segmentation_id2} - ${tun_id} ${after_count_egress_port1} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP1_CONN_ID} ${L3_TABLE} direction=${EGRESS} tun_id=${segmentation_id2} - ... dst_mac=${port_mac2} - ${tun_id} ${after_count_ingress_port1} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP1_CONN_ID} ${INTERNAL_TUNNEL_TABLE} direction=${INGRESS} tun_id=${segmentation_id1} + ${tun_id} ${after_count_egress_port2} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP2_CONN_ID} ${L3_TABLE} tun_id=${segmentation_id1} mac=${port_mac1} + ${tun_id} ${after_count_ingress_port2} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP2_CONN_ID} ${INTERNAL_TUNNEL_TABLE} tun_id=${segmentation_id2} + ${tun_id} ${after_count_egress_port1} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP1_CONN_ID} ${L3_TABLE} tun_id=${segmentation_id2} mac=${port_mac2} + ${tun_id} ${after_count_ingress_port1} = OVSDB.Get Tunnel Id And Packet Count ${OS_CMP1_CONN_ID} ${INTERNAL_TUNNEL_TABLE} tun_id=${segmentation_id1} ${diff_count_egress_port1} = BuiltIn.Evaluate ${after_count_egress_port1} - ${before_count_egress_port1} ${diff_count_ingress_port1} = BuiltIn.Evaluate ${after_count_ingress_port1} - ${before_count_ingress_port1} ${diff_count_egress_port2} = BuiltIn.Evaluate ${after_count_egress_port2} - ${before_count_egress_port2} @@ -490,3 +489,24 @@ Verify Vni Packet Count After Traffic BuiltIn.Should Be True ${diff_count_ingress_port1} >= ${DEFAULT_PING_COUNT} BuiltIn.Should Be True ${diff_count_egress_port2} >= ${DEFAULT_PING_COUNT} BuiltIn.Should Be True ${diff_count_ingress_port2} >= ${DEFAULT_PING_COUNT} + +Get Flow Entries On Node + [Arguments] ${conn_id} ${switch}=${INTEGRATION_BRIDGE} + [Documentation] Return flow entries on the given Node. + SSHLibrary.Switch Connection ${conn_id} + ${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}