Resource Utils.robot
Resource ../variables/Variables.robot
Resource OVSDB.robot
+Resource ../variables/netvirt/Variables.robot
*** Variables ***
+@{itm_created} TZA
+${genius_config_dir} ${CURDIR}/../variables/genius
+${Bridge-1} BR1
+${Bridge-2} BR2
+${DEFAULT_MONITORING_INTERVAL} Tunnel Monitoring Interval (for VXLAN tunnels): 1000
*** Keywords ***
Genius Suite Setup
\ Should Contain ${var} ${service_state}
Create Vteps
- [Arguments] ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip}
+ [Arguments] ${Dpn_id_1} ${Dpn_id_2} ${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}\.
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}
+ ${body} Genius.Set Json ${Dpn_id_1} ${Dpn_id_2} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan}
+ ... ${gateway-ip} ${subnet}
${vtep_body} Set Variable ${body}
Set Global Variable ${vtep_body}
${resp} RequestsLibrary.Post Request session ${CONFIG_API}/itm:transport-zones/ data=${body}
should be equal as strings ${resp.status_code} 204
Set Json
- [Arguments] ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip} ${subnet}
+ [Arguments] ${Dpn_id_1} ${Dpn_id_2} ${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}
OVSDB.Get DumpFlows And Ovsconfig ${conn_id_1} BR1
OVSDB.Get DumpFlows And Ovsconfig ${conn_id_2} BR2
BuiltIn.Run Keyword And Ignore Error DataModels.Get Model Dump ${ODL_SYSTEM_IP} ${data_models}
+
+ITM Direct Tunnels Start Suite
+ [Documentation] start suite for itm scalability
+ ClusterManagement.ClusterManagement_Setup
+ ClusterManagement.Stop_Members_From_List_Or_All
+ ClusterManagement.Clean_Journals_Data_And_Snapshots_On_List_Or_All
+ Run Command On Remote System And Log ${ODL_SYSTEM_IP} sed -i -- 's/<itm-direct-tunnels>false/<itm-direct-tunnels>true/g' ${GENIUS_IFM_CONFIG_FLAG}
+ ClusterManagement.Start_Members_From_List_Or_All
+ Genius Suite Setup
+
+ITM Direct Tunnels Stop Suite
+ Run Command On Remote System And Log ${ODL_SYSTEM_IP} sed -i -- 's/<itm-direct-tunnels>true/<itm-direct-tunnels>false/g' ${GENIUS_IFM_CONFIG_FLAG}
+ Genius Suite Teardown
+
+Verify Tunnel Monitoring is on
+ [Documentation] This keyword will get tep:show output and verify tunnel monitoring status
+ ${output}= Issue Command On Karaf Console ${TEP_SHOW}
+ Should Contain ${output} ${TUNNEL_MONITOR_ON}
+
+Ovs Verification For 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}
+ ${check} Execute Command sudo ovs-vsctl show
+ Log ${check}
+ Should Contain ${check} local_ip="${local}" remote_ip="${remote-1}" ${tunnel} ${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 ${TUNNEL_TRANSPORTZONE}/transport-zone/${itm_created[0]} ${Itm-no-vlan}
+
+Check Tunnel Delete On OVS
+ [Arguments] ${connection-id} ${tunnel}
+ [Documentation] Verifies the Tunnel is deleted from OVS
+ Switch Connection ${connection-id}
+ ${return} Execute Command sudo ovs-vsctl show
+ Log ${return}
+ Should Not Contain ${return} ${tunnel}
+ [Return] ${return}
+
+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}
*** 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}
+ ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
+ ${Dpn_id_2} Genius.Get Dpn Ids ${conn_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}
+ Genius.Create Vteps ${Dpn_id_1} ${Dpn_id_2} ${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
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}
+ Wait Until Keyword Succeeds 40 10 Genius.Ovs Verification For 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}
+ Wait Until Keyword Succeeds 40 10 Genius.Ovs Verification For 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}
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}
+ ${check-3} Wait Until Keyword Succeeds 40 10 Genius.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}
+ ${check-4} Wait Until Keyword Succeeds 40 10 Genius.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
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}
+ ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
+ Should Not Contain ${resp} ${tunnel-1} ${tunnel-2}
+ ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_1} ${tunnel-1}
+ ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_2} ${tunnel-2}
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}
+ ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
+ ${Dpn_id_2} Genius.Get Dpn Ids ${conn_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}
+ Create Vteps IPv6 ${Dpn_id_1} ${Dpn_id_2} ${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
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}
+ Wait Until Keyword Succeeds 40 10 Genius.Ovs Verification For 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}
+ Wait Until Keyword Succeeds 40 10 Genius.Ovs Verification For 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}
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}
+ ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
+ Should Not Contain ${resp} ${tunnel-1} ${tunnel-2}
+ ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_1} ${tunnel-1}
+ ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_2} ${tunnel-2}
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.
+ ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
+ ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
${vlan}= Set Variable 100
${gateway-ip}= Set Variable 0.0.0.0
- Create Vteps ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip}
+ Genius.Create Vteps ${Dpn_id_1} ${Dpn_id_2} ${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}
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}
+ Wait Until Keyword Succeeds 40 10 Genius.Ovs Verification For 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}
+ Wait Until Keyword Succeeds 40 10 Genius.Ovs Verification For 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/
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}
+ Wait Until Keyword Succeeds 40 10 Genius.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}
+ Wait Until Keyword Succeeds 40 10 Genius.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}
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}
+ ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
+ Should Not Contain ${resp} ${tunnel-1} ${tunnel-2}
+ ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_1} ${tunnel-1}
+ ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_2} ${tunnel-2}
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.
+ ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
+ ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
${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}
+ Genius.Create Vteps ${Dpn_id_1} ${Dpn_id_2} ${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
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}
+ ${check-1} Wait Until Keyword Succeeds 40 10 Genius.Ovs Verification For 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}
+ ${check-2} Wait Until Keyword Succeeds 40 10 Genius.Ovs Verification For 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}
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}
+ ${check-3} Wait Until Keyword Succeeds 40 10 Genius.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}
+ ${check-4} Wait Until Keyword Succeeds 40 10 Genius.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/
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}
+ ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
+ Should Not Contain ${resp} ${tunnel-1} ${tunnel-2}
+ ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_1} ${tunnel-1}
+ ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_2} ${tunnel-2}
*** 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}
+ [Arguments] ${Dpn_id_1} ${Dpn_id_2} ${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}:
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}
+ ${body} Genius.Set Json ${Dpn_id_1} ${Dpn_id_2} ${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.
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}
Should Be Equal As Strings ${resp.status_code} 404
Should not contain ${resp.content} ${tunnel}
-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
--- /dev/null
+*** Settings ***
+Documentation This test suite is to by-pass interface manager and create/delete the tunnels between the switches directly inorder for ITM to scale and build mesh among more number of switches.
+Suite Setup ITM Direct Tunnels Start Suite
+Suite Teardown ITM Direct Tunnels Stop Suite
+Test Teardown Get Model Dump ${ODL_SYSTEM_IP} ${data_models}
+Library OperatingSystem
+Library String
+Library RequestsLibrary
+Variables ../../variables/genius/Modules.py
+Resource ../../libraries/DataModels.robot
+Library Collections
+Resource ../../libraries/Utils.robot
+Library re
+Resource ../../libraries/VpnOperations.robot
+Resource ../../libraries/ClusterManagement.robot
+Resource ../../libraries/KarafKeywords.robot
+Resource ../../libraries/Utils.robot
+Resource ../../libraries/Genius.robot
+Resource ../../variables/Variables.robot
+Resource ../../libraries/OVSDB.robot
+
+*** Variables ***
+
+*** Test Cases ***
+Create and Verify VTEP
+ [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs
+ ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
+ ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
+ ${vlan}= Set Variable 0
+ ${gateway-ip}= Set Variable 0.0.0.0
+ Genius.Create Vteps ${Dpn_id_1} ${Dpn_id_2} ${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}
+ ${tunnel-2} Wait Until Keyword Succeeds 40 20 Get_Tunnel ${Dpn_id_2} ${Dpn_id_1}
+ ${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}/
+ Wait Until Keyword Succeeds 40 10 Ovs Verification For 2 Dpn ${conn_id_1} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP}
+ ... ${tunnel-1} ${tunnel-type}
+ Wait Until Keyword Succeeds 40 10 Ovs Verification For 2 Dpn ${conn_id_2} ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP}
+ ... ${tunnel-2} ${tunnel-type}
+ ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
+ ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True
+ 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}
+ ${Port_num1} Get Port Number ${conn_id_1} ${Bridge-1} ${tunnel-1}
+ ${Port_num2} Get Port Number ${conn_id_2} ${Bridge-2} ${tunnel-2}
+ ${check-3} Wait Until Keyword Succeeds 40 10 Genius.Check Table0 Entry For 2 Dpn ${conn_id_1} ${Bridge-1}
+ ... ${Port_num1}
+ ${check-4} Wait Until Keyword Succeeds 40 10 Genius.Check Table0 Entry For 2 Dpn ${conn_id_2} ${Bridge-2}
+ ... ${Port_num2}
+
+Verify Tunnels By Enabling BFD
+ [Documentation] This test case will check the tunnel exists by bringing up/down a switch and check tunnels exist by enabling BFD
+ ${result} Run Keyword And Return Status Verify Tunnel Monitoring is on
+ Run Keyword If '${result}' == 'False' Enable_Tunnel_monitoring
+ Verify Tunnel State ${TOOLS_SYSTEM_1_IP}
+ Verify Tunnel State ${TOOLS_SYSTEM_2_IP}
+
+Delete and Verify VTEP
+ [Documentation] This Delete testcase , deletes the ITM tunnel created between 2 dpns.
+ ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
+ ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
+ ${tunnel-1} Get_Tunnel ${Dpn_id_1} ${Dpn_id_2}
+ ${tunnel-2} Get_Tunnel ${Dpn_id_2} ${Dpn_id_1}
+ Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/
+ ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
+ Should Not Contain ${resp} ${tunnel-1} ${tunnel-2}
+ ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_1} ${tunnel-1}
+ ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_2} ${tunnel-2}
+
+*** Keywords ***
+Get_Tunnel
+ [Arguments] ${src} ${dst}
+ [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:dpn-teps-state/dpns-teps/${src}/remote-dpns/${dst}/
+ log ${resp.content}
+ ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} ${dst}
+ ${json}= evaluate json.loads('''${resp.content}''') json
+ ${return} Run Keyword And Return Status Should contain ${resp.content} tunnel-name
+ log ${return}
+ ${ret} Run Keyword If '${return}'=='True' Check_Interface_Name ${json["remote-dpns"][0]} tunnel-name
+ [Return] ${ret}
+
+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}
+
+Enable_Tunnel_Monitoring
+ [Documentation] In this we will enable tunnel monitoring by tep:enable command running in karaf console
+ ${output} Issue_Command_On_Karaf_Console tep:enable-tunnel-monitor true
+
+Verify Tunnel State
+ [Arguments] ${TOOLS_SYSTEM_IP}
+ [Documentation] In this we will Verify Tunnel State by Stopping/Starting Switch
+ OVSDB.Stop OVSDB ${TOOLS_SYSTEM_IP}
+ Wait Until Keyword Succeeds 2min 20 sec Verify Tunnel Down
+ OVSDB.Start OVSDB ${TOOLS_SYSTEM_IP}
+ Wait Until Keyword Succeeds 2min 20 sec Verify Tunnel Status as UP
+
+Verify Tunnel Down
+ [Documentation] In this we will check whether tunnel is in down or not
+ ${output}= Issue Command On Karaf Console ${TEP_SHOW_STATE}
+ Should Contain ${output} DOWN
+
+Get Port Number
+ [Arguments] ${connection_id} ${Bridgename} ${tunnel}
+ [Documentation] In this we get Port Number to check table0 entry for 2 Dpn
+ Switch Connection ${connection_id}
+ ${check-1} Execute Command sudo ovs-ofctl -O OpenFlow13 show ${Bridgename}
+ Log ${check-1}
+ ${lines} Get Lines Containing String ${check-1} ${tunnel}
+ Log ${lines}
+ ${port} Get Regexp Matches ${lines} \\d+
+ ${port_num} Get From List ${port} 0
+ Should Contain ${check-1} ${port_num}
+ [Return] ${port_num}