Skip to content

Commit 8389c81

Browse files
[sonic-cli-gen] fix failure "Error: digits_class" when field "digit_class" does not exist in DB (#2054)
here Signed-off-by: Stepan Blyschak <[email protected]>
1 parent f71ef64 commit 8389c81

File tree

4 files changed

+23
-7
lines changed

4 files changed

+23
-7
lines changed

sonic-utilities-data/templates/sonic-cli-gen/config.py.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def update_entry_validated(db, table, key, data, create_if_not_exists=False):
102102

103103
entry_changed = False
104104
for attr, value in data.items():
105-
if value == cfg[table][key][attr]:
105+
if value == cfg[table][key].get(attr):
106106
continue
107107
entry_changed = True
108108
if value is None:

tests/cli_autogen_input/autogen_test/show_cmd_output.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44

55

66
show_device_metadata_localhost="""\
7-
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
8-
----------- -------------------- ---------------------------- ---------- ---------------------- ----------------- ---------------------- --------- --------------- --------- -------------- ---------------------------
9-
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
7+
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
8+
----------- -------------------- ---------------------------- ---------- ---------------------- ----------------- ---------------------- --------- --------------- -------------------- --------- -------------- ---------------------------
9+
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
1010
"""
1111

1212

1313
show_device_metadata_localhost_changed_buffer_model="""\
14-
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
15-
----------- -------------------- ---------------------------- ---------- ---------------------- ----------------- ---------------------- --------- --------------- --------- -------------- ---------------------------
16-
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
14+
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
15+
----------- -------------------- ---------------------------- ---------- ---------------------- ----------------- ---------------------- --------- --------------- -------------------- --------- -------------- ---------------------------
16+
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
1717
"""
1818

1919

tests/cli_autogen_input/autogen_test/sonic-device_metadata.yang

+4
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ module sonic-device_metadata {
8888
type uint32;
8989
}
9090

91+
leaf non_existing_field {
92+
type uint32;
93+
}
94+
9195
leaf type {
9296
type string {
9397
length 1..255;

tests/cli_autogen_test.py

+12
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,18 @@ def test_config_device_metadata(self):
109109
assert result.exit_code == SUCCESS
110110
assert result.output == show_cmd_output.show_device_metadata_localhost_changed_buffer_model
111111

112+
def test_config_device_metadata_non_existing_field(self):
113+
dbconnector.dedicated_dbs['CONFIG_DB'] = mock_db_path
114+
db = Db()
115+
runner = CliRunner()
116+
117+
result = runner.invoke(
118+
config_main.config.commands['device-metadata'].commands['localhost'].commands['non-existing-field'], ['12'], obj=db
119+
)
120+
121+
logger.debug("\n" + result.output)
122+
logger.debug(result.exit_code)
123+
assert result.exit_code == SUCCESS
112124

113125
@pytest.mark.parametrize("parameter,value", [
114126
('default-bgp-status', INVALID_VALUE),

0 commit comments

Comments
 (0)