Skip to content

Commit fb4d138

Browse files
Shahzad Iqbal (SHAHZADIQBAL)Shahzad Iqbal (SHAHZADIQBAL)
Shahzad Iqbal (SHAHZADIQBAL)
authored and
Shahzad Iqbal (SHAHZADIQBAL)
committed
changed script to account for tunnel routes.
1 parent c2db718 commit fb4d138

File tree

1 file changed

+34
-17
lines changed

1 file changed

+34
-17
lines changed

scripts/vnet_route_check.py

+34-17
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ def filter_out_vnet_ip2me_routes(vnet_routes):
194194
vnet_routes.pop(vnet)
195195

196196

197-
def get_vnet_routes_from_app_db():
197+
def get_vnet_routes_from_app_db(default_vrf_oid):
198198
''' Returns dictionary of VNET routes configured per each VNET in APP_DB.
199199
Format: { <vnet_name>: { 'routes': [ <pfx/pfx_len> ], 'vrf_oid': <oid> } }
200200
'''
@@ -224,8 +224,7 @@ def get_vnet_routes_from_app_db():
224224
vnet_table = swsscommon.Table(db, 'VNET_TABLE')
225225
scope = vnet_table.get(vnet_name)[1][1][1]
226226
if scope == 'default':
227-
del vnet_routes[vnet_name]
228-
continue
227+
vnet_routes[vnet_name]['vrf_oid'] = default_vrf_oid
229228
else:
230229
assert "Non-default VRF route present without vnet interface."
231230
else:
@@ -237,7 +236,7 @@ def get_vnet_routes_from_app_db():
237236
return vnet_routes
238237

239238

240-
def get_vnet_routes_from_asic_db():
239+
def get_vnet_routes_from_asic_db(default_vrf_oid):
241240
''' Returns dictionary of VNET routes configured per each VNET in ASIC_DB.
242241
Format: { <vnet_name>: { 'routes': [ <pfx/pfx_len> ], 'vrf_oid': <oid> } }
243242
'''
@@ -247,10 +246,12 @@ def get_vnet_routes_from_asic_db():
247246

248247
vnet_vrfs = get_vrf_entries()
249248
vnet_vrfs_oids = [vnet_vrfs[k] for k in vnet_vrfs]
249+
vnet_vrfs_oids.append(default_vrf_oid)
250250

251251
vnet_intfs = get_vnet_intfs()
252252

253253
vrf_oid_to_vnet_map = {}
254+
vrf_oid_to_vnet_map[default_vrf_oid] = 'default_VRF'
254255

255256
for vnet_name, vnet_rifs in vnet_intfs.items():
256257
for vnet_rif, vrf_oid in vnet_vrfs.items():
@@ -286,23 +287,36 @@ def get_vnet_routes_from_asic_db():
286287
return vnet_routes
287288

288289

289-
def get_vnet_routes_diff(routes_1, routes_2):
290+
def get_vnet_routes_diff(default_vrf_oid, routes_1, routes_2, verify_default_vrf_routes = False):
290291
''' Returns all routes present in routes_2 dictionary but missed in routes_1
291292
Format: { <vnet_name>: { 'routes': [ <pfx/pfx_len> ] } }
292293
'''
293294

294295
routes = {}
295296

296297
for vnet_name, vnet_attrs in routes_2.items():
297-
if vnet_name not in routes_1:
298-
routes[vnet_name] = routes
298+
if vnet_attrs['vrf_oid'] == default_vrf_oid:
299+
if verify_default_vrf_routes:
300+
for vnet_route in vnet_attrs['routes']:
301+
ispresent = False
302+
for vnet_name_other, vnet_attrs_other in routes_1.items():
303+
if vnet_route in vnet_attrs_other['routes']:
304+
ispresent = True
305+
if not ispresent:
306+
if vnet_name not in routes:
307+
routes[vnet_name] = {}
308+
routes[vnet_name]['routes'] = []
309+
routes[vnet_name]['routes'].append(vnet_route)
299310
else:
300-
for vnet_route in vnet_attrs['routes']:
301-
if vnet_route not in routes_1[vnet_name]['routes']:
302-
if vnet_name not in routes:
303-
routes[vnet_name] = {}
304-
routes[vnet_name]['routes'] = []
305-
routes[vnet_name]['routes'].append(vnet_route)
311+
if vnet_name not in routes_1:
312+
routes[vnet_name] = vnet_attrs['routes'].copy()
313+
else:
314+
for vnet_route in vnet_attrs['routes']:
315+
if vnet_route not in routes_1[vnet_name]['routes']:
316+
if vnet_name not in routes:
317+
routes[vnet_name] = {}
318+
routes[vnet_name]['routes'] = []
319+
routes[vnet_name]['routes'].append(vnet_route)
306320

307321
return routes
308322

@@ -336,12 +350,15 @@ def main():
336350
# Don't run VNET routes consistancy logic if there is no VNET configuration
337351
if not check_vnet_cfg():
338352
return rc
353+
asic_db = swsscommon.DBConnector('ASIC_DB', 0)
354+
virtual_router = swsscommon.Table(asic_db, 'ASIC_STATE:SAI_OBJECT_TYPE_VIRTUAL_ROUTER')
355+
default_vrf_oid = virtual_router.getKeys()[0]
339356

340-
app_db_vnet_routes = get_vnet_routes_from_app_db()
341-
asic_db_vnet_routes = get_vnet_routes_from_asic_db()
357+
app_db_vnet_routes = get_vnet_routes_from_app_db(default_vrf_oid)
358+
asic_db_vnet_routes = get_vnet_routes_from_asic_db(default_vrf_oid)
342359

343-
missed_in_asic_db_routes = get_vnet_routes_diff(asic_db_vnet_routes, app_db_vnet_routes)
344-
missed_in_app_db_routes = get_vnet_routes_diff(app_db_vnet_routes, asic_db_vnet_routes)
360+
missed_in_asic_db_routes = get_vnet_routes_diff(default_vrf_oid, asic_db_vnet_routes, app_db_vnet_routes,True)
361+
missed_in_app_db_routes = get_vnet_routes_diff(default_vrf_oid, app_db_vnet_routes, asic_db_vnet_routes)
345362
missed_in_sdk_routes = get_sdk_vnet_routes_diff(asic_db_vnet_routes)
346363

347364
res = {}

0 commit comments

Comments
 (0)