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