X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FClusterOvsdb.robot;h=ba40f0e6714c48718a27ddd018b445db1772ff79;hb=3497207f512935aec439730e89fc5d27ff493852;hp=4ef39c2b06191fc5ec5eaf0925acaee5eaa85925;hpb=0fd8ad6a5a336f0446f5e92af21f1b2d28c8ccb6;p=integration%2Ftest.git diff --git a/csit/libraries/ClusterOvsdb.robot b/csit/libraries/ClusterOvsdb.robot index 4ef39c2b06..ba40f0e671 100644 --- a/csit/libraries/ClusterOvsdb.robot +++ b/csit/libraries/ClusterOvsdb.robot @@ -1,82 +1,85 @@ *** Settings *** 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. +Library Collections Library RequestsLibrary -Resource ClusterKeywords.robot +Resource ClusterManagement.robot +Resource CompareStream.robot Resource MininetKeywords.robot Resource Utils.robot Resource OVSDB.robot Variables ../variables/Variables.py *** Variables *** +@{SHARD_OPER_LIST} topology default entity-ownership +@{SHARD_CONF_LIST} topology default ${BRIDGE} br01 ${OVSDB_CONFIG_DIR} ${CURDIR}/../variables/ovsdb *** Keywords *** Check Ovsdb Shards Status - [Arguments] ${controller_index_list} + [Arguments] ${controller_index_list}=${EMPTY} [Documentation] Check Status for all shards in Ovsdb application. - ${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} + CompareStream.Run_Keyword_If_At_Least_Phosphorus Collections.Remove Values From List ${SHARD_OPER_LIST} entity-ownership + Log ${SHARD_OPER_LIST} + ClusterManagement.Verify_Leader_Exists_For_Each_Shard shard_name_list=${SHARD_OPER_LIST} shard_type=operational member_index_list=${controller_index_list} + ClusterManagement.Verify_Leader_Exists_For_Each_Shard shard_name_list=${SHARD_CONF_LIST} shard_type=config member_index_list=${controller_index_list} Check Ovsdb Shards Status After Cluster Event - [Arguments] ${controller_index_list} + [Arguments] ${controller_index_list}=${EMPTY} [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} ${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 ClusterKeywords.Get Cluster Entity Owner ${controller_index_list} - ... ovsdb ${device} - [Return] ${owner} ${candidates_list} + [Arguments] ${device} ${controller_index} ${controller_index_list}=${EMPTY} + [Documentation] Check Entity Owner Status and identify owner and successors for an ovs device ${device}. Request is sent to controller ${controller_index}. + ${owner} ${successor_list} Wait Until Keyword Succeeds 20s 1s ClusterManagement.Verify_Owner_And_Successors_For_Device device_name=${device} + ... device_type=ovsdb member_index=${controller_index} candidate_list=${controller_index_list} + [Return] ${owner} ${successor_list} Create Sample Bridge Manually And Verify - [Arguments] ${controller_index_list} ${SYSTEM_IP}=${TOOLS_SYSTEM_IP} + [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY} [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 ${SYSTEM_IP} sudo ovs-vsctl add-br br-s1 + Utils.Run Command On Mininet ${ovs_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} + 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} + 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} Add Sample Port To The Manual Bridge And Verify - [Arguments] ${controller_index_list} ${SYSTEM_IP}=${TOOLS_SYSTEM_IP} + [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY} [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 ${SYSTEM_IP} sudo ovs-vsctl add-port br-s1 vx1 -- set Interface vx1 type=vxlan + Utils.Run Command On Mininet ${ovs_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} + 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} + 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} Create Sample Tap Device + [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} [Documentation] Create Tap Device vport1 and vport2 to add to the bridge br-s1 using OVS command. - Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} ip tuntap add mode tap vport1 - Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} ip tuntap add mode tap vport2 - Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} ifconfig vport1 up - Utils.Run Command On Mininet ${TOOLS_SYSTEM_IP} ifconfig vport2 up + Utils.Run Command On Mininet ${ovs_system_ip} ip tuntap add mode tap vport1 + Utils.Run Command On Mininet ${ovs_system_ip} ip tuntap add mode tap vport2 + Utils.Run Command On Mininet ${ovs_system_ip} ifconfig vport1 up + Utils.Run Command On Mininet ${ovs_system_ip} ifconfig vport2 up Add Sample Tap Device To The Manual Bridge And Verify - [Arguments] ${controller_index_list} ${SYSTEM_IP}=${TOOLS_SYSTEM_IP} + [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY} [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}. - Utils.Run Command On Mininet ${SYSTEM_IP} sudo ovs-vsctl add-port br-s1 vport1 -- add-port br-s1 vport2 + Utils.Run Command On Mininet ${ovs_system_ip} sudo ovs-vsctl add-port br-s1 vport1 -- add-port br-s1 vport2 ${dictionary_operational}= Create Dictionary vport1=2 vport2=2 ${dictionary_config}= Create Dictionary vport1=0 vport2=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} + 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} + 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} Delete Sample Bridge Manually And Verify - [Arguments] ${controller_index_list} ${SYSTEM_IP}=${TOOLS_SYSTEM_IP} + [Arguments] ${ovs_system_ip}=${TOOLS_SYSTEM_IP} ${controller_index_list}=${EMPTY} [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 ${SYSTEM_IP} sudo ovs-vsctl del-br br-s1 + Utils.Run Command On Mininet ${ovs_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} + 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} Create Sample Bridge And Verify - [Arguments] ${controller_index_list} ${controller_index} + [Arguments] ${controller_index} ${controller_index_list}=${EMPTY} [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} @@ -89,53 +92,53 @@ Create Sample Bridge And Verify 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 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 20s 2s 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} + 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} + ... ${controller_index_list} + 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} Create Sample Port And Verify - [Arguments] ${controller_index_list} ${controller_index} + [Arguments] ${controller_index} ${controller_index_list}=${EMPTY} [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} 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}=6 vx2=3 - 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}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} + ${port_dictionary}= Create Dictionary ${BRIDGE}=1 vx2=3 + 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} + 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} Modify the destination IP of Sample Port - [Arguments] ${controller_index_list} ${controller_index} + [Arguments] ${controller_index} ${controller_index_list}=${EMPTY} [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 Log URL is ${CONFIG_TOPO_API}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE}/termination-point/vx2/ Log ${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} + 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} Verify Sample Port Is Modified - [Arguments] ${controller_index_list} + [Arguments] ${controller_index_list}=${EMPTY} [Documentation] Verify dst ip of port vx2 in bridge ${BRIDGE} gets modified in all instances in ${controller_index_list}. ${port_dictionary} Create Dictionary br01=6 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}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid}%2Fbridge%2F${BRIDGE} + 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} Delete Sample Port And Verify - [Arguments] ${controller_index_list} ${controller_index} + [Arguments] ${controller_index} ${controller_index_list}=${EMPTY} [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}/topology/ovsdb:1/node/ovsdb:%2F%2Fuuid%2F${ovsdb_uuid} + 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} + 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} Delete Sample Bridge And Verify - [Arguments] ${controller_index_list} ${controller_index} + [Arguments] ${controller_index} ${controller_index_list}=${EMPTY} [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} + 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} + 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} Configure Exit OVSDB Connection - [Arguments] ${controller_index_list} + [Arguments] ${controller_index_list}=${EMPTY} [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} + 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}