diff --git a/sonic-utilities-data/templates/sonic-cli-gen/config.py.j2 b/sonic-utilities-data/templates/sonic-cli-gen/config.py.j2 index 7706ae3940..0906d7c99f 100644 --- a/sonic-utilities-data/templates/sonic-cli-gen/config.py.j2 +++ b/sonic-utilities-data/templates/sonic-cli-gen/config.py.j2 @@ -102,7 +102,7 @@ def update_entry_validated(db, table, key, data, create_if_not_exists=False): entry_changed = False for attr, value in data.items(): - if value == cfg[table][key][attr]: + if value == cfg[table][key].get(attr): continue entry_changed = True if value is None: diff --git a/tests/cli_autogen_input/autogen_test/show_cmd_output.py b/tests/cli_autogen_input/autogen_test/show_cmd_output.py index 19c02c7783..a0a0e8cf7e 100644 --- a/tests/cli_autogen_input/autogen_test/show_cmd_output.py +++ b/tests/cli_autogen_input/autogen_test/show_cmd_output.py @@ -4,16 +4,16 @@ show_device_metadata_localhost="""\ -HWSKU DEFAULT BGP STATUS DOCKER ROUTING CONFIG MODE HOSTNAME PLATFORM MAC DEFAULT PFCWD STATUS BGP ASN DEPLOYMENT ID TYPE BUFFER MODEL FRR MGMT FRAMEWORK CONFIG ------------ -------------------- ---------------------------- ---------- ---------------------- ----------------- ---------------------- --------- --------------- --------- -------------- --------------------------- -ACS-MSN2100 up N/A r-sonic-01 x86_64-mlnx_msn2100-r0 ff:ff:ff:ff:ff:00 disable N/A N/A ToRRouter traditional N/A +HWSKU DEFAULT BGP STATUS DOCKER ROUTING CONFIG MODE HOSTNAME PLATFORM MAC DEFAULT PFCWD STATUS BGP ASN DEPLOYMENT ID NON EXISTING FIELD TYPE BUFFER MODEL FRR MGMT FRAMEWORK CONFIG +----------- -------------------- ---------------------------- ---------- ---------------------- ----------------- ---------------------- --------- --------------- -------------------- --------- -------------- --------------------------- +ACS-MSN2100 up N/A r-sonic-01 x86_64-mlnx_msn2100-r0 ff:ff:ff:ff:ff:00 disable N/A N/A N/A ToRRouter traditional N/A """ show_device_metadata_localhost_changed_buffer_model="""\ -HWSKU DEFAULT BGP STATUS DOCKER ROUTING CONFIG MODE HOSTNAME PLATFORM MAC DEFAULT PFCWD STATUS BGP ASN DEPLOYMENT ID TYPE BUFFER MODEL FRR MGMT FRAMEWORK CONFIG ------------ -------------------- ---------------------------- ---------- ---------------------- ----------------- ---------------------- --------- --------------- --------- -------------- --------------------------- -ACS-MSN2100 up N/A r-sonic-01 x86_64-mlnx_msn2100-r0 ff:ff:ff:ff:ff:00 disable N/A N/A ToRRouter dynamic N/A +HWSKU DEFAULT BGP STATUS DOCKER ROUTING CONFIG MODE HOSTNAME PLATFORM MAC DEFAULT PFCWD STATUS BGP ASN DEPLOYMENT ID NON EXISTING FIELD TYPE BUFFER MODEL FRR MGMT FRAMEWORK CONFIG +----------- -------------------- ---------------------------- ---------- ---------------------- ----------------- ---------------------- --------- --------------- -------------------- --------- -------------- --------------------------- +ACS-MSN2100 up N/A r-sonic-01 x86_64-mlnx_msn2100-r0 ff:ff:ff:ff:ff:00 disable N/A N/A N/A ToRRouter dynamic N/A """ diff --git a/tests/cli_autogen_input/autogen_test/sonic-device_metadata.yang b/tests/cli_autogen_input/autogen_test/sonic-device_metadata.yang index 400cbf3bcd..593f17bac3 100644 --- a/tests/cli_autogen_input/autogen_test/sonic-device_metadata.yang +++ b/tests/cli_autogen_input/autogen_test/sonic-device_metadata.yang @@ -88,6 +88,10 @@ module sonic-device_metadata { type uint32; } + leaf non_existing_field { + type uint32; + } + leaf type { type string { length 1..255; diff --git a/tests/cli_autogen_test.py b/tests/cli_autogen_test.py index 13407d1c13..6c4bd334ad 100644 --- a/tests/cli_autogen_test.py +++ b/tests/cli_autogen_test.py @@ -109,6 +109,18 @@ def test_config_device_metadata(self): assert result.exit_code == SUCCESS assert result.output == show_cmd_output.show_device_metadata_localhost_changed_buffer_model + def test_config_device_metadata_non_existing_field(self): + dbconnector.dedicated_dbs['CONFIG_DB'] = mock_db_path + db = Db() + runner = CliRunner() + + result = runner.invoke( + config_main.config.commands['device-metadata'].commands['localhost'].commands['non-existing-field'], ['12'], obj=db + ) + + logger.debug("\n" + result.output) + logger.debug(result.exit_code) + assert result.exit_code == SUCCESS @pytest.mark.parametrize("parameter,value", [ ('default-bgp-status', INVALID_VALUE),