2 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.
3 Suite Setup ITM Direct Tunnels Start Suite
4 Suite Teardown ITM Direct Tunnels Stop Suite
5 Test Teardown Get Model Dump ${ODL_SYSTEM_IP} ${data_models}
6 Library OperatingSystem
8 Library RequestsLibrary
9 Variables ../../variables/genius/Modules.py
10 Resource ../../libraries/DataModels.robot
12 Resource ../../libraries/Utils.robot
14 Resource ../../libraries/VpnOperations.robot
15 Resource ../../libraries/ClusterManagement.robot
16 Resource ../../libraries/KarafKeywords.robot
17 Resource ../../libraries/Utils.robot
18 Resource ../../libraries/Genius.robot
19 Resource ../../variables/Variables.robot
20 Resource ../../libraries/OVSDB.robot
25 Create and Verify VTEP
26 [Documentation] This testcase creates a Internal Transport Manager - ITM tunnel between 2 DPNs
27 ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
28 ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
29 ${vlan}= Set Variable 0
30 ${gateway-ip}= Set Variable 0.0.0.0
31 Genius.Create Vteps ${Dpn_id_1} ${Dpn_id_2} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP} ${vlan} ${gateway-ip}
32 Wait Until Keyword Succeeds 40 10 Get ITM ${itm_created[0]} ${subnet} ${vlan}
33 ... ${Dpn_id_1} ${TOOLS_SYSTEM_IP} ${Dpn_id_2} ${TOOLS_SYSTEM_2_IP}
34 ${type} Set Variable odl-interface:tunnel-type-vxlan
35 ${tunnel-1} Wait Until Keyword Succeeds 40 20 Get_Tunnel ${Dpn_id_1} ${Dpn_id_2}
36 ${tunnel-2} Wait Until Keyword Succeeds 40 20 Get_Tunnel ${Dpn_id_2} ${Dpn_id_1}
37 ${tunnel-type}= Set Variable type: vxlan
38 Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_1}/
39 Wait Until Keyword Succeeds 40 5 Get Data From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${Dpn_id_2}/
40 Wait Until Keyword Succeeds 40 10 Ovs Verification For 2 Dpn ${conn_id_1} ${TOOLS_SYSTEM_IP} ${TOOLS_SYSTEM_2_IP}
41 ... ${tunnel-1} ${tunnel-type}
42 Wait Until Keyword Succeeds 40 10 Ovs Verification For 2 Dpn ${conn_id_2} ${TOOLS_SYSTEM_2_IP} ${TOOLS_SYSTEM_IP}
43 ... ${tunnel-2} ${tunnel-type}
44 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
45 ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True
46 Should Be Equal As Strings ${resp.status_code} 200
47 Should Contain ${resp.content} ${Dpn_id_1} ${tunnel-1}
48 Should Contain ${resp.content} ${Dpn_id_2} ${tunnel-2}
49 ${Port_num1} Get Port Number ${conn_id_1} ${Bridge-1} ${tunnel-1}
50 ${Port_num2} Get Port Number ${conn_id_2} ${Bridge-2} ${tunnel-2}
51 ${check-3} Wait Until Keyword Succeeds 40 10 Genius.Check Table0 Entry For 2 Dpn ${conn_id_1} ${Bridge-1}
53 ${check-4} Wait Until Keyword Succeeds 40 10 Genius.Check Table0 Entry For 2 Dpn ${conn_id_2} ${Bridge-2}
56 Verify Tunnels By Enabling BFD
57 [Documentation] This test case will check the tunnel exists by bringing up/down a switch and check tunnels exist by enabling BFD
58 ${result} Run Keyword And Return Status Verify Tunnel Monitoring is on
59 Run Keyword If '${result}' == 'False' Enable_Tunnel_monitoring
60 Verify Tunnel State ${TOOLS_SYSTEM_1_IP}
61 Verify Tunnel State ${TOOLS_SYSTEM_2_IP}
63 Delete and Verify VTEP
64 [Documentation] This Delete testcase , deletes the ITM tunnel created between 2 dpns.
65 ${Dpn_id_1} Genius.Get Dpn Ids ${conn_id_1}
66 ${Dpn_id_2} Genius.Get Dpn Ids ${conn_id_2}
67 ${tunnel-1} Get_Tunnel ${Dpn_id_1} ${Dpn_id_2}
68 ${tunnel-2} Get_Tunnel ${Dpn_id_2} ${Dpn_id_1}
69 Remove All Elements At URI And Verify ${CONFIG_API}/itm:transport-zones/transport-zone/${itm_created[0]}/
70 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_API}/itm-state:tunnels_state/
71 Should Not Contain ${resp} ${tunnel-1} ${tunnel-2}
72 ${Ovs-del-1} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_1} ${tunnel-1}
73 ${Ovs-del-2} Wait Until Keyword Succeeds 40 10 Genius.Check Tunnel Delete On OVS ${conn_id_2} ${tunnel-2}
77 [Arguments] ${src} ${dst}
78 [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.
79 ${resp} RequestsLibrary.Get Request session ${CONFIG_API}/itm-state:dpn-teps-state/dpns-teps/${src}/remote-dpns/${dst}/
81 ${respjson} RequestsLibrary.To Json ${resp.content} pretty_print=True
82 Should Be Equal As Strings ${resp.status_code} 200
83 Should Contain ${resp.content} ${dst}
84 ${json}= evaluate json.loads('''${resp.content}''') json
85 ${return} Run Keyword And Return Status Should contain ${resp.content} tunnel-name
87 ${ret} Run Keyword If '${return}'=='True' Check_Interface_Name ${json["remote-dpns"][0]} tunnel-name
91 [Arguments] ${json} ${expected_tunnel_interface_name}
92 [Documentation] This keyword Checks the Tunnel interface name is tunnel-interface-names in the output or not .
93 ${Tunnels} Collections.Get From Dictionary ${json} ${expected_tunnel_interface_name}
97 Enable_Tunnel_Monitoring
98 [Documentation] In this we will enable tunnel monitoring by tep:enable command running in karaf console
99 ${output} Issue_Command_On_Karaf_Console tep:enable-tunnel-monitor true
102 [Arguments] ${TOOLS_SYSTEM_IP}
103 [Documentation] In this we will Verify Tunnel State by Stopping/Starting Switch
104 OVSDB.Stop OVSDB ${TOOLS_SYSTEM_IP}
105 Wait Until Keyword Succeeds 2min 20 sec Verify Tunnel Down
106 OVSDB.Start OVSDB ${TOOLS_SYSTEM_IP}
107 Wait Until Keyword Succeeds 2min 20 sec Verify Tunnel Status as UP
110 [Documentation] In this we will check whether tunnel is in down or not
111 ${output}= Issue Command On Karaf Console ${TEP_SHOW_STATE}
112 Should Contain ${output} DOWN
115 [Arguments] ${connection_id} ${Bridgename} ${tunnel}
116 [Documentation] In this we get Port Number to check table0 entry for 2 Dpn
117 Switch Connection ${connection_id}
118 ${check-1} Execute Command sudo ovs-ofctl -O OpenFlow13 show ${Bridgename}
120 ${lines} Get Lines Containing String ${check-1} ${tunnel}
122 ${port} Get Regexp Matches ${lines} \\d+
123 ${port_num} Get From List ${port} 0
124 Should Contain ${check-1} ${port_num}