2 Documentation This library contains keywords related to the BGP functionality.
5 Resource ../variables/Variables.robot
6 Resource TemplatedRequests.robot
9 ${VAR_BASE_BGP} ${CURDIR}/../variables/bgpfunctional
10 ${BGP_BMP_DIR} ${CURDIR}/../variables/bgpfunctional/bmp_basic/filled_structure
11 ${BGP_BMP_FEAT_DIR} ${CURDIR}/../variables/bgpfunctional/bmp_basic/empty_structure
14 Start Quagga Processes On ODL
16 [Documentation] To start the zrpcd processes on ODL VM
17 ${conn_id}= Open_Connection_To_ODL_System ip_address=${odl_ip}
18 Switch Connection ${conn_id}
19 Write Commands Until Expected Prompt cd /opt/quagga/etc/ ${DEFAULT_LINUX_PROMPT_STRICT}
20 Write Commands Until Expected Prompt sudo cp zebra.conf.sample zebra.conf ${DEFAULT_LINUX_PROMPT_STRICT}
21 Write Commands Until Expected Prompt sudo /opt/quagga/etc/init.d/zrpcd start ${DEFAULT_LINUX_PROMPT_STRICT}
22 Write Commands Until Expected Prompt ps -ef | grep zrpcd ${DEFAULT_LINUX_PROMPT_STRICT}
23 Write Commands Until Expected Prompt netstat -nap | grep 7644 ${DEFAULT_LINUX_PROMPT_STRICT}
26 Start Quagga Processes On DCGW
27 [Arguments] ${dcgw_ip}
28 [Documentation] To start the zrpcd, bgpd,and zebra processes on DCGW
29 ${dcgw_conn_id} = Open_Connection_To_Tools_System ip_address=${dcgw_ip}
30 Switch Connection ${dcgw_conn_id}
31 Write Commands Until Expected Prompt cd /opt/quagga/etc/ ${DEFAULT_LINUX_PROMPT_STRICT}
32 Write Commands Until Expected Prompt sudo cp zebra.conf.sample zebra.conf ${DEFAULT_LINUX_PROMPT_STRICT}
33 Write Commands Until Expected Prompt sudo /opt/quagga/etc/init.d/zrpcd start ${DEFAULT_LINUX_PROMPT_STRICT}
34 Write Commands Until Expected Prompt ps -ef | grep zrpcd ${DEFAULT_LINUX_PROMPT_STRICT}
35 Write Commands Until Expected Prompt cd /opt/quagga/sbin/ ${DEFAULT_LINUX_PROMPT_STRICT}
36 ${output} = Write sudo ./bgpd &
37 ${output} = Read Until pid
39 ${output} = Write sudo ./zebra &
42 Write Commands Until Expected Prompt ps -ef | grep bgpd ${DEFAULT_LINUX_PROMPT_STRICT}
43 Write Commands Until Expected Prompt ps -ef | grep zebra ${DEFAULT_LINUX_PROMPT_STRICT}
44 Write Commands Until Expected Prompt netstat -nap | grep 7644 ${DEFAULT_LINUX_PROMPT_STRICT}
46 Show Quagga Configuration On ODL
47 [Arguments] ${odl_ip} ${rd}
48 [Documentation] Show quagga config from ODL
49 Create Quagga Telnet Session ${odl_ip} bgpd sdncbgpc
50 Execute Command On Quagga Telnet Session show running-config
51 Execute Command On Quagga Telnet Session show bgp neighbors
52 Execute Command On Quagga Telnet Session show ip bgp vrf ${rd}
53 Execute Command On Quagga Telnet Session exit
56 Create Quagga Telnet Session
57 [Arguments] ${ip} ${user} ${password}
58 [Documentation] Create telnet session for Quagga
59 ${conn_id}= Open_Connection_To_Tools_System ip_address=${ip}
60 Switch Connection ${conn_id}
61 ${output} = Write telnet localhost ${user}
62 ${output} = Read Until Password:
63 ${output} = Write ${password}
65 ${output} = Write terminal length 512
68 Execute Command On Quagga Telnet Session
69 [Arguments] ${command}
70 [Documentation] Execute command on Quagga telnet session(session should exist) and returns the output.
71 SSHLibrary.Write ${command}
72 ${output} = SSHLibrary.Read
76 Configure BGP And Add Neighbor On DCGW
77 [Arguments] ${dcgw_ip} ${as_id} ${router_id} ${neighbor_ip} ${vrf_name} ${rd}
79 [Documentation] Configure BGP and add neighbor on the dcgw
80 Create Quagga Telnet Session ${dcgw_ip} bgpd sdncbgpc
81 Execute Command On Quagga Telnet Session configure terminal
82 Execute Command On Quagga Telnet Session router bgp ${as_id}
83 Execute Command On Quagga Telnet Session bgp router-id ${router_id}
84 Execute Command On Quagga Telnet Session redistribute static
85 Execute Command On Quagga Telnet Session redistribute connected
86 Execute Command On Quagga Telnet Session neighbor ${neighbor_ip} send-remote-as ${as_id}
87 Execute Command On Quagga Telnet Session vrf ${vrf_name}
88 Execute Command On Quagga Telnet Session rd ${rd}
89 Execute Command On Quagga Telnet Session rt import ${rd}
90 Execute Command On Quagga Telnet Session rt export ${rd}
91 Execute Command On Quagga Telnet Session exit
92 Execute Command On Quagga Telnet Session address-family vpnv4 unicast
93 Execute Command On Quagga Telnet Session network ${loopback_ip}/32 rd ${rd} tag ${as_id}
94 Execute Command On Quagga Telnet Session neighbor ${neighbor_ip} activate
95 Execute Command On Quagga Telnet Session end
96 Execute Command On Quagga Telnet Session show running-config
97 Execute Command On Quagga Telnet Session exit
99 Add Loopback Interface On DCGW
100 [Arguments] ${dcgw_ip} ${loopback_name} ${loopback_ip} ${user}=zebra ${password}=zebra
101 [Documentation] Add loopback interface on DCGW
102 Create Quagga Telnet Session ${dcgw_ip} ${user} ${password}
103 Execute Command On Quagga Telnet Session enable
104 Execute Command On Quagga Telnet Session ${password}
105 Execute Command On Quagga Telnet Session configure terminal
106 Execute Command On Quagga Telnet Session interface ${loopback_name}
107 Execute Command On Quagga Telnet Session ip address ${loopback_ip}/32
108 Execute Command On Quagga Telnet Session exit
109 Execute Command On Quagga Telnet Session end
110 Execute Command On Quagga Telnet Session show running-config
111 Execute Command On Quagga Telnet Session exit
113 Execute Show Command On Quagga
114 [Arguments] ${dcgw_ip} ${cmd} ${user}=bgpd ${password}=sdncbgpc
115 [Documentation] Execute command on quagga and returns the ouput.
116 Create Quagga Telnet Session ${dcgw_ip} ${user} ${password}
117 ${output} = Execute Command On Quagga Telnet Session ${cmd}
119 Execute Command On quagga Telnet Session exit
122 Verify BGP Neighbor Status On Quagga
123 [Arguments] ${dcgw_ip} ${neighbor_ip}
124 [Documentation] Verify bgp neighbor status on quagga
125 ${output} = Execute Show Command On quagga ${dcgw_ip} show bgp neighbors ${neighbor_ip}
127 Should Contain ${output} BGP state = Established
129 Verify Routes On Quagga
130 [Arguments] ${dcgw_ip} ${rd} ${ip_list}
131 [Documentation] Verify routes on quagga
132 ${output} = Execute Show Command On quagga ${dcgw_ip} show ip bgp vrf ${rd}
134 : FOR ${ip} IN @{ip_list}
135 \ Should Contain ${output} ${ip}
137 Delete BGP Config On Quagga
138 [Arguments] ${dcgw_ip} ${bgp_id} ${user}=bgpd ${password}=sdncbgpc
139 [Documentation] Delete BGP Config on Quagga
140 Create Quagga Telnet Session ${dcgw_ip} ${user} ${password}
141 Execute Command On Quagga Telnet Session configure terminal
142 Execute Command On Quagga Telnet Session no router bgp ${bgp_id}
143 Execute Command On Quagga Telnet Session end
144 ${output} = Execute Command On Quagga Telnet Session show running-config
145 Execute Command On Quagga Telnet Session exit
148 Create BGP Configuration On ODL
149 [Arguments] &{Kwargs}
150 [Documentation] Associate the created L3VPN to a network-id received as dictionary argument
151 TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/create_bgp mapping=${Kwargs} session=session
153 AddNeighbor To BGP Configuration On ODL
154 [Arguments] &{Kwargs}
155 [Documentation] Associate the created L3VPN to a network-id received as dictionary argument
156 TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/addNeighbor_bgp mapping=${Kwargs} session=session
158 Get BGP Configuration On ODL
159 [Arguments] ${odl_session}
160 [Documentation] Get bgp configuration
161 ${resp} = RequestsLibrary.Get Request ${odl_session} ${CONFIG_API}/ebgp:bgp/
163 [Return] ${resp.content}
165 Delete BGP Configuration On ODL
166 [Arguments] ${odl_session}
167 [Documentation] Delete BGP
168 ${resp} = RequestsLibrary.Delete Request ${odl_session} ${CONFIG_API}/ebgp:bgp/
170 Should Be Equal As Strings ${resp.status_code} 200
171 [Return] ${resp.content}
173 Create External Tunnel Endpoint Configuration
174 [Arguments] &{Kwargs}
175 [Documentation] Create Tunnel End point
176 TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/create_etep mapping=${Kwargs} session=session
178 Delete External Tunnel Endpoint Configuration
179 [Arguments] &{Kwargs}
180 [Documentation] Delete Tunnel End point
181 TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/delete_etep mapping=${Kwargs} session=session
183 Get External Tunnel Endpoint Configuration
185 [Documentation] Get bgp configuration
186 ${resp} = RequestsLibrary.Get Request session ${CONFIG_API}/itm:dc-gateway-ip-list/dc-gateway-ip/${ip}/
188 [Return] ${resp.content}
191 [Documentation] Create and Log the diff between expected and actual responses, make sure Python tool was killed.
192 ... Tear down imported Resources.
193 KillPythonTool.Search_And_Kill_Remote_Python 'play\.py'
194 RequestsLibrary.Delete_All_Sessions
195 SSHLibrary.Close_All_Connections
197 Check_Example_Bgp_Rib_Content
198 [Arguments] ${substr} ${error_message}=${JSONKEYSTR} not found, but expected.
199 [Documentation] Check the example-bgp-rib content for string
200 ${response}= RequestsLibrary.Get Request operational bgp-rib:bgp-rib/rib/example-bgp-rib
201 BuiltIn.Log ${response.status_code}
202 BuiltIn.Log ${response.text}
203 BuiltIn.Should_Contain ${response.text} ${substr} ${error_message} values=False
205 Check_Example_Bgp_Rib_Does_Not_Contain
206 [Arguments] ${substr} ${error_message}=${JSONKEYSTR} found, but not expected.
207 [Documentation] Check the example-bgp-rib does not contain the string
208 ${response}= RequestsLibrary.Get Request operational bgp-rib:bgp-rib/rib/example-bgp-rib
209 BuiltIn.Log ${response.status_code}
210 BuiltIn.Log ${response.text}
211 BuiltIn.Should_Not_Contain ${response.text} ${substr} ${error_message} values=False
213 Check_Example_IPv4_Topology_Content
214 [Arguments] ${string_to_check}=${EMPTY}
215 [Documentation] Check the example-ipv4-topology content for string
216 ${response}= RequestsLibrary.Get Request operational topology/example-ipv4-topology
217 BuiltIn.Log ${response.status_code}
218 BuiltIn.Log ${response.text}
219 BuiltIn.Should_Contain ${response.text} ${string_to_check}
221 Check_Example_IPv4_Topology_Does_Not_Contain
222 [Arguments] ${string_to_check}
223 [Documentation] Check the example-ipv4-topology does not contain the string
224 ${response}= RequestsLibrary.Get Request operational topology/example-ipv4-topology
225 BuiltIn.Log ${response.status_code}
226 BuiltIn.Log ${response.text}
227 BuiltIn.Should_Not_Contain ${response.text} ${string_to_check}
229 Bmp_Monitor_Precondition
230 [Arguments] ${session}
231 [Documentation] Verify example-bmp-monitor presence in bmp-monitors
232 &{mapping} BuiltIn.Create_Dictionary TOOL_IP=${TOOLS_SYSTEM_IP}
233 BuiltIn.Wait_Until_Keyword_Succeeds 6x 10s TemplatedRequests.Get_As_Json_Templated folder=${BGP_BMP_FEAT_DIR} mapping=${mapping} verify=True
234 ... session=${session}
236 Bmp_Monitor_Postcondition
237 [Arguments] ${session}
238 [Documentation] Verifies if example-bmp-monitor data contains one peer.
239 &{mapping} BuiltIn.Create_Dictionary TOOL_IP=${TOOLS_SYSTEM_IP}
240 ${output} BuiltIn.Wait_Until_Keyword_Succeeds 10x 5s TemplatedRequests.Get_As_Json_Templated folder=${BGP_BMP_DIR} mapping=${mapping}
241 ... session=${session} verify=True
242 BuiltIn.Log ${output}