blob: fc6e7677a94b36fa542665c4248ddb422ad12cdf [file] [log] [blame]
Joey Armstrong9fadcbe2024-01-17 19:00:37 -05001# Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors
bharat raj58488b32023-05-11 22:46:18 +05302#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14# vgc common functions
15
16*** Settings ***
17Documentation Library for various utilities
18Library SSHLibrary
19Library String
20Library DateTime
21Library Process
22Library Collections
23Library RequestsLibrary
24Library OperatingSystem
25
26*** Variables ***
27@{connection_list}
28${alias} VGC_SSH
29${ssh_read_timeout} 60s
30${ssh_prompt} karaf@root >
31${ssh_regexp_prompt} REGEXP:k.*a.*r.*a.*f.*@.*r.*o.*o.*t.* .*>.*
32${regexp_prompt} (?ms)(.*)k(.*)a(.*)r(.*)a(.*)f(.*)@(.*)r(.*)o(.*)o(.*)t(.*) (.*)>(.*)
33${ssh_width} 400
34${disable_highlighter} setopt disable-highlighter
35# ${keep_alive_interval} is set to 0s means sending the keepalive packet is disabled!
36${keep_alive_interval} 0s
37${INFRA_DT_NAMESPACE} infra
38
39
40*** Keywords ***
41Create VGC Session
42 [Documentation] Creates a VGC session
43 Create Session VGC http://${VGC_REST_IP}:${VGC_REST_PORT}/vgc/v1
44
45Validate OLT Device in VGC
46 # FIXME use volt-olts to check that the OLT is VGC
47 [Arguments] ${serial_number}
48 [Documentation] Checks if olt has been connected to VGC
49 Create VGC Session
50 ${resp}= Get Request VGC devices
51 Log ${resp}
52 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +020053 Should Not Be Empty ${jsondata['devices']} No devices data found in VGC
bharat raj58488b32023-05-11 22:46:18 +053054 ${length}= Get Length ${jsondata['devices']}
55 @{serial_numbers}= Create List
56 ${matched}= Set Variable False
57 FOR ${INDEX} IN RANGE 0 ${length}
58 ${value}= Get From List ${jsondata['devices']} ${INDEX}
59 ${of_id}= Get From Dictionary ${value} id
60 ${sn}= Get From Dictionary ${value} serial
61 ${matched}= Set Variable If '${sn}' == '${serial_number}' True False
62 Exit For Loop If ${matched}
63 END
64 Should Be True ${matched} No match for ${serial_number} found
Serkant Uluderya764ee552026-03-06 09:08:07 -080065 RETURN ${of_id}
bharat raj58488b32023-05-11 22:46:18 +053066
Abhay Kumar107b03b2026-01-30 07:20:08 +000067Verify meters response
68 [Arguments] ${meter_json_resp} ${us_cir} ${us_cbs}
69 ${meter_json_Length} Get Length ${meter_json_resp['bands']}
70 FOR ${I} IN RANGE 0 ${meter_json_Length}
71 ${burst_size}= Get From Dictionary ${meter_json_resp['bands'][${I}]} burstSize
72 ${rate}= Get From Dictionary ${meter_json_resp['bands'][${I}]} rate
73 Log ${rate}
74 Log ${burst_size}
75 ${matched}= Evaluate '${rate}' == '${us_cir}' and '${burst_size}' == '${us_cbs}'
76 Exit For Loop If ${matched}
77 END
78 [Return] ${matched}
bharat raj58488b32023-05-11 22:46:18 +053079
80
81Validate Deleted Device Cleanup In VGC
82 [Arguments] ${ip} ${port} ${olt_serial_number} ${olt_of_id} ${maclearning_enabled}=False
83 [Documentation] The keyword verifies that ports, flows, meters, subscribers, dhcp are all cleared in VGC
84 # Verify Ports are Removed
85 ${ports}= Get Request VGC devices/ports
86 ${port_json_resp}= To Json ${ports.content}
87 Should Not Contain ${port_json_resp} ${olt_of_id} Ports have not been removed from VGC after cleanup
88 # Verify Subscribers are Removed
89 ${sub}= Get Request VGC programmed-subscribers
90 ${sub_json_resp}= To Json ${sub.content}
91 Should Not Contain ${sub_json_resp} ${olt_of_id} Subscriber have not been removed from VGC after cleanup
92 # Verify Flows are Removed
93 ${flows}= Get Request VGC flows
94 ${flow_json_resp}= To Json ${flows.content}
95 Should Not Contain ${flow_json_resp} ${olt_of_id} Flows have not been removed from VGC after cleanup
96 # Verify Meters are Removed
97 ${meter}= Get Request VGC meters
98 ${meter_json_resp}= To Json ${meter.content}
99 Should Not Contain ${meter_json_resp} ${olt_of_id} Meter have not been removed from VGC after cleanup
100 # Verify AAA-Users are Removed
101 # ${aaa}= Execute ONOS CLI Command use single connection ${ip} ${port}
102 #... aaa-users ${olt_of_id}
103 # ${aaa_count}= Get Line Count ${aaa}
104 #Should Be Equal As Integers ${aaa_count} 0 AAA Users have not been removed from ONOS after cleanup
105 # Verify Dhcp-Allocations are Removed
106 ${dhcp}= Get Request VGC allocations/${olt_of_id}
107 ${dhcp_json_resp}= To Json ${dhcp.content}
108 ${dhcp_count} = Get Length ${dhcp_json_resp}
109 #Should Be Equal ${dhcp_json_resp} ${None} DHCP Allocations have not been removed from VGC after cleanup
110 Should Be Equal As Integers ${dhcp_count} 0 DHCP Allocations have not been removed from VGC after cleanup
111 # Verify MAC Learner Mappings are Removed
112 # ${mac}= Run Keyword If ${maclearning_enabled} Execute ONOS CLI Command use single connection ${ip} ${port}
113 # ... mac-learner-get-mapping | grep -v INFO
114 # ${mac_count}= Run Keyword If ${maclearning_enabled} Get Line Count ${mac}
115 # ... ELSE Set Variable 0
116 # Should Be Equal As Integers ${mac_count} 0 Client MAC Learner Mappings have not been removed from ONOS after cleanup
117
118
119Get NNI Port in VGC
120 [Arguments] ${olt_of_id}
121 [Documentation] Retrieves NNI port for the OLT in VGC
122 ${resp}= Get Request VGC devices/${olt_of_id}/ports
123 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200124 Should Not Be Empty ${jsondata['ports']} No ports data found for OLT ${olt_of_id} in VGC
bharat raj58488b32023-05-11 22:46:18 +0530125 ${length}= Get Length ${jsondata['ports']}
126 @{ports}= Create List
127 ${matched}= Set Variable False
128 FOR ${INDEX} IN RANGE 0 ${length}
129 ${value}= Get From List ${jsondata['ports']} ${INDEX}
130 ${annotations}= Get From Dictionary ${value} annotations
131 ${nni_port}= Get From Dictionary ${value} port
132 ${nniPortName}= Catenate SEPARATOR= nni- ${nni_port}
133 ${portName}= Get From Dictionary ${annotations} portName
134 ${matched}= Set Variable If '${portName}' == '${nniPortName}' True False
135 Exit For Loop If ${matched}
136 END
137 Should Be True ${matched} No match for NNI found for ${olt_of_id}
Serkant Uluderya764ee552026-03-06 09:08:07 -0800138 RETURN ${nni_port}
bharat raj58488b32023-05-11 22:46:18 +0530139
140
141
142Get ONU Port in VGC
143 [Arguments] ${onu_serial_number} ${olt_of_id} ${onu_uni_id}=1
144 [Documentation] Retrieves ONU port for the ONU in VGC
145 ${onu_serial_number}= Catenate SEPARATOR=- ${onu_serial_number} ${onu_uni_id}
146 ${resp}= Get Request VGC devices/${olt_of_id}/ports
147 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200148 Should Not Be Empty ${jsondata['ports']} No ports data found for OLT ${olt_of_id} in VGC
bharat raj58488b32023-05-11 22:46:18 +0530149 ${length}= Get Length ${jsondata['ports']}
150 @{ports}= Create List
151 ${matched}= Set Variable False
152 FOR ${INDEX} IN RANGE 0 ${length}
153 ${value}= Get From List ${jsondata['ports']} ${INDEX}
154 ${annotations}= Get From Dictionary ${value} annotations
155 ${onu_port}= Get From Dictionary ${value} port
156 ${portName}= Get From Dictionary ${annotations} portName
157 ${matched}= Set Variable If '${portName}' == '${onu_serial_number}' True False
158 Exit For Loop If ${matched}
159 END
160 Should Be True ${matched} No match for ${onu_serial_number} found
Serkant Uluderya764ee552026-03-06 09:08:07 -0800161 RETURN ${onu_port}
bharat raj58488b32023-05-11 22:46:18 +0530162
163
164
165Verify UNI Port Is Enabled
166 [Arguments] ${onu_name} ${onu_uni_id}=1
167 [Documentation] Verifies if the ONU's UNI port is enabled in VGC
168 ${onu_serial_number}= Catenate SEPARATOR=- ${onu_name} ${onu_uni_id}
169 ${resp}= Get Request VGC devices/ports
170 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200171 Should Not Be Empty ${jsondata['ports']} No devices ports data in VGC
bharat raj58488b32023-05-11 22:46:18 +0530172 ${length}= Get Length ${jsondata['ports']}
173 @{ports}= Create List
174 ${matched}= Set Variable False
175 FOR ${INDEX} IN RANGE 0 ${length}
176 ${value}= Get From List ${jsondata['ports']} ${INDEX}
177 ${annotations}= Get From Dictionary ${value} annotations
178 ${onu_port}= Get From Dictionary ${value} port
179 ${portName}= Get From Dictionary ${annotations} portName
180 ${portstatus}= Get From Dictionary ${value} isEnabled
181 ${matched}= Set Variable If '${portName}' == '${onu_serial_number}' True False
182 Exit For Loop If ${matched}
183 END
184 Should Be True ${matched} No match for ${onu_serial_number} found
185 Should be Equal ${portstatus} ${True}
186
187
188Verify UNI Port Is Disabled
189 [Arguments] ${ip} ${port} ${onu_name} ${onu_uni_id}=1
190 [Documentation] Verifies if the ONU's UNI port is enabled in VGC
191 ${onu_serial_number}= Catenate SEPARATOR=- ${onu_name} ${onu_uni_id}
192 ${resp}= Get Request VGC devices/ports
193 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200194 Should Not Be Empty ${jsondata['ports']} No devices ports data in VGC
bharat raj58488b32023-05-11 22:46:18 +0530195 ${length}= Get Length ${jsondata['ports']}
196 @{ports}= Create List
197 ${matched}= Set Variable False
198 FOR ${INDEX} IN RANGE 0 ${length}
199 ${value}= Get From List ${jsondata['ports']} ${INDEX}
200 ${annotations}= Get From Dictionary ${value} annotations
201 ${onu_port}= Get From Dictionary ${value} port
202 ${portName}= Get From Dictionary ${annotations} portName
203 ${portstatus}= Get From Dictionary ${value} isEnabled
204 ${matched}= Set Variable If '${portName}' == '${onu_serial_number}' True False
205 Exit For Loop If ${matched}
206 END
207 Should Be True ${matched} No match for ${onu_serial_number} found
208 Should be Equal ${portstatus} ${False}
209
210Close All VGC SSH Connections
211 [Documentation] Close all VGC Connection and clear connection list.
212 SSHLibrary.Close All Connections
213 @{connection_list} Create List
214
215
216
217Verify Subscriber Access Flows Added For ONU DT in VGC
218 [Arguments] ${ip} ${port} ${olt_of_id} ${onu_port} ${nni_port} ${s_tag}
219 [Documentation] Verifies if the Subscriber Access Flows are added in VGC for the ONU
220 # Get all flows from VGC
221 ${resp}= Get Request VGC flows/${olt_of_id}
222 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200223 Should Not Be Empty ${jsondata['flows']} No flows data found for OLT ${olt_of_id} in VGC
bharat raj58488b32023-05-11 22:46:18 +0530224 # Verify upstream table=0 flow
225 ${length}= Get Length ${jsondata['flows']}
226 @{flows}= Create List
227 ${matched}= Set Variable False
228 FOR ${INDEX} IN RANGE 0 ${length}
229 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
230 ${tableid}= Get Table Id From Flow ${flow}
231 ${inport}= Get In Port From Flow ${flow}
232 ${vlanvid}= Get Vlan VId From Flow ${flow}
233 ${outport}= Get Out Port From Flow ${flow}
234 ${matched}= Set Variable If
235 ... '${tableid}' == '0' and '${inport}' == '${onu_port}' and '${vlanvid}' == '4096' and '${outport}' == '1'
236 ... True False
237 Exit For Loop If ${matched}
238 END
239 Should Be True ${matched} No match for upstream table 0 flow found
240 # Verify upstream table=1 flow
241 ${matched1}= Set Variable False
242 FOR ${INDEX} IN RANGE 0 ${length}
243 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
244 ${inport}= Get In Port From Flow ${flow}
245 ${vlanvid}= Get Vlan VId From Flow ${flow}
246 ${outport}= Get Out Port From Flow ${flow}
247 ${subtype}= Get Subtype From Flow ${flow}
248 ${vlanid}= Get Vlan Id From Flow ${flow}
249 ${res1}= Evaluate '${inport}' == '${onu_port}'
250 ${res2}= Evaluate '${vlanvid}' == '4096' and '${outport}' == '${nni_port}'
251 ${res3}= Evaluate '${subtype}' == 'VLAN_PUSH' and '${vlanid}' == '${s_tag}'
252 ${matched1}= Set Variable If ${res1} and ${res2} and ${res3} True False
253 Exit For Loop If ${matched1}
254 END
255 Should Be True ${matched1} No match for upstream table 1 flow found
256 # Verify downstream table=0 flow
257 ${matched2}= Set Variable False
258 FOR ${INDEX} IN RANGE 0 ${length}
259 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
260 ${inport}= Get In Port From Flow ${flow}
261 ${vlanvid}= Get Vlan VId From Flow ${flow}
262 ${outport}= Get Out Port From Flow ${flow}
263 ${subtype}= Get Subtype From Flow ${flow}
264 ${res1}= Evaluate '${inport}' == '${nni_port}'
265 ${res2}= Evaluate '${vlanvid}' == '${s_tag}' and '${outport}' == '1'
266 ${res3}= Evaluate '${subtype}' == 'VLAN_POP'
267 ${matched2}= Set Variable If ${res1} and ${res2} and ${res3} True False
268 Exit For Loop If ${matched2}
269 END
270 Should Be True ${matched2} No match for downstream table 0 flow found
271 # Verify downstream table=1 flow
272 ${matched3}= Set Variable False
273 FOR ${INDEX} IN RANGE 0 ${length}
274 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
275 ${inport}= Get In Port From Flow ${flow}
276 ${vlanvid}= Get Vlan VId From Flow ${flow}
277 ${outport}= Get Out Port From Flow ${flow}
278 ${matched3}= Set Variable If
279 ... '${inport}' == '${nni_port}' and '${vlanvid}' == '4096' and '${outport}' == '${onu_port}'
280 ... True False
281 Exit For Loop If ${matched3}
282 END
283 Should Be True ${matched3} "No match for downstream table 1 flow found"
284
285Verify Subscriber Access Flows Added for DT FTTB
286 [Arguments] ${olt_of_id} ${onu_port} ${nni_port} ${s_tag} ${c_tag}
287 [Documentation] Verifies if the Subscriber Access Flows are added in ONOS for the ONU
288 # Get all flows from VGC
289 ${resp}= Get Request VGC flows/${olt_of_id}
290 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200291 Should Not Be Empty ${jsondata['flows']} No ports data found for OLT ${olt_of_id} in VGC
bharat raj58488b32023-05-11 22:46:18 +0530292 # Upstream
293 # ONU
294 ${length}= Get Length ${jsondata['flows']}
295 @{flows}= Create List
296 ${matched}= Set Variable False
297 FOR ${INDEX} IN RANGE 0 ${length}
298 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
299 ${tableid}= Get Table Id From Flow ${flow}
300 ${inport}= Get In Port From Flow ${flow}
301 ${vlanvid}= Get Vlan VId From Flow ${flow}
302 ${outport}= Get Out Port From Flow ${flow}
303 ${matched}= Set Variable If
304 ... '${inport}' == '${onu_port}' and '${vlanvid}' == '${c_tag}' and '${outport}' == '1'
305 ... True False
306 Exit For Loop If ${matched}
307 END
308 Should Be True ${matched} No match for upstream ONU flow found
309 # OLT
310 ${matched1}= Set Variable False
311 FOR ${INDEX} IN RANGE 0 ${length}
312 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
313 ${inport}= Get In Port From Flow ${flow}
314 ${vlanvid}= Get Vlan VId From Flow ${flow}
315 ${outport}= Get Out Port From Flow ${flow}
316 ${vlanid}= Get Vlan Id From Flow For Fttb ${flow}
317 ${res1}= Evaluate '${inport}' == '${onu_port}'
318 ${res2}= Evaluate '${vlanvid}' == '${c_tag}' and '${vlanid}' == '${s_tag}'
319 ${res3}= Evaluate '${outport}' == '${nni_port}'
320 ${matched1}= Set Variable If ${res1} and ${res2} and ${res3} True False
321 Exit For Loop If ${matched1}
322 END
323 Should Be True ${matched1} No match for upstream OLT found
324 # Downstream
325 # OLT
326 ${matched2}= Set Variable False
327 FOR ${INDEX} IN RANGE 0 ${length}
328 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
329 ${inport}= Get In Port From Flow ${flow}
330 ${vlanvid}= Get Vlan VId From Flow ${flow}
331 ${outport}= Get Out Port From Flow ${flow}
332 ${vlanid}= Get Vlan Id From Flow For Fttb ${flow}
333 ${res1}= Evaluate '${inport}' == '${nni_port}'
334 ${res2}= Evaluate '${vlanvid}' == '${s_tag}' and '${vlanid}' == '${c_tag}'
335 ${res3}= Evaluate '${outport}' == '1'
336 ${matched2}= Set Variable If ${res1} and ${res2} and ${res3} True False
337 Exit For Loop If ${matched2}
338 END
339 Should Be True ${matched2} No match for downstream OLT found
340 # ONU
341 ${matched3}= Set Variable False
342 FOR ${INDEX} IN RANGE 0 ${length}
343 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
344 ${inport}= Get In Port From Flow ${flow}
345 ${vlanvid}= Get Vlan VId From Flow ${flow}
346 ${tableid}= Get Table Id From Flow ${flow}
347 ${outport}= Get Out Port From Flow ${flow}
348 ${vlanid}= Get Vlan Id From Flow For Fttb ${flow}
349 ${res1}= Evaluate '${inport}' == '${nni_port}'
350 ${res2}= Evaluate '${vlanvid}' == '${c_tag}' and '${outport}' == '${onu_port}'
351 ${matched3}= Set Variable If ${res1} and ${res2} True False
352 Exit For Loop If ${matched3}
353 END
354 Should Be True ${matched3} No match for downstream ONU found
355
356Verify DPU MGMT Flows Added for DT FTTB
357 [Arguments] ${olt_of_id} ${onu_port} ${nni_port} ${s_tag} ${c_tag}
358 [Documentation] Verifies if the DPU MGMT Flows are added in VGC for the ONU
359 # Get all flows from VGC
360 ${resp}= Get Request VGC flows/${olt_of_id}
361 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200362 Should Not Be Empty ${jsondata['flows']} No ports data found for OLT ${olt_of_id} in VGC
bharat raj58488b32023-05-11 22:46:18 +0530363 # Upstream
364 # ONU
365 ${length}= Get Length ${jsondata['flows']}
366 @{flows}= Create List
367 ${matched}= Set Variable False
368 FOR ${INDEX} IN RANGE 0 ${length}
369 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
370 ${tableid}= Get Table Id From Flow ${flow}
371 ${inport}= Get In Port From Flow ${flow}
372 ${vlanvid}= Get Vlan VId From Flow ${flow}
373 ${vlanid}= Get Vlan Id From Flow For Fttb ${flow}
374 ${outport}= Get Out Port From Flow ${flow}
375 ${res1}= Evaluate '${inport}' == '${onu_port}'
376 ${res2}= Evaluate '${vlanvid}' == '${c_tag}' and '${vlanid}' == '${s_tag}'
377 ${res3}= Evaluate '${outport}' == '1'
378 ${matched}= Set Variable If ${res1} and ${res2} and ${res3} True False
379 Exit For Loop If ${matched}
380 END
381 Should Be True ${matched} No match for upstream ONU flow found
382 # OLT
383 ${matched1}= Set Variable False
384 FOR ${INDEX} IN RANGE 0 ${length}
385 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
386 ${inport}= Get In Port From Flow ${flow}
387 ${vlanvid}= Get Vlan VId From Flow ${flow}
388 ${outport}= Get Out Port From Flow ${flow}
389 ${vlanid}= Get Vlan Id From Flow For Fttb ${flow}
390 ${matched1}= Set Variable If
391 ... '${inport}' == '${onu_port}' and '${vlanvid}' == '${s_tag}' and '${outport}' == '${nni_port}'
392 ... True False
393 ${matched1}= Set Variable If ${res1} and ${res2} and ${res3} True False
394 Log To Console "bbb",'${inport}' == '${onu_port}' '${vlanvid}' == '${s_tag}' '${outport}' == '${nni_port}'
395 Exit For Loop If ${matched1}
396 END
397 Should Be True ${matched1} No match for upstream OLT found
398 # Downstream
399 # OLT
400 ${matched2}= Set Variable False
401 FOR ${INDEX} IN RANGE 0 ${length}
402 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
403 ${inport}= Get In Port From Flow ${flow}
404 ${vlanvid}= Get Vlan VId From Flow ${flow}
405 ${outport}= Get Out Port From Flow ${flow}
406 ${vlanid}= Get Vlan Id From Flow For Fttb ${flow}
407 ${matched3}= Set Variable If
408 ... '${inport}' == '${nni_port}' and '${vlanvid}' == '${s_tag}' and '${outport}' == '1'
409 ... True False
410 Exit For Loop If ${matched3}
411 END
412 Should Be True ${matched3} No match for downstream OLT found
413 # ONU
414 ${matched4}= Set Variable False
415 FOR ${INDEX} IN RANGE 0 ${length}
416 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
417 ${inport}= Get In Port From Flow ${flow}
418 ${vlanvid}= Get Vlan VId From Flow ${flow}
419 ${tableid}= Get Table Id From Flow ${flow}
420 ${outport}= Get Out Port From Flow ${flow}
421 ${vlanid}= Get Vlan Id From Flow For Fttb ${flow}
422 ${res1}= Evaluate '${inport}' == '${nni_port}'
423 ${res2}= Evaluate '${vlanvid}' == '${s_tag}' and '${vlanid}' == '${c_tag}'
424 ${res3}= Evaluate '${outport}' == '${onu_port}'
425 ${matched4}= Set Variable If ${res1} and ${res2} and ${res3} True False
426 Exit For Loop If ${matched4}
427 END
428 Should Be True ${matched4} No match for downstream ONU found
429
430Verify VGC Flows Added for DT FTTB
431 [Arguments] ${olt_of_id} ${onu_port} ${nni_port} ${service}
432 [Documentation] Verifies if the Flows are added in ONOS for the ONU
433 ${num_services}= Get Length ${service}
434 FOR ${I} IN RANGE 0 ${num_services}
435 ${service_name}= Set Variable ${service[${I}]['name']}
Guru Prasanna0ae8e692025-05-02 15:03:40 +0530436 ${dpustag}= Set Variable ${service[0]['s_tag']}
437 ${dpuctag}= Set Variable ${service[0]['c_tag']}
438 ${stag}= Set Variable ${service[1]['s_tag']}
439 ${ctag}= Set Variable ${service[1]['c_tag']}
rbodapatfe5bb152025-03-17 11:34:42 +0530440 Run Keyword If '${service_name}' == 'FTTB_SUBSCRIBER_TRAFFIC' Run Keywords
441 Verify Subscriber Access Flows Added for DT FTTB ${olt_of_id} ${onu_port} ${nni_port} ${stag} ${ctag}
Guru Prasanna0ae8e692025-05-02 15:03:40 +0530442 Verify DPU MGMT Flows Added for DT FTTB ${olt_of_id} ${onu_port} ${nni_port} ${dpustag} ${dpuctag}
bharat raj58488b32023-05-11 22:46:18 +0530443 END
444
bharat raj58488b32023-05-11 22:46:18 +0530445Add Subscriber Details
446 [Documentation] Adds a particular subscriber
447 [Arguments] ${of_id} ${onu_port}
448 ${resp}= Post Request VGC services/${of_id}/${onu_port}
449 Log ${resp}
450 Should Be Equal As Strings ${resp.status_code} 200
451
452Remove Subscriber Access
453 [Documentation] Removes a particular subscriber
454 [Arguments] ${of_id} ${onu_port}
455 ${resp}= Delete Request VGC services/${of_id}/${onu_port}
456 Log ${resp}
457 Should Be Equal As Strings ${resp.status_code} 200
458
459Send File To VGC
460 [Documentation] Send the content of the file to VGC to selected section of configuration
461 ... using Post Request
Abhay Kumar107b03b2026-01-30 07:20:08 +0000462 [Arguments] ${CONFIG_FILE} ${dest} #${section}=${EMPTY}
bharat raj58488b32023-05-11 22:46:18 +0530463 ${Headers}= Create Dictionary Content-Type application/json
464 ${File_Data}= OperatingSystem.Get File ${CONFIG_FILE}
465 Log ${Headers}
466 Log ${File_Data}
467 ${resp}= Post Request VGC
Abhay Kumar107b03b2026-01-30 07:20:08 +0000468 ... ${dest} headers=${Headers} data=${File_Data}
bharat raj58488b32023-05-11 22:46:18 +0530469 Should Be Equal As Strings ${resp.status_code} 200
470
471Verify No Pending Flows For ONU
472 [Arguments] ${ip} ${port} ${onu_port}
473 [Documentation] Verifies that there are no flows "PENDING" state for the ONU in VGC
474 ${resp}= Get Request VGC flows/pending
475 ${jsondata}= To Json ${resp.content}
476 ${length}= Get Length ${jsondata['flows']}
477 ${matched}= Set Variable False
478 FOR ${INDEX} IN RANGE 0 ${length}
479 ${flow}= Get From List ${jsondata['flows']} ${INDEX}
480 ${inport}= Get In Port From Flow ${flow}
481 ${matched}= Run Keyword If '${inport}' == '${onu_port}' Set Variable ${TRUE}
482 Exit For Loop If ${matched}
483 END
484 Should Be Equal ${matched} False No match for pending flow found
485
486Get Pending Flow Count
487 [Documentation] Get the count for flows "PENDING" state for the ONU in VGC
488 ${resp}= Get Request VGC flows/pending
489 ${jsondata}= To Json ${resp.content}
490 ${length}= Get Length ${jsondata['flows']}
Serkant Uluderya764ee552026-03-06 09:08:07 -0800491 RETURN ${length}
bharat raj58488b32023-05-11 22:46:18 +0530492
493Get In Port From Flow
494 [Documentation] Fetches the port Record for IN_PORT
495 [Arguments] ${flow}
496 ${selector}= Get From Dictionary ${flow} selector
497 ${len}= Get Length ${selector['criteria']}
498 ${matched}= Set Variable False
499 FOR ${INDEX} IN RANGE 0 ${len}
500 ${criteria}= Get From List ${selector['criteria']} ${INDEX}
501 ${type}= Get From Dictionary ${criteria} type
502 ${port}= Run Keyword If '${type}' == 'IN_PORT' Get From Dictionary ${criteria} port
503 ${matched}= Set Variable If '${type}' == 'IN_PORT' True False
504 Exit For Loop If ${matched}
505 END
Serkant Uluderya764ee552026-03-06 09:08:07 -0800506 RETURN ${port}
bharat raj58488b32023-05-11 22:46:18 +0530507
508
509
510Get Vlan VId From Flow
511 [Documentation] Fetches the vlan Id
512 [Arguments] ${flow}
513 ${selector}= Get From Dictionary ${flow} selector
514 ${len}= Get Length ${selector['criteria']}
515 ${matched}= Set Variable False
516 ${vlanid}= Set Variable
517 FOR ${INDEX} IN RANGE 0 ${len}
518 ${criteria}= Get From List ${selector['criteria']} ${INDEX}
519 ${type}= Get From Dictionary ${criteria} type
520 ${vlanid}= Run Keyword If '${type}' == 'VLAN_VID' Get From Dictionary ${criteria} vlanId
521 ${matched}= Set Variable If '${type}' == 'VLAN_VID' True False
522 Exit For Loop If ${matched}
523 END
Serkant Uluderya764ee552026-03-06 09:08:07 -0800524 RETURN ${vlanid}
bharat raj58488b32023-05-11 22:46:18 +0530525
526
527Get Out Port From Flow
528 [Documentation] Fetches the port for OUTPUT
529 [Arguments] ${flow}
530 ${treatment}= Get From Dictionary ${flow} treatment
531 ${len}= Get Length ${treatment['instructions']}
532 ${matched}= Set Variable False
533 FOR ${INDEX} IN RANGE 0 ${len}
534 ${instructions}= Get From List ${treatment['instructions']} ${INDEX}
535 ${type}= Get From Dictionary ${instructions} type
536 ${outport}= Run Keyword If '${type}' == 'OUTPUT' Get From Dictionary ${instructions} port
537 ${matched}= Set Variable If '${type}' == 'OUTPUT' True False
538 Exit For Loop If ${matched}
539 END
Serkant Uluderya764ee552026-03-06 09:08:07 -0800540 RETURN ${outport}
bharat raj58488b32023-05-11 22:46:18 +0530541
542
543Get Subtype From Flow
544 [Documentation] Fetches the L2MODIFICATION subtype
545 [Arguments] ${flow}
546 ${treatment}= Get From Dictionary ${flow} treatment
547 ${len}= Get Length ${treatment['instructions']}
548 ${matched}= Set Variable False
549 FOR ${INDEX} IN RANGE 0 ${len}
550 ${instructions}= Get From List ${treatment['instructions']} ${INDEX}
551 ${type}= Get From Dictionary ${instructions} type
552 ${subtype}= Run Keyword If '${type}' == 'L2MODIFICATION' Get From Dictionary ${instructions} subtype
553 ${matched}= Set Variable If '${type}' == 'L2MODIFICATION' True False
554 Exit For Loop If ${matched}
555 END
Serkant Uluderya764ee552026-03-06 09:08:07 -0800556 RETURN ${subtype}
bharat raj58488b32023-05-11 22:46:18 +0530557
558Get Vlan Id From Flow For Fttb
559 [Documentation] Fetch the VLAN id for L2MODIFICATION
560 [Arguments] ${flow}
561 ${treatment}= Get From Dictionary ${flow} treatment
562 ${len}= Get Length ${treatment['instructions']}
563 ${matched}= Set Variable False
564 FOR ${INDEX} IN RANGE 0 ${len}
565 ${instructions}= Get From List ${treatment['instructions']} ${INDEX}
566 ${type}= Get From Dictionary ${instructions} type
567 ${subtype}= Run Keyword If '${type}' == 'L2MODIFICATION' Get From Dictionary ${instructions} subtype
568 ${vlanId}= Run Keyword If '${type}' == 'L2MODIFICATION' and '${subtype}' == 'VLAN_SET'
569 ... Get From Dictionary ${instructions} vlanId
570 ${matched}= Set Variable If '${type}' == 'L2MODIFICATION' and '${subtype}' == 'VLAN_SET' True False
571 Exit For Loop If ${matched}
572 END
Serkant Uluderya764ee552026-03-06 09:08:07 -0800573 RETURN ${vlanId}
bharat raj58488b32023-05-11 22:46:18 +0530574
575Get Table Id From Flow
576 [Documentation] Fetch the TableId
577 [Arguments] ${flow}
578 ${tableid}= Get From Dictionary ${flow} tableId
Serkant Uluderya764ee552026-03-06 09:08:07 -0800579 RETURN ${tableid}
bharat raj58488b32023-05-11 22:46:18 +0530580
581Get Vlan Id From Flow
582 [Documentation] Fetch the VLAN id for L2MODIFICATION
583 [Arguments] ${flow}
584 ${treatment}= Get From Dictionary ${flow} treatment
585 ${len}= Get Length ${treatment['instructions']}
586 ${matched}= Set Variable False
587 FOR ${INDEX} IN RANGE 0 ${len}
588 ${instructions}= Get From List ${treatment['instructions']} ${INDEX}
589 ${type}= Get From Dictionary ${instructions} type
590 ${subtype}= Run Keyword If '${type}' == 'L2MODIFICATION' Get From Dictionary ${instructions} subtype
591 ${vlanId}= Run Keyword If '${type}' == 'L2MODIFICATION' and '${subtype}' == 'VLAN_ID'
592 ... Get From Dictionary ${instructions} vlanId
593 ${matched}= Set Variable If '${type}' == 'L2MODIFICATION' and '${subtype}' == 'VLAN_ID' True False
594 Exit For Loop If ${matched}
595 END
Serkant Uluderya764ee552026-03-06 09:08:07 -0800596 RETURN ${vlanId}
bharat raj58488b32023-05-11 22:46:18 +0530597
598Get Subscribers for a Particular Service
599 [Documentation] Filters the subscriber for a particular service
600 [Arguments] ${olt_of_id} ${subscriber_json} ${filter}
601 ${subscribers_info}= Get From Dictionary ${subscriber_json} subscribers
602 ${num_subscribers}= Get Length ${subscribers_info}
603 ${subscriber_list} Create List
604 Return From Keyword If '${filter}' == '${EMPTY}' ${subscribers_info}
605 FOR ${INDEX} IN RANGE 0 ${num_subscribers}
606 ${subscriber}= Get From List ${subscribers_info} ${INDEX}
607 ${res1}= Evaluate '${olt_of_id}' == '${subscriber["location"]}'
608 ${tag_subscriber_info}= Get From Dictionary ${subscriber} tagInfo
609 ${ServiceName}= Get From Dictionary ${tag_subscriber_info} serviceName
610 ${res2}= Evaluate '${filter}' == '${ServiceName}'
611 Run Keyword If ${res1} and ${res2}
612 ... Append To List ${subscriber_list} ${subscriber}
613 ${matched}= Set Variable If ${res1} and ${res2} True False
614 Exit For Loop If ${matched}
615 END
616 Should Be True ${matched} No matching subscriber for OLT
Serkant Uluderya764ee552026-03-06 09:08:07 -0800617 RETURN ${subscriber_list}
bharat raj58488b32023-05-11 22:46:18 +0530618
619Get Programmed Subscribers
620 [Arguments] ${olt_of_id} ${onu_port} ${filter}=${EMPTY}
621 [Documentation] Retrieves the subscriber details at a given location
622 ${programmed_sub}= Get Request VGC programmed-subscribers
623 ${programmed_sub_json_resp}= To Json ${programmed_sub.content}
624 ${filtered_subscriber_list}= Get Subscribers for a Particular Service ${olt_of_id} ${programmed_sub_json_resp}
625 ... ${filter}
Serkant Uluderya764ee552026-03-06 09:08:07 -0800626 RETURN ${filtered_subscriber_list}
bharat raj58488b32023-05-11 22:46:18 +0530627
628Verify Programmed Subscribers DT FTTB
629 [Arguments] ${olt_of_id} ${onu_port} ${service}
630 [Documentation] Verifies the subscriber is present at a given location
631 ${num_services}= Get Length ${service}
632 FOR ${I} IN RANGE 0 ${num_services}
633 ${service_name}= Set Variable ${service[${I}]['name']}
634 ${programmed_subscriber}= Get Programmed Subscribers ${olt_of_id} ${onu_port}
635 ... ${service_name}
636 Log ${programmed_subscriber}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200637 Should Not Be Empty ${programmed_subscriber} No programmed subscribers found for ${service_name}
bharat raj58488b32023-05-11 22:46:18 +0530638 END
639
640Verify Meters in VGC Ietf
641 [Arguments] ${ip} ${port} ${olt_of_id} ${onu_port} ${filter}=${EMPTY}
642 [Documentation] Verifies the meters with BW Ietf format (currently, DT workflow uses this format)
643 ${programmed_sub_json_resp}= Get Programmed Subscribers ${olt_of_id} ${onu_port}
644 ... ${filter}
645 Log ${programmed_sub_json_resp}
646 ${us_bw_profile} ${ds_bw_profile} Get Upstream and Downstream Bandwidth Profile Name
647 ... ${programmed_sub_json_resp}
648 # Get upstream bandwidth profile details
649 ${us_cir} ${us_cbs} ${us_pir} ${us_pbs} ${us_gir} Get Bandwidth Profile Details Ietf Rest
650 ... ${us_bw_profile}
651 # Verify meter for upstream bandwidth profile
652 ${meter}= Get Request VGC meters
653 ${meter_json_resp}= To Json ${meter.content}
654 Log ${meter_json_resp}
655 ${rate} ${burst_size} Get Meter Param In Details
656 ... ${meter_json_resp} 1
657 Log ${rate}
658 Log ${burst_size}
659 # for cir & cbs
660 ${matched}= Set Variable If '${rate}' == '${us_cir}' and '${burst_size}' == '${us_cbs}' True False
661 Should Be True ${matched}
662 ${res1}= Evaluate '${rate}' == '${us_cir}' and '${burst_size}' == '${us_cbs}'
663 #for pir & pbs
664 ${rate} ${burst_size} Get Meter Param In Details
665 ... ${meter_json_resp} 2
666 ${matched}= Set Variable If '${rate}' == '${us_pir}' and '${burst_size}' == '${us_pbs}' True False
667 Should Be True ${matched}
668 ${res2}= Evaluate '${rate}' == '${us_pir}' and '${burst_size}' == '${us_pbs}'
669 #for gir
670 Run Keyword if ${us_gir} != 0 Validate Guarenteed Information Rate ${us_gir} ${meter_json_resp}
671 # Get downstream bandwidth profile details
672 ${ds_cir} ${ds_cbs} ${ds_pir} ${ds_pbs} ${ds_gir} Get Bandwidth Profile Details Ietf Rest
673 ... ${ds_bw_profile}
674 # Verify meter for downstream bandwidth profile
675 ${meter}= Get Request VGC meters
676 ${meter_json_resp}= To Json ${meter.content}
677 Log ${meter_json_resp}
678 ${rate} ${burst_size} Get Meter Param In Details
679 ... ${meter_json_resp} 1
680 Log ${rate}
681 Log ${burst_size}
682 # for cir & cbs
683 ${matched}= Set Variable If '${rate}' == '${ds_cir}' and '${burst_size}' == '${ds_cbs}' True False
684 Should Be True ${matched}
685 #for pir & pbs
686 ${rate} ${burst_size} Get Meter Param In Details
687 ... ${meter_json_resp} 2
688 ${matched}= Set Variable If '${rate}' == '${ds_pir}' and '${burst_size}' == '${ds_pbs}' True False
689 Should Be True ${matched}
690 #for gir
691 Run Keyword If ${ds_gir} != 0
692 ... Validate Guarenteed Information Rate ${ds_gir} ${meter_json_resp}
693
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530694Verify Meters in VGC Ietf For FTTB Subscribers
695 [Arguments] ${ip} ${port} ${olt_of_id} ${onu_port} ${filter}=${EMPTY}
696 [Documentation] Verifies the meters with BW Ietf format for FTTB Subscriber (currently, DT workflow uses this format)
697 ${programmed_sub_json_resp}= Get Programmed Subscribers ${olt_of_id} ${onu_port}
698 ... ${filter}
699 Log ${programmed_sub_json_resp}
700 ${us_bw_profile} ${ds_bw_profile} Get Upstream and Downstream Bandwidth Profile Name
701 ... ${programmed_sub_json_resp}
702 # Get upstream bandwidth profile details
703 ${us_cir} ${us_cbs} ${us_pir} ${us_pbs} ${us_gir} Get Bandwidth Profile Details Ietf Rest
704 ... ${us_bw_profile}
705 # Verify meter for upstream bandwidth profile
706 ${meter}= Get Request VGC meters
707 ${meter_json_resp}= To Json ${meter.content}
708 ${meters}= Get From Dictionary ${meter_json_resp} meters
709 Log ${meter_json_resp}
710 Log ${meters}
711 ${meter_length} Get Length ${meters}
712 FOR ${i} IN RANGE ${meter_length}
Abhay Kumar107b03b2026-01-30 07:20:08 +0000713 ${matched}= Verify meters response ${meters[${i}]} ${us_cir} ${us_cbs}
714 Exit For Loop If ${matched}
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530715 END
716 Should Be True ${matched}
717 #for pir & pbs
Abhay Kumar107b03b2026-01-30 07:20:08 +0000718 FOR ${i} IN RANGE ${meter_length}
719 ${matched}= Verify meters response ${meters[${i}]} ${us_pir} ${us_pbs}
720 Exit For Loop If ${matched}
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530721 END
722 Should Be True ${matched}
723 #for gir
Abhay Kumar107b03b2026-01-30 07:20:08 +0000724 FOR ${i} IN RANGE ${meter_length}
725 ${matched}= Run Keyword if ${us_gir} != 0 Validate Guarenteed Information Rate For FTTB ${us_gir} ${meters[${i}]}
726 Exit For Loop If ${matched}
727 END
728 Should Be True ${matched}
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530729 ${ds_cir} ${ds_cbs} ${ds_pir} ${ds_pbs} ${ds_gir} Get Bandwidth Profile Details Ietf Rest
730 ... ${ds_bw_profile}
731 ${meter}= Get Request VGC meters
732 ${meter_json_resp}= To Json ${meter.content}
733 Log ${meter_json_resp}
Abhay Kumar107b03b2026-01-30 07:20:08 +0000734 ${meters}= Get From Dictionary ${meter_json_resp} meters
735 Log ${meter_json_resp}
736 Log ${meters}
737 FOR ${i} IN RANGE ${meter_length}
738 ${matched}= Verify meters response ${meters[${i}]} ${ds_cir} ${ds_cbs}
739 Exit For Loop If ${matched}
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530740 END
741 Should Be True ${matched}
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530742 # for cir & cbs
Abhay Kumar107b03b2026-01-30 07:20:08 +0000743 FOR ${i} IN RANGE ${meter_length}
744 ${matched}= Verify meters response ${meters[${i}]} ${ds_pir} ${ds_pbs}
745 Exit For Loop If ${matched}
746 END
747 Should Be True ${matched}
748 FOR ${i} IN RANGE ${meter_length}
749 ${matched}= Run Keyword if ${us_gir} != 0 Validate Guarenteed Information Rate For FTTB ${ds_gir} ${meters[${i}]}
750 Exit For Loop If ${matched}
751 END
752 Should Be True ${matched}
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530753
bharat raj58488b32023-05-11 22:46:18 +0530754Validate Guarenteed Information Rate
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530755 [Documentation] Validate gir for both upstream and downstream meters
756 [Arguments] ${gir} ${meter_json_resp}
757 ${rate} ${burst_size} Get Meter Param In Details
758 ... ${meter_json_resp} 3
759 ${matched}= Set Variable If '${rate}' == '${gir}' and '${burst_size}' == '0' True False
760 Should Be True ${matched}
Serkant Uluderya764ee552026-03-06 09:08:07 -0800761 RETURN ${matched}
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530762
763Validate Guarenteed Information Rate For FTTB
bharat raj58488b32023-05-11 22:46:18 +0530764 [Documentation] Validate gir for both upstream and downstream meters
765 [Arguments] ${gir} ${meter_json_resp}
Guru Prasanna6dcd8a22025-05-08 01:28:20 +0530766 ${burst_size}= Get From Dictionary ${meter_json_resp['bands'][2]} burstSize
767 ${rate}= Get From Dictionary ${meter_json_resp['bands'][2]} rate
Serkant Uluderya764ee552026-03-06 09:08:07 -0800768 ${matched}= Set Variable If '${rate}' == '${gir}' and '${burst_size}' == '0' True False
769 Should Be True ${matched}
770 RETURN ${matched}
bharat raj58488b32023-05-11 22:46:18 +0530771
772Get Bandwidth Profile Details Ietf Rest
773 [Arguments] ${bw_profile_id}
774 [Documentation] Retrieves the details of the given Ietf standard based bandwidth profile using REST API
775 ${bw_profile_id}= Remove String ${bw_profile_id} ' "
776 ${resp}= Get Request VGC profiles/${bw_profile_id}
777 Log ${resp}
778 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200779 Should Not Be Empty ${jsondata} Could not find data for bandwidth profile ${bw_profile_id} in VGC
bharat raj58488b32023-05-11 22:46:18 +0530780 ${matched}= Set Variable False
781 ${bw_id}= Get From Dictionary ${jsondata} id
782 ${matched}= Set Variable If '${bw_id}' == '${bw_profile_id}' True False
783 ${pir}= Get From Dictionary ${jsondata} pir
784 ${pbs}= Get From Dictionary ${jsondata} pbs
785 ${cir}= Get From Dictionary ${jsondata} cir
786 ${cbs}= Get From Dictionary ${jsondata} cbs
787 ${gir}= Get From Dictionary ${jsondata} gir
788 Should Be True ${matched} No bandwidth profile found for id: ${bw_profile_id}
Serkant Uluderya764ee552026-03-06 09:08:07 -0800789 RETURN ${cir} ${cbs} ${pir} ${pbs} ${gir}
bharat raj58488b32023-05-11 22:46:18 +0530790
791
792Get Upstream and Downstream Bandwidth Profile Name
793 [Arguments] ${programmed_sub}
794 [Documentation] Retrieves the upstream and downstream bandwidth profile name
795 ... from the programmed subscriber
796 ${length}= Get Length ${programmed_sub}
797 ${matched}= Set Variable False
798 FOR ${INDEX} IN RANGE 0 ${length}
799 ${value}= Get From List ${programmed_sub} ${INDEX}
800 ${tagInfo_id}= Get From Dictionary ${value} tagInfo
801 Log ${tagInfo_id}
802 ${us_bw_profile}= Get From Dictionary ${tagInfo_id} upstreamBandwidthProfile
803 Log ${us_bw_profile}
804 ${ds_bw_profile}= Get From Dictionary ${tagInfo_id} downstreamBandwidthProfile
805 Log ${ds_bw_profile}
806 END
Serkant Uluderya764ee552026-03-06 09:08:07 -0800807 RETURN ${us_bw_profile} ${ds_bw_profile}
bharat raj58488b32023-05-11 22:46:18 +0530808
809Verify Subscriber Access Flows Added Count DT
810 [Arguments] ${ip} ${port} ${olt_of_id} ${expected_flows}
811 [Documentation] Matches for total number of subscriber access flows added for all onus
812 ${resp}= Get Request VGC flows/${olt_of_id}
813 ${jsondata}= To Json ${resp.content}
814 ${access_flows_added_count}= Get Length ${jsondata['flows']}
815 Should Be Equal As Integers ${access_flows_added_count} ${expected_flows}
816
817Get Meter Param In Details
818 [Arguments] ${meter_json} ${length}
819 [Documentation] Retrieves the meter rate state burst-size
820 ${metername}= Get From Dictionary ${meter_json} meters
821 Log ${metername}
822 ${value}= Get From List ${metername} 0
823 ${bands_info}= Get From Dictionary ${value} bands
824 Log ${bands_info}
825 FOR ${INDEX} IN RANGE 0 ${length}
826 ${value}= Get From List ${bands_info} ${INDEX}
827 ${burst_size}= Get From Dictionary ${value} burstSize
828 ${rate}= Get From Dictionary ${value} rate
829 END
Serkant Uluderya764ee552026-03-06 09:08:07 -0800830 RETURN ${rate} ${burst_size}
bharat raj58488b32023-05-11 22:46:18 +0530831
832Delete Subscribers And BW Profile In VGC
833 [Documentation] Delete Subscribers and bw profile In VGC
834 Create VGC Session
835 ${resp}= Get Request VGC programmed-subscribers
836 Log ${resp}
837 ${jsondata}= To Json ${resp.content}
838 ${length}= Get Length ${jsondata['subscribers']}
839 @{serial_numbers}= Create List
840 FOR ${INDEX} IN RANGE 0 ${length}
841 ${value}= Get From List ${jsondata['subscribers']} ${INDEX}
842 ${taginfo}= Get From Dictionary ${value} tagInfo
843 ${service_id}= Get From Dictionary ${taginfo} serviceName
844 ${upstream_bw_id}= Get From Dictionary ${taginfo} upstreamBandwidthProfile
845 ${downstream_bw_id}= Get From Dictionary ${taginfo} downstreamBandwidthProfile
846 Delete Request VGC subscribers/${service_id}
847 Delete Request VGC profiles/${upstream_bw_id}
848 Delete Request VGC profiles/${downstream_bw_id}
849 END
850
851Deactivate Subscribers In VGC
852 [Documentation] Deactivate Subscribers In VGC
853 Create VGC Session
854 ${resp}= Get Request VGC devices/ports
855 Log ${resp}
856 ${jsondata}= To Json ${resp.content}
857 ${length}= Get Length ${jsondata['ports']}
858 FOR ${INDEX} IN RANGE 0 ${length}
859 ${value}= Get From List ${jsondata['ports']} ${INDEX}
860 ${annotations}= Get From Dictionary ${value} annotations
861 ${portname}= Get From Dictionary ${annotations} portName
862 Delete Request VGC services/${portname}
863 END
864
865Verify Device Flows Removed
866 [Arguments] ${ip} ${port} ${olt_of_id}
867 [Documentation] Verifies all flows are removed from the device
868 ${resp}= Get Request VGC flows/${olt_of_id}
869 ${jsondata}= To Json ${resp.content}
870 ${flow_count}= Get Length ${jsondata['flows']}
871 Should Be Equal As Integers ${flow_count} 0 Flows not removed
872
873Device Is Available In VGC
Akash Soni35cafc32023-12-20 12:48:08 +0530874 [Arguments] ${olt_of_id} ${available}=True
bharat raj58488b32023-05-11 22:46:18 +0530875 [Documentation] Validates the device exists and it has the expected availability in VGC
876 ${resp}= Get Request VGC devices
877 ${jsondata}= To Json ${resp.content}
Cristina de Franciscoc4cfd7e2023-10-09 10:55:08 +0200878 Should Not Be Empty ${jsondata['devices']} No devices data found in VGC
bharat raj58488b32023-05-11 22:46:18 +0530879 ${length}= Get Length ${jsondata['devices']}
880 ${matched}= Set Variable False
881 FOR ${INDEX} IN RANGE 0 ${length}
882 ${value}= Get From List ${jsondata['devices']} ${INDEX}
883 ${of_id}= Get From Dictionary ${value} id
884 ${availability}= Get From Dictionary ${value} available
885 Log ${olt_of_id}
886 Log ${of_id}
Akash Soni35cafc32023-12-20 12:48:08 +0530887 ${matched}= Set Variable If '${of_id}' == '${olt_of_id}' and '${availability}' True False
bharat raj58488b32023-05-11 22:46:18 +0530888 Exit For Loop If ${matched}
889 END
890 Should Be True ${matched} No match for '${olt_of_id}' found
bharat raj58488b32023-05-11 22:46:18 +0530891