)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e9057adf22c58b52e31f0e03cc1d0bdfe3414fb6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"316325ce_e2f4e102","updated":"2025-04-11 10:12:40.000000000","message":"**NOTE**: this patch and the base one [1] must be backported to 2025.1\n\n[1]https://review.opendev.org/c/openstack/neutron/+/946873/","commit_id":"4c54581c1185ded9e94565e6f160f0e34128d5fb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ece04fc79f3ae06b95225ec055ede87ce67ea911","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"512da978_bef9f900","updated":"2025-04-14 15:01:23.000000000","message":"recheck neutron-ovn-rally-task","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"}],"neutron/agent/metadata/agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b60c13338541d3a9a1cc7492ca5d0f6034495540","unresolved":true,"context_lines":[{"line_number":170,"context_line":"                return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            title \u003d \u0027404 Not Found\u0027"},{"line_number":173,"context_line":"            msg \u003d _(\u0027The instance was not found.\u0027)"},{"line_number":174,"context_line":"            LOG.warning(msg)"},{"line_number":175,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":176,"context_line":"            self.wfile.write(res)"}],"source_content_type":"text/x-python","patch_set":3,"id":"982554a5_b482bcbd","line":173,"updated":"2025-04-11 15:28:22.000000000","message":"Should we print the instance ID? Although this is both logged and returned.\nAnd my second question is do we need to log it? Should it be debug level? I don\u0027t have a strong opinion.","commit_id":"87e4c7c7c642fec7c15d66f2e9507059c9bcc51f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"08572c29d9ec8c7c346915e09ff584667a24f7e5","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            title \u003d \u0027404 Not Found\u0027"},{"line_number":173,"context_line":"            msg \u003d _(\u0027The instance was not found.\u0027)"},{"line_number":174,"context_line":"            LOG.warning(msg)"},{"line_number":175,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":176,"context_line":"            self.wfile.write(res)"}],"source_content_type":"text/x-python","patch_set":3,"id":"79240f99_dfb31041","line":173,"in_reply_to":"982554a5_b482bcbd","updated":"2025-04-14 10:28:20.000000000","message":"To be honest, I was a bit lazy when I added this message line. The instance ID depends on the backend. I\u0027ll implement this method.\n\nAbout the severity, this case should never happen: the network (for the OVN case and DHCP agent) or the router (L3 agent) must exist when the metadata is requested. If not, this proxy server should not be spawned. I would keep the warning level.","commit_id":"87e4c7c7c642fec7c15d66f2e9507059c9bcc51f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dc00579e75b0ba49284c071ad0bb8148b0cc1310","unresolved":true,"context_lines":[{"line_number":168,"context_line":"                res \u003d self._proxy_request(instance_id, project_id, req)"},{"line_number":169,"context_line":"                self.wfile.write(res)"},{"line_number":170,"context_line":"                return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            network_id, router_id \u003d self._get_instance_id(req)"},{"line_number":173,"context_line":"            title \u003d \u0027404 Not Found\u0027"},{"line_number":174,"context_line":"            if network_id and router_id:"}],"source_content_type":"text/x-python","patch_set":4,"id":"e0980a30_93dfc7ad","line":171,"updated":"2025-04-16 18:30:51.000000000","message":"Just writing a note here, more for myself.\n\nSo if we got here, instance_id was None.\n\nIn that case, either both network_id and router_id were provided, or the port was not found.\n\nIn the first case, self._get_instance_and_project() will have called LOG.debug with that info, in the second case nothing is logged.","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e930b2464a6e27533d94b94c96507fba308d448f","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                res \u003d self._proxy_request(instance_id, project_id, req)"},{"line_number":169,"context_line":"                self.wfile.write(res)"},{"line_number":170,"context_line":"                return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            network_id, router_id \u003d self._get_instance_id(req)"},{"line_number":173,"context_line":"            title \u003d \u0027404 Not Found\u0027"},{"line_number":174,"context_line":"            if network_id and router_id:"}],"source_content_type":"text/x-python","patch_set":4,"id":"85be0340_e342358b","line":171,"in_reply_to":"e0980a30_93dfc7ad","updated":"2025-04-22 07:15:41.000000000","message":"Done","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dc00579e75b0ba49284c071ad0bb8148b0cc1310","unresolved":true,"context_lines":[{"line_number":173,"context_line":"            title \u003d \u0027404 Not Found\u0027"},{"line_number":174,"context_line":"            if network_id and router_id:"},{"line_number":175,"context_line":"                msg \u003d _(f\u0027Both network {network_id} and router {router_id} \u0027"},{"line_number":176,"context_line":"                        f\u0027defined.\u0027)"},{"line_number":177,"context_line":"            elif network_id:"},{"line_number":178,"context_line":"                msg \u003d _(f\u0027The network {network_id} was not found.\u0027)"},{"line_number":179,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"2a3342fb_7dca3e6d","line":176,"updated":"2025-04-16 18:30:51.000000000","message":"This looks correct, but does result in two LOG calls with similar info.","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e930b2464a6e27533d94b94c96507fba308d448f","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            title \u003d \u0027404 Not Found\u0027"},{"line_number":174,"context_line":"            if network_id and router_id:"},{"line_number":175,"context_line":"                msg \u003d _(f\u0027Both network {network_id} and router {router_id} \u0027"},{"line_number":176,"context_line":"                        f\u0027defined.\u0027)"},{"line_number":177,"context_line":"            elif network_id:"},{"line_number":178,"context_line":"                msg \u003d _(f\u0027The network {network_id} was not found.\u0027)"},{"line_number":179,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7045d104_bc8f1ad2","line":176,"in_reply_to":"2a3342fb_7dca3e6d","updated":"2025-04-22 07:15:41.000000000","message":"Right, this one is not needed","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dc00579e75b0ba49284c071ad0bb8148b0cc1310","unresolved":true,"context_lines":[{"line_number":175,"context_line":"                msg \u003d _(f\u0027Both network {network_id} and router {router_id} \u0027"},{"line_number":176,"context_line":"                        f\u0027defined.\u0027)"},{"line_number":177,"context_line":"            elif network_id:"},{"line_number":178,"context_line":"                msg \u003d _(f\u0027The network {network_id} was not found.\u0027)"},{"line_number":179,"context_line":"            else:"},{"line_number":180,"context_line":"                msg \u003d _(f\u0027The router {router_id} was not found.\u0027)"},{"line_number":181,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae4cc91_4385a8a8","line":178,"updated":"2025-04-16 18:30:51.000000000","message":"In this case I\u0027m not sure the message is correct. All we know is the instance port was not found on the network, not that the network was not found, right? Maybe:\n\nf\u0027Instance was not found on network {network_id}.\u0027","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e930b2464a6e27533d94b94c96507fba308d448f","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                msg \u003d _(f\u0027Both network {network_id} and router {router_id} \u0027"},{"line_number":176,"context_line":"                        f\u0027defined.\u0027)"},{"line_number":177,"context_line":"            elif network_id:"},{"line_number":178,"context_line":"                msg \u003d _(f\u0027The network {network_id} was not found.\u0027)"},{"line_number":179,"context_line":"            else:"},{"line_number":180,"context_line":"                msg \u003d _(f\u0027The router {router_id} was not found.\u0027)"},{"line_number":181,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9afe8f37_b9e20928","line":178,"in_reply_to":"3ae4cc91_4385a8a8","updated":"2025-04-22 07:15:41.000000000","message":"Much better","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"dc00579e75b0ba49284c071ad0bb8148b0cc1310","unresolved":true,"context_lines":[{"line_number":177,"context_line":"            elif network_id:"},{"line_number":178,"context_line":"                msg \u003d _(f\u0027The network {network_id} was not found.\u0027)"},{"line_number":179,"context_line":"            else:"},{"line_number":180,"context_line":"                msg \u003d _(f\u0027The router {router_id} was not found.\u0027)"},{"line_number":181,"context_line":"            LOG.warning(msg)"},{"line_number":182,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":183,"context_line":"            self.wfile.write(res)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f42bb92_2bab5af0","line":180,"updated":"2025-04-16 18:30:51.000000000","message":"Similar comment to above.","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e930b2464a6e27533d94b94c96507fba308d448f","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            elif network_id:"},{"line_number":178,"context_line":"                msg \u003d _(f\u0027The network {network_id} was not found.\u0027)"},{"line_number":179,"context_line":"            else:"},{"line_number":180,"context_line":"                msg \u003d _(f\u0027The router {router_id} was not found.\u0027)"},{"line_number":181,"context_line":"            LOG.warning(msg)"},{"line_number":182,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":183,"context_line":"            self.wfile.write(res)"}],"source_content_type":"text/x-python","patch_set":4,"id":"273d16d0_31ab6961","line":180,"in_reply_to":"7f42bb92_2bab5af0","updated":"2025-04-22 07:15:41.000000000","message":"Done","commit_id":"b60ac85b1f7be78eb6c8d9e212ddca321c908867"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5a263c68094eb9407f4497b67743eb38c4c6e142","unresolved":true,"context_lines":[{"line_number":173,"context_line":"            title \u003d \u0027404 Not Found\u0027"},{"line_number":174,"context_line":"            if network_id and router_id:"},{"line_number":175,"context_line":"                msg \u003d _(f\u0027Both network {network_id} and router {router_id} \u0027"},{"line_number":176,"context_line":"                        f\u0027defined.\u0027)"},{"line_number":177,"context_line":"            elif network_id:"},{"line_number":178,"context_line":"                msg \u003d _(f\u0027Instance was not found on network {network_id}.\u0027)"},{"line_number":179,"context_line":"                LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"4f23b753_be4f5283","line":176,"updated":"2025-04-23 07:46:46.000000000","message":"if both are given, shouldn\u0027t we maybe raise BadRequest?","commit_id":"66bad6b62fb2c9a7e0f302ad4791fb316531ee5f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9b22c29ea094d017ec3c2d144e78f39e5227d831","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            title \u003d \u0027404 Not Found\u0027"},{"line_number":174,"context_line":"            if network_id and router_id:"},{"line_number":175,"context_line":"                msg \u003d _(f\u0027Both network {network_id} and router {router_id} \u0027"},{"line_number":176,"context_line":"                        f\u0027defined.\u0027)"},{"line_number":177,"context_line":"            elif network_id:"},{"line_number":178,"context_line":"                msg \u003d _(f\u0027Instance was not found on network {network_id}.\u0027)"},{"line_number":179,"context_line":"                LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"de39aa45_b3d254a4","line":176,"in_reply_to":"4f23b753_be4f5283","updated":"2025-04-23 09:09:38.000000000","message":"Right, this is the correct http code for this error. I\u0027ll update it.","commit_id":"66bad6b62fb2c9a7e0f302ad4791fb316531ee5f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5a263c68094eb9407f4497b67743eb38c4c6e142","unresolved":true,"context_lines":[{"line_number":180,"context_line":"            else:"},{"line_number":181,"context_line":"                msg \u003d _(f\u0027Instance was not found on router {router_id}.\u0027)"},{"line_number":182,"context_line":"                LOG.warning(msg)"},{"line_number":183,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":184,"context_line":"            self.wfile.write(res)"},{"line_number":185,"context_line":"        except Exception as exc:"},{"line_number":186,"context_line":"            LOG.exception(\u0027Error while receiving data.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"8f72000c_14643da1","line":183,"range":{"start_line":183,"start_character":54,"end_line":183,"end_character":59},"updated":"2025-04-23 07:46:46.000000000","message":"shouldn\u0027t this be http code?","commit_id":"66bad6b62fb2c9a7e0f302ad4791fb316531ee5f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"af76c00d6aba9085231847969c67e99e06093f7d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            else:"},{"line_number":181,"context_line":"                msg \u003d _(f\u0027Instance was not found on router {router_id}.\u0027)"},{"line_number":182,"context_line":"                LOG.warning(msg)"},{"line_number":183,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":184,"context_line":"            self.wfile.write(res)"},{"line_number":185,"context_line":"        except Exception as exc:"},{"line_number":186,"context_line":"            LOG.exception(\u0027Error while receiving data.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"de0372cf_01292d26","line":183,"range":{"start_line":183,"start_character":54,"end_line":183,"end_character":59},"in_reply_to":"332a201c_80c1e492","updated":"2025-04-23 10:01:58.000000000","message":"ok","commit_id":"66bad6b62fb2c9a7e0f302ad4791fb316531ee5f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9b22c29ea094d017ec3c2d144e78f39e5227d831","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            else:"},{"line_number":181,"context_line":"                msg \u003d _(f\u0027Instance was not found on router {router_id}.\u0027)"},{"line_number":182,"context_line":"                LOG.warning(msg)"},{"line_number":183,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":184,"context_line":"            self.wfile.write(res)"},{"line_number":185,"context_line":"        except Exception as exc:"},{"line_number":186,"context_line":"            LOG.exception(\u0027Error while receiving data.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"332a201c_80c1e492","line":183,"range":{"start_line":183,"start_character":54,"end_line":183,"end_character":59},"in_reply_to":"8f72000c_14643da1","updated":"2025-04-23 09:09:38.000000000","message":"This is coming from https://review.opendev.org/c/openstack/neutron/+/946873/4/neutron/common/metadata.py#75. We are using the same http code (in the header) and the title. For example:\n```\nHTTP/1.1 404 Not Found\nContent-Type: text/plain; charset\u003dUTF-8\nConnection: close\nContent-Length: {{ len }}\n\n\u003chtml\u003e\n \u003chead\u003e\n  \u003ctitle\u003e404 Not Found\u003c/title\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n  \u003ch1\u003e404 Not Found\u003c/h1\u003e\n  Instance was not found on network\u003cbr /\u003e\u003cbr /\u003e\n \u003c/body\u003e\n\u003c/html\u003e\n```","commit_id":"66bad6b62fb2c9a7e0f302ad4791fb316531ee5f"}],"neutron/agent/ovn/metadata/server_socket.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5a263c68094eb9407f4497b67743eb38c4c6e142","unresolved":true,"context_lines":[{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                msg \u003d _(f\u0027Instance was not found on router {router_id}.\u0027)"},{"line_number":158,"context_line":"                LOG.warning(msg)"},{"line_number":159,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":160,"context_line":"            self.wfile.write(res)"},{"line_number":161,"context_line":"        except Exception as exc:"},{"line_number":162,"context_line":"            LOG.exception(\u0027Error while receiving data.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"210c2b5c_ac86aad4","line":159,"updated":"2025-04-23 07:46:46.000000000","message":"same comments as in previous file applies here too. Also if we have all of this repeated twice, maybe it could be moved to some common helper method in e.g. MetadataProxyHandlerBaseSocketServer class and reused in both \"handle\" methods?","commit_id":"66bad6b62fb2c9a7e0f302ad4791fb316531ee5f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9b22c29ea094d017ec3c2d144e78f39e5227d831","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                msg \u003d _(f\u0027Instance was not found on router {router_id}.\u0027)"},{"line_number":158,"context_line":"                LOG.warning(msg)"},{"line_number":159,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":160,"context_line":"            self.wfile.write(res)"},{"line_number":161,"context_line":"        except Exception as exc:"},{"line_number":162,"context_line":"            LOG.exception(\u0027Error while receiving data.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dd2d629d_424d7465","line":159,"in_reply_to":"210c2b5c_ac86aad4","updated":"2025-04-23 09:09:38.000000000","message":"Yes, I\u0027m moving these methods and the class to a common one in follow-up patches.","commit_id":"66bad6b62fb2c9a7e0f302ad4791fb316531ee5f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"af76c00d6aba9085231847969c67e99e06093f7d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                msg \u003d _(f\u0027Instance was not found on router {router_id}.\u0027)"},{"line_number":158,"context_line":"                LOG.warning(msg)"},{"line_number":159,"context_line":"            res \u003d common_metadata.encode_http_reponse(title, title, msg)"},{"line_number":160,"context_line":"            self.wfile.write(res)"},{"line_number":161,"context_line":"        except Exception as exc:"},{"line_number":162,"context_line":"            LOG.exception(\u0027Error while receiving data.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"09d0b113_f2cb160a","line":159,"in_reply_to":"dd2d629d_424d7465","updated":"2025-04-23 10:01:58.000000000","message":"ok","commit_id":"66bad6b62fb2c9a7e0f302ad4791fb316531ee5f"}]}
