@@ -2354,25 +2354,35 @@ def add_erspan(session_name, src_ip, dst_ip, dscp, ttl, gre_type, queue, policer
2354
2354
session_info ['gre_type' ] = gre_type
2355
2355
2356
2356
session_info = gather_session_info (session_info , policer , queue , src_port , direction )
2357
+ ctx = click .get_current_context ()
2357
2358
2358
2359
"""
2359
2360
For multi-npu platforms we need to program all front asic namespaces
2360
2361
"""
2361
2362
namespaces = multi_asic .get_all_namespaces ()
2362
2363
if not namespaces ['front_ns' ]:
2363
- config_db = ConfigDBConnector ()
2364
+ config_db = ValidatedConfigDBConnector ( ConfigDBConnector () )
2364
2365
config_db .connect ()
2365
- if validate_mirror_session_config (config_db , session_name , None , src_port , direction ) is False :
2366
- return
2367
- config_db .set_entry ("MIRROR_SESSION" , session_name , session_info )
2366
+ if ADHOC_VALIDATION :
2367
+ if validate_mirror_session_config (config_db , session_name , None , src_port , direction ) is False :
2368
+ return
2369
+ try :
2370
+ config_db .set_entry ("MIRROR_SESSION" , session_name , session_info )
2371
+ except ValueError as e :
2372
+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
2373
+
2368
2374
else :
2369
2375
per_npu_configdb = {}
2370
2376
for front_asic_namespaces in namespaces ['front_ns' ]:
2371
- per_npu_configdb [front_asic_namespaces ] = ConfigDBConnector (use_unix_socket_path = True , namespace = front_asic_namespaces )
2377
+ per_npu_configdb [front_asic_namespaces ] = ValidatedConfigDBConnector ( ConfigDBConnector (use_unix_socket_path = True , namespace = front_asic_namespaces ) )
2372
2378
per_npu_configdb [front_asic_namespaces ].connect ()
2373
- if validate_mirror_session_config (per_npu_configdb [front_asic_namespaces ], session_name , None , src_port , direction ) is False :
2374
- return
2375
- per_npu_configdb [front_asic_namespaces ].set_entry ("MIRROR_SESSION" , session_name , session_info )
2379
+ if ADHOC_VALIDATION :
2380
+ if validate_mirror_session_config (per_npu_configdb [front_asic_namespaces ], session_name , None , src_port , direction ) is False :
2381
+ return
2382
+ try :
2383
+ per_npu_configdb [front_asic_namespaces ].set_entry ("MIRROR_SESSION" , session_name , session_info )
2384
+ except ValueError as e :
2385
+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
2376
2386
2377
2387
@mirror_session .group (cls = clicommon .AbbreviationGroup , name = 'span' )
2378
2388
@click .pass_context
@@ -2404,25 +2414,34 @@ def add_span(session_name, dst_port, src_port, direction, queue, policer):
2404
2414
}
2405
2415
2406
2416
session_info = gather_session_info (session_info , policer , queue , src_port , direction )
2417
+ ctx = click .get_current_context ()
2407
2418
2408
2419
"""
2409
2420
For multi-npu platforms we need to program all front asic namespaces
2410
2421
"""
2411
2422
namespaces = multi_asic .get_all_namespaces ()
2412
2423
if not namespaces ['front_ns' ]:
2413
- config_db = ConfigDBConnector ()
2424
+ config_db = ValidatedConfigDBConnector ( ConfigDBConnector () )
2414
2425
config_db .connect ()
2415
- if validate_mirror_session_config (config_db , session_name , dst_port , src_port , direction ) is False :
2416
- return
2417
- config_db .set_entry ("MIRROR_SESSION" , session_name , session_info )
2426
+ if ADHOC_VALIDATION :
2427
+ if validate_mirror_session_config (config_db , session_name , dst_port , src_port , direction ) is False :
2428
+ return
2429
+ try :
2430
+ config_db .set_entry ("MIRROR_SESSION" , session_name , session_info )
2431
+ except ValueError as e :
2432
+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
2418
2433
else :
2419
2434
per_npu_configdb = {}
2420
2435
for front_asic_namespaces in namespaces ['front_ns' ]:
2421
- per_npu_configdb [front_asic_namespaces ] = ConfigDBConnector (use_unix_socket_path = True , namespace = front_asic_namespaces )
2436
+ per_npu_configdb [front_asic_namespaces ] = ValidatedConfigDBConnector ( ConfigDBConnector (use_unix_socket_path = True , namespace = front_asic_namespaces ) )
2422
2437
per_npu_configdb [front_asic_namespaces ].connect ()
2423
- if validate_mirror_session_config (per_npu_configdb [front_asic_namespaces ], session_name , dst_port , src_port , direction ) is False :
2424
- return
2425
- per_npu_configdb [front_asic_namespaces ].set_entry ("MIRROR_SESSION" , session_name , session_info )
2438
+ if ADHOC_VALIDATION :
2439
+ if validate_mirror_session_config (per_npu_configdb [front_asic_namespaces ], session_name , dst_port , src_port , direction ) is False :
2440
+ return
2441
+ try :
2442
+ per_npu_configdb [front_asic_namespaces ].set_entry ("MIRROR_SESSION" , session_name , session_info )
2443
+ except ValueError as e :
2444
+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
2426
2445
2427
2446
2428
2447
@mirror_session .command ()
@@ -2434,16 +2453,23 @@ def remove(session_name):
2434
2453
For multi-npu platforms we need to program all front asic namespaces
2435
2454
"""
2436
2455
namespaces = multi_asic .get_all_namespaces ()
2456
+ ctx = click .get_current_context ()
2437
2457
if not namespaces ['front_ns' ]:
2438
- config_db = ConfigDBConnector ()
2458
+ config_db = ValidatedConfigDBConnector ( ConfigDBConnector () )
2439
2459
config_db .connect ()
2440
- config_db .set_entry ("MIRROR_SESSION" , session_name , None )
2460
+ try :
2461
+ config_db .set_entry ("MIRROR_SESSION" , session_name , None )
2462
+ except JsonPatchConflict as e :
2463
+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
2441
2464
else :
2442
2465
per_npu_configdb = {}
2443
2466
for front_asic_namespaces in namespaces ['front_ns' ]:
2444
- per_npu_configdb [front_asic_namespaces ] = ConfigDBConnector (use_unix_socket_path = True , namespace = front_asic_namespaces )
2467
+ per_npu_configdb [front_asic_namespaces ] = ValidatedConfigDBConnector ( ConfigDBConnector (use_unix_socket_path = True , namespace = front_asic_namespaces ) )
2445
2468
per_npu_configdb [front_asic_namespaces ].connect ()
2446
- per_npu_configdb [front_asic_namespaces ].set_entry ("MIRROR_SESSION" , session_name , None )
2469
+ try :
2470
+ per_npu_configdb [front_asic_namespaces ].set_entry ("MIRROR_SESSION" , session_name , None )
2471
+ except JsonPatchConflict as e :
2472
+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
2447
2473
2448
2474
#
2449
2475
# 'pfcwd' group ('config pfcwd ...')
0 commit comments