X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fgenius%2FConfigure_ITM.robot;h=8cd4f351f4f3382ef8d4222c96c577450777b8d8;hb=94651ca9711d8eb316721775561e815830bc6c7e;hp=caf2cdea56c7c9eedfa680a21fe9bf35df23d485;hpb=f9fd0f4ec2cdc55e21238d67742d9ec385511dd2;p=integration%2Ftest.git diff --git a/csit/suites/genius/Configure_ITM.robot b/csit/suites/genius/Configure_ITM.robot index caf2cdea56..8cd4f351f4 100644 --- a/csit/suites/genius/Configure_ITM.robot +++ b/csit/suites/genius/Configure_ITM.robot @@ -1,434 +1,202 @@ *** Settings *** Documentation Test Suite for ITM -Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS} -Suite Teardown Delete All Sessions -Test Teardown Get Model Dump ${ODL_SYSTEM_IP} ${data_models} +Suite Setup Genius Suite Setup +Suite Teardown Genius Suite Teardown +Test Setup Genius Test Setup +Test Teardown Genius Test Teardown ${data_models} +Library Collections Library OperatingSystem -Library String Library RequestsLibrary -Variables ../../variables/Variables.py -Variables ../../variables/genius/Modules.py +Library String Resource ../../libraries/DataModels.robot -Library Collections +Resource ../../libraries/Genius.robot +Resource ../../libraries/KarafKeywords.robot +Resource ../../libraries/ToolsSystem.robot Resource ../../libraries/Utils.robot -Library re +Resource ../../variables/netvirt/Variables.robot +Resource ../../variables/Variables.robot +Variables ../../variables/genius/Modules.py *** Variables *** -@{itm_created} TZA -${genius_config_dir} ${CURDIR}/../../variables/genius -${Bridge-1} BR1 -${Bridge-2} BR2 +${gateway_regex_IPV4} [0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\. +${gateway_regex_IPV6} [0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}: *** Test Cases *** Create and Verify VTEP -No Vlan [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs without VLAN and Gateway configured in Json. - ${Dpn_id_1} Get Dpn Ids ${conn_id_1} - ${Dpn_id_2} Get Dpn Ids ${conn_id_2} - Set Global Variable ${Dpn_id_1} - Set Global Variable ${Dpn_id_2} - ${vlan}= Set Variable 0 - ${gateway-ip}= Set Variable 0.0.0.0 - Create Vteps ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} - Wait Until Keyword Succeeds 40 10 Get ITM ${itm_created[0]} ${subnet} ${vlan} - ... ${Dpn_id_1} ${TOOLS_SYSTEM_IP} ${Dpn_id_2} ${TOOLS_SYSTEM_2_IP} - ${type} set variable odl-interface:tunnel-type-vxlan - ${tunnel-1} Wait Until Keyword Succeeds 40 20 Get Tunnel ${Dpn_id_1} ${Dpn_id_2} - ... ${type} - Set Global Variable ${tunnel-1} - ${tunnel-2} Wait Until Keyword Succeeds 40 20 Get Tunnel ${Dpn_id_2} ${Dpn_id_1} - ... ${type} - Set Global Variable ${tunnel-2} - ${tunnel-type}= Set Variable type: vxlan - Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_1}/ - Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_2}/ - Log >>>>OVS Validation in Switch 1 for Tunnel Created<<<<< - Wait Until Keyword Succeeds 40 10 Ovs Verification 2 Dpn ${conn_id_1} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} - ... ${tunnel-1} ${tunnel-type} - Log >>>>OVS Validation in Switch 2 for Tunnel Created<<<<< - Wait Until Keyword Succeeds 40 10 Ovs Verification 2 Dpn ${conn_id_2} ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP} - ... ${tunnel-2} ${tunnel-type} - Log >>>> Getting Network Topology Operational <<<<<< - ${resp} Wait Until Keyword Succeeds 40 10 Get Network Topology with Tunnel ${Bridge-1} ${Bridge-2} - ... ${tunnel-1} ${tunnel-2} ${OPERATIONAL_TOPO_API} - Log >>>>Validating Interface 1 & 2 states<<<< - ${return} Validate interface state ${tunnel-1} ${Dpn_id_1} ${tunnel-2} ${Dpn_id_2} - log ${return} - ${lower-layer-if-1} Get from List ${return} 0 - ${port-num-1} Get From List ${return} 1 - ${lower-layer-if-2} Get from List ${return} 2 - ${port-num-2} Get From List ${return} 3 - Log >>>>>Verify Oper data base of Interface state<<<<< - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/ietf-interfaces:interfaces-state/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Be Equal As Strings ${resp.status_code} 200 - Should Contain ${resp.content} ${Dpn_id_1} ${tunnel-1} - Should Contain ${resp.content} ${Dpn_id_2} ${tunnel-2} - Log >>>>> Checking Entry in table 0 on OVS 1<<<<< - ${check-3} Wait Until Keyword Succeeds 40 10 Check Table0 Entry for 2 Dpn ${conn_id_1} ${Bridge-1} - ... ${port-num-1} - Log >>>>> Checking Entry in table 0 on OVS 2<<<<< - ${check-4} Wait Until Keyword Succeeds 40 10 Check Table0 Entry for 2 Dpn ${conn_id_2} ${Bridge-2} - ... ${port-num-2} - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/opendaylight-inventory:nodes/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Be Equal As Strings ${resp.status_code} 200 - Should Contain ${resp.content} ${lower-layer-if-1} ${lower-layer-if-2} + Genius.Create Vteps ${NO_VLAN} ${gateway_ip} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Get ITM ${itm_created[0]} + ${type} = BuiltIn.Set Variable odl-interface:tunnel-type-vxlan + Genius.Update Dpn id list and get tunnels ${type} + Genius.Verify Response Code Of Dpn Endpointconfig API + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Ovs Interface Verification + BuiltIn.Wait Until Keyword Succeeds 60 5 Genius.Verify Tunnel Status As Up + Verify Network Topology + Verify Ietf Interface State + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Verify Table0 Entry After fetching Port Number + ${resp} = RequestsLibrary.Get Request session ${OPERATIONAL_NODES_API} + ${respjson} = RequestsLibrary.To Json ${resp.content} pretty_print=True + BuiltIn.Log ${respjson} + BuiltIn.Should Be Equal As Strings ${resp.status_code} 200 Delete and Verify VTEP -No Vlan [Documentation] This Delete testcase , deletes the ITM tunnel created between 2 dpns. - Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/ - Wait Until Keyword Succeeds 40 10 Verify Data Base after Delete ${Dpn_id_1} ${Dpn_id_2} ${tunnel-1} - ... ${tunnel-2} + ${tunnel_list} = Genius.Get Tunnels List + FOR ${dpn_id} IN @{DPN_ID_LIST} + CompareStream.Run_Keyword_If_Less_Than_Sodium Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/subnets/${SUBNET}%2F16/vteps/${dpn_id}/${port_name} + CompareStream.Run_Keyword_If_At_Least_Sodium Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/vteps/${dpn_id} + END + ${output} = KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW} + BuiltIn.Should Not Contain ${output} ${itm_created[0]} + Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/ + ${resp} = Utils.Get Data From URI session ${CONFIG_API}/itm:transport-zones/ + BuiltIn.Should Not Contain ${resp} = ${itm_created[0]} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Verify Deleted Tunnels On OVS ${tunnel_list} ${resp} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${tunnel_list} Create and Verify VTEP IPv6 - No Vlan [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs without VLAN and Gateway configured in Json. - ${Dpn_id_1} Get Dpn Ids ${conn_id_1} - ${Dpn_id_2} Get Dpn Ids ${conn_id_2} - Set Global Variable ${Dpn_id_1} - Set Global Variable ${Dpn_id_2} - ${vlan}= Set Variable 0 - ${gateway-ip}= Set Variable :: - ${TOOLS_SYSTEM_IP} Set Variable fd96:2a25:4ad3:3c7d:0:0:0:1000 - ${TOOLS_SYSTEM_2_IP} Set Variable fd96:2a25:4ad3:3c7d:0:0:0:2000 - Create Vteps IPv6 ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} - Wait Until Keyword Succeeds 40 10 Get ITM ${itm_created[0]} ${subnet} ${vlan} - ... ${Dpn_id_1} ${TOOLS_SYSTEM_IP} ${Dpn_id_2} ${TOOLS_SYSTEM_2_IP} - ${type} set variable odl-interface:tunnel-type-vxlan - ${tunnel-1} Wait Until Keyword Succeeds 40 10 Get Tunnel ${Dpn_id_1} ${Dpn_id_2} - ... ${type} - Set Global Variable ${tunnel-1} - ${tunnel-2} Wait Until Keyword Succeeds 40 10 Get Tunnel ${Dpn_id_2} ${Dpn_id_1} - ... ${type} - Set Global Variable ${tunnel-2} - ${tunnel-type}= Set Variable type: vxlan - Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_1}/ headers=${ACCEPT_XML} - Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_2}/ headers=${ACCEPT_XML} - Log >>>>OVS Validation in Switch 1 for Tunnel Created<<<<< - Wait Until Keyword Succeeds 40 10 Ovs Verification 2 Dpn ${conn_id_1} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} - ... ${tunnel-1} ${tunnel-type} - Log >>>>OVS Validation in Switch 2 for Tunnel Created<<<<< - Wait Until Keyword Succeeds 40 10 Ovs Verification 2 Dpn ${conn_id_2} ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP} - ... ${tunnel-2} ${tunnel-type} - Log >>>> Getting Network Topology Operational <<<<<< - ${resp} Wait Until Keyword Succeeds 40 10 Get Network Topology with Tunnel ${Bridge-1} ${Bridge-2} - ... ${tunnel-1} ${tunnel-2} ${OPERATIONAL_TOPO_API} + ${gateway_ip} = BuiltIn.Set Variable :: + Build Tools System IPV6 List + Create Vteps IPv6 ${NO_VLAN} ${gateway_ip} ${TOOLS_SYSTEM_IPV6_LIST} + BuiltIn.Wait Until Keyword Succeeds 40 10 Get ITM IPV6 ${itm_created[0]} + ${type} = BuiltIn.Set Variable odl-interface:tunnel-type-vxlan + Genius.Update Dpn id list and get tunnels ${type} + FOR ${dpn} IN @{DPN_ID_LIST} + BuiltIn.Wait Until Keyword Succeeds 40 5 Utils.Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${dpn}/ + ... headers=${ACCEPT_XML} + END + BuiltIn.Wait Until Keyword Succeeds 40 10 OVS Verification Between IPV6 + @{all_tunnels} = BuiltIn.Create List + FOR ${conn_id} IN @{TOOLS_SYSTEM_ALL_CONN_IDS} + ${tun_names} = Genius.Get Tunnels On OVS ${conn_id} + Collections.Append To List ${all_tunnels} @{tun_names} + END + @{network_topology_list} = BuiltIn.Create List @{all_tunnels} + @{network_topology_list} = Collections.Append To List ${network_topology_list} ${Bridge} + ${resp} = BuiltIn.Wait Until Keyword Succeeds 40 10 Get Network Topology with Tunnel ${OPERATIONAL_TOPO_API} ${network_topology_list} Delete and Verify VTEP IPv6 -No Vlan [Documentation] This Delete testcase , deletes the ITM tunnel created between 2 dpns. - Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/ - Wait Until Keyword Succeeds 40 10 Verify Data Base after Delete ${Dpn_id_1} ${Dpn_id_2} ${tunnel-1} - ... ${tunnel-2} + ${type} = BuiltIn.Set Variable odl-interface:tunnel-type-vxlan + ${tunnel_list} = Genius.Get Tunnels List + FOR ${dpn_id} IN @{DPN_ID_LIST} + CompareStream.Run_Keyword_If_Less_Than_Sodium Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/subnets/${SUBNET_IPV6}%2F16/vteps/${dpn_id}/${port_name} + CompareStream.Run_Keyword_If_At_Least_Sodium Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/vteps/${dpn_id} + END + ${output} = KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW} + BuiltIn.Should Not Contain ${output} ${itm_created[0]} + BuiltIn.Run Keyword And Ignore Error Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/ + ${resp} = Utils.Get Data From URI session ${CONFIG_API}/itm:transport-zones/ + BuiltIn.Should Not Contain ${resp} ${itm_created[0]} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Verify Deleted Tunnels On OVS ${tunnel_list} ${resp} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${tunnel_list} Create and Verify VTEP-Vlan - [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs with VLAN and \ without Gateway configured in Json. - ${vlan}= Set Variable 100 - ${gateway-ip}= Set Variable 0.0.0.0 - Create Vteps ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} - ${get} Wait Until Keyword Succeeds 40 10 Get ITM ${itm_created[0]} ${subnet} - ... ${vlan} ${Dpn_id_1} ${TOOLS_SYSTEM_IP} ${Dpn_id_2} ${TOOLS_SYSTEM_2_IP} - Log ${get} - ${type} set variable odl-interface:tunnel-type-vxlan - ${tunnel-3} Wait Until Keyword Succeeds 40 10 Get Tunnel ${Dpn_id_1} ${Dpn_id_2} - ... ${type} - log ${tunnel-3} - Set Global Variable ${tunnel-3} - ${tunnel-4} Wait Until Keyword Succeeds 40 10 Get Tunnel ${Dpn_id_2} ${Dpn_id_1} - ... ${type} - log ${tunnel-4} - Set Global Variable ${tunnel-4} - ${tunnel-type}= Set Variable type: vxlan - Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_1}/ - Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_2}/ - Log >>>>OVS Validation in Switch 1 for Tunnel Created<<<<< - Wait Until Keyword Succeeds 40 10 Ovs Verification 2 Dpn ${conn_id_1} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} - ... ${tunnel-3} ${tunnel-type} - Log >>>>OVS Validation in Switch 2 for Tunnel Created<<<<< - Wait Until Keyword Succeeds 40 10 Ovs Verification 2 Dpn ${conn_id_2} ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP} - ... ${tunnel-4} ${tunnel-type} - Log >>>>> Checking Network opertional Topology <<<<<< - ${url_2} set variable ${OPERATIONAL_API}/network-topology:network-topology/ - Wait Until Keyword Succeeds 40 10 Get Network Topology with Tunnel ${Bridge-1} ${Bridge-2} ${tunnel-3} - ... ${tunnel-4} ${url_2} - ${return} Validate interface state ${tunnel-3} ${Dpn_id_1} ${tunnel-4} ${Dpn_id_2} - log ${return} - ${lower-layer-if-1} Get from List ${return} 0 - ${port-num-1} Get From List ${return} 1 - ${lower-layer-if-2} Get from List ${return} 2 - ${port-num-2} Get From List ${return} 3 - Log >>>>>Verify Oper data base of Interface state<<<<< - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/ietf-interfaces:interfaces-state/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Contain ${resp.content} ${Dpn_id_1} ${tunnel-3} - Should Contain ${resp.content} ${Dpn_id_2} ${tunnel-4} - Log >>>>> Checking Entry in table 0 on OVS 1<<<<< - Wait Until Keyword Succeeds 40 10 Check Table0 Entry for 2 Dpn ${conn_id_1} ${Bridge-1} ${port-num-1} - Log >>>>> Checking Entry in table 0 on OVS \ 2<<<<< - Wait Until Keyword Succeeds 40 10 Check Table0 Entry for 2 Dpn ${conn_id_2} ${Bridge-2} ${port-num-2} - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/opendaylight-inventory:nodes/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Be Equal As Strings ${resp.status_code} 200 - Should Contain ${resp.content} ${lower-layer-if-2} ${lower-layer-if-1} + [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs with VLAN and without Gateway configured in Json. + Genius.Create Vteps ${VLAN} ${gateway_ip} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Get ITM ${itm_created[0]} + ${type} = BuiltIn.Set Variable odl-interface:tunnel-type-vxlan + Genius.Update Dpn id list and get tunnels ${type} + Genius.Verify Response Code Of Dpn Endpointconfig API + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Ovs Interface Verification + Verify Network Topology + Verify Ietf Interface State + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Verify Table0 Entry After fetching Port Number Delete and Verify VTEP -Vlan [Documentation] This Delete testcase , deletes the ITM tunnel created between 2 dpns. - Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/ - Wait Until Keyword Succeeds 40 10 Verify Data Base after Delete ${Dpn_id_1} ${Dpn_id_2} ${tunnel-3} - ... ${tunnel-4} + ${type} = BuiltIn.Set Variable odl-interface:tunnel-type-vxlan + ${tunnel_list} = Genius.Get Tunnels List + FOR ${dpn_id} IN @{DPN_ID_LIST} + CompareStream.Run_Keyword_If_Less_Than_Sodium Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/subnets/${SUBNET}%2F16/vteps/${dpn_id}/${port_name} + CompareStream.Run_Keyword_If_At_Least_Sodium Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/vteps/${dpn_id} + END + ${output} = KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW} + BuiltIn.Should Not Contain ${output} ${itm_created[0]} + Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/ + ${resp} = Utils.Get Data From URI session ${CONFIG_API}/itm:transport-zones/ + BuiltIn.Should Not Contain ${resp} ${itm_created[0]} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Verify Deleted Tunnels On OVS ${tunnel_list} ${resp} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${tunnel_list} Create VTEP - Vlan and Gateway [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs with VLAN and Gateway configured in Json. - ${vlan}= Set Variable 101 - ${substr} Should Match Regexp ${TOOLS_SYSTEM_IP} [0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\. - ${subnet} Catenate ${substr}0 - ${gateway-ip} Catenate ${substr}1 - Log ${subnet} - Create Vteps ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} - Wait Until Keyword Succeeds 40 10 Get ITM ${itm_created[0]} ${subnet} ${vlan} - ... ${Dpn_id_1} ${TOOLS_SYSTEM_IP} ${Dpn_id_2} ${TOOLS_SYSTEM_2_IP} - ${type} set variable odl-interface:tunnel-type-vxlan - ${tunnel-5} Wait Until Keyword Succeeds 40 10 Get Tunnel ${Dpn_id_1} ${Dpn_id_2} - ... ${type} - log ${tunnel-5} - Set Global Variable ${tunnel-5} - ${tunnel-6} Wait Until Keyword Succeeds 40 10 Get Tunnel ${Dpn_id_2} ${Dpn_id_1} - ... ${type} - log ${tunnel-6} - Set Global Variable ${tunnel-6} - ${tunnel-type}= Set Variable type: vxlan - Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_1}/ - Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_2}/ - Log >>>>OVS Validation in Switch 1 for Tunnel Created<<<<< - ${check-1} Wait Until Keyword Succeeds 40 10 Ovs Verification 2 Dpn ${conn_id_1} ${TOOLS_SYSTEM_IP} - ... ${TOOLS_SYSTEM_2_IP} ${tunnel-5} ${tunnel-type} - Log ${check-1} - ${check-2} Wait Until Keyword Succeeds 40 10 Ovs Verification 2 Dpn ${conn_id_2} ${TOOLS_SYSTEM_2_IP} - ... ${TOOLS_SYSTEM_IP} ${tunnel-6} ${tunnel-type} - Log ${check-2} - ${resp} Wait Until Keyword Succeeds 40 10 Get Network Topology with Tunnel ${Bridge-1} ${Bridge-2} - ... ${tunnel-5} ${tunnel-6} ${OPERATIONAL_TOPO_API} - Log ${resp} - ${return} Validate interface state ${tunnel-5} ${Dpn_id_1} ${tunnel-6} ${Dpn_id_2} - log ${return} - ${lower-layer-if-1} Get from List ${return} 0 - ${port-num-1} Get From List ${return} 1 - ${lower-layer-if-2} Get from List ${return} 2 - ${port-num-2} Get From List ${return} 3 - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/ietf-interfaces:interfaces-state/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Contain ${resp.content} ${Dpn_id_1} ${tunnel-5} - Should Contain ${resp.content} ${Dpn_id_2} ${tunnel-6} - ${check-3} Wait Until Keyword Succeeds 40 10 Check Table0 Entry for 2 Dpn ${conn_id_1} ${Bridge-1} - ... ${port-num-1} - Log ${check-3} - ${check-4} Wait Until Keyword Succeeds 40 10 Check Table0 Entry for 2 Dpn ${conn_id_2} ${Bridge-2} - ... ${port-num-2} - Log ${check-4} - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/opendaylight-inventory:nodes/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Be Equal As Strings ${resp.status_code} 200 - Should Contain ${resp.content} ${lower-layer-if-2} ${lower-layer-if-1} + ${substr} = BuiltIn.Should Match Regexp ${TOOLS_SYSTEM_IP} ${gateway_regex_IPV4} + ${gateway_ip} = BuiltIn.Catenate ${substr}1 + Genius.Create Vteps ${VLAN} ${gateway_ip} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Get ITM ${itm_created[0]} + ${type} = BuiltIn.Set Variable odl-interface:tunnel-type-vxlan + Genius.Update Dpn id list and get tunnels ${type} + ${tunnel-type} = BuiltIn.Set Variable type: vxlan + Genius.Verify Response Code Of Dpn Endpointconfig API + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Ovs Interface Verification + BuiltIn.Wait Until Keyword Succeeds 60 5 Genius.Verify Tunnel Status As Up + Verify Network Topology + Verify Ietf Interface State + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Verify Table0 Entry After fetching Port Number Delete VTEP -Vlan and gateway [Documentation] This testcase deletes the ITM tunnel created between 2 dpns. - Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/ - Wait Until Keyword Succeeds 40 10 Verify Data Base after Delete ${Dpn_id_1} ${Dpn_id_2} ${tunnel-5} - ... ${tunnel-6} + ${type} = BuiltIn.Set Variable odl-interface:tunnel-type-vxlan + ${tunnel_list} = Genius.Get Tunnels List + FOR ${dpn_id} IN @{DPN_ID_LIST} + CompareStream.Run_Keyword_If_Less_Than_Sodium Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/subnets/${SUBNET}%2F16/vteps/${dpn_id}/${port_name} + CompareStream.Run_Keyword_If_At_Least_Sodium Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/vteps/${dpn_id} + END + ${output} = KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW} + BuiltIn.Should Not Contain ${output} ${itm_created[0]} + Utils.Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/ + ${resp} = Utils.Get Data From URI session ${CONFIG_API}/itm:transport-zones/ + BuiltIn.Should Not Contain ${resp} ${itm_created[0]} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Verify Deleted Tunnels On OVS ${tunnel_list} ${resp} + BuiltIn.Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${tunnel_list} *** Keywords *** -Create Vteps - [Arguments] ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} - [Documentation] This keyword creates VTEPs between ${TOOLS_SYSTEM_IP} and ${TOOLS_SYSTEM_2_IP} - ${body} OperatingSystem.Get File ${genius_config_dir}/Itm_creation_no_vlan.json - ${substr} Should Match Regexp ${TOOLS_SYSTEM_IP} [0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\. - ${subnet} Catenate ${substr}0 - Log ${subnet} - Set Global Variable ${subnet} - ${vlan}= Set Variable ${vlan} - ${gateway-ip}= Set Variable ${gateway-ip} - ${body} set json ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} ${subnet} - Post Log Check ${CONFIG_API}/itm:transport-zones/ ${body} 204 - Create Vteps IPv6 - [Arguments] ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} - [Documentation] This keyword creates VTEPs between ${TOOLS_SYSTEM_IP} and ${TOOLS_SYSTEM_2_IP} - ${body} OperatingSystem.Get File ${genius_config_dir}/Itm_creation_no_vlan.json - ${substr} Should Match Regexp ${TOOLS_SYSTEM_IP} [0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4}: - ${subnet} Catenate ${substr}0 - Log ${subnet} - Set Global Variable ${subnet} - ${vlan}= Set Variable ${vlan} - ${gateway-ip}= Set Variable ${gateway-ip} - ${body} set json ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} ${subnet} - Post Log Check ${CONFIG_API}/itm:transport-zones/ ${body} 204 - -Get Dpn Ids - [Arguments] ${connection_id} - [Documentation] This keyword gets the DPN id of the switch after configuring bridges on it.It returns the captured DPN id. - Switch connection ${connection_id} - ${cmd} set Variable sudo ovs-vsctl show | grep Bridge | awk -F "\\"" '{print $2}' - ${Bridgename1} Execute command ${cmd} - log ${Bridgename1} - ${output1} Execute command sudo ovs-ofctl show -O Openflow13 ${Bridgename1} | head -1 | awk -F "dpid:" '{ print $2 }' - log ${output1} - ${Dpn_id} Execute command echo \$\(\(16\#${output1}\)\) - log ${Dpn_id} - [Return] ${Dpn_id} - -Get Tunnel - [Arguments] ${src} ${dst} ${type} - [Documentation] This Keyword Gets the Tunnel /Interface name which has been created between 2 DPNS by passing source , destination DPN Ids along with the type of tunnel which is configured. - ${resp} RequestsLibrary.Get Request session ${CONFIG_API}/itm-state:tunnel-list/internal-tunnel/${src}/${dst}/${type}/ - log ${resp.content} - Log ${CONFIG_API}/itm-state:tunnel-list/internal-tunnel/${src}/${dst}/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Be Equal As Strings ${resp.status_code} 200 - Should Contain ${resp.content} ${src} ${dst} - ${json}= evaluate json.loads('''${resp.content}''') json - log to console \nOriginal JSON:\n${json} - ${return} Run Keyword And Return Status Should contain ${resp.content} tunnel-interface-names - log ${return} - ${ret} Run Keyword If '${return}'=='True' Check Interface Name ${json["internal-tunnel"][0]} tunnel-interface-names - [Return] ${ret} - -Validate interface state - [Arguments] ${tunnel-1} ${dpid-1} ${tunnel-2} ${dpid-2} - [Documentation] Validates the created Interface Tunnel by checking its Operational status as UP/DOWN from the dump. - Log ${tunnel-1},${dpid-1},${tunnel-2},${dpid-2} - ${data1-2} Wait Until Keyword Succeeds 40 10 Check Interface Status ${tunnel-1} ${dpid-1} - ${data2-1} Wait Until Keyword Succeeds 40 10 Check Interface Status ${tunnel-2} ${dpid-2} - @{data} combine lists ${data1-2} ${data2-1} - log ${data} - [Return] ${data} - -Check Table0 Entry for 2 Dpn - [Arguments] ${connection_id} ${Bridgename} ${port-num1} - [Documentation] Checks the Table 0 entry in the OVS when flows are dumped. - Switch Connection ${connection_id} - Log ${connection_id} - ${check} Execute Command sudo ovs-ofctl -O OpenFlow13 dump-flows ${Bridgename} - Log ${check} - Should Contain ${check} in_port=${port-num1} - [Return] ${check} - -Ovs Verification 2 Dpn - [Arguments] ${connection_id} ${local} ${remote-1} ${tunnel} ${tunnel-type} - [Documentation] Checks whether the created Interface is seen on OVS or not. - Switch Connection ${connection_id} - Log ${connection_id} - ${check} Execute Command sudo ovs-vsctl show - Log ${check} - Should Contain ${check} local_ip="${local}" remote_ip="${remote-1}" ${tunnel} - Should Contain ${check} ${tunnel-type} - [Return] ${check} - -Get ITM - [Arguments] ${itm_created[0]} ${subnet} ${vlan} ${Dpn_id_1} ${TOOLS_SYSTEM_IP} ${Dpn_id_2} - ... ${TOOLS_SYSTEM_2_IP} - [Documentation] It returns the created ITM Transport zone with the passed values during the creation is done. - Log ${itm_created[0]},${subnet}, ${vlan}, ${Dpn_id_1},${TOOLS_SYSTEM_IP}, ${Dpn_id_2}, ${TOOLS_SYSTEM_2_IP} - @{Itm-no-vlan} Create List ${itm_created[0]} ${subnet} ${vlan} ${Dpn_id_1} ${Bridge-1}-eth1 - ... ${TOOLS_SYSTEM_IP} ${Dpn_id_2} ${Bridge-2}-eth1 ${TOOLS_SYSTEM_2_IP} - Check For Elements At URI ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]} ${Itm-no-vlan} + [Arguments] ${vlan} ${gateway_ip} ${tools_ips} + [Documentation] This keyword creates VTEPs between IPV6 ip's + ${substr} = BuiltIn.Should Match Regexp @{tools_ips}[0] ${gateway_regex_IPV6} + ${SUBNET_IPV6} = BuiltIn.Catenate ${substr}0 + BuiltIn.Set Suite Variable ${SUBNET_IPV6} + ${body} = Genius.Set Json ${vlan} ${gateway_ip} ${SUBNET_IPV6} @{TOOLS_SYSTEM_IPV6_LIST} + Utils.Post Log Check ${CONFIG_API}/itm:transport-zones/ ${body} status_codes=${204} Get Network Topology with Tunnel - [Arguments] ${Bridge-1} ${Bridge-2} ${tunnel-1} ${tunnel-2} ${url} + [Arguments] ${url} ${network_topology_list} [Documentation] Returns the Network topology with Tunnel info in it. - @{bridges} Create List ${Bridge-1} ${Bridge-2} ${tunnel-1} ${tunnel-2} - Check For Elements At URI ${url} ${bridges} - -Get Network Topology without Tunnel - [Arguments] ${url} ${tunnel-1} ${tunnel-2} - [Documentation] Returns the Network Topology after Deleting of ITM transport zone is done , which wont be having any TUNNEL info in it. - @{tunnels} create list ${tunnel-1} ${tunnel-2} - Check For Elements Not At URI ${url} ${tunnels} - -Validate interface state Delete - [Arguments] ${tunnel} - [Documentation] Check for the Tunnel / Interface absence in OPERATIONAL data base of IETF interface after ITM transport zone is deleted. - Log ${tunnel} - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/ietf-interfaces:interfaces-state/interface/${tunnel}/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Be Equal As Strings ${resp.status_code} 404 - Should not contain ${resp.content} ${tunnel} + Utils.Check For Elements At URI ${url} ${network_topology_list} -set json - [Arguments] ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} ${subnet} - [Documentation] Sets Json with the values passed for it. - ${body} OperatingSystem.Get File ${genius_config_dir}/Itm_creation_no_vlan.json - ${body} replace string ${body} 1.1.1.1 ${subnet} - ${body} replace string ${body} "dpn-id": 101 "dpn-id": ${Dpn_id_1} - ${body} replace string ${body} "dpn-id": 102 "dpn-id": ${Dpn_id_2} - ${body} replace string ${body} "ip-address": "2.2.2.2" "ip-address": "${TOOLS_SYSTEM_IP}" - ${body} replace string ${body} "ip-address": "3.3.3.3" "ip-address": "${TOOLS_SYSTEM_2_IP}" - ${body} replace string ${body} "vlan-id": 0 "vlan-id": ${vlan} - ${body} replace string ${body} "gateway-ip": "0.0.0.0" "gateway-ip": "${gateway-ip}" - Log ${body} - [Return] ${body} # returns complete json that has been updated - -check-Tunnel-delete-on-ovs - [Arguments] ${connection-id} ${tunnel} - [Documentation] Verifies the Tunnel is deleted from OVS - Log ${tunnel} - Switch Connection ${connection-id} - Log ${connection-id} - ${return} Execute Command sudo ovs-vsctl show - Log ${return} - Should Not Contain ${return} ${tunnel} - [Return] ${return} - -Check Interface Status - [Arguments] ${tunnel} ${dpid} - [Documentation] Verifies the operational state of the interface . - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/ietf-interfaces:interfaces-state/interface/${tunnel}/ - Log ${OPERATIONAL_API}/ietf-interfaces:interfaces-state/interface/${tunnel}/ - ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True - Log ${respjson} - Should Be Equal As Strings ${resp.status_code} 200 - Should not contain ${resp.content} down - Should Contain ${resp.content} ${tunnel} up up - ${result-1} re.sub <.*?> , ${resp.content} - Log ${result-1} - ${lower_layer_if} Should Match Regexp ${result-1} openflow:${dpid}:[0-9]+ - log ${lower_layer_if} - @{resp_array} Split String ${lower_layer_if} : - ${port-num} Get From List ${resp_array} 2 - Log ${port-num} - [Return] ${lower_layer_if} ${port-num} - -Verify Data Base after Delete - [Arguments] ${Dpn_id_1} ${Dpn_id_2} ${tunnel-1} ${tunnel-2} - [Documentation] Verifies the config database after the Tunnel deletion is done. - ${type} set variable odl-interface:tunnel-type-vxlan - No Content From URI session ${CONFIG_API}/itm-state:tunnel-list/internal-tunnel/${Dpn_id_1}/${Dpn_id_2}/${type}/ - No Content From URI session ${CONFIG_API}/itm-state:tunnel-list/internal-tunnel/${Dpn_id_2}/${Dpn_id_1}/${type}/ - No Content From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_1}/ - No Content From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_2}/ - ${resp_7} RequestsLibrary.Get Request session ${CONFIG_API}/ietf-interfaces:interfaces/ - Run Keyword if '${resp_7.content}'=='404' Response is 404 - Run Keyword if '${resp_7.content}'=='200' Response is 200 - ${resp_8} Wait Until Keyword Succeeds 40 10 Get Network Topology without Tunnel ${CONFIG_TOPO_API} ${tunnel-1} - ... ${tunnel-2} - Log ${resp_8} - ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 check-Tunnel-delete-on-ovs ${conn_id_1} ${tunnel-1} - Log ${Ovs-del-1} - ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 check-Tunnel-delete-on-ovs ${conn_id_2} ${tunnel-2} - Log ${Ovs-del-2} - Log >>>>>>> Getting Network Topology Config without Tunnels<<<<<<< - Wait Until Keyword Succeeds 40 10 Get Network Topology without Tunnel ${OPERATIONAL_TOPO_API} ${tunnel-1} ${tunnel-2} - Wait Until Keyword Succeeds 40 10 Validate interface state Delete ${tunnel-1} - Wait Until Keyword Succeeds 40 10 Validate interface state Delete ${tunnel-2} - -Check Interface Name - [Arguments] ${json} ${expected_tunnel_interface_name} - [Documentation] This keyword Checks the Tunnel interface name is tunnel-interface-names in the output or not . - ${Tunnels} Collections.Get From Dictionary ${json} ${expected_tunnel_interface_name} - Log ${Tunnels} - [Return] ${Tunnels[0]} +Get ITM IPV6 + [Arguments] ${itm_created[0]} + [Documentation] It returns the created ITM Transport zone with the passed values during the creation is done. + @{Itm-no-vlan} = Collections.Combine Lists ${TOOLS_SYSTEM_IPV6_LIST} ${DPN_ID_LIST} + Collections.Append To List ${Itm-no-vlan} ${itm_created[0]} + Utils.Check For Elements At URI ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]} ${Itm-no-vlan} + +OVS Verification Between IPV6 + [Documentation] This keyword will verify tunnels available on ovs + FOR ${tools_ip} IN @{TOOLS_SYSTEM_ALL_IPS} + Genius.Ovs Verification For Each Dpn ${tools_ip} ${TOOLS_SYSTEM_IPV6_LIST} + END + +Verify Network Topology + [Documentation] This keyword will verify whether all tunnels and bridges are populated in network topology + ${all_tunnels} = Genius.Get Tunnels List + @{network_topology_list} = BuiltIn.Create List + @{network_topology_list} = Collections.Append To List ${network_topology_list} ${Bridge} + @{network_topology_list} = Collections.Combine Lists ${network_topology_list} ${all_tunnels} + ${resp} = BuiltIn.Wait Until Keyword Succeeds 40 10 Get Network Topology with Tunnel ${OPERATIONAL_TOPO_API} ${network_topology_list} + +Verify Ietf Interface State + Utils.Check For Elements At URI ${OPERATIONAL_API}/ietf-interfaces:interfaces-state/ ${DPN_ID_LIST} session True + ${all_tunnels} = Genius.Get Tunnels List + Utils.Check For Elements At URI ${OPERATIONAL_API}/ietf-interfaces:interfaces-state/ ${all_tunnels} session True + +Build Tools System IPV6 List + [Documentation] Create a list of tools system ips with IPV6. + @{TOOLS_SYSTEM_IPV6_LIST} = BuiltIn.Create List + FOR ${tool_system_index} IN RANGE ${NUM_TOOLS_SYSTEM} + Collections.Append To List ${TOOLS_SYSTEM_IPV6_LIST} fd96:2a25:4ad3:3c7d:0:0:${tool_system_index}:1000 + END + BuiltIn.Set Suite Variable @{TOOLS_SYSTEM_IPV6_LIST}