X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FClusterOvsdb.robot;h=a685e207871c61fbd4353850fe35c7e9ca45d52b;hb=d883b8eb7f8831ced0ea7289045c7074fbd4ba43;hp=c97d311339895302d4b4e4529263b6105e528e3c;hpb=ef128bd3f37944eabebf28dc03383bc9096bcd7f;p=integration%2Ftest.git diff --git a/csit/libraries/ClusterOvsdb.robot b/csit/libraries/ClusterOvsdb.robot index c97d311339..a685e20787 100644 --- a/csit/libraries/ClusterOvsdb.robot +++ b/csit/libraries/ClusterOvsdb.robot @@ -7,13 +7,17 @@ Resource Utils.robot Resource OVSDB.robot Variables ../variables/Variables.py +*** Variables *** +${BRIDGE} br01 +${OVSDB_CONFIG_DIR} ${CURDIR}/../variables/ovsdb + *** Keywords *** Check Ovsdb Shards Status [Arguments] ${controller_index_list} [Documentation] Check Status for all shards in Ovsdb application. - ${topo_conf_leader} ${topo_conf_followers_list} Get Cluster Shard Status ${controller_index_list} config topology - ${topo_oper_leader} ${topo_oper_followers_list} Get Cluster Shard Status ${controller_index_list} operational topology - ${owner_oper_leader} ${owner_oper_followers_list} Get Cluster Shard Status ${controller_index_list} operational entity-ownership + ${topo_conf_leader} ${topo_conf_followers_list} ClusterKeywords.Get Cluster Shard Status ${controller_index_list} config topology + ${topo_oper_leader} ${topo_oper_followers_list} ClusterKeywords.Get Cluster Shard Status ${controller_index_list} operational topology + ${owner_oper_leader} ${owner_oper_followers_list} ClusterKeywords.Get Cluster Shard Status ${controller_index_list} operational entity-ownership Log config topology Leader is ${topo_conf_leader} and followers are ${topo_conf_followers_list} Log operational topology Leader is ${topo_oper_leader} and followers are ${topo_oper_followers_list} Log operational entity-ownership Leader is ${owner_oper_leader} and followers are ${owner_oper_followers_list} @@ -23,24 +27,15 @@ Check Ovsdb Shards Status After Cluster Event [Documentation] Check Shard Status after some cluster event. Wait Until Keyword Succeeds 90s 1s Check Ovsdb Shards Status ${controller_index_list} -Get Ovsdb Entity Owner Status For One Device - [Arguments] ${controller_index_list} - [Documentation] Check Entity Owner Status and identify owner and candidate. - ${owner} ${candidates_list} Wait Until Keyword Succeeds 20s 1s Get Cluster Entity Owner For Ovsdb ${controller_index_list} - ... ovsdb ovsdb:1 - [Return] ${owner} ${candidates_list} - Get Cluster Entity Owner For Ovsdb [Arguments] ${controller_index_list} ${device_type} ${device} [Documentation] Checks Entity Owner status for a ${device} and returns owner index and list of candidates from a ${controller_index_list}. ... ${device_type} is openflow, ovsdb, etc... ${length}= Get Length ${controller_index_list} ${candidates_list}= Create List - ${data}= Get Data From URI controller@{controller_index_list}[0] /restconf/operational/entity-owners:entity-owners + ${data}= Utils.Get Data From URI controller@{controller_index_list}[0] /restconf/operational/entity-owners:entity-owners Log ${data} - ${data}= Replace String ${data} /network-topology:network-topology/network-topology:topology[network-topology:topology-id=' ${EMPTY} - # the UUID will not always be the same so need to use regexp to remove this string - ${data}= Replace String Using Regexp ${data} \/network-topology:node\\[network-topology:node-id='ovsdb://uuid/........-....-....-....-............ ${EMPTY} + ${data}= Replace String ${data} /network-topology:network-topology/network-topology:topology[network-topology:topology-id='ovsdb:1']/network-topology:node[network-topology:node-id=' ${EMPTY} Log ${data} ${clear_data}= Replace String ${data} '] ${EMPTY} Log ${clear_data} @@ -61,112 +56,104 @@ Get Cluster Entity Owner For Ovsdb : FOR ${entity_candidate} IN @{entity_candidates_list} \ ${candidate}= Replace String &{entity_candidate}[name] member- ${EMPTY} \ ${candidate}= Convert To Integer ${candidate} - \ Run Keyword If '${candidate}' != '${owner}' Append To List ${candidates_list} ${candidate} + \ Append To List ${candidates_list} ${candidate} + List Should Contain Sublist ${candidates_list} ${controller_index_list} Candidates are missing in ${candidates_list} + Remove Values From List ${candidates_list} ${owner} [Return] ${owner} ${candidates_list} -Create Bridge And Verify - [Arguments] ${controller_index_list} ${controller_index} ${status}=${NONE} - [Documentation] Create bridge in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}. - # need to get UUID which should be the same on all controllers in cluster, so asking controller1 - ${ovsdb_uuid}= Get OVSDB UUID controller_http_session=controller${controller_index} - Set Suite Variable ${ovsdb_uuid} +Get Ovsdb Entity Owner Status For One Device + [Arguments] ${controller_index_list} ${device} + [Documentation] Check Entity Owner Status and identify owner and candidate for an ovs device ${device}. + ${owner} ${candidates_list} Wait Until Keyword Succeeds 20s 1s Get Cluster Entity Owner For Ovsdb ${controller_index_list} + ... ovsdb ${device} + [Return] ${owner} ${candidates_list} + +Create Sample Bridge Manually And Verify + [Arguments] ${controller_index_list} + [Documentation] Create bridge br-s1 using OVS command and verify it gets created in all instances in ${controller_index_list}. + Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl add-br br-s1 + ${dictionary_operational}= Create Dictionary br-s1=5 + ${dictionary_config}= Create Dictionary br-s1=0 + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary_config} ${CONFIG_TOPO_API} + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary_operational} ${OPERATIONAL_TOPO_API} + +Add Sample Port To The Manual Bridge And Verify + [Arguments] ${controller_index_list} + [Documentation] Add Port vx1 to br-s1 using OVS command and verify it gets added in all instances in ${controller_index_list}. + Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl add-port br-s1 vx1 -- set Interface vx1 type=vxlan + ${dictionary_operational}= Create Dictionary vx1=2 + ${dictionary_config}= Create Dictionary vx1=0 + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary_config} ${CONFIG_TOPO_API} + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary_operational} ${OPERATIONAL_TOPO_API} + +Delete Sample Bridge Manually And Verify + [Arguments] ${controller_index_list} + [Documentation] Delete bridge br-s1 using OVS command and verify it gets applied in all instances in ${controller_index_list}. + Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-br br-s1 + ${dictionary}= Create Dictionary br-s1=0 + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API} + +Create Sample Bridge And Verify + [Arguments] ${controller_index_list} ${controller_index} + [Documentation] Create bridge ${BRIDGE} in controller ${controller_index} and verify it gets created in all instances in ${controller_index_list}. ${body}= OperatingSystem.Get File ${CURDIR}/../variables/ovsdb/create_bridge_3node.json ${body} Replace String ${body} ovsdb://127.0.0.1:61644 ovsdb://uuid/${ovsdb_uuid} - ${body} Replace String ${body} tcp:controller1:6633 tcp:${ODL_SYSTEM_1_IP}:6640 - ${body} Replace String ${body} tcp:controller2:6633 tcp:${ODL_SYSTEM_2_IP}:6640 - ${body} Replace String ${body} tcp:controller3:6633 tcp:${ODL_SYSTEM_3_IP}:6640 - ${body} Replace String ${body} 127.0.0.1 ${MININET} - ${BRIDGE}= Set Variable If "${status}"=="AfterFail" br02 br01 - Log ${BRIDGE} + ${body} Replace String ${body} tcp:controller1:6633 tcp:${ODL_SYSTEM_1_IP}:6633 + ${body} Replace String ${body} tcp:controller2:6633 tcp:${ODL_SYSTEM_2_IP}:6633 + ${body} Replace String ${body} tcp:controller3:6633 tcp:${ODL_SYSTEM_3_IP}:6633 + ${body} Replace String ${body} 127.0.0.1 ${TOOLS_SYSTEM_IP} ${body} Replace String ${body} br01 ${BRIDGE} ${body} Replace String ${body} 61644 ${OVSDB_PORT} Log ${body} ${TOOLS_SYSTEM_IP1} Replace String ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_IP} "${TOOLS_SYSTEM_IP}" ${dictionary}= Create Dictionary ${TOOLS_SYSTEM_IP1}=1 ${OVSDBPORT}=4 ${BRIDGE}=1 - Wait Until Keyword Succeeds 20s 1s Put And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} ${body} - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} - -Create Bridge Manually And Verify - [Arguments] ${controller_index_list} ${controller_index} - [Documentation] Create bridge in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}. - Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl add-br br-s1 - ${dictionary_operational}= Create Dictionary br-s1=5 - ${dictionary_config}= Create Dictionary br-s1=0 - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary_config} ${CONFIG_TOPO_API} - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary_operational} ${OPERATIONAL_TOPO_API} + Wait Until Keyword Succeeds 20s 1s ClusterKeywords.Put And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} + ... ${body} + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} -Delete Bridge Manually And Verify +Create Sample Port And Verify [Arguments] ${controller_index_list} ${controller_index} - [Documentation] Delete bridge in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}. - Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl del-br br-s1 - ${dictionary}= Create Dictionary br-s1=0 - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API} - -Delete Bridge Via Rest Call And Verify - [Arguments] ${controller_index_list} ${controller_index} - [Documentation] Delete bridge in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}. - # need to get UUID which should be the same on all controllers in cluster, so asking controller1 - ${ovsdb_uuid}= Get OVSDB UUID controller_http_session=controller${controller_index} - ${dictionary}= Create Dictionary ${BRIDGE}=0 - Wait Until Keyword Succeeds 20s 1s Delete And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} - -Create Port Via Controller - [Arguments] ${controller_index_list} ${controller_index} ${status}=${NONE} - [Documentation] This will add port/interface to the config datastore + [Documentation] Add Port vx2 to bridge ${BRIDGE} in controller ${controller_index} and verify it gets added in all instances in ${controller_index_list}. ${sample} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_port_3node.json ${body} Replace String ${sample} 192.168.1.10 ${TOOLS_SYSTEM_IP} Log ${body} - ${BRIDGE}= Set Variable If "${status}"=="AfterFail" br02 br01 - Log ${BRIDGE} Log URL is ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ ${port_dictionary}= Create Dictionary ${BRIDGE}=7 vx2=3 - Put And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ ${body} - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${port_dictionary} ${OPERATIONAL_TOPO_API} + ClusterKeywords.Put And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ ${body} + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${port_dictionary} ${OPERATIONAL_TOPO_API} -Modify the destination IP of Port - [Arguments] ${controller_index_list} ${controller_index} ${status}=${NONE} - [Documentation] This will modify the dst ip of existing port +Modify the destination IP of Sample Port + [Arguments] ${controller_index_list} ${controller_index} + [Documentation] Modify the dst ip of port vx2 in bridge ${BRIDGE} in controller ${controller_index}. ${sample} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_port_3node.json ${body} Replace String ${sample} 192.168.1.10 10.0.0.19 - ${BRIDGE}= Set Variable If "${status}"=="AfterFail" br02 br01 Log URL is ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ Log ${body} - Put And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ ${body} + ClusterKeywords.Put And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ ${body} -Delete Port And Verify - [Arguments] ${controller_index_list} ${controller_index} ${status}=${NONE} - [Documentation] Delete port in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}. - ${dictionary}= Create Dictionary vx2=0 - ${BRIDGE}= Set Variable If "${status}"=="AfterFail" br02 br01 - Delete And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API} +Verify Sample Port Is Modified + [Arguments] ${controller_index_list} + [Documentation] Verify dst ip of port vx2 in bridge ${BRIDGE} gets modified in all instances in ${controller_index_list}. + ${port_dictionary} Create Dictionary br01=7 vx2=3 10.0.0.19=1 + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${port_dictionary} ${OPERATIONAL_TOPO_API} -Add Port To The Manual Bridge And Verify +Delete Sample Port And Verify [Arguments] ${controller_index_list} ${controller_index} - [Documentation] Add Port in ${controller_index} and verify it gets applied in all instances in ${controller_index_list}. - Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo ovs-vsctl add-port br-s1 vx1 -- set Interface vx1 type=vxlan - ${dictionary_operational}= Create Dictionary vx1=2 - ${dictionary_config}= Create Dictionary vx1=0 - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary_config} ${CONFIG_TOPO_API} - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary_operational} ${OPERATIONAL_TOPO_API} - -Get Operational Topology with modified Port - [Arguments] ${controller_index_list} ${controller_index} ${status}=${NONE} - [Documentation] This request will fetch the operational topology after the Port is added to the bridge - ${port_dictionary_before_fail} Create Dictionary br01=7 vx2=3 10.0.0.19=1 - ${port_dictionary_after_fail} Create Dictionary br02=7 vx2=3 10.0.0.19=1 - ${port_dictionary}= Set Variable If "${status}"=="AfterFail" ${port_dictionary_after_fail} ${port_dictionary_before_fail} - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${port_dictionary} ${OPERATIONAL_TOPO_API} + [Documentation] Delete port vx2 from bridge ${BRIDGE} in controller ${controller_index} and verify it gets deleted in all instances in ${controller_index_list}. + ${dictionary}= Create Dictionary vx2=0 + ClusterKeywords.Delete And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API} -Verify Bridge in Restarted Node - [Arguments] ${controller_index_list} - [Documentation] Verify Bridge in Restarted node, which is created when the node is down. - ${dictionary} Create Dictionary br02=6 - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API} +Delete Sample Bridge And Verify + [Arguments] ${controller_index_list} ${controller_index} + [Documentation] Delete bridge ${BRIDGE} in ${controller_index} and verify it gets deleted in all instances in ${controller_index_list}. + ${dictionary}= Create Dictionary ${BRIDGE}=0 + Wait Until Keyword Succeeds 20s 1s ClusterKeywords.Delete And Check At URI In Cluster ${controller_index_list} ${controller_index} ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} -Verify Port in Restarted Node +Configure Exit OVSDB Connection [Arguments] ${controller_index_list} - [Documentation] Verify Port in Restarted node, which is created when the node is down. - ${dictionary} Create Dictionary vx2=3 - Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API} + [Documentation] Cleans up test environment, close existing sessions. + OVSDB.Clean OVSDB Test Environment ${TOOLS_SYSTEM_IP} + ${dictionary}= Create Dictionary ovsdb://uuid=0 + Wait Until Keyword Succeeds 5s 1s ClusterKeywords.Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API}