)]}'
{"neutron_lib/api/validators/__init__.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fc669c14269025ed8362825e48a49dfb61da798a","unresolved":true,"context_lines":[{"line_number":603,"context_line":"            expected_keys.append(\u0027bfd_monitor_id\u0027)"},{"line_number":604,"context_line":"        elif (hostroute and \u0027bfd_monitor_id\u0027 not in hostroute and"},{"line_number":605,"context_line":"              \u0027bfd_monitor_id\u0027 in expected_keys):"},{"line_number":606,"context_line":"            expected_keys.remove(\u0027bfd_monitor_id\u0027)"},{"line_number":607,"context_line":"        msg \u003d _verify_dict_keys(expected_keys, hostroute)"},{"line_number":608,"context_line":"        if msg:"},{"line_number":609,"context_line":"            return msg"}],"source_content_type":"text/x-python","patch_set":1,"id":"390ea4ac_c977e3e9","line":606,"updated":"2021-08-25 09:07:02.000000000","message":"I think it is not a good idea to update expected_keys in the loop interation.\nInstead, how about moving L.599 to the inside of the loop like below?\n\n  for hostroute in data:\n    expected_keys \u003d [\u0027destination\u0027, \u0027nexthop\u0027]\n    if hostroute and \u0027bfd_monitor_id\u0027 in hostroute:\n      expected_keys.append(\u0027bfd_monitor_id\u0027)","commit_id":"fc2a166fbeced92f184bf1aebf205b2fcca83bf8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"156d3280826c0265223f1a03abe35011b72f6058","unresolved":true,"context_lines":[{"line_number":603,"context_line":"            expected_keys.append(\u0027bfd_monitor_id\u0027)"},{"line_number":604,"context_line":"        elif (hostroute and \u0027bfd_monitor_id\u0027 not in hostroute and"},{"line_number":605,"context_line":"              \u0027bfd_monitor_id\u0027 in expected_keys):"},{"line_number":606,"context_line":"            expected_keys.remove(\u0027bfd_monitor_id\u0027)"},{"line_number":607,"context_line":"        msg \u003d _verify_dict_keys(expected_keys, hostroute)"},{"line_number":608,"context_line":"        if msg:"},{"line_number":609,"context_line":"            return msg"}],"source_content_type":"text/x-python","patch_set":1,"id":"14c1b62b_35dbac21","line":606,"in_reply_to":"270e26ce_658743f5","updated":"2021-08-26 10:55:21.000000000","message":"Thanks for checking it. Perhaps I thought strict\u003dFalse somehow when I commented...","commit_id":"fc2a166fbeced92f184bf1aebf205b2fcca83bf8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c808895324c6d44b1ac9f4b512e0fd694963ae08","unresolved":true,"context_lines":[{"line_number":603,"context_line":"            expected_keys.append(\u0027bfd_monitor_id\u0027)"},{"line_number":604,"context_line":"        elif (hostroute and \u0027bfd_monitor_id\u0027 not in hostroute and"},{"line_number":605,"context_line":"              \u0027bfd_monitor_id\u0027 in expected_keys):"},{"line_number":606,"context_line":"            expected_keys.remove(\u0027bfd_monitor_id\u0027)"},{"line_number":607,"context_line":"        msg \u003d _verify_dict_keys(expected_keys, hostroute)"},{"line_number":608,"context_line":"        if msg:"},{"line_number":609,"context_line":"            return msg"}],"source_content_type":"text/x-python","patch_set":1,"id":"cee0710e_8c724ffa","line":606,"in_reply_to":"390ea4ac_c977e3e9","updated":"2021-08-25 09:12:43.000000000","message":"After second thought, I wonder whether we really need to add \"bfd_monitor_id\" to \"expected_keys\"....\nThe logic adds \"bfd_monitor_id\" only when \"bfd_monitor_id\" exists, so the logic actually has no meaning.\nHow about just dropping L.602-603?","commit_id":"fc2a166fbeced92f184bf1aebf205b2fcca83bf8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b3c219fd78bc6df718c0fa47b82ac9623ccb9108","unresolved":true,"context_lines":[{"line_number":603,"context_line":"            expected_keys.append(\u0027bfd_monitor_id\u0027)"},{"line_number":604,"context_line":"        elif (hostroute and \u0027bfd_monitor_id\u0027 not in hostroute and"},{"line_number":605,"context_line":"              \u0027bfd_monitor_id\u0027 in expected_keys):"},{"line_number":606,"context_line":"            expected_keys.remove(\u0027bfd_monitor_id\u0027)"},{"line_number":607,"context_line":"        msg \u003d _verify_dict_keys(expected_keys, hostroute)"},{"line_number":608,"context_line":"        if msg:"},{"line_number":609,"context_line":"            return msg"}],"source_content_type":"text/x-python","patch_set":1,"id":"270e26ce_658743f5","line":606,"in_reply_to":"3a372734_80176ef1","updated":"2021-08-25 12:53:46.000000000","message":"I mean the answer for the 2nd comment/thought from line2 of my comment","commit_id":"fc2a166fbeced92f184bf1aebf205b2fcca83bf8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"53f4935db5ef60da5447fe5d29675ff5a4afef8f","unresolved":true,"context_lines":[{"line_number":603,"context_line":"            expected_keys.append(\u0027bfd_monitor_id\u0027)"},{"line_number":604,"context_line":"        elif (hostroute and \u0027bfd_monitor_id\u0027 not in hostroute and"},{"line_number":605,"context_line":"              \u0027bfd_monitor_id\u0027 in expected_keys):"},{"line_number":606,"context_line":"            expected_keys.remove(\u0027bfd_monitor_id\u0027)"},{"line_number":607,"context_line":"        msg \u003d _verify_dict_keys(expected_keys, hostroute)"},{"line_number":608,"context_line":"        if msg:"},{"line_number":609,"context_line":"            return msg"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a372734_80176ef1","line":606,"in_reply_to":"cee0710e_8c724ffa","updated":"2021-08-25 12:52:33.000000000","message":"Thanks, it\u0027s musch better.\n_verify_dict_keys fails as it checks if the expected_keys are in the dict. If strict is set to False (msg \u003d _verify_dict_keys(expected_keys, hostroute, strict\u003dFalse) ) than any dict will be accepted from the API which contains \u0027destination\u0027 and \u0027nexthop\u0027 keys, like:\n{\u0027destination\u0027: \u0027100.0.0.0/8\u0027, \u0027nexthop\u0027: \u002710.0.2.20\u0027}\n{\u0027destination\u0027: \u0027100.0.0.0/8\u0027, \u0027nexthop\u0027: \u002710.0.2.20\u0027, \u0027foo\u0027: \u0027bar\u0027}\n{\u0027destination\u0027: \u0027100.0.0.0/8\u0027, \u0027nexthop\u0027: \u002710.0.2.20\u0027, \u0027bfd_monitor_id\u0027: \u0027uu-i-d\u0027}","commit_id":"fc2a166fbeced92f184bf1aebf205b2fcca83bf8"}]}
