2 Documentation Cluster Ovsdb library. So far this library is only to be used by Ovsdb cluster test as it is very specific for this test.
3 Library RequestsLibrary
4 Resource ClusterManagement.robot
5 Resource MininetKeywords.robot
8 Variables ../variables/Variables.py
11 @{SHARD_OPER_LIST} topology default entity-ownership
12 @{SHARD_CONF_LIST} topology default
14 ${OVSDB_CONFIG_DIR} ${CURDIR}/../variables/ovsdb
17 Check Ovsdb Shards Status
18 [Arguments] ${controller_index_list}=${EMPTY}
19 [Documentation] Check Status for all shards in Ovsdb application.
20 ClusterManagement.Verify_Leader_Exists_For_Each_Shard shard_name_list=${SHARD_OPER_LIST} shard_type=operational member_index_list=${controller_index_list}
21 ClusterManagement.Verify_Leader_Exists_For_Each_Shard shard_name_list=${SHARD_CONF_LIST} shard_type=config member_index_list=${controller_index_list}
23 Check Ovsdb Shards Status After Cluster Event
24 [Arguments] ${controller_index_list}=${EMPTY}
25 [Documentation] Check Shard Status after some cluster event.
26 Wait Until Keyword Succeeds 90s 1s Check Ovsdb Shards Status ${controller_index_list}
28 Get Ovsdb Entity Owner Status For One Device
29 [Arguments] ${device} ${controller_index} ${controller_index_list}=${EMPTY}
30 [Documentation] Check Entity Owner Status and identify owner and successors for an ovs device ${device}. Request is sent to controller ${controller_index}.
31 ${owner} ${successor_list} Wait Until Keyword Succeeds 20s 1s ClusterManagement.Verify_Owner_And_Successors_For_Device device_name=${device}
32 ... device_type=ovsdb member_index=${controller_index} candidate_list=${controller_index_list}
33 [Return] ${owner} ${successor_list}
35 Create Sample Bridge Manually And Verify
36 [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY}
37 [Documentation] Create bridge br-s1 using OVS command and verify it gets created in all instances in ${controller_index_list}.
38 Utils.Run Command On Mininet ${ovs_system_ip} sudo ovs-vsctl add-br br-s1
39 ${dictionary_operational}= Create Dictionary br-s1=5
40 ${dictionary_config}= Create Dictionary br-s1=0
41 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${CONFIG_TOPO_API} dictionary=${dictionary_config} member_index_list=${controller_index_list}
42 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API} dictionary=${dictionary_operational} member_index_list=${controller_index_list}
44 Add Sample Port To The Manual Bridge And Verify
45 [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY}
46 [Documentation] Add Port vx1 to br-s1 using OVS command and verify it gets added in all instances in ${controller_index_list}.
47 Utils.Run Command On Mininet ${ovs_system_ip} sudo ovs-vsctl add-port br-s1 vx1 -- set Interface vx1 type=vxlan
48 ${dictionary_operational}= Create Dictionary vx1=2
49 ${dictionary_config}= Create Dictionary vx1=0
50 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${CONFIG_TOPO_API} dictionary=${dictionary_config} member_index_list=${controller_index_list}
51 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API} dictionary=${dictionary_operational} member_index_list=${controller_index_list}
53 Create Sample Tap Device
54 [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP}
55 [Documentation] Create Tap Device vport1 and vport2 to add to the bridge br-s1 using OVS command.
56 Utils.Run Command On Mininet ${ovs_system_ip} ip tuntap add mode tap vport1
57 Utils.Run Command On Mininet ${ovs_system_ip} ip tuntap add mode tap vport2
58 Utils.Run Command On Mininet ${ovs_system_ip} ifconfig vport1 up
59 Utils.Run Command On Mininet ${ovs_system_ip} ifconfig vport2 up
61 Add Sample Tap Device To The Manual Bridge And Verify
62 [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY}
63 [Documentation] Add Tap Device vport1 and vport2 to br-s1 using OVS command and verify it gets added in all instances in ${controller_index_list}.
64 Utils.Run Command On Mininet ${ovs_system_ip} sudo ovs-vsctl add-port br-s1 vport1 -- add-port br-s1 vport2
65 ${dictionary_operational}= Create Dictionary vport1=2 vport2=2
66 ${dictionary_config}= Create Dictionary vport1=0 vport2=0
67 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${CONFIG_TOPO_API} dictionary=${dictionary_config} member_index_list=${controller_index_list}
68 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API} dictionary=${dictionary_operational} member_index_list=${controller_index_list}
70 Delete Sample Bridge Manually And Verify
71 [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY}
72 [Documentation] Delete bridge br-s1 using OVS command and verify it gets applied in all instances in ${controller_index_list}.
73 Utils.Run Command On Mininet ${ovs_system_ip} sudo ovs-vsctl del-br br-s1
74 ${dictionary}= Create Dictionary br-s1=0
75 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API} dictionary=${dictionary} member_index_list=${controller_index_list}
77 Create Sample Bridge And Verify
78 [Arguments] ${controller_index} ${controller_index_list}=${EMPTY}
79 [Documentation] Create bridge ${BRIDGE} in controller ${controller_index} and verify it gets created in all instances in ${controller_index_list}.
80 ${body}= OperatingSystem.Get File ${CURDIR}/../variables/ovsdb/create_bridge_3node.json
81 ${body} Replace String ${body} ovsdb://127.0.0.1:61644 ovsdb://uuid/${ovsdb_uuid}
82 ${body} Replace String ${body} tcp:controller1:6633 tcp:${ODL_SYSTEM_1_IP}:6633
83 ${body} Replace String ${body} tcp:controller2:6633 tcp:${ODL_SYSTEM_2_IP}:6633
84 ${body} Replace String ${body} tcp:controller3:6633 tcp:${ODL_SYSTEM_3_IP}:6633
85 ${body} Replace String ${body} 127.0.0.1 ${TOOLS_SYSTEM_IP}
86 ${body} Replace String ${body} br01 ${BRIDGE}
87 ${body} Replace String ${body} 61644 ${OVSDB_PORT}
89 ${TOOLS_SYSTEM_IP1} Replace String ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_IP} "${TOOLS_SYSTEM_IP}"
90 ${dictionary}= Create Dictionary ${TOOLS_SYSTEM_IP1}=1 ${OVSDBPORT}=4 ${BRIDGE}=1
91 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Put_As_Json_And_Check_Member_List_Or_All ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} ${body} ${controller_index}
92 ... ${controller_index_list}
93 Wait Until Keyword Succeeds 10s 2s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} dictionary=${dictionary} member_index_list=${controller_index_list}
95 Create Sample Port And Verify
96 [Arguments] ${controller_index} ${controller_index_list}=${EMPTY}
97 [Documentation] Add Port vx2 to bridge ${BRIDGE} in controller ${controller_index} and verify it gets added in all instances in ${controller_index_list}.
98 ${sample} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_port_3node.json
99 ${body} Replace String ${sample} 192.168.1.10 ${TOOLS_SYSTEM_IP}
101 Log URL is ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/
102 ${port_dictionary}= Create Dictionary ${BRIDGE}=1 vx2=3
103 ClusterManagement.Put_As_Json_And_Check_Member_List_Or_All ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ ${body} ${controller_index} ${controller_index_list}
104 Wait Until Keyword Succeeds 10s 2s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ dictionary=${port_dictionary} member_index_list=${controller_index_list}
106 Modify the destination IP of Sample Port
107 [Arguments] ${controller_index} ${controller_index_list}=${EMPTY}
108 [Documentation] Modify the dst ip of port vx2 in bridge ${BRIDGE} in controller ${controller_index}.
109 ${sample} OperatingSystem.Get File ${OVSDB_CONFIG_DIR}/create_port_3node.json
110 ${body} Replace String ${sample} 192.168.1.10 10.0.0.19
111 Log URL is ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/
113 ClusterManagement.Put_As_Json_And_Check_Member_List_Or_All ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ ${body} ${controller_index} ${controller_index_list}
115 Verify Sample Port Is Modified
116 [Arguments] ${controller_index_list}=${EMPTY}
117 [Documentation] Verify dst ip of port vx2 in bridge ${BRIDGE} gets modified in all instances in ${controller_index_list}.
118 ${port_dictionary} Create Dictionary br01=6 vx2=3 10.0.0.19=1
119 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} dictionary=${port_dictionary} member_index_list=${controller_index_list}
121 Delete Sample Port And Verify
122 [Arguments] ${controller_index} ${controller_index_list}=${EMPTY}
123 [Documentation] Delete port vx2 from bridge ${BRIDGE} in controller ${controller_index} and verify it gets deleted in all instances in ${controller_index_list}.
124 ${dictionary}= Create Dictionary vx2=0
125 ClusterManagement.Delete_And_Check_Member_List_Or_All ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ ${controller_index} ${controller_index_list}
126 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} dictionary=${dictionary} member_index_list=${controller_index_list}
128 Delete Sample Bridge And Verify
129 [Arguments] ${controller_index} ${controller_index_list}=${EMPTY}
130 [Documentation] Delete bridge ${BRIDGE} in ${controller_index} and verify it gets deleted in all instances in ${controller_index_list}.
131 ${dictionary}= Create Dictionary ${BRIDGE}=0
132 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Delete_And_Check_Member_List_Or_All ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} ${controller_index} ${controller_index_list}
133 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} dictionary=${dictionary} member_index_list=${controller_index_list}
135 Configure Exit OVSDB Connection
136 [Arguments] ${controller_index_list}=${EMPTY}
137 [Documentation] Cleans up test environment, close existing sessions.
138 OVSDB.Clean OVSDB Test Environment ${TOOLS_SYSTEM_IP}
139 ${dictionary}= Create Dictionary ovsdb://uuid=0
140 Wait Until Keyword Succeeds 5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${OPERATIONAL_TOPO_API} dictionary=${dictionary} member_index_list=${controller_index_list}