Resource ClusterKeywords.robot
Resource MininetKeywords.robot
Resource Utils.robot
+Resource OVSDB.robot
Variables ../variables/Variables.py
*** Keywords ***
${data}= 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}
- ${data}= Replace String ${data} /network-topology:node[network-topology:node-id='ovsdb://uuid/a96ec4e2-c457-4a2c-963c-1e6300210032 ${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}
+ Log ${data}
${clear_data}= Replace String ${data} '] ${EMPTY}
Log ${clear_data}
${json}= To Json ${clear_data}
Create Bridge 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}.
- ${sample}= OperatingSystem.Get File ${CURDIR}/../variables/ovsdb/create_bridge_3node.json
- Log ${sample}
- ${sample1} Replace String ${sample} tcp:controller1:6633 tcp:${ODL_SYSTEM_1_IP}:6640
- Log ${sample1}
- ${sample2} Replace String ${sample1} tcp:controller2:6633 tcp:${ODL_SYSTEM_2_IP}:6640
- Log ${sample2}
- ${sample3} Replace String ${sample2} tcp:controller3:6633 tcp:${ODL_SYSTEM_3_IP}:6640
- Log ${sample3}
- ${sample4} Replace String ${sample3} 127.0.0.1 ${MININET}
- Log ${sample4}
- ${sample5} Replace String ${sample4} br01 ${BRIDGE}
- Log ${sample5}
- ${body} Replace String ${sample5} 61644 ${OVSDB_PORT}
+ # 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
+ ${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}
+ ${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 Ovsdb ${controller_index_list} ${controller_index} ${SOUTHBOUND_CONFIG_API}%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
+ 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}
+
+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 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}
-Put And Check At URI In Cluster Ovsdb
- [Arguments] ${controller_index_list} ${controller_index} ${uri} ${body} ${headers}=${HEADERS}
- [Documentation] Send a PUT with the supplied ${uri} and ${body} to a ${controller_index}
- ... and check the data is replicated in all instances in ${controller_index_list}.
- ${expected_body}= To Json ${body}
- ${resp} RequestsLibrary.Put Request controller${controller_index} ${uri} ${body} ${headers}
- Should Be Equal As Strings ${resp.status_code} 200
- : FOR ${i} IN @{controller_index_list}
- \ ${data} Wait Until Keyword Succeeds 5s 1s Get Data From URI controller${i}
- \ ... ${uri} ${headers}
- \ Log ${data}
- \ ${received_body} To Json ${data}
- \ Check Expected And Received Body ${expected_body} ${received_body}
+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
+ ${dictionary}= Create Dictionary ${BRIDGE}=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}%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}
-Check Expected And Received Body
- [Arguments] ${expected_body} ${received_body}
- [Documentation] Checks whether the expected data and the actual received data are equal.
- Log ${expected_body}
- Log ${received_body}
- ${content1} Get From Dictionary ${expected_body} node
- Log ${content1}
- ${node1} Get From List ${content1} 0
- Log ${node1}
- ${expected_bridge_name} Get From Dictionary ${node1} ovsdb:bridge-name
- Log ${expected_bridge_name}
- ${expected_target_ips} Get From Dictionary ${node1} ovsdb:controller-entry
- Log ${expected_target_ips}
- Sort List ${expected_target_ips}
- Log ${expected_target_ips}
- ${content2} Get From Dictionary ${received_body} node
- Log ${content2}
- ${node2} Get From List ${content2} 0
- Log ${node2}
- ${received_bridge_name} Get From Dictionary ${node2} ovsdb:bridge-name
- Log ${received_bridge_name}
- ${received_target_ips} Get From Dictionary ${node2} ovsdb:controller-entry
- Log ${received_target_ips}
- Sort List ${received_target_ips}
- Log ${received_target_ips}
- Should Be Equal As Strings ${received_bridge_name} ${expected_bridge_name}
- Lists Should be Equal ${received_target_ips} ${expected_target_ips}
+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 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}