@@ -697,17 +697,25 @@ def storm_control_set_entry(port_name, kbps, storm_type, namespace):
697697 return False
698698
699699 #Validate kbps value
700- config_db = ConfigDBConnector ()
700+ config_db = ValidatedConfigDBConnector ( ConfigDBConnector () )
701701 config_db .connect ()
702702 key = port_name + '|' + storm_type
703703 entry = config_db .get_entry ('PORT_STORM_CONTROL' , key )
704704
705705 if len (entry ) == 0 :
706- config_db .set_entry ('PORT_STORM_CONTROL' , key , {'kbps' :kbps })
706+ try :
707+ config_db .set_entry ('PORT_STORM_CONTROL' , key , {'kbps' :kbps })
708+ except ValueError as e :
709+ ctx = click .get_current_context ()
710+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
707711 else :
708712 kbps_value = int (entry .get ('kbps' ,0 ))
709713 if kbps_value != kbps :
710- config_db .mod_entry ('PORT_STORM_CONTROL' , key , {'kbps' :kbps })
714+ try :
715+ config_db .mod_entry ('PORT_STORM_CONTROL' , key , {'kbps' :kbps })
716+ except ValueError as e :
717+ ctx = click .get_current_context ()
718+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
711719
712720 return True
713721
@@ -717,7 +725,7 @@ def storm_control_delete_entry(port_name, storm_type):
717725 if storm_control_interface_validate (port_name ) is False :
718726 return False
719727
720- config_db = ConfigDBConnector ()
728+ config_db = ValidatedConfigDBConnector ( ConfigDBConnector () )
721729 config_db .connect ()
722730 key = port_name + '|' + storm_type
723731 entry = config_db .get_entry ('PORT_STORM_CONTROL' , key )
@@ -726,7 +734,11 @@ def storm_control_delete_entry(port_name, storm_type):
726734 click .echo ("%s storm-control not enabled on interface %s" % (storm_type , port_name ))
727735 return False
728736 else :
729- config_db .set_entry ('PORT_STORM_CONTROL' , key , None )
737+ try :
738+ config_db .set_entry ('PORT_STORM_CONTROL' , key , None )
739+ except JsonPatchConflict as e :
740+ ctx = click .get_current_context ()
741+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
730742
731743 return True
732744
@@ -4470,7 +4482,7 @@ def _parse_object_id(idsmap):
44704482
44714483
44724484def update_buffer_object (db , interface_name , object_map , override_profile , is_pg , add = True ):
4473- config_db = db .cfgdb
4485+ config_db = ValidatedConfigDBConnector ( db .cfgdb )
44744486 ctx = click .get_current_context ()
44754487
44764488 # Check whether port is legal
@@ -4500,16 +4512,22 @@ def update_buffer_object(db, interface_name, object_map, override_profile, is_pg
45004512 if is_pg :
45014513 if not 'xoff' in profile_dict .keys () and 'size' in profile_dict .keys ():
45024514 ctx .fail ("Profile {} doesn't exist or isn't a lossless profile" .format (override_profile ))
4503- config_db .set_entry (buffer_table , (interface_name , object_map ), {"profile" : override_profile })
4515+ try :
4516+ config_db .set_entry (buffer_table , (interface_name , object_map ), {"profile" : override_profile })
4517+ except ValueError as e :
4518+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
45044519 else :
4505- config_db .set_entry (buffer_table , (interface_name , object_map ), {"profile" : "NULL" })
4520+ try :
4521+ config_db .set_entry (buffer_table , (interface_name , object_map ), {"profile" : "NULL" })
4522+ except ValueError as e :
4523+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
45064524
45074525 if is_pg :
45084526 adjust_pfc_enable (ctx , db , interface_name , object_map , True )
45094527
45104528
45114529def remove_buffer_object_on_port (db , interface_name , buffer_object_map , is_pg = True ):
4512- config_db = db .cfgdb
4530+ config_db = ValidatedConfigDBConnector ( db .cfgdb )
45134531 ctx = click .get_current_context ()
45144532
45154533 # Check whether port is legal
@@ -4530,7 +4548,10 @@ def remove_buffer_object_on_port(db, interface_name, buffer_object_map, is_pg=Tr
45304548 ctx .fail ("Lossy PG {} can't be removed" .format (buffer_object_map ))
45314549 else :
45324550 continue
4533- config_db .set_entry (buffer_table , (interface_name , existing_buffer_object ), None )
4551+ try :
4552+ config_db .set_entry (buffer_table , (interface_name , existing_buffer_object ), None )
4553+ except JsonPatchConflict as e :
4554+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
45344555 if is_pg :
45354556 adjust_pfc_enable (ctx , db , interface_name , buffer_object_map , False )
45364557 removed = True
@@ -4543,7 +4564,7 @@ def remove_buffer_object_on_port(db, interface_name, buffer_object_map, is_pg=Tr
45434564
45444565
45454566def adjust_pfc_enable (ctx , db , interface_name , pg_map , add ):
4546- config_db = db .cfgdb
4567+ config_db = ValidatedConfigDBConnector ( db .cfgdb )
45474568
45484569 # Fetch the original pfc_enable
45494570 qosmap = config_db .get_entry ("PORT_QOS_MAP" , interface_name )
@@ -4576,7 +4597,10 @@ def adjust_pfc_enable(ctx, db, interface_name, pg_map, add):
45764597 ctx .fail ("Try to add empty priorities" )
45774598
45784599 qosmap ["pfc_enable" ] = pfc_enable [:- 1 ]
4579- config_db .set_entry ("PORT_QOS_MAP" , interface_name , qosmap )
4600+ try :
4601+ config_db .set_entry ("PORT_QOS_MAP" , interface_name , qosmap )
4602+ except ValueError as e :
4603+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
45804604
45814605
45824606#
@@ -5811,6 +5835,7 @@ def _is_shared_headroom_pool_enabled(ctx, config_db):
58115835
58125836
58135837def update_profile (ctx , config_db , profile_name , xon , xoff , size , dynamic_th , pool , profile_entry = None ):
5838+ config_db = ValidatedConfigDBConnector (config_db )
58145839 params = {}
58155840 if profile_entry :
58165841 params = profile_entry
@@ -5882,14 +5907,17 @@ def update_profile(ctx, config_db, profile_name, xon, xoff, size, dynamic_th, po
58825907 else :
58835908 ctx .fail ("No dynamic_th defined in DEFAULT_LOSSLESS_BUFFER_PARAMETER" )
58845909
5885- config_db .set_entry ("BUFFER_PROFILE" , (profile_name ), params )
5910+ try :
5911+ config_db .set_entry ("BUFFER_PROFILE" , (profile_name ), params )
5912+ except ValueError as e :
5913+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
58865914
58875915@profile .command ('remove' )
58885916@click .argument ('profile' , metavar = '<profile>' , required = True )
58895917@clicommon .pass_db
58905918def remove_profile (db , profile ):
58915919 """Delete a buffer profile"""
5892- config_db = db .cfgdb
5920+ config_db = ValidatedConfigDBConnector ( db .cfgdb )
58935921 ctx = click .get_current_context ()
58945922
58955923 existing_pgs = config_db .get_table ("BUFFER_PG" )
@@ -5901,7 +5929,10 @@ def remove_profile(db, profile):
59015929
59025930 entry = config_db .get_entry ("BUFFER_PROFILE" , profile )
59035931 if entry :
5904- config_db .set_entry ("BUFFER_PROFILE" , profile , None )
5932+ try :
5933+ config_db .set_entry ("BUFFER_PROFILE" , profile , None )
5934+ except JsonPatchConflict as e :
5935+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
59055936 else :
59065937 ctx .fail ("Profile {} doesn't exist" .format (profile ))
59075938
@@ -5917,7 +5948,7 @@ def shared_headroom_pool(ctx):
59175948@clicommon .pass_db
59185949def over_subscribe_ratio (db , ratio ):
59195950 """Configure over subscribe ratio"""
5920- config_db = db .cfgdb
5951+ config_db = ValidatedConfigDBConnector ( db .cfgdb )
59215952 ctx = click .get_current_context ()
59225953
59235954 port_number = len (config_db .get_table ('PORT' ))
@@ -5937,15 +5968,18 @@ def over_subscribe_ratio(db, ratio):
59375968 else :
59385969 v ["over_subscribe_ratio" ] = ratio
59395970
5940- config_db .set_entry ("DEFAULT_LOSSLESS_BUFFER_PARAMETER" , k , v )
5971+ try :
5972+ config_db .set_entry ("DEFAULT_LOSSLESS_BUFFER_PARAMETER" , k , v )
5973+ except ValueError as e :
5974+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
59415975
59425976
59435977@shared_headroom_pool .command ()
59445978@click .argument ('size' , metavar = '<size>' , type = int , required = True )
59455979@clicommon .pass_db
59465980def size (db , size ):
59475981 """Configure shared headroom pool size"""
5948- config_db = db .cfgdb
5982+ config_db = ValidatedConfigDBConnector ( db .cfgdb )
59495983 state_db = db .db
59505984 ctx = click .get_current_context ()
59515985
@@ -5964,7 +5998,10 @@ def size(db, size):
59645998 else :
59655999 ingress_lossless_pool ["xoff" ] = size
59666000
5967- config_db .set_entry ("BUFFER_POOL" , "ingress_lossless_pool" , ingress_lossless_pool )
6001+ try :
6002+ config_db .set_entry ("BUFFER_POOL" , "ingress_lossless_pool" , ingress_lossless_pool )
6003+ except ValueError as e :
6004+ ctx .fail ("Invalid ConfigDB. Error: {}" .format (e ))
59686005
59696006
59706007#
0 commit comments