Additional Tests related to the address families
[integration/test.git] / csit / suites / bgpcep / bgpfunct / bgp_ipv6_basic.robot
1 *** Settings ***
2 Documentation     Functional test for ipv6 connection with bgp.
3 ...           
4 ...               Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
5 ...           
6 ...               This program and the accompanying materials are made available under the
7 ...               terms of the Eclipse Public License v1.0 which accompanies this distribution,
8 ...               and is available at http://www.eclipse.org/legal/epl-v10.html
9 ...           
10 ...               This suite tests simple connection between one ibgp peer (exabgp) and Odl.
11 ...               Peer is configured with ipv6, and exabgp connectes to odl via ipv6.
12 ...               Exabgp sends one ipv6 unicast route, which presence is verified in
13 ...               example-ipv6-topology. Tests this connection multiple times, with
14 ...               different ipv6 accepted formats, e.g. (::1, 0:0:0:0:0:0:0:1, full text)
15 ...               This suite also tests a combination of afi-safis on odl and exabgp.
16 ...               ipv6 route injection is carried out from odl to the ibgp peer without
17 ...               ipv6 family enabled on the peer device and checked for exceptions
18 Suite Setup       Start_Suite
19 Suite Teardown    Stop_Suite
20 Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
21 Library           RequestsLibrary
22 Library           SSHLibrary
23 Resource          ../../../libraries/BGPcliKeywords.robot
24 Resource          ../../../libraries/ExaBgpLib.robot
25 Resource          ../../../libraries/Genius.robot
26 Resource          ../../../libraries/SetupUtils.robot
27 Resource          ../../../libraries/SSHKeywords.robot
28 Resource          ../../../libraries/TemplatedRequests.robot
29 Resource          ../../../libraries/Utils.robot
30 Resource          ../../../variables/Variables.robot
31 Resource          ../../../libraries/KarafKeywords.robot
32
33 *** Variables ***
34 ${BGP_VAR_FOLDER}    ${CURDIR}/../../../variables/bgpfunctional/ipv6
35 ${CONFIG_SESSION}    config-session
36 ${CONTROLLER_IPV6}    ::1
37 ${EXABGP_ID}      1.2.3.4
38 ${EXABGP_ID_2}    127.0.0.1
39 ${EXABGP_CFG}     exaipv6.cfg
40 ${EXABGP_LOG}     exaipv6.log
41 ${EXABGP2_CFG}    exaipv4.cfg
42 ${EXABGP2_LOG}    exaipv4.log
43 ${EXABGP3_CFG}    exabgp_graceful_restart.cfg
44 ${EXABGP3_LOG}    exabgp_graceful_restart.log
45 ${IPV4_IP}        127.0.0.1
46 ${CONTROLLER_IPV4}    ${ODL_SYSTEM_IP}
47 ${IPV6_IP}        2607:f0d0:1002:0011:0000:0000:0000:0002
48 ${IPV6_IP_2}      2607:f0d0:1002:11:0:0:0:2
49 ${IPV6_IP_3}      2607:f0d0:1002:11::2
50 ${IPV6_IP_GW}     2607:f0d0:1002:0011:0000:0000:0000:0001
51 ${HOLDTIME}       180
52 ${RIB_INSTANCE}    example-bgp-rib
53
54 *** Test Cases ***
55 Reconfigure_ODL_To_Accept_Connections
56     [Documentation]    Configure BGP peer modules with initiate-connection set to false with short ipv6 address.
57     &{mapping}    Create Dictionary    IP=${IPV6_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
58     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
59     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VAR_FOLDER}/bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
60
61 Start_Exabgp
62     [Documentation]    Start exabgp with
63     [Tags]    critical
64     ${cmd}    BuiltIn.Set_Variable    ${EXABGP_CFG} > ${EXABGP_LOG}
65     ExaBgpLib.Start_ExaBgp_And_Verify_Connected    ${cmd}    ${CONFIG_SESSION}    ${EXABGP_ID}
66
67 Verify_Ipv6_Topology_Filled
68     [Documentation]    Verifies that example-ipv6-topology is filled after starting exabgp.
69     [Tags]    critical
70     Verify_Rib_Status_Filled
71
72 Delete_Bgp_Peer_Configuration
73     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
74     &{mapping}    Create Dictionary    IP=${IPV6_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
75     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
76     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
77
78 Verify_Ipv6_Topology_Empty
79     [Documentation]    Verifies that example-ipv6-topology is empty after deconfiguring peer for the first time.
80     [Tags]    critical
81     Verify_Rib_Status_Empty
82
83 Reconfigure_ODL_To_Accept_Connections_2
84     [Documentation]    Configure BGP peer modules with initiate-connection set to false with ipv6 address without "::" shortened version.
85     &{mapping}    Create Dictionary    IP=${IPV6_IP_2}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
86     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
87     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VAR_FOLDER}/bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
88
89 Verify_Ipv6_Topology_Filled_2
90     [Documentation]    Verifies that example-ipv6-topology is filled after configuring the peer for the second time.
91     [Tags]    critical
92     Verify_Rib_Status_Filled
93
94 Delete_Bgp_Peer_Configuration_2
95     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
96     &{mapping}    Create Dictionary    IP=${IPV6_IP_2}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
97     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
98     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
99
100 Verify_Ipv6_Topology_Empty_2
101     [Documentation]    Verifies that example-ipv6-topology is empty after deconfiguring peer for the second time.
102     [Tags]    critical
103     Verify_Rib_Status_Empty
104
105 Reconfigure_ODL_To_Accept_Connections_3
106     [Documentation]    Configure BGP peer modules with initiate-connection set to false with full text ipv6 address.
107     &{mapping}    Create Dictionary    IP=${IPV6_IP_3}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
108     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
109     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VAR_FOLDER}/bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
110
111 Verify_Ipv6_Topology_Filled_3
112     [Documentation]    Verifies that example-ipv6-topology is filled after configuring the peer for the third time.
113     [Tags]    critical
114     Verify_Rib_Status_Filled
115
116 Delete_Bgp_Peer_Configuration_3
117     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
118     &{mapping}    Create Dictionary    IP=${IPV6_IP_3}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
119     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
120     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
121
122 Verify_Ipv6_Topology_Empty_3
123     [Documentation]    Verifies that example-ipv6-topology is empty after final deconfiguration.
124     [Tags]    critical
125     Verify_Rib_Status_Empty
126
127 Stop_All_Exabgps
128     [Documentation]    Save exabgp logs as exaipv6.log, and stop exabgp with ctrl-c bash signal
129     BGPcliKeywords.Store_File_To_Workspace    ${EXABGP_LOG}    ${EXABGP_LOG}
130     ExaBgpLib.Stop_ExaBgp
131
132 Configure_App_Peer
133     [Documentation]    Configures bgp application peer.
134     [Setup]    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
135     &{mapping}    Create Dictionary    IP=127.0.0.12    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
136     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
137     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VAR_FOLDER}/application_peer    mapping=${mapping}    session=${CONFIG_SESSION}
138
139 Reconfigure_ODL_To_Accept_Connections_4
140     [Documentation]    Configure BGP peer modules with initiate-connection set to false with short ipv6 address.
141     &{mapping}    Create Dictionary    IP=${IPV4_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
142     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
143     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VAR_FOLDER}/bgp_neighbor_rib    mapping=${mapping}    session=${CONFIG_SESSION}
144     RequestsLibrary.Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}    timeout=5
145
146 Start_Exabgp_2
147     [Documentation]    Start exabgp and Verify BGP connection
148     [Tags]    critical
149     ${cmd}    BuiltIn.Set_Variable    ${EXABGP2_CFG} > ${EXABGP2_LOG}
150     ExaBgpLib.Start_ExaBgp_And_Verify_Connected    ${cmd}    ${CONFIG_SESSION}    127.0.0.1
151
152 Inject_Ipv6_Route_1
153     [Documentation]    Inject the Ipv6 route from controller
154     &{mapping}    Create Dictionary    IP=127.0.0.12    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
155     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
156     TemplatedRequests.Post_As_Xml_Templated    ${BGP_VAR_FOLDER}/ipv6_route_injection    mapping=${mapping}    session=${CONFIG_SESSION}
157
158 Check_Ipv6_Prefix_In_Bgp_Rib_1
159     [Documentation]    Check for the presence of Ipv6 Prefix in the BGP RIB
160     &{mapping}    Create Dictionary    IP=${CONTROLLER_IPV4}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
161     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
162     BuiltIn.Wait_Until_Keyword_Succeeds    5x    2s    TemplatedRequests.Get_As_Json_Templated    ${BGP_VAR_FOLDER}/bgp_rib    session=${CONFIG_SESSION}    mapping=${mapping}
163
164 Delete_Injected_Ipv6_Routes_1
165     [Documentation]    Delete the injected IPV6 routes
166     &{mapping}    Create Dictionary    IP=127.0.0.12    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
167     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
168     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/ipv6_route_injection    mapping=${mapping}    session=${CONFIG_SESSION}
169     KarafKeywords.Fail If Exceptions Found During Test    ${SUITE_NAME}.${TEST_NAME}    fail=${True}
170
171 Delete_Bgp_Peer_Configuration_4
172     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
173     &{mapping}    Create Dictionary    IP=${IPV4_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
174     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
175     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/bgp_neighbor_rib    mapping=${mapping}    session=${CONFIG_SESSION}
176
177 Verify_Ipv6_Topology_Empty_4
178     [Documentation]    Verifies that example-ipv6-topology is empty after deconfiguring peer for the first time.
179     [Tags]    critical
180     Verify_Rib_Status_Empty
181
182 Reconfigure_ODL_To_Accept_Connections_5
183     [Documentation]    Configure BGP peer modules with initiate-connection set to false with short ipv6 address.
184     &{mapping}    Create Dictionary    IP=${IPV4_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
185     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
186     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VAR_FOLDER}/bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
187
188 Inject_Ipv6_Route_2
189     [Documentation]    Inject the Ipv6 route from controller
190     &{mapping}    Create Dictionary    IP=127.0.0.12    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
191     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
192     TemplatedRequests.Post_As_Xml_Templated    ${BGP_VAR_FOLDER}/ipv6_route_injection    mapping=${mapping}    session=${CONFIG_SESSION}
193
194 Check_Ipv6_Prefix_In_Bgp_Rib_2
195     [Documentation]    Check for the presence of Ipv6 Prefix in the BGP RIB
196     &{mapping}    Create Dictionary    IP=${CONTROLLER_IPV4}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
197     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
198     BuiltIn.Wait_Until_Keyword_Succeeds    5x    2s    TemplatedRequests.Get_As_Json_Templated    ${BGP_VAR_FOLDER}/bgp_rib    session=${CONFIG_SESSION}    mapping=${mapping}
199
200 Delete_Injected_Ipv6_Routes_2
201     [Documentation]    Delete the injected IPV6 routes
202     &{mapping}    Create Dictionary    IP=127.0.0.12    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
203     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
204     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/ipv6_route_injection    mapping=${mapping}    session=${CONFIG_SESSION}
205     KarafKeywords.Fail If Exceptions Found During Test    ${SUITE_NAME}.${TEST_NAME}    fail=${True}
206
207 Delete_App_Peer
208     [Documentation]    Deletes bgp application peer.
209     [Setup]    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
210     &{mapping}    Create Dictionary    IP=127.0.0.12    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
211     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
212     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/application_peer    mapping=${mapping}    session=${CONFIG_SESSION}
213
214 Delete_Bgp_Peer_Configuration_5
215     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
216     &{mapping}    Create Dictionary    IP=${IPV4_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
217     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
218     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
219
220 Verify_Ipv6_Topology_Empty_5
221     [Documentation]    Verifies that example-ipv6-topology is empty after deconfiguring peer for the first time.
222     [Tags]    critical
223     Verify_Rib_Status_Empty
224
225 Stop_All_Exabgps_2
226     [Documentation]    Save exabgp logs as exaipv6.log, and stop exabgp with ctrl-c bash signal
227     BGPcliKeywords.Store_File_To_Workspace    ${EXABGP2_LOG}    ${EXABGP2_LOG}
228     ExaBgpLib.Stop_ExaBgp
229     ${Log_Content}    OperatingSystem.Get File    ${EXABGP2_LOG}
230     Log    ${Log_Content}
231
232 Reconfigure_ODL_To_Accept_Connections_6
233     [Documentation]    Configure BGP peer modules with initiate-connection set to false with short ipv6 address.
234     &{mapping}    Create Dictionary    IP=${IPV6_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
235     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
236     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VAR_FOLDER}/graceful_restart    mapping=${mapping}    session=${CONFIG_SESSION}
237
238 Start_Exabgp_3
239     [Documentation]    Start exabgp with
240     [Tags]    critical
241     ${cmd}    BuiltIn.Set_Variable    ${EXABGP3_CFG} > ${EXABGP3_LOG}
242     ExaBgpLib.Start_ExaBgp_And_Verify_Connected    ${cmd}    ${CONFIG_SESSION}    ${EXABGP_ID}
243
244 Stop_All_Exabgps_3
245     [Documentation]    Save exabgp logs as exabgp_graceful_restart.log, and stop exabgp with ctrl-c bash signal
246     BGPcliKeywords.Store_File_To_Workspace    ${EXABGP3_LOG}    ${EXABGP3_LOG}
247     ExaBgpLib.Stop_ExaBgp
248     Sleep    40s
249     KarafKeywords.Fail If Exceptions Found During Test    ${SUITE_NAME}.${TEST_NAME}    fail=${True}
250
251 Start_Exabgp_4
252     [Documentation]    Start exabgp with
253     [Tags]    critical
254     ${cmd}    BuiltIn.Set_Variable    ${EXABGP3_CFG} > ${EXABGP3_LOG}
255     ExaBgpLib.Start_ExaBgp_And_Verify_Connected    ${cmd}    ${CONFIG_SESSION}    ${EXABGP_ID}
256
257 Delete_Bgp_Peer_Configuration_5
258     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
259     &{mapping}    Create Dictionary    IP=${IPV6_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_INSTANCE}
260     ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_INSTANCE}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
261     TemplatedRequests.Delete_Templated    ${BGP_VAR_FOLDER}/graceful_restart    mapping=${mapping}    session=${CONFIG_SESSION}
262
263 Stop_All_Exabgps_4
264     [Documentation]    Save exabgp logs as exabgp_graceful_restart.log, and stop exabgp with ctrl-c bash signal
265     BGPcliKeywords.Store_File_To_Workspace    ${EXABGP3_LOG}    ${EXABGP3_LOG}
266     ExaBgpLib.Stop_ExaBgp
267
268 *** Keywords ***
269 Start_Suite
270     [Documentation]    Suite setup keyword.
271     SetupUtils.Setup_Utils_For_Setup_And_Teardown
272     ${conn_id}=    SSHLibrary.Open Connection    ${ODL_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=10s
273     Builtin.Set_Suite_Variable    ${conn_id}
274     SSHKeywords.Flexible_Controller_Login
275     Configure_Ipv6_Network
276     SSHKeywords.Virtual_Env_Create
277     SSHKeywords.Virtual_Env_Install_Package    setuptools==44.0.0
278     SSHKeywords.Virtual_Env_Install_Package    exabgp==4.2.4
279     RequestsLibrary.Create_Session    ${CONFIG_SESSION}    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}
280     Upload_Config_Files
281     Upload_Config_Files_exabgp_ipv4
282     Upload_Config_Files_exabgp_graceful_restart
283
284 Stop_Suite
285     [Documentation]    Suite teardown keyword
286     SSHKeywords.Virtual_Env_Delete
287     SSHLibrary.Close_All_Connections
288     RequestsLibrary.Delete_All_Sessions
289     BuiltIn.Run Keyword And Ignore Error    ExaBgpLib.Stop_ExaBgp
290
291 Configure_Ipv6_Network
292     [Documentation]    Reconfigures basic network settings on controller
293     SSHLibrary.Execute_Command    sudo sh -c 'echo "NETWORKING_IPV6=yes" >> /etc/sysconfig/network'
294     SSHLibrary.Execute_Command    sudo sh -c 'echo "IPV6INIT=yes" >> /etc/sysconfig/network-scripts/ifcfg-eth0'
295     SSHLibrary.Execute_Command    sudo sh -c 'echo "IPV6ADDR=${IPV6_IP}" >> /etc/sysconfig/network-scripts/ifcfg-eth0'
296     SSHLibrary.Execute_Command    sudo sh -c 'echo "IPV6_DEFAULTGW=${IPV6_IP_GW}" >> /etc/sysconfig/network-scripts/ifcfg-eth0'
297     SSHLibrary.Execute_Command    sudo /etc/init.d/network restart
298
299 Verify_Rib_Status_Empty
300     [Documentation]    Verifies that example-ipv6-topology is empty
301     BuiltIn.Wait_Until_Keyword_Succeeds    5x    2s    TemplatedRequests.Get_As_Json_Templated    ${BGP_VAR_FOLDER}/ipv6_topology_empty    session=${CONFIG_SESSION}    verify=True
302
303 Verify_Rib_Status_Filled
304     [Documentation]    Verifies that example-ipv6-topology is filled with ipv6 route
305     BuiltIn.Wait_Until_Keyword_Succeeds    5x    2s    TemplatedRequests.Get_As_Json_Templated    ${BGP_VAR_FOLDER}/ipv6_topology_filled    session=${CONFIG_SESSION}    verify=True
306
307 Upload_Config_Files
308     [Documentation]    Uploads exabgp config files
309     SSHLibrary.Put_File    ${BGP_VAR_FOLDER}/${EXABGP_CFG}    .
310     @{cfgfiles}=    SSHLibrary.List_Files_In_Directory    .    *.cfg
311     FOR    ${cfgfile}    IN    @{cfgfiles}
312         SSHLibrary.Execute_Command    sed -i -e 's/EXABGPIP/${IPV6_IP}/g' ${cfgfile}
313         SSHLibrary.Execute_Command    sed -i -e 's/ODLIP/${CONTROLLER_IPV6}/g' ${cfgfile}
314         SSHLibrary.Execute_Command    sed -i -e 's/ROUTERID/${EXABGP_ID}/g' ${cfgfile}
315         SSHLibrary.Execute_Command    sed -i -e 's/ROUTEREFRESH/disable/g' ${cfgfile}
316         SSHLibrary.Execute_Command    sed -i -e 's/ADDPATH/disable/g' ${cfgfile}
317         ${stdout}=    SSHLibrary.Execute_Command    cat ${cfgfile}
318         Log    ${stdout}
319     END
320
321 Upload_Config_Files_exabgp_ipv4
322     [Documentation]    Uploads exabgp config files
323     SSHLibrary.Put_File    ${BGP_VAR_FOLDER}/${EXABGP2_CFG}    .
324     @{cfgfiles}=    SSHLibrary.List_Files_In_Directory    .    *ipv4.cfg
325     FOR    ${cfgfile}    IN    @{cfgfiles}
326         SSHLibrary.Execute_Command    sed -i -e 's/EXABGPIP/127.0.0.1/g' ${cfgfile}
327         SSHLibrary.Execute_Command    sed -i -e 's/ODLIP/${ODL_SYSTEM_IP}/g' ${cfgfile}
328         SSHLibrary.Execute_Command    sed -i -e 's/ROUTERID/127.0.0.1/g' ${cfgfile}
329         SSHLibrary.Execute_Command    sed -i -e 's/ROUTEREFRESH/disable/g' ${cfgfile}
330         SSHLibrary.Execute_Command    sed -i -e 's/ADDPATH/disable/g' ${cfgfile}
331         ${stdout}=    SSHLibrary.Execute_Command    cat ${cfgfile}
332         Log    ${stdout}
333     END
334
335 Upload_Config_Files_exabgp_graceful_restart
336     [Documentation]    Uploads exabgp config files
337     SSHLibrary.Put_File    ${BGP_VAR_FOLDER}/${EXABGP3_CFG}    .
338     @{cfgfiles}=    SSHLibrary.List_Files_In_Directory    .    *restart.cfg
339     FOR    ${cfgfile}    IN    @{cfgfiles}
340         SSHLibrary.Execute_Command    sed -i -e 's/EXABGPIP/${IPV6_IP}/g' ${cfgfile}
341         SSHLibrary.Execute_Command    sed -i -e 's/ODLIP/${CONTROLLER_IPV6}/g' ${cfgfile}
342         SSHLibrary.Execute_Command    sed -i -e 's/ROUTERID/${EXABGP_ID}/g' ${cfgfile}
343         SSHLibrary.Execute_Command    sed -i -e 's/ROUTEREFRESH/disable/g' ${cfgfile}
344         SSHLibrary.Execute_Command    sed -i -e 's/ADDPATH/disable/g' ${cfgfile}
345         ${stdout}=    SSHLibrary.Execute_Command    cat ${cfgfile}
346         Log    ${stdout}
347     END