)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fceff1c5295b809594f6d9908547e36a0e26baa1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"29e2add5_741c60bf","updated":"2023-11-27 19:05:37.000000000","message":"Thanks for the change, just had some comments.","commit_id":"17ab7783c5e57aa6d7b4954aa5766a9554661c75"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"e6fae59262539ec266ec4e7d8002224849ee5fc7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"90a5bfe8_d613f584","updated":"2023-11-27 12:00:58.000000000","message":"recheck","commit_id":"17ab7783c5e57aa6d7b4954aa5766a9554661c75"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"33c4d403dd091e8737f27b8357a7aa0287cbda16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"07b343a0_12efac40","updated":"2023-11-29 02:21:04.000000000","message":"The neutron-functional-with-uwsgi test failure doesn\u0027t seem to be caused by this patch.","commit_id":"825ca1bb561d91a1d70d8c3b4bf4f9e2a892dd16"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"a25259e9ecd2251d62b9fe5992d1dac71e062b21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"facb4dc6_a3dbdb5c","updated":"2023-11-29 03:35:16.000000000","message":"Tips: this patch only add/remove allowed_address_pairs to neutron db, not notify l2-agent(or ml2/ovn client) to update.","commit_id":"7c313b0fc34624dcf884d785b712a42e379ca724"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"aa27c8f96095a5bbd99aeddab302c449a6f6bac2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"e58655f5_68943906","updated":"2023-11-29 10:45:22.000000000","message":"recheck","commit_id":"5dd8474660171105c9f7bde632920fcc6c13dd49"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"fb95d819bc6c3ca90bb6d8847bde1486dad8fb06","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"2ed391fb_863f5728","updated":"2023-12-05 01:47:54.000000000","message":"recheck","commit_id":"a693d1c15660ca63910d1cdc492dd148847ecee2"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6f15758073b808916dce058bfcdcabf0c75d9bd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"b410011c_0a335329","updated":"2023-12-11 12:59:51.000000000","message":"the functional failures seems at least partly related, please check them","commit_id":"418e04e35261a814e6dfc533c80a0a99d946768d"}],"neutron/db/allowedaddresspairs_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fceff1c5295b809594f6d9908547e36a0e26baa1","unresolved":true,"context_lines":[{"line_number":202,"context_line":"            if \u0027mac_address\u0027 not in ap:"},{"line_number":203,"context_line":"                ap[\u0027mac_address\u0027] \u003d str(mac)"},{"line_number":204,"context_line":"        with db_api.CONTEXT_WRITER.using(context):"},{"line_number":205,"context_line":"            if new_address_pairs:"},{"line_number":206,"context_line":"                self._create_allowed_address_pairs("},{"line_number":207,"context_line":"                    context, port_id, new_address_pairs)"},{"line_number":208,"context_line":"        port \u003d ports_obj.Port.get_object(context, id\u003dport_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"8750f9b0_c3090f69","line":205,"updated":"2023-11-27 19:05:37.000000000","message":"I guess technically the API does say \"zero or more\" so this whole thing could basically be a no-op. For that reason I think all this code should be under this if, for example:\n\nif new_address_pairs:\n    mac \u003d ...\n    for ap in ...\n    with db_api ...\nport \u003d ...\n\nThat way we do no work except the port lookup.\n\nSame comment would apply below in the remove case.","commit_id":"17ab7783c5e57aa6d7b4954aa5766a9554661c75"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"74f88f628399ccb8fd3c79b68e1a9353fca1c228","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            if \u0027mac_address\u0027 not in ap:"},{"line_number":203,"context_line":"                ap[\u0027mac_address\u0027] \u003d str(mac)"},{"line_number":204,"context_line":"        with db_api.CONTEXT_WRITER.using(context):"},{"line_number":205,"context_line":"            if new_address_pairs:"},{"line_number":206,"context_line":"                self._create_allowed_address_pairs("},{"line_number":207,"context_line":"                    context, port_id, new_address_pairs)"},{"line_number":208,"context_line":"        port \u003d ports_obj.Port.get_object(context, id\u003dport_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"00abb089_7e6d613d","line":205,"in_reply_to":"8750f9b0_c3090f69","updated":"2023-11-28 08:55:03.000000000","message":"Done","commit_id":"17ab7783c5e57aa6d7b4954aa5766a9554661c75"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fceff1c5295b809594f6d9908547e36a0e26baa1","unresolved":true,"context_lines":[{"line_number":227,"context_line":"                            port_id\u003dport_id,"},{"line_number":228,"context_line":"                            mac_address\u003dmac_address,"},{"line_number":229,"context_line":"                            ip_address\u003dip_address)"},{"line_number":230,"context_line":"                    elif mac_address is None:"},{"line_number":231,"context_line":"                        pair_obj \u003d obj_addr_pair.AllowedAddressPair("},{"line_number":232,"context_line":"                            context,"},{"line_number":233,"context_line":"                            port_id\u003dport_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"84a0e145_663817aa","line":230,"updated":"2023-11-27 19:05:37.000000000","message":"This can just be \u0027else:\u0027 right?","commit_id":"17ab7783c5e57aa6d7b4954aa5766a9554661c75"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"74f88f628399ccb8fd3c79b68e1a9353fca1c228","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                            port_id\u003dport_id,"},{"line_number":228,"context_line":"                            mac_address\u003dmac_address,"},{"line_number":229,"context_line":"                            ip_address\u003dip_address)"},{"line_number":230,"context_line":"                    elif mac_address is None:"},{"line_number":231,"context_line":"                        pair_obj \u003d obj_addr_pair.AllowedAddressPair("},{"line_number":232,"context_line":"                            context,"},{"line_number":233,"context_line":"                            port_id\u003dport_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"02546544_7a12521b","line":230,"in_reply_to":"84a0e145_663817aa","updated":"2023-11-28 08:55:03.000000000","message":"Done","commit_id":"17ab7783c5e57aa6d7b4954aa5766a9554661c75"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"68ce7aa1d9d11749a3aa2c7bb7cbad631c94abc0","unresolved":true,"context_lines":[{"line_number":229,"context_line":"    def remove_allowed_address_pairs(self, context, port_id, body\u003dNone):"},{"line_number":230,"context_line":"        remove_address_pairs \u003d body[\u0027port\u0027][\u0027allowed_address_pairs\u0027]"},{"line_number":231,"context_line":"        if remove_address_pairs:"},{"line_number":232,"context_line":"            with db_api.CONTEXT_WRITER.using(context):"},{"line_number":233,"context_line":"                self._delete_allowed_address_pairs("},{"line_number":234,"context_line":"                    context, port_id, remove_address_pairs)"},{"line_number":235,"context_line":"        port \u003d ports_obj.Port.get_object(context, id\u003dport_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"d74a5f5b_9ad9bf39","line":232,"updated":"2023-11-28 20:59:37.000000000","message":"I guess you don\u0027t need this since it\u0027s done in _delete_allowed_address_pairs() ?","commit_id":"91831ea45f8ef842086b665aeb4d1f6452c35a5e"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"9be3a3071a096a8fefa6307c2644534b2af68906","unresolved":false,"context_lines":[{"line_number":229,"context_line":"    def remove_allowed_address_pairs(self, context, port_id, body\u003dNone):"},{"line_number":230,"context_line":"        remove_address_pairs \u003d body[\u0027port\u0027][\u0027allowed_address_pairs\u0027]"},{"line_number":231,"context_line":"        if remove_address_pairs:"},{"line_number":232,"context_line":"            with db_api.CONTEXT_WRITER.using(context):"},{"line_number":233,"context_line":"                self._delete_allowed_address_pairs("},{"line_number":234,"context_line":"                    context, port_id, remove_address_pairs)"},{"line_number":235,"context_line":"        port \u003d ports_obj.Port.get_object(context, id\u003dport_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba435b96_222d2f09","line":232,"in_reply_to":"d74a5f5b_9ad9bf39","updated":"2023-11-29 02:18:36.000000000","message":"yes, you are right, thanks for your review.","commit_id":"91831ea45f8ef842086b665aeb4d1f6452c35a5e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"68ce7aa1d9d11749a3aa2c7bb7cbad631c94abc0","unresolved":true,"context_lines":[{"line_number":231,"context_line":"        if remove_address_pairs:"},{"line_number":232,"context_line":"            with db_api.CONTEXT_WRITER.using(context):"},{"line_number":233,"context_line":"                self._delete_allowed_address_pairs("},{"line_number":234,"context_line":"                    context, port_id, remove_address_pairs)"},{"line_number":235,"context_line":"        port \u003d ports_obj.Port.get_object(context, id\u003dport_id)"},{"line_number":236,"context_line":"        return {\u0027port\u0027: self._make_port_dict(port)}"}],"source_content_type":"text/x-python","patch_set":9,"id":"502915d6_880c0dc2","line":234,"updated":"2023-11-28 20:59:37.000000000","message":"Is this the only caller passing the optional argument?","commit_id":"91831ea45f8ef842086b665aeb4d1f6452c35a5e"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"9be3a3071a096a8fefa6307c2644534b2af68906","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        if remove_address_pairs:"},{"line_number":232,"context_line":"            with db_api.CONTEXT_WRITER.using(context):"},{"line_number":233,"context_line":"                self._delete_allowed_address_pairs("},{"line_number":234,"context_line":"                    context, port_id, remove_address_pairs)"},{"line_number":235,"context_line":"        port \u003d ports_obj.Port.get_object(context, id\u003dport_id)"},{"line_number":236,"context_line":"        return {\u0027port\u0027: self._make_port_dict(port)}"}],"source_content_type":"text/x-python","patch_set":9,"id":"70dc48b0_02178c69","line":234,"in_reply_to":"502915d6_880c0dc2","updated":"2023-11-29 02:18:36.000000000","message":"There may also be calls when updating ports.","commit_id":"91831ea45f8ef842086b665aeb4d1f6452c35a5e"}],"neutron/tests/contrib/hooks/api_all_extensions":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fceff1c5295b809594f6d9908547e36a0e26baa1","unresolved":true,"context_lines":[{"line_number":79,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",trunk\""},{"line_number":80,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",trunk-details\""},{"line_number":81,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",uplink-status-propagation\""},{"line_number":82,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",allowed-address-pairs-atomic\""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"6d9bee9e_1afd5178","line":82,"updated":"2023-11-27 19:05:37.000000000","message":"Should be after L6 to keep list alphabetical","commit_id":"17ab7783c5e57aa6d7b4954aa5766a9554661c75"},{"author":{"_account_id":34125,"name":"huanghailun","display_name":"huanghailun","email":"hailun.huang@easystack.cn","username":"lnun"},"change_message_id":"74f88f628399ccb8fd3c79b68e1a9353fca1c228","unresolved":false,"context_lines":[{"line_number":79,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",trunk\""},{"line_number":80,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",trunk-details\""},{"line_number":81,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",uplink-status-propagation\""},{"line_number":82,"context_line":"NETWORK_API_EXTENSIONS+\u003d\",allowed-address-pairs-atomic\""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"79f1b45b_7d9033e1","line":82,"in_reply_to":"6d9bee9e_1afd5178","updated":"2023-11-28 08:55:03.000000000","message":"Done","commit_id":"17ab7783c5e57aa6d7b4954aa5766a9554661c75"}]}
