)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38146,"name":"Anas Jouhdy","display_name":"Amoo","email":"anas.jouhdy@gmail.com","username":"Amoo"},"change_message_id":"86b615df2b3766b4808b0042f4db1e4ff7bd91c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dfbe5bff_151fcb4c","updated":"2025-06-30 21:01:17.000000000","message":"I found another weird thing in the originator-id loop detection [1].\nWe compare a router ID (most likely an IP) with a bgp.BGPPathAttributeOriginatorId object. I tried to find if there was something like an operator overload but I did not find it. So I think that we should access the \"value\" attribute like in [2] to compare it with the router ID found in the Open message.\n\nOn the unit test side, I tried to use the mock library, tell me if it was not correctly used !\n\n[1]:\nhttps://opendev.org/openstack/os-ken/src/branch/master/os_ken/services/protocols/bgp/peer.py#L1681\n[2]:\nhttps://opendev.org/openstack/os-ken/src/branch/master/os_ken/services/protocols/bgp/processor.py#L483","commit_id":"bf639392f3dea7909792e257b8b65234dc5210a1"}],"os_ken/services/protocols/bgp/peer.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c1b67893a281232c54b6aa9f38559baa14bf6a70","unresolved":true,"context_lines":[{"line_number":1693,"context_line":"                \u0027CLUSTER_LIST on UPDATE message has loops. \u0027"},{"line_number":1694,"context_line":"                \u0027Ignoring this message: %s\u0027, update_msg)"},{"line_number":1695,"context_line":"            return True"},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    def _extract_and_handle_bgp4_new_paths(self, update_msg):"},{"line_number":1698,"context_line":"        \"\"\"Extracts new paths advertised in the given update message\u0027s"},{"line_number":1699,"context_line":"         *MpReachNlri* attribute."}],"source_content_type":"text/x-python","patch_set":1,"id":"5af4ba92_9a32ffea","line":1696,"updated":"2025-06-30 08:01:47.000000000","message":"so if there is loop you return True, but otherwise the method should return with False, am I right?\nAnother thing could you please add few unit tests for this behaviour (I suppose this module is the nice place: https://opendev.org/openstack/os-ken/src/branch/master/os_ken/tests/unit/services/protocols/bgp/test_peer.py )","commit_id":"74bc34bc775e213464925da36907ff8ed16079d6"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7344000cb9426016f442ed669c63f9f6d3cd59b4","unresolved":false,"context_lines":[{"line_number":1693,"context_line":"                \u0027CLUSTER_LIST on UPDATE message has loops. \u0027"},{"line_number":1694,"context_line":"                \u0027Ignoring this message: %s\u0027, update_msg)"},{"line_number":1695,"context_line":"            return True"},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    def _extract_and_handle_bgp4_new_paths(self, update_msg):"},{"line_number":1698,"context_line":"        \"\"\"Extracts new paths advertised in the given update message\u0027s"},{"line_number":1699,"context_line":"         *MpReachNlri* attribute."}],"source_content_type":"text/x-python","patch_set":1,"id":"9f1da7bf_8ebe711c","line":1696,"in_reply_to":"5a306d1f_cd89122d","updated":"2025-07-01 07:13:55.000000000","message":"thanks 😊","commit_id":"74bc34bc775e213464925da36907ff8ed16079d6"},{"author":{"_account_id":38146,"name":"Anas Jouhdy","display_name":"Amoo","email":"anas.jouhdy@gmail.com","username":"Amoo"},"change_message_id":"5aa0aea27d2319ecd9592ec8e98548b0835eb1af","unresolved":true,"context_lines":[{"line_number":1693,"context_line":"                \u0027CLUSTER_LIST on UPDATE message has loops. \u0027"},{"line_number":1694,"context_line":"                \u0027Ignoring this message: %s\u0027, update_msg)"},{"line_number":1695,"context_line":"            return True"},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    def _extract_and_handle_bgp4_new_paths(self, update_msg):"},{"line_number":1698,"context_line":"        \"\"\"Extracts new paths advertised in the given update message\u0027s"},{"line_number":1699,"context_line":"         *MpReachNlri* attribute."}],"source_content_type":"text/x-python","patch_set":1,"id":"6f1226b1_7b2176ba","line":1696,"in_reply_to":"5af4ba92_9a32ffea","updated":"2025-06-30 17:43:10.000000000","message":"I am currentely working on adding some unit tests. I underestimate the work to mock a Peer ! I will try to handle your feedback as soon as I can !","commit_id":"74bc34bc775e213464925da36907ff8ed16079d6"},{"author":{"_account_id":38146,"name":"Anas Jouhdy","display_name":"Amoo","email":"anas.jouhdy@gmail.com","username":"Amoo"},"change_message_id":"86b615df2b3766b4808b0042f4db1e4ff7bd91c2","unresolved":false,"context_lines":[{"line_number":1693,"context_line":"                \u0027CLUSTER_LIST on UPDATE message has loops. \u0027"},{"line_number":1694,"context_line":"                \u0027Ignoring this message: %s\u0027, update_msg)"},{"line_number":1695,"context_line":"            return True"},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    def _extract_and_handle_bgp4_new_paths(self, update_msg):"},{"line_number":1698,"context_line":"        \"\"\"Extracts new paths advertised in the given update message\u0027s"},{"line_number":1699,"context_line":"         *MpReachNlri* attribute."}],"source_content_type":"text/x-python","patch_set":1,"id":"5a306d1f_cd89122d","line":1696,"in_reply_to":"6f1226b1_7b2176ba","updated":"2025-06-30 21:01:17.000000000","message":"Done","commit_id":"74bc34bc775e213464925da36907ff8ed16079d6"}]}
