)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6af0b075cf3480065ea4e4380cf07fc32a1ca1ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7f2f5eda_78e92688","updated":"2026-04-28 12:28:00.000000000","message":"Some comments if a respin is needed","commit_id":"edad58fefe43f2a283275719c3d3e7bcf8bf7c3d"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"d2ff713f1f48f90b5af23c572289204452845b88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"22883df6_37f56c9a","updated":"2026-04-29 06:28:28.000000000","message":"recheck openstack-tox-pep8","commit_id":"fecac2cc888496a2ef4d0ce627e72cff13174703"}],"neutron/agent/ovn/metadata/agent.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"123e33b3226f39d43c5716c6386f029d6aadea23","unresolved":true,"context_lines":[{"line_number":626,"context_line":"        # Retrieve IPv4 addresses from the port mac column which is in form"},{"line_number":627,"context_line":"        # [\"\u003cport_mac\u003e \u003cip1\u003e \u003cip2\u003e ... \u003cipN\u003e\"]. Also return True if the port"},{"line_number":628,"context_line":"        # has at least one IPv6 address"},{"line_number":629,"context_line":"        if not port.mac:"},{"line_number":630,"context_line":"            LOG.warning(\"Port %s MAC column is empty, cannot retrieve IP \""},{"line_number":631,"context_line":"                        \"addresses\", port.uuid)"},{"line_number":632,"context_line":"            return [], False"}],"source_content_type":"text/x-python","patch_set":2,"id":"101cf1c9_9dab480e","line":629,"updated":"2026-04-27 12:13:54.000000000","message":"Wouldn\u0027t it be better to check if `port.mac \u003d\u003d [\"unknown\"]` for this specific case?","commit_id":"1be7a3b0eb5d62bd3b996c24384d99a141b0b2e0"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"77ea1e17e551208984ba32e626c3837c006930e3","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        # Retrieve IPv4 addresses from the port mac column which is in form"},{"line_number":627,"context_line":"        # [\"\u003cport_mac\u003e \u003cip1\u003e \u003cip2\u003e ... \u003cipN\u003e\"]. Also return True if the port"},{"line_number":628,"context_line":"        # has at least one IPv6 address"},{"line_number":629,"context_line":"        if not port.mac:"},{"line_number":630,"context_line":"            LOG.warning(\"Port %s MAC column is empty, cannot retrieve IP \""},{"line_number":631,"context_line":"                        \"addresses\", port.uuid)"},{"line_number":632,"context_line":"            return [], False"}],"source_content_type":"text/x-python","patch_set":2,"id":"96ba5716_68a347cb","line":629,"in_reply_to":"101cf1c9_9dab480e","updated":"2026-04-27 15:09:22.000000000","message":"Done","commit_id":"1be7a3b0eb5d62bd3b996c24384d99a141b0b2e0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2e87b79c88262c970306083e1df3dff2e91323a3","unresolved":true,"context_lines":[{"line_number":630,"context_line":"            LOG.warning(\"Port %s MAC column is not valid: %s, \""},{"line_number":631,"context_line":"                        \"cannot retrieve IP addresses\","},{"line_number":632,"context_line":"                        port.uuid, port.mac)"},{"line_number":633,"context_line":"            return [], False"},{"line_number":634,"context_line":"        mac, ips \u003d ovn_utils.get_mac_and_ips_from_port_binding(port)"},{"line_number":635,"context_line":"        if not ips:"},{"line_number":636,"context_line":"            LOG.debug(\"Port %s IP addresses were not retrieved from the \""}],"source_content_type":"text/x-python","patch_set":3,"id":"2c393de4_7a8e8f2a","line":633,"range":{"start_line":633,"start_character":13,"end_line":633,"end_character":28},"updated":"2026-04-28 11:06:17.000000000","message":"A couple of comments here:\n1) I\u0027m adding a new bug to report the issue with the number of elements returned in this method. This error was introduced by https://review.opendev.org/q/Ie15c3344161ad521bf10b98303c7bb730351e2d8. It is worth checking if that is also in D/S repos.\n2) For `port.mac \u003d\u003d [ovn_const.UNKNOWN_ADDR]` we should not log a warning. This is something expected, we can log an INFO message.","commit_id":"f810029f76504809b3b1f8f91df3135f2f58c778"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3441e465522cde12bed4616bc79a3877ae9eafc5","unresolved":true,"context_lines":[{"line_number":630,"context_line":"            LOG.warning(\"Port %s MAC column is not valid: %s, \""},{"line_number":631,"context_line":"                        \"cannot retrieve IP addresses\","},{"line_number":632,"context_line":"                        port.uuid, port.mac)"},{"line_number":633,"context_line":"            return [], False"},{"line_number":634,"context_line":"        mac, ips \u003d ovn_utils.get_mac_and_ips_from_port_binding(port)"},{"line_number":635,"context_line":"        if not ips:"},{"line_number":636,"context_line":"            LOG.debug(\"Port %s IP addresses were not retrieved from the \""}],"source_content_type":"text/x-python","patch_set":3,"id":"850c8b2f_99aa2054","line":633,"range":{"start_line":633,"start_character":13,"end_line":633,"end_character":28},"in_reply_to":"05b0f787_21dd4f5f","updated":"2026-04-28 12:04:12.000000000","message":"Since we have a different bug reported, let\u0027s split it into two patches.","commit_id":"f810029f76504809b3b1f8f91df3135f2f58c778"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"88aec7934a00ba436d379e83d27bcc27f96c501e","unresolved":true,"context_lines":[{"line_number":630,"context_line":"            LOG.warning(\"Port %s MAC column is not valid: %s, \""},{"line_number":631,"context_line":"                        \"cannot retrieve IP addresses\","},{"line_number":632,"context_line":"                        port.uuid, port.mac)"},{"line_number":633,"context_line":"            return [], False"},{"line_number":634,"context_line":"        mac, ips \u003d ovn_utils.get_mac_and_ips_from_port_binding(port)"},{"line_number":635,"context_line":"        if not ips:"},{"line_number":636,"context_line":"            LOG.debug(\"Port %s IP addresses were not retrieved from the \""}],"source_content_type":"text/x-python","patch_set":3,"id":"05b0f787_21dd4f5f","line":633,"range":{"start_line":633,"start_character":13,"end_line":633,"end_character":28},"in_reply_to":"2c393de4_7a8e8f2a","updated":"2026-04-28 11:08:31.000000000","message":"Bug reported, to be addressed in an independent patch: https://bugs.launchpad.net/neutron/+bug/2150543","commit_id":"f810029f76504809b3b1f8f91df3135f2f58c778"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"322a4267f00985a45015d1570965a0901720d015","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            LOG.warning(\"Port %s MAC column is not valid: %s, \""},{"line_number":631,"context_line":"                        \"cannot retrieve IP addresses\","},{"line_number":632,"context_line":"                        port.uuid, port.mac)"},{"line_number":633,"context_line":"            return [], False"},{"line_number":634,"context_line":"        mac, ips \u003d ovn_utils.get_mac_and_ips_from_port_binding(port)"},{"line_number":635,"context_line":"        if not ips:"},{"line_number":636,"context_line":"            LOG.debug(\"Port %s IP addresses were not retrieved from the \""}],"source_content_type":"text/x-python","patch_set":3,"id":"6c91ddd1_2484020a","line":633,"range":{"start_line":633,"start_character":13,"end_line":633,"end_character":28},"in_reply_to":"850c8b2f_99aa2054","updated":"2026-04-28 12:21:55.000000000","message":"Done","commit_id":"f810029f76504809b3b1f8f91df3135f2f58c778"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3441e465522cde12bed4616bc79a3877ae9eafc5","unresolved":true,"context_lines":[{"line_number":631,"context_line":"                        \"addresses\", port.uuid)"},{"line_number":632,"context_line":"            return [], False"},{"line_number":633,"context_line":"        if port.mac \u003d\u003d [ovn_const.UNKNOWN_ADDR]:"},{"line_number":634,"context_line":"            LOG.info(\"Port %s MAC column value is %s, cannot retrieve IP \""},{"line_number":635,"context_line":"                     \"addresses\", port.uuid, port.mac)"},{"line_number":636,"context_line":"            return [], False"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        mac, ips \u003d ovn_utils.get_mac_and_ips_from_port_binding(port)"}],"source_content_type":"text/x-python","patch_set":4,"id":"b964a0d7_07973412","line":635,"range":{"start_line":634,"start_character":0,"end_line":635,"end_character":54},"updated":"2026-04-28 12:04:12.000000000","message":"As the outcome is that this port will not have metadata service working, I\u0027d put a warning here and state that this port will not have metadata.","commit_id":"3ecb68e29eb7a56f362632535cd7ec9f8846316a"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"322a4267f00985a45015d1570965a0901720d015","unresolved":false,"context_lines":[{"line_number":631,"context_line":"                        \"addresses\", port.uuid)"},{"line_number":632,"context_line":"            return [], False"},{"line_number":633,"context_line":"        if port.mac \u003d\u003d [ovn_const.UNKNOWN_ADDR]:"},{"line_number":634,"context_line":"            LOG.info(\"Port %s MAC column value is %s, cannot retrieve IP \""},{"line_number":635,"context_line":"                     \"addresses\", port.uuid, port.mac)"},{"line_number":636,"context_line":"            return [], False"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        mac, ips \u003d ovn_utils.get_mac_and_ips_from_port_binding(port)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a44d3f61_0be7c6f5","line":635,"range":{"start_line":634,"start_character":0,"end_line":635,"end_character":54},"in_reply_to":"b964a0d7_07973412","updated":"2026-04-28 12:21:55.000000000","message":"Done","commit_id":"3ecb68e29eb7a56f362632535cd7ec9f8846316a"}],"neutron/tests/unit/agent/ovn/metadata/test_agent.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6af0b075cf3480065ea4e4380cf07fc32a1ca1ea","unresolved":true,"context_lines":[{"line_number":486,"context_line":"    def test__get_port_ip4_ips_and_ip6_flag_unknown_mac(self):"},{"line_number":487,"context_line":"        \"\"\"Should return empty IPs for ports with mac\u003d[\u0027unknown\u0027].\"\"\""},{"line_number":488,"context_line":"        port \u003d mock.Mock()"},{"line_number":489,"context_line":"        port.mac \u003d [\u0027unknown\u0027]"},{"line_number":490,"context_line":"        port.uuid \u003d \u0027fake-uuid\u0027"},{"line_number":491,"context_line":"        ip4_ips, any_ip6 \u003d self.agent._get_port_ip4_ips_and_ip6_flag(port)"},{"line_number":492,"context_line":"        self.assertEqual([], ip4_ips)"}],"source_content_type":"text/x-python","patch_set":5,"id":"62ee3f89_1b3cbd87","line":489,"range":{"start_line":489,"start_character":20,"end_line":489,"end_character":29},"updated":"2026-04-28 12:28:00.000000000","message":"nit: `ovn_const.UNKNOWN_ADDR`","commit_id":"edad58fefe43f2a283275719c3d3e7bcf8bf7c3d"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"e318435b965bddc1c0a0f70064bf640de395ef92","unresolved":false,"context_lines":[{"line_number":486,"context_line":"    def test__get_port_ip4_ips_and_ip6_flag_unknown_mac(self):"},{"line_number":487,"context_line":"        \"\"\"Should return empty IPs for ports with mac\u003d[\u0027unknown\u0027].\"\"\""},{"line_number":488,"context_line":"        port \u003d mock.Mock()"},{"line_number":489,"context_line":"        port.mac \u003d [\u0027unknown\u0027]"},{"line_number":490,"context_line":"        port.uuid \u003d \u0027fake-uuid\u0027"},{"line_number":491,"context_line":"        ip4_ips, any_ip6 \u003d self.agent._get_port_ip4_ips_and_ip6_flag(port)"},{"line_number":492,"context_line":"        self.assertEqual([], ip4_ips)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5e6de0e9_a47ba5d4","line":489,"range":{"start_line":489,"start_character":20,"end_line":489,"end_character":29},"in_reply_to":"62ee3f89_1b3cbd87","updated":"2026-04-28 13:06:53.000000000","message":"Done","commit_id":"edad58fefe43f2a283275719c3d3e7bcf8bf7c3d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6af0b075cf3480065ea4e4380cf07fc32a1ca1ea","unresolved":true,"context_lines":[{"line_number":492,"context_line":"        self.assertEqual([], ip4_ips)"},{"line_number":493,"context_line":"        self.assertFalse(any_ip6)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def test__get_provision_params_skips_port_with_unknown_mac(self):"},{"line_number":496,"context_line":"        \"\"\"Should skip ports with mac\u003d[\u0027unknown\u0027] and still return the"},{"line_number":497,"context_line":"        provision parameters from the valid ports."},{"line_number":498,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"de53481a_46234e1c","line":495,"updated":"2026-04-28 12:28:00.000000000","message":"nit: I\u0027d flip the two methods so the _get_provision_params are grouped together","commit_id":"edad58fefe43f2a283275719c3d3e7bcf8bf7c3d"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"e318435b965bddc1c0a0f70064bf640de395ef92","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        self.assertEqual([], ip4_ips)"},{"line_number":493,"context_line":"        self.assertFalse(any_ip6)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def test__get_provision_params_skips_port_with_unknown_mac(self):"},{"line_number":496,"context_line":"        \"\"\"Should skip ports with mac\u003d[\u0027unknown\u0027] and still return the"},{"line_number":497,"context_line":"        provision parameters from the valid ports."},{"line_number":498,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fed4372_b4f1de69","line":495,"in_reply_to":"de53481a_46234e1c","updated":"2026-04-28 13:06:53.000000000","message":"Done","commit_id":"edad58fefe43f2a283275719c3d3e7bcf8bf7c3d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6af0b075cf3480065ea4e4380cf07fc32a1ca1ea","unresolved":true,"context_lines":[{"line_number":493,"context_line":"        self.assertFalse(any_ip6)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def test__get_provision_params_skips_port_with_unknown_mac(self):"},{"line_number":496,"context_line":"        \"\"\"Should skip ports with mac\u003d[\u0027unknown\u0027] and still return the"},{"line_number":497,"context_line":"        provision parameters from the valid ports."},{"line_number":498,"context_line":"        \"\"\""},{"line_number":499,"context_line":"        network_id \u003d \u00271\u0027"},{"line_number":500,"context_line":"        datapath \u003d DatapathInfo(uuid\u003d\u0027test123\u0027,"},{"line_number":501,"context_line":"                                external_ids\u003d{\u0027name\u0027: f\u0027neutron-{network_id}\u0027})"}],"source_content_type":"text/x-python","patch_set":5,"id":"16a04bfd_48e97339","line":498,"range":{"start_line":496,"start_character":0,"end_line":498,"end_character":11},"updated":"2026-04-28 12:28:00.000000000","message":"nit: docstrings summary should be one-liner","commit_id":"edad58fefe43f2a283275719c3d3e7bcf8bf7c3d"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"e318435b965bddc1c0a0f70064bf640de395ef92","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        self.assertFalse(any_ip6)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def test__get_provision_params_skips_port_with_unknown_mac(self):"},{"line_number":496,"context_line":"        \"\"\"Should skip ports with mac\u003d[\u0027unknown\u0027] and still return the"},{"line_number":497,"context_line":"        provision parameters from the valid ports."},{"line_number":498,"context_line":"        \"\"\""},{"line_number":499,"context_line":"        network_id \u003d \u00271\u0027"},{"line_number":500,"context_line":"        datapath \u003d DatapathInfo(uuid\u003d\u0027test123\u0027,"},{"line_number":501,"context_line":"                                external_ids\u003d{\u0027name\u0027: f\u0027neutron-{network_id}\u0027})"}],"source_content_type":"text/x-python","patch_set":5,"id":"ceee9a47_e78ea760","line":498,"range":{"start_line":496,"start_character":0,"end_line":498,"end_character":11},"in_reply_to":"16a04bfd_48e97339","updated":"2026-04-28 13:06:53.000000000","message":"Done","commit_id":"edad58fefe43f2a283275719c3d3e7bcf8bf7c3d"}],"neutron/tests/unit/common/ovn/test_utils.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"123e33b3226f39d43c5716c6386f029d6aadea23","unresolved":true,"context_lines":[{"line_number":1335,"context_line":"        self.assertEqual([], ips)"},{"line_number":1336,"context_line":""},{"line_number":1337,"context_line":"    def test_get_mac_and_ips_from_port_binding_unknown_mac(self):"},{"line_number":1338,"context_line":"        pb \u003d self.FakePB(mac_column\u003d[\u0027unknown\u0027])"},{"line_number":1339,"context_line":"        self.assertRaises("},{"line_number":1340,"context_line":"            ValueError, utils.get_mac_and_ips_from_port_binding, pb)"},{"line_number":1341,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f2883b67_d7595a1d","line":1338,"updated":"2026-04-27 12:13:54.000000000","message":"I\u0027d consider this as a \"non-mac string\" test case, which is on L1325 already","commit_id":"1be7a3b0eb5d62bd3b996c24384d99a141b0b2e0"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"77ea1e17e551208984ba32e626c3837c006930e3","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"        self.assertEqual([], ips)"},{"line_number":1336,"context_line":""},{"line_number":1337,"context_line":"    def test_get_mac_and_ips_from_port_binding_unknown_mac(self):"},{"line_number":1338,"context_line":"        pb \u003d self.FakePB(mac_column\u003d[\u0027unknown\u0027])"},{"line_number":1339,"context_line":"        self.assertRaises("},{"line_number":1340,"context_line":"            ValueError, utils.get_mac_and_ips_from_port_binding, pb)"},{"line_number":1341,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"65e85faa_0315300e","line":1338,"in_reply_to":"f2883b67_d7595a1d","updated":"2026-04-27 15:09:22.000000000","message":"Done","commit_id":"1be7a3b0eb5d62bd3b996c24384d99a141b0b2e0"}]}
