)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6d49f22cd3adc99ece3a352d855ac34c0bf9ff4b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c4c0e8d5_a5b6983f","updated":"2024-04-15 09:23:25.000000000","message":"Looks ok, let\u0027s wait for others to look at it","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"e4f735d52b53c47082b75853802f916b2c53b369","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f6659d4d_8f831f2f","updated":"2024-04-18 13:02:34.000000000","message":"Thanks for following up on this!\n\nI think this does not change behavior (as desired). I found one or two places where the changes are a bit confusing for future readers of the code.","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"ec99c20a3388a70b9f885051015bd245285372ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"65aa5e2c_80746d5b","in_reply_to":"f6659d4d_8f831f2f","updated":"2024-04-18 14:56:39.000000000","message":"Btw, I\u0027ll be on PTO for the next two weeks. Don\u0027t wait for my next review round. Just assume my +1 for the next patch set.","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7fe2dcbe2a824adf366637ee88675a23f513002f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b5c354a0_41017dab","updated":"2024-04-22 13:56:10.000000000","message":"Thanks Bence and Brian (and everybody who worked on this path )","commit_id":"7b4e9f8c26188713c6885b3851f1c11b33d78881"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"5f4fd769fa45e6f8fb6b1c6195062acd12a6c2d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1ca3acd2_7f34bf4b","updated":"2024-05-07 13:03:03.000000000","message":"Thanks Brian!","commit_id":"7b4e9f8c26188713c6885b3851f1c11b33d78881"}],"neutron/agent/metadata/agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"25f54d475d59aa19a3e0f505935650a1a15d0a46","unresolved":true,"context_lines":[{"line_number":56,"context_line":"    ROUTER_ID \u003d \u0027X-Neutron-Router-ID\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self, conf):"},{"line_number":59,"context_line":"        # Should the cache be common?"},{"line_number":60,"context_line":"        self._cache \u003d cache.get_cache(conf)"},{"line_number":61,"context_line":"        super().__init__(conf, self._cache)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"db6bbe6c_291e6739","line":59,"updated":"2024-03-27 14:46:17.000000000","message":"oops, will remove","commit_id":"8a2041222608d35645089542f357269f84c3c59b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"280dec2abc38f5597e928b87c2a3e1d6c4786f54","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    ROUTER_ID \u003d \u0027X-Neutron-Router-ID\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self, conf):"},{"line_number":59,"context_line":"        # Should the cache be common?"},{"line_number":60,"context_line":"        self._cache \u003d cache.get_cache(conf)"},{"line_number":61,"context_line":"        super().__init__(conf, self._cache)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9bd1db69_58157496","line":59,"in_reply_to":"db6bbe6c_291e6739","updated":"2024-03-27 14:50:57.000000000","message":"Done","commit_id":"8a2041222608d35645089542f357269f84c3c59b"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"e4f735d52b53c47082b75853802f916b2c53b369","unresolved":true,"context_lines":[{"line_number":122,"context_line":"                                                 skip_cache\u003dskip_cache)"},{"line_number":123,"context_line":"        else:"},{"line_number":124,"context_line":"            raise TypeError(_(\"Either one of parameter network_id or router_id\""},{"line_number":125,"context_line":"                              \" must be passed to get_ports method.\"))"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        ports \u003d self._get_ports_for_remote_address(remote_address, networks,"},{"line_number":128,"context_line":"                                                   remote_mac\u003dremote_mac,"}],"source_content_type":"text/x-python","patch_set":3,"id":"d8b5e8ad_4525fde0","line":125,"range":{"start_line":125,"start_character":58,"end_line":125,"end_character":59},"updated":"2024-04-18 13:02:34.000000000","message":"s/get_ports/get_port/","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dac7f1959d9b8cc0f1b84d03f125ef788681a324","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                                 skip_cache\u003dskip_cache)"},{"line_number":123,"context_line":"        else:"},{"line_number":124,"context_line":"            raise TypeError(_(\"Either one of parameter network_id or router_id\""},{"line_number":125,"context_line":"                              \" must be passed to get_ports method.\"))"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        ports \u003d self._get_ports_for_remote_address(remote_address, networks,"},{"line_number":128,"context_line":"                                                   remote_mac\u003dremote_mac,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bdbfabcf_52259e11","line":125,"range":{"start_line":125,"start_character":58,"end_line":125,"end_character":59},"in_reply_to":"d8b5e8ad_4525fde0","updated":"2024-04-18 22:02:12.000000000","message":"Done","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"e4f735d52b53c47082b75853802f916b2c53b369","unresolved":true,"context_lines":[{"line_number":129,"context_line":"                                                   skip_cache\u003dskip_cache)"},{"line_number":130,"context_line":"        LOG.debug(\"Got ports for remote_address %(remote_address)s, \""},{"line_number":131,"context_line":"                  \"network_id %(network_id)s, remote_mac %(remote_mac)s, \""},{"line_number":132,"context_line":"                  \"router_id %(router_id)s are: \""},{"line_number":133,"context_line":"                  \"%(ports)s\","},{"line_number":134,"context_line":"                  {\"remote_address\": remote_address,"},{"line_number":135,"context_line":"                   \"network_id\": network_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"10312c80_7919bc4f","line":132,"range":{"start_line":132,"start_character":43,"end_line":132,"end_character":46},"updated":"2024-04-18 13:02:34.000000000","message":"nit: \"are\" is not needed","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dac7f1959d9b8cc0f1b84d03f125ef788681a324","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                                                   skip_cache\u003dskip_cache)"},{"line_number":130,"context_line":"        LOG.debug(\"Got ports for remote_address %(remote_address)s, \""},{"line_number":131,"context_line":"                  \"network_id %(network_id)s, remote_mac %(remote_mac)s, \""},{"line_number":132,"context_line":"                  \"router_id %(router_id)s are: \""},{"line_number":133,"context_line":"                  \"%(ports)s\","},{"line_number":134,"context_line":"                  {\"remote_address\": remote_address,"},{"line_number":135,"context_line":"                   \"network_id\": network_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aba65f2_55506740","line":132,"range":{"start_line":132,"start_character":43,"end_line":132,"end_character":46},"in_reply_to":"10312c80_7919bc4f","updated":"2024-04-18 22:02:12.000000000","message":"Done","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"}],"neutron/agent/metadata/proxy_base.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d74241985f669fd632ab25afb75789c1526eaeba","unresolved":true,"context_lines":[{"line_number":218,"context_line":"                    mode \u003d config.ALL_MODE"},{"line_number":219,"context_line":"        return MODE_MAP[mode]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def run(self):"},{"line_number":222,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"0bbefd1a_7d6f2bbc","line":221,"updated":"2024-03-27 15:29:51.000000000","message":"Missing this here:\n\n@abc.abstractmethod","commit_id":"22d6e7b7083c7f34d029f2df27bc5b9da2924d5e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cf597235303a2a8e89fffa9cbd19229e1fe34eb4","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                    mode \u003d config.ALL_MODE"},{"line_number":219,"context_line":"        return MODE_MAP[mode]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def run(self):"},{"line_number":222,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"b45adafb_b993b839","line":221,"in_reply_to":"0bbefd1a_7d6f2bbc","updated":"2024-03-27 17:52:54.000000000","message":"Done","commit_id":"22d6e7b7083c7f34d029f2df27bc5b9da2924d5e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"e4f735d52b53c47082b75853802f916b2c53b369","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"ae5eb222_f0356e59","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":38},"updated":"2024-04-18 13:02:34.000000000","message":"nit: copy-pasted the wrong copyright line","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dac7f1959d9b8cc0f1b84d03f125ef788681a324","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"173a6844_98f3140a","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":38},"in_reply_to":"ae5eb222_f0356e59","updated":"2024-04-18 22:02:12.000000000","message":"Done","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"e4f735d52b53c47082b75853802f916b2c53b369","unresolved":true,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class MetadataProxyHandlerBase(object, metaclass\u003dabc.ABCMeta):"},{"line_number":43,"context_line":"    NETWORK_ID \u003d None"},{"line_number":44,"context_line":"    ROUTER_ID \u003d None"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, conf, has_cache\u003dFalse):"},{"line_number":47,"context_line":"        self.conf \u003d conf"},{"line_number":48,"context_line":"        self._has_cache \u003d has_cache"}],"source_content_type":"text/x-python","patch_set":3,"id":"6a9af7f7_73f82c95","line":45,"range":{"start_line":43,"start_character":0,"end_line":45,"end_character":1},"updated":"2024-04-18 13:02:34.000000000","message":"Confusing names. These are not network or router IDs, but header names.","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dac7f1959d9b8cc0f1b84d03f125ef788681a324","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class MetadataProxyHandlerBase(object, metaclass\u003dabc.ABCMeta):"},{"line_number":43,"context_line":"    NETWORK_ID \u003d None"},{"line_number":44,"context_line":"    ROUTER_ID \u003d None"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, conf, has_cache\u003dFalse):"},{"line_number":47,"context_line":"        self.conf \u003d conf"},{"line_number":48,"context_line":"        self._has_cache \u003d has_cache"}],"source_content_type":"text/x-python","patch_set":3,"id":"7c7f8889_3a5415e9","line":45,"range":{"start_line":43,"start_character":0,"end_line":45,"end_character":1},"in_reply_to":"6a9af7f7_73f82c95","updated":"2024-04-18 22:02:12.000000000","message":"Done","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"e4f735d52b53c47082b75853802f916b2c53b369","unresolved":true,"context_lines":[{"line_number":118,"context_line":"                # recognize."},{"line_number":119,"context_line":"                remote_mac \u003d str(netutils.get_mac_addr_by_ipv6(remote_ip))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        port_id, project_id \u003d self.get_port(forwarded_for,"},{"line_number":122,"context_line":"                                            network_id\u003dnetwork_id,"},{"line_number":123,"context_line":"                                            remote_mac\u003dremote_mac,"},{"line_number":124,"context_line":"                                            router_id\u003drouter_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"076db2ff_8f48c7e1","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":15},"updated":"2024-04-18 13:02:34.000000000","message":"This change is confusing. Originally _get_instance_and_tenant_id called _get_ports. The latter returned a port and this method extracted the instance and project ids and returned them. But now get_port returns an instance and poject id and here we call the instance_id port_id. I think we should keep the original logic.","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dac7f1959d9b8cc0f1b84d03f125ef788681a324","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                # recognize."},{"line_number":119,"context_line":"                remote_mac \u003d str(netutils.get_mac_addr_by_ipv6(remote_ip))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        port_id, project_id \u003d self.get_port(forwarded_for,"},{"line_number":122,"context_line":"                                            network_id\u003dnetwork_id,"},{"line_number":123,"context_line":"                                            remote_mac\u003dremote_mac,"},{"line_number":124,"context_line":"                                            router_id\u003drouter_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"12c9b945_e300eaa4","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":15},"in_reply_to":"076db2ff_8f48c7e1","updated":"2024-04-18 22:02:12.000000000","message":"Done","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c7718df7c738334ed18d94a1b61680bce5562fcc","unresolved":true,"context_lines":[{"line_number":200,"context_line":"    def __init__(self, conf):"},{"line_number":201,"context_line":"        self.conf \u003d conf"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def get_socket_mode(self):"},{"line_number":204,"context_line":"        mode \u003d self.conf.metadata_proxy_socket_mode"},{"line_number":205,"context_line":"        if mode \u003d\u003d config.DEDUCE_MODE:"},{"line_number":206,"context_line":"            user \u003d self.conf.metadata_proxy_user"}],"source_content_type":"text/x-python","patch_set":3,"id":"cee63d98_b4c00650","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":23},"updated":"2024-04-08 21:44:58.000000000","message":"nit: This one could still be a private method.","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dac7f1959d9b8cc0f1b84d03f125ef788681a324","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def __init__(self, conf):"},{"line_number":201,"context_line":"        self.conf \u003d conf"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def get_socket_mode(self):"},{"line_number":204,"context_line":"        mode \u003d self.conf.metadata_proxy_socket_mode"},{"line_number":205,"context_line":"        if mode \u003d\u003d config.DEDUCE_MODE:"},{"line_number":206,"context_line":"            user \u003d self.conf.metadata_proxy_user"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ca07762_1129fdc0","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":23},"in_reply_to":"cee63d98_b4c00650","updated":"2024-04-18 22:02:12.000000000","message":"True, can change if I need to push an update.","commit_id":"3b0e105e9cbeb0826610996482e9b6bc5a482406"}]}
