Check Ovsdb Shards Status
[Arguments] ${controller_index_list}
[Documentation] Check Status for all shards in Ovsdb application.
- ${topo_conf_leader} ${topo_conf_followers_list} Wait Until Keyword Succeeds 10s 1s Get Cluster Shard Status ${controller_index_list}
- ... config topology
- ${topo_oper_leader} ${topo_oper_followers_list} Wait Until Keyword Succeeds 10s 1s Get Cluster Shard Status ${controller_index_list}
- ... operational topology
+ ${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
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}
+
+Check Ovsdb Shards Status After Cluster Event
+ [Arguments] ${controller_index_list}
+ [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 10s 1s Get Cluster Entity Owner For Ovsdb ${controller_index_list}
+ ${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}
: FOR ${entity_candidate} IN @{entity_candidates_list}
\ ${candidate}= Replace String &{entity_candidate}[name] member- ${EMPTY}
\ ${candidate}= Convert To Integer ${candidate}
- \ List Should Contain Value ${controller_index_list} ${candidate} Candidate ${candidate} not exisiting in ${controller_index_list}
\ Run Keyword If '${candidate}' != '${owner}' Append To List ${candidates_list} ${candidate}
[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}
+ ${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 ${TOOLS_SYSTEM_IP}
+ ${BRIDGE}= Set Variable If "${status}"=="AfterFail" br02 br01
+ Log ${BRIDGE}
+ ${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 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 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}
+
+Delete Bridge Manually 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 Mininet ${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=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
+ ${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}
+
+Modify the destination IP of Port
+ [Arguments] ${controller_index_list} ${controller_index} ${status}=${NONE}
+ [Documentation] This will modify the dst ip of existing port
+ ${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}
+
+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}
+
+Add Port To The Manual Bridge 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 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 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}
+
+Verify Bridge in Restarted Node
+ [Arguments] ${controller_index_list} ${status}=${NONE}
+ [Documentation] Verify Bridge in Restarted node, which is created when the node is down.
+ ${BRIDGE}= Set Variable If "${status}"=="AfterCandidateRecover" br04 br02
+ ${dictionary} Create Dictionary ${BRIDGE}=6
+ Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API}
+
+Verify Port in Restarted Node
+ [Arguments] ${controller_index_list} ${status}=${NONE}
+ [Documentation] Verify Port in Restarted node, which is created when the node is down.
+ ${BRIDGE}= Set Variable If "${status}"=="AfterCandidateRecover" br04 br02
+ ${dictionary} Create Dictionary ${BRIDGE}=6 vx2=3
+ Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API}
+
+Create Bridge In Candidate
+ [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}
${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} 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}"=="AfterCandidateFail" br04 br03
+ Log ${BRIDGE}
${body} Replace String ${body} br01 ${BRIDGE}
${body} Replace String ${body} 61644 ${OVSDB_PORT}
Log ${body}
- ${dictionary}= Create Dictionary ${MININET}=1 ${OVSDBPORT}=4 ${BRIDGE}=1
- 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} ${HEADERS}
+ ${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 Port Vxlan in Candidate
+ [Arguments] ${controller_index_list} ${controller_index} ${status}=${NONE}
+ [Documentation] This will add port/interface to the config datastore
+ ${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}"=="AfterCandidateFail" br04 br03
+ 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}
+
+Delete Bridge in Candidate
+ [Arguments] ${controller_index_list} ${controller_index} ${status}=${NONE}
+ [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}
+ ${BRIDGE}= Set Variable If "${status}"=="AfterCandidateFail" br04 br03
+ ${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}
+
+Delete Port In Candidate
+ [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}"=="AfterCandidateFail" br04 br03
+ 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}
+
+Configure Exit OVSDB Connection
+ [Arguments] ${controller_index_list} ${controller_index}
+ [Documentation] Cleans up test environment, close existing sessions.
+ Clean OVSDB Test Environment ${TOOLS_SYSTEM_IP}
+ ${dictionary}= Create Dictionary ovsdb://uuid=0
+ 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}
Wait Until Keyword Succeeds 5s 1s Check Item Occurrence At URI In Cluster ${controller_index_list} ${dictionary} ${OPERATIONAL_TOPO_API}