[YANG] Fix issue: Non compliant leaf list in config_db schema#10291
[YANG] Fix issue: Non compliant leaf list in config_db schema#10291qiluo-msft merged 8 commits intosonic-net:masterfrom
Conversation
|
/azpw run Azure.sonic-buildimage |
|
/AzurePipelines run Azure.sonic-buildimage |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Hi @qiluo-msft and @praveen-li , could you please review? |
|
@praveen-li would you please help to review this PR? |
|
Hi @qiluo-msft and @praveen-li kindly reminder to review. As this is also needed for 202111 we need to urge you on that. sorry. |
|
@praveen-li would you please help to review and approve this PR? Thanks. |
|
@praveen-li kindly reminder. this fix is must for 202111 |
|
/azpw run Azure.sonic-buildimage |
|
/AzurePipelines run Azure.sonic-buildimage |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azpw run Azure.sonic-buildimage |
|
/AzurePipelines run Azure.sonic-buildimage |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Hi I saw testcase fail on GCU generic_config_updater/test_bgp_prefix.py |
|
@praveen-li could you please help to review following comments provided? |
|
@praveen-li kindly reminder. this must get in 2021111 so appreciate if we can close the loop. thanks. |
praveen-li
left a comment
There was a problem hiding this comment.
Looks over all good to me.
| if leafDict[key]['__isleafList']: | ||
| vValue = list() | ||
| if isinstance(value, str) and (self.elementPath[0], self.elementPath[-1]) in LEAF_LIST_WITH_STRING_VALUE_DICT: | ||
| value = (x.strip() for x in value.split(LEAF_LIST_WITH_STRING_VALUE_DICT[(self.elementPath[0], self.elementPath[-1])])) |
There was a problem hiding this comment.
plz explain with example this step. This has to break down the values from string to list. Please explain how it is working in this case. Thanks
|
Once Praveen's comment is addressed, he will approve and merge. |
|
Hi @praveen-li , I have fixed the comments, could you please review and sign-off? |
|
/azpw run Azure.sonic-buildimage |
|
/AzurePipelines run Azure.sonic-buildimage |
|
Azure Pipelines successfully started running 1 pipeline(s). |
praveen-li
left a comment
There was a problem hiding this comment.
LGTM, thanks for fixing it
|
Qi will merge |
|
no clean cherry-pick, i will create separate PR for 202111. |
…net#10291) Fix issue: Non compliant leaf list in config_db schema: sonic-net#9801 The basic flow of DPB is like: 1. Transfer config db json value to YANG json value, name it “yangIn” 2. Validate “yangIn” by libyang 3. Generate a YANG json value to represent the target configuration, name it “yangTarget” 4. Do diff between “yangIn” and “yangTarget” 5. Apply the diff to CONFIG DB json and save it back to DB The fix: • For step #1, If value of a leaf-list field string type, transfer it to a list by splitting it with “,” the purpose here is to make step#2 happy. We also need to save <table_name>.<key>.<field_name> to a set named “leaf_list_with_string_value_set”. • For step#5, loop “leaf_list_with_string_value_set” and change those fields back to a string. 1. Manual test 2. Changed sample config DB and unit test passed Conflicts: src/sonic-yang-mgmt/sonic_yang_ext.py
#10768) Fix issue: Non compliant leaf list in config_db schema: #9801 The basic flow of DPB is like: 1. Transfer config db json value to YANG json value, name it “yangIn” 2. Validate “yangIn” by libyang 3. Generate a YANG json value to represent the target configuration, name it “yangTarget” 4. Do diff between “yangIn” and “yangTarget” 5. Apply the diff to CONFIG DB json and save it back to DB The fix: • For step #1, If value of a leaf-list field string type, transfer it to a list by splitting it with “,” the purpose here is to make step#2 happy. We also need to save <table_name>.<key>.<field_name> to a set named “leaf_list_with_string_value_set”. • For step#5, loop “leaf_list_with_string_value_set” and change those fields back to a string. 1. Manual test 2. Changed sample config DB and unit test passed Conflicts: src/sonic-yang-mgmt/sonic_yang_ext.py
…net#10291) #### Why I did it Fix issue: Non compliant leaf list in config_db schema: sonic-net#9801 #### How I did it The basic flow of DPB is like: 1. Transfer config db json value to YANG json value, name it “yangIn” 2. Validate “yangIn” by libyang 3. Generate a YANG json value to represent the target configuration, name it “yangTarget” 4. Do diff between “yangIn” and “yangTarget” 5. Apply the diff to CONFIG DB json and save it back to DB The fix: • For step #1, If value of a leaf-list field string type, transfer it to a list by splitting it with “,” the purpose here is to make step#2 happy. We also need to save <table_name>.<key>.<field_name> to a set named “leaf_list_with_string_value_set”. • For step#5, loop “leaf_list_with_string_value_set” and change those fields back to a string. #### How to verify it 1. Manual test 2. Changed sample config DB and unit test passed
Why I did it
Fix issue: Non compliant leaf list in config_db schema: #9801
How I did it
The basic flow of DPB is like:
The fix:
• For step #1, If value of a leaf-list field string type, transfer it to a list by splitting it with “,” the purpose here is to make step#2 happy. We also need to save <table_name>..<field_name> to a set named “leaf_list_with_string_value_set”.
• For step#5, loop “leaf_list_with_string_value_set” and change those fields back to a string.
How to verify it
1.Manual test
2. Changed sample config DB and unit test passed
Which release branch to backport (provide reason below if selected)
Description for the changelog
Link to config_db schema for YANG module changes
A picture of a cute animal (not mandatory but encouraged)