)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"eaad4bc3ead1863ec3da0ce648443a70187dbb3e","unresolved":true,"context_lines":[{"line_number":14,"context_line":"single sourced all of the metadata route policy into"},{"line_number":15,"context_line":"_get_metadata_port_route_ip."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"TODO: Unit test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1982569"},{"line_number":20,"context_line":"Related-Bug: https://bugzilla.redhat.com/show_bug.cgi?id\u003d2213862"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"e3037cc6_e2b324ed","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":15},"updated":"2023-07-28 13:41:43.000000000","message":"I think we should also add release note for this, wdyt?","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"26d132e18b5083399e0b50c93428bd6cf3eed344","unresolved":false,"context_lines":[{"line_number":14,"context_line":"single sourced all of the metadata route policy into"},{"line_number":15,"context_line":"_get_metadata_port_route_ip."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"TODO: Unit test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1982569"},{"line_number":20,"context_line":"Related-Bug: https://bugzilla.redhat.com/show_bug.cgi?id\u003d2213862"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"779794a6_ef1361a1","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":15},"in_reply_to":"2a2eecdd_b8242b1c","updated":"2023-08-25 21:14:20.000000000","message":"Done","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"1862f118dea7f0d33efff81670bd4daba8fd9ec9","unresolved":true,"context_lines":[{"line_number":14,"context_line":"single sourced all of the metadata route policy into"},{"line_number":15,"context_line":"_get_metadata_port_route_ip."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"TODO: Unit test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1982569"},{"line_number":20,"context_line":"Related-Bug: https://bugzilla.redhat.com/show_bug.cgi?id\u003d2213862"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"2a2eecdd_b8242b1c","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":15},"in_reply_to":"e3037cc6_e2b324ed","updated":"2023-08-22 07:12:00.000000000","message":"?","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"c1d365fa6f1ed2b00363c44c583f7bc7fab8f752","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d79257bb_89330b31","updated":"2023-07-25 18:36:12.000000000","message":"Hi Lucas. Can you take a look at this patch since you worked on the OVN baremetal node provision. If the approach looks good, I will add some tests. Thank you!","commit_id":"c45c1b6699093ed933cf42e9aeca3496ec5ff2d7"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"334d6dd9222685df005180d03614e9affb7c8048","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"03e4b574_0c13e96c","updated":"2023-07-26 12:57:52.000000000","message":"Needs tests","commit_id":"c45c1b6699093ed933cf42e9aeca3496ec5ff2d7"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"eaad4bc3ead1863ec3da0ce648443a70187dbb3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d7d8b8af_17fcf635","updated":"2023-07-28 13:41:43.000000000","message":"Thanks Miro for the last updates, some comments inline","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"d1d3eb8bdc2f51c8c92c4e0390238b5d8f99facd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d3996dad_964ae8fb","updated":"2023-08-16 20:22:43.000000000","message":"ping... review and see my responses to comments when you get a chance. thank you","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"9a4fd04f4620a0fd53731a91999f44e65b2ca3ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"90853a22_71adb186","updated":"2023-09-04 04:45:13.000000000","message":"recheck gate issue https://bugs.launchpad.net/neutron/+bug/2033752 fixed","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"a26f275de4e1263350798157c618715aa399508f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ed70d168_e3b3e1a1","updated":"2023-09-18 14:01:17.000000000","message":"Ping. Looking for reviews when you get a chance. Thank you!","commit_id":"82f2a21d1c9e27999d3fd7006a7ecf961039a370"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d6ce8e64260a7a2cefa7e6c747fcbd721f640b88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"793c8f12_762217d2","updated":"2023-10-31 09:06:54.000000000","message":"recheck\n\nunrelated failure","commit_id":"82f2a21d1c9e27999d3fd7006a7ecf961039a370"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3e9ee23a9e8fa97473cf1ed4161eb1f5b37b2b7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"66a8a1ff_2e619fcf","updated":"2023-10-04 01:54:32.000000000","message":"recheck bug https://bugs.launchpad.net/neutron/+bug/2037239","commit_id":"82f2a21d1c9e27999d3fd7006a7ecf961039a370"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"d950fdb7e9d559958b974f69faf850cfdc7d4608","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d13e9cd3_4b2855a6","updated":"2023-11-02 15:57:20.000000000","message":"recheck gate unrelated gate failure","commit_id":"82f2a21d1c9e27999d3fd7006a7ecf961039a370"}],"neutron/agent/linux/dhcp.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e313da4a75ae3b1576215a149511b92c92bfc39d","unresolved":true,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def _get_metadata_port_ip(self, subnet):"},{"line_number":1206,"context_line":"        m_ports \u003d [port for port in self.network.ports if port.device_id \u003d\u003d"},{"line_number":1207,"context_line":"            \u0027ovnmeta-\u0027 + self.network.id]"},{"line_number":1208,"context_line":"        if m_ports:"},{"line_number":1209,"context_line":"            for fixed_ip in m_ports[0].fixed_ips:"},{"line_number":1210,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"341dd582_e5f5664f","line":1207,"updated":"2023-06-26 17:58:51.000000000","message":"At a minimum this should be looking at port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"c80d6a0b671122ff5d5a45a5b60542a65243f640","unresolved":true,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def _get_metadata_port_ip(self, subnet):"},{"line_number":1206,"context_line":"        m_ports \u003d [port for port in self.network.ports if port.device_id \u003d\u003d"},{"line_number":1207,"context_line":"            \u0027ovnmeta-\u0027 + self.network.id]"},{"line_number":1208,"context_line":"        if m_ports:"},{"line_number":1209,"context_line":"            for fixed_ip in m_ports[0].fixed_ips:"},{"line_number":1210,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"b0aa70fa_84a02ae6","line":1207,"range":{"start_line":1207,"start_character":12,"end_line":1207,"end_character":22},"updated":"2023-07-20 20:17:05.000000000","message":"We could move this constant to neutron constants and resuse it here.\nhttps://opendev.org/openstack/neutron/src/commit/dc1b7851af9a7197383c2bb7a1a21c699d870f4a/neutron/agent/ovn/metadata/agent.py#L49","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"8f88b52b07032d438ac8c9c0051eadb36ecdd96b","unresolved":true,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def _get_metadata_port_ip(self, subnet):"},{"line_number":1206,"context_line":"        m_ports \u003d [port for port in self.network.ports if port.device_id \u003d\u003d"},{"line_number":1207,"context_line":"            \u0027ovnmeta-\u0027 + self.network.id]"},{"line_number":1208,"context_line":"        if m_ports:"},{"line_number":1209,"context_line":"            for fixed_ip in m_ports[0].fixed_ips:"},{"line_number":1210,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ac2ed41d_9bbd02cd","line":1207,"in_reply_to":"341dd582_e5f5664f","updated":"2023-06-27 06:34:11.000000000","message":"device_id not enough in this case? i took it from https://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L2326","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"334d6dd9222685df005180d03614e9affb7c8048","unresolved":false,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def _get_metadata_port_ip(self, subnet):"},{"line_number":1206,"context_line":"        m_ports \u003d [port for port in self.network.ports if port.device_id \u003d\u003d"},{"line_number":1207,"context_line":"            \u0027ovnmeta-\u0027 + self.network.id]"},{"line_number":1208,"context_line":"        if m_ports:"},{"line_number":1209,"context_line":"            for fixed_ip in m_ports[0].fixed_ips:"},{"line_number":1210,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"169f4122_ec0fb225","line":1207,"in_reply_to":"6e90b551_60da1d67","updated":"2023-07-26 12:57:52.000000000","message":"Done","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"dda3e428ed9caf13e94a33edbcc1cf1cd6f5717a","unresolved":false,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def _get_metadata_port_ip(self, subnet):"},{"line_number":1206,"context_line":"        m_ports \u003d [port for port in self.network.ports if port.device_id \u003d\u003d"},{"line_number":1207,"context_line":"            \u0027ovnmeta-\u0027 + self.network.id]"},{"line_number":1208,"context_line":"        if m_ports:"},{"line_number":1209,"context_line":"            for fixed_ip in m_ports[0].fixed_ips:"},{"line_number":1210,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"645615a2_937fef29","line":1207,"range":{"start_line":1207,"start_character":12,"end_line":1207,"end_character":22},"in_reply_to":"a14951a2_9949fd43","updated":"2023-08-03 19:04:44.000000000","message":"Done","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"c1d365fa6f1ed2b00363c44c583f7bc7fab8f752","unresolved":true,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def _get_metadata_port_ip(self, subnet):"},{"line_number":1206,"context_line":"        m_ports \u003d [port for port in self.network.ports if port.device_id \u003d\u003d"},{"line_number":1207,"context_line":"            \u0027ovnmeta-\u0027 + self.network.id]"},{"line_number":1208,"context_line":"        if m_ports:"},{"line_number":1209,"context_line":"            for fixed_ip in m_ports[0].fixed_ips:"},{"line_number":1210,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a14951a2_9949fd43","line":1207,"range":{"start_line":1207,"start_character":12,"end_line":1207,"end_character":22},"in_reply_to":"aa2abbcf_605ca373","updated":"2023-07-25 18:36:12.000000000","message":"I dont think it will hurt to check for both. i.e. device_id starts with ovn- and that device owner is distributed. Let me know if you agree with my latest logic.\n(FYI, I took over this patch from Yatin)","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8701c446236eed039e9528d7d48689c07b74e8d3","unresolved":true,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def _get_metadata_port_ip(self, subnet):"},{"line_number":1206,"context_line":"        m_ports \u003d [port for port in self.network.ports if port.device_id \u003d\u003d"},{"line_number":1207,"context_line":"            \u0027ovnmeta-\u0027 + self.network.id]"},{"line_number":1208,"context_line":"        if m_ports:"},{"line_number":1209,"context_line":"            for fixed_ip in m_ports[0].fixed_ips:"},{"line_number":1210,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"6e90b551_60da1d67","line":1207,"in_reply_to":"ac2ed41d_9bbd02cd","updated":"2023-06-27 20:11:46.000000000","message":"Just above that in _find_metadata_port() only the device_owner is used, so I was trying to be consistent.\n\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L2297","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"880f97eb2cf4809361da7efe39171429ef379e87","unresolved":true,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def _get_metadata_port_ip(self, subnet):"},{"line_number":1206,"context_line":"        m_ports \u003d [port for port in self.network.ports if port.device_id \u003d\u003d"},{"line_number":1207,"context_line":"            \u0027ovnmeta-\u0027 + self.network.id]"},{"line_number":1208,"context_line":"        if m_ports:"},{"line_number":1209,"context_line":"            for fixed_ip in m_ports[0].fixed_ips:"},{"line_number":1210,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"aa2abbcf_605ca373","line":1207,"range":{"start_line":1207,"start_character":12,"end_line":1207,"end_character":22},"in_reply_to":"b0aa70fa_84a02ae6","updated":"2023-07-20 21:45:09.000000000","message":"\u0027ovnmeta-\u0027 is a prefix used in the device_id field, but the ovn_client.py code only uses it on create, not for looking up:\n\ndef is_metadata_port(port):\n    return port[\u0027device_owner\u0027] \u003d\u003d const.DEVICE_OWNER_DISTRIBUTED","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e313da4a75ae3b1576215a149511b92c92bfc39d","unresolved":true,"context_lines":[{"line_number":1268,"context_line":"            if metadata_ip:"},{"line_number":1269,"context_line":"                host_routes.append("},{"line_number":1270,"context_line":"                    \u0027%s,%s\u0027 % (constants.METADATA_CIDR, metadata_ip)"},{"line_number":1271,"context_line":"                )"},{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"            # Add host routes for isolated network segments"},{"line_number":1274,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5563d852_e751cb0a","line":1271,"updated":"2023-06-26 17:58:51.000000000","message":"Should only be for IPV4 subnets, correct?","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"8f88b52b07032d438ac8c9c0051eadb36ecdd96b","unresolved":true,"context_lines":[{"line_number":1268,"context_line":"            if metadata_ip:"},{"line_number":1269,"context_line":"                host_routes.append("},{"line_number":1270,"context_line":"                    \u0027%s,%s\u0027 % (constants.METADATA_CIDR, metadata_ip)"},{"line_number":1271,"context_line":"                )"},{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"            # Add host routes for isolated network segments"},{"line_number":1274,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d4f570ae_70daeb4b","line":1271,"in_reply_to":"5563d852_e751cb0a","updated":"2023-06-27 06:34:11.000000000","message":"yes correct will fix in next PS.","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"8ad3c304857f2bb3f210e42da332cbadfc71faa3","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"            if metadata_ip:"},{"line_number":1269,"context_line":"                host_routes.append("},{"line_number":1270,"context_line":"                    \u0027%s,%s\u0027 % (constants.METADATA_CIDR, metadata_ip)"},{"line_number":1271,"context_line":"                )"},{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"            # Add host routes for isolated network segments"},{"line_number":1274,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e880696f_aed8a9dd","line":1271,"in_reply_to":"d4f570ae_70daeb4b","updated":"2023-07-25 19:42:42.000000000","message":"Done","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e313da4a75ae3b1576215a149511b92c92bfc39d","unresolved":true,"context_lines":[{"line_number":1284,"context_line":"            elif not isolated_subnets[subnet.id] and gateway:"},{"line_number":1285,"context_line":"                host_routes.append("},{"line_number":1286,"context_line":"                    \u0027%s,%s\u0027 % (constants.METADATA_CIDR, gateway)"},{"line_number":1287,"context_line":"                )"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"            if subnet.ip_version \u003d\u003d 4:"},{"line_number":1290,"context_line":"                for s in self._get_all_subnets(self.network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4eec3f4_b88c3457","line":1287,"updated":"2023-06-26 17:58:51.000000000","message":"So here we could add a second metadata route? This seems to be the line that\u0027s inserting the route via the gateway as described in the bug.\n\nIs the decision purely based on the above port being present? In which case we don\u0027t want to do this at all. Almost seems like all this logic here could live in a sub-method that returns a single IP for metadata (if present).","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"334d6dd9222685df005180d03614e9affb7c8048","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"            elif not isolated_subnets[subnet.id] and gateway:"},{"line_number":1285,"context_line":"                host_routes.append("},{"line_number":1286,"context_line":"                    \u0027%s,%s\u0027 % (constants.METADATA_CIDR, gateway)"},{"line_number":1287,"context_line":"                )"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"            if subnet.ip_version \u003d\u003d 4:"},{"line_number":1290,"context_line":"                for s in self._get_all_subnets(self.network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9205b39f_72ebfaa7","line":1287,"in_reply_to":"7da755af_1ab13258","updated":"2023-07-26 12:57:52.000000000","message":"Done","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8701c446236eed039e9528d7d48689c07b74e8d3","unresolved":true,"context_lines":[{"line_number":1284,"context_line":"            elif not isolated_subnets[subnet.id] and gateway:"},{"line_number":1285,"context_line":"                host_routes.append("},{"line_number":1286,"context_line":"                    \u0027%s,%s\u0027 % (constants.METADATA_CIDR, gateway)"},{"line_number":1287,"context_line":"                )"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"            if subnet.ip_version \u003d\u003d 4:"},{"line_number":1290,"context_line":"                for s in self._get_all_subnets(self.network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7da755af_1ab13258","line":1287,"in_reply_to":"b440ecd4_5b0c2fd4","updated":"2023-06-27 20:11:46.000000000","message":"I guess I don\u0027t see another way to fix it as we only want to send a single route to the metadata IP.\n\nShould also have a bigger comment as it might not be intuitive why we are returning the OVN metadata port IP in the non-OVN dhcp-agent code, instead of just using the gateway IP.","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"8f88b52b07032d438ac8c9c0051eadb36ecdd96b","unresolved":true,"context_lines":[{"line_number":1284,"context_line":"            elif not isolated_subnets[subnet.id] and gateway:"},{"line_number":1285,"context_line":"                host_routes.append("},{"line_number":1286,"context_line":"                    \u0027%s,%s\u0027 % (constants.METADATA_CIDR, gateway)"},{"line_number":1287,"context_line":"                )"},{"line_number":1288,"context_line":""},{"line_number":1289,"context_line":"            if subnet.ip_version \u003d\u003d 4:"},{"line_number":1290,"context_line":"                for s in self._get_all_subnets(self.network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b440ecd4_5b0c2fd4","line":1287,"in_reply_to":"b4eec3f4_b88c3457","updated":"2023-06-27 06:34:11.000000000","message":"Yes right it\u0027s the place adding the route in the bug.\n\nI was trying to avoid messing with as it seems to be handling multiple use cases.\n\nThe metadata route required for baremetal use case should be added now and let the deployment tools handle this, as force_metadata, isolated_metadata shouldn\u0027t be needed with ovn + neutron dhcp.\n\nBut yes could be done with single method returning metadata_ip with different use case as you suggest but with that force_metadata and other related config would just be ignored in case of metadata port exists.","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"eaad4bc3ead1863ec3da0ce648443a70187dbb3e","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"        DHCP agent policy for determining the IP for metadata port routing."},{"line_number":1218,"context_line":"        \"\"\""},{"line_number":1219,"context_line":"        if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":1220,"context_line":"            # NOTE: DHCP agent can be deployed concurrently with the"},{"line_number":1221,"context_line":"            # ovn-controller on baremetal nodes.This is because ovn-controller"},{"line_number":1222,"context_line":"            # dhcp does not support setting up a metadata route for the"},{"line_number":1223,"context_line":"            # ovn metadata agent."},{"line_number":1224,"context_line":"            ovn_metadata_port_ip \u003d self._get_ovn_metadata_port_ip(subnet)"},{"line_number":1225,"context_line":"            if ovn_metadata_port_ip:"},{"line_number":1226,"context_line":"                return ovn_metadata_port_ip"}],"source_content_type":"text/x-python","patch_set":3,"id":"c9cf9044_9b11dfca","line":1223,"range":{"start_line":1220,"start_character":0,"end_line":1223,"end_character":33},"updated":"2023-07-28 13:41:43.000000000","message":"This is quite not true from what i understood but Lucas can correct me.\n- DHCP agent can be deployed concurrently with the ovn-controller for serving DHCP to the baremetal ports \n- OVN Controller does add metadata route when ovn-dhcp is enabled for baremetal ports(zed+ supports it with https://review.opendev.org/c/openstack/neutron/+/840316 with an option to disable it). Additionally OVN22.06 is required.\n- The issue is when ovn-dhcp is disabled for baremetal ports(implicitly before zed and explicitly after zed+) and neutron dhcp agent is enabled, at that time neutron-dhcp get\u0027s used and add these wrong routes due to config force_metadata or enable_isolated_metadata","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"963363e695e312cc91718cbede7b01630642d420","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"        DHCP agent policy for determining the IP for metadata port routing."},{"line_number":1218,"context_line":"        \"\"\""},{"line_number":1219,"context_line":"        if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":1220,"context_line":"            # NOTE: DHCP agent can be deployed concurrently with the"},{"line_number":1221,"context_line":"            # ovn-controller on baremetal nodes.This is because ovn-controller"},{"line_number":1222,"context_line":"            # dhcp does not support setting up a metadata route for the"},{"line_number":1223,"context_line":"            # ovn metadata agent."},{"line_number":1224,"context_line":"            ovn_metadata_port_ip \u003d self._get_ovn_metadata_port_ip(subnet)"},{"line_number":1225,"context_line":"            if ovn_metadata_port_ip:"},{"line_number":1226,"context_line":"                return ovn_metadata_port_ip"}],"source_content_type":"text/x-python","patch_set":3,"id":"078696ee_f0b30f32","line":1223,"range":{"start_line":1220,"start_character":0,"end_line":1223,"end_character":33},"in_reply_to":"4db967c1_226167a2","updated":"2023-08-25 21:14:04.000000000","message":"Done","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"c871342451c114c8ba3578b26123934812c1e589","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"        DHCP agent policy for determining the IP for metadata port routing."},{"line_number":1218,"context_line":"        \"\"\""},{"line_number":1219,"context_line":"        if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":1220,"context_line":"            # NOTE: DHCP agent can be deployed concurrently with the"},{"line_number":1221,"context_line":"            # ovn-controller on baremetal nodes.This is because ovn-controller"},{"line_number":1222,"context_line":"            # dhcp does not support setting up a metadata route for the"},{"line_number":1223,"context_line":"            # ovn metadata agent."},{"line_number":1224,"context_line":"            ovn_metadata_port_ip \u003d self._get_ovn_metadata_port_ip(subnet)"},{"line_number":1225,"context_line":"            if ovn_metadata_port_ip:"},{"line_number":1226,"context_line":"                return ovn_metadata_port_ip"}],"source_content_type":"text/x-python","patch_set":3,"id":"4db967c1_226167a2","line":1223,"range":{"start_line":1220,"start_character":0,"end_line":1223,"end_character":33},"in_reply_to":"c9cf9044_9b11dfca","updated":"2023-08-02 17:29:41.000000000","message":"Ack","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f90cf29e9b2d800034d94463c96026f9c887af65","unresolved":true,"context_lines":[{"line_number":1230,"context_line":"                    (isolated_subnets[subnet.id] and"},{"line_number":1231,"context_line":"                    self.conf.enable_isolated_metadata)):"},{"line_number":1232,"context_line":"                subnet_dhcp_ip \u003d self._make_subnet_interface_ip_map() \\"},{"line_number":1233,"context_line":"                    .get(subnet.id)"},{"line_number":1234,"context_line":"                if subnet_dhcp_ip:"},{"line_number":1235,"context_line":"                    return subnet_dhcp_ip"},{"line_number":1236,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"85799e21_0c442fad","line":1233,"updated":"2023-08-01 18:32:39.000000000","message":"This is now causing multiple calls to get IP information in the namespace, where as before it was a single time being at the beginning of the function. I don\u0027t think it is the right thing to do.","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"c871342451c114c8ba3578b26123934812c1e589","unresolved":true,"context_lines":[{"line_number":1230,"context_line":"                    (isolated_subnets[subnet.id] and"},{"line_number":1231,"context_line":"                    self.conf.enable_isolated_metadata)):"},{"line_number":1232,"context_line":"                subnet_dhcp_ip \u003d self._make_subnet_interface_ip_map() \\"},{"line_number":1233,"context_line":"                    .get(subnet.id)"},{"line_number":1234,"context_line":"                if subnet_dhcp_ip:"},{"line_number":1235,"context_line":"                    return subnet_dhcp_ip"},{"line_number":1236,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"f8c34e5b_26e977fc","line":1233,"in_reply_to":"85799e21_0c442fad","updated":"2023-08-02 17:29:41.000000000","message":"good call. Let me see if I can do something about that","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"dda3e428ed9caf13e94a33edbcc1cf1cd6f5717a","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"                    (isolated_subnets[subnet.id] and"},{"line_number":1231,"context_line":"                    self.conf.enable_isolated_metadata)):"},{"line_number":1232,"context_line":"                subnet_dhcp_ip \u003d self._make_subnet_interface_ip_map() \\"},{"line_number":1233,"context_line":"                    .get(subnet.id)"},{"line_number":1234,"context_line":"                if subnet_dhcp_ip:"},{"line_number":1235,"context_line":"                    return subnet_dhcp_ip"},{"line_number":1236,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ce82ba71_8be02ded","line":1233,"in_reply_to":"f8c34e5b_26e977fc","updated":"2023-08-03 19:04:44.000000000","message":"Done","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"eaad4bc3ead1863ec3da0ce648443a70187dbb3e","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"                if subnet_dhcp_ip:"},{"line_number":1235,"context_line":"                    return subnet_dhcp_ip"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"            if not isolated_subnets[subnet.id] and subnet.gateway_ip:"},{"line_number":1238,"context_line":"                return subnet.gateway_ip"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"    def _generate_opts_per_subnet(self):"},{"line_number":1241,"context_line":"        options \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"65c834f6_56c10763","line":1238,"range":{"start_line":1237,"start_character":0,"end_line":1238,"end_character":40},"updated":"2023-07-28 13:41:43.000000000","message":"Previously this seems to be set even for ipv6 but now not.","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"1862f118dea7f0d33efff81670bd4daba8fd9ec9","unresolved":false,"context_lines":[{"line_number":1234,"context_line":"                if subnet_dhcp_ip:"},{"line_number":1235,"context_line":"                    return subnet_dhcp_ip"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"            if not isolated_subnets[subnet.id] and subnet.gateway_ip:"},{"line_number":1238,"context_line":"                return subnet.gateway_ip"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"    def _generate_opts_per_subnet(self):"},{"line_number":1241,"context_line":"        options \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"22aa8201_cd461cc3","line":1238,"range":{"start_line":1237,"start_character":0,"end_line":1238,"end_character":40},"in_reply_to":"035801be_84ae8f1d","updated":"2023-08-22 07:12:00.000000000","message":"ack","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"dda3e428ed9caf13e94a33edbcc1cf1cd6f5717a","unresolved":false,"context_lines":[{"line_number":1234,"context_line":"                if subnet_dhcp_ip:"},{"line_number":1235,"context_line":"                    return subnet_dhcp_ip"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"            if not isolated_subnets[subnet.id] and subnet.gateway_ip:"},{"line_number":1238,"context_line":"                return subnet.gateway_ip"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"    def _generate_opts_per_subnet(self):"},{"line_number":1241,"context_line":"        options \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"035801be_84ae8f1d","line":1238,"range":{"start_line":1237,"start_character":0,"end_line":1238,"end_character":40},"in_reply_to":"1ad87950_dc3755e0","updated":"2023-08-03 19:04:44.000000000","message":"Done","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"c871342451c114c8ba3578b26123934812c1e589","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"                if subnet_dhcp_ip:"},{"line_number":1235,"context_line":"                    return subnet_dhcp_ip"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"            if not isolated_subnets[subnet.id] and subnet.gateway_ip:"},{"line_number":1238,"context_line":"                return subnet.gateway_ip"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"    def _generate_opts_per_subnet(self):"},{"line_number":1241,"context_line":"        options \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ad87950_dc3755e0","line":1238,"range":{"start_line":1237,"start_character":0,"end_line":1238,"end_character":40},"in_reply_to":"65c834f6_56c10763","updated":"2023-08-02 17:29:41.000000000","message":"Ack","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f90cf29e9b2d800034d94463c96026f9c887af65","unresolved":true,"context_lines":[{"line_number":1234,"context_line":"                if subnet_dhcp_ip:"},{"line_number":1235,"context_line":"                    return subnet_dhcp_ip"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"            if not isolated_subnets[subnet.id] and subnet.gateway_ip:"},{"line_number":1238,"context_line":"                return subnet.gateway_ip"},{"line_number":1239,"context_line":""},{"line_number":1240,"context_line":"    def _generate_opts_per_subnet(self):"},{"line_number":1241,"context_line":"        options \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"998d8c0a_e3ab7495","line":1238,"range":{"start_line":1237,"start_character":0,"end_line":1238,"end_character":40},"in_reply_to":"65c834f6_56c10763","updated":"2023-08-01 18:32:39.000000000","message":"I actually don\u0027t think host routed in IPv6 are valid in a DHCP response, so this is maybe Ok, at least that\u0027s what I\u0027m remembering from another metadata change I was making. L1296 below only ever uses the IPv4 constant, and L1299 is IPv4-specific.","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f90cf29e9b2d800034d94463c96026f9c887af65","unresolved":true,"context_lines":[{"line_number":1272,"context_line":"                # Here is something to check still"},{"line_number":1273,"context_line":"                subnets_without_nameservers.add(subnet.id)"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"            if self.conf.dns_domain and \\"},{"line_number":1276,"context_line":"                    subnet.ip_version \u003d\u003d constants.IP_VERSION_6:"},{"line_number":1277,"context_line":"                # This should be change also"},{"line_number":1278,"context_line":"                options.append("}],"source_content_type":"text/x-python","patch_set":3,"id":"5fedc399_58b7acb3","line":1275,"range":{"start_line":1275,"start_character":40,"end_line":1275,"end_character":41},"updated":"2023-08-01 18:32:39.000000000","message":"I think changing 6 to the constant in existing code should be in another change, as there are a lot of places in the tree that need it, and it could make backporting harder. But if you\u0027re going to do it here please don\u0027t use \\ and instead put a () around the condition.","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"dda3e428ed9caf13e94a33edbcc1cf1cd6f5717a","unresolved":false,"context_lines":[{"line_number":1272,"context_line":"                # Here is something to check still"},{"line_number":1273,"context_line":"                subnets_without_nameservers.add(subnet.id)"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"            if self.conf.dns_domain and \\"},{"line_number":1276,"context_line":"                    subnet.ip_version \u003d\u003d constants.IP_VERSION_6:"},{"line_number":1277,"context_line":"                # This should be change also"},{"line_number":1278,"context_line":"                options.append("}],"source_content_type":"text/x-python","patch_set":3,"id":"46083f5e_420666a6","line":1275,"range":{"start_line":1275,"start_character":40,"end_line":1275,"end_character":41},"in_reply_to":"5fedc399_58b7acb3","updated":"2023-08-03 19:04:44.000000000","message":"Ack","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"eaad4bc3ead1863ec3da0ce648443a70187dbb3e","unresolved":true,"context_lines":[{"line_number":1462,"context_line":"        return False"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    @classmethod"},{"line_number":1465,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1466,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        This method returns True for truly isolated networks (ie: not attached"},{"line_number":1469,"context_line":"        to a router) when enable_isolated_metadata is True, or for all the"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ba12c9d_33f4a510","line":1466,"range":{"start_line":1465,"start_character":0,"end_line":1466,"end_character":71},"updated":"2023-07-28 13:41:43.000000000","message":"When looking more seems we would need to update this method too so metadata proxy not get\u0027s spawned when ovn metadata is deployed along?","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"dda3e428ed9caf13e94a33edbcc1cf1cd6f5717a","unresolved":true,"context_lines":[{"line_number":1462,"context_line":"        return False"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    @classmethod"},{"line_number":1465,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1466,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        This method returns True for truly isolated networks (ie: not attached"},{"line_number":1469,"context_line":"        to a router) when enable_isolated_metadata is True, or for all the"}],"source_content_type":"text/x-python","patch_set":3,"id":"bb584675_a3d17b12","line":1466,"range":{"start_line":1465,"start_character":0,"end_line":1466,"end_character":71},"in_reply_to":"9ba12c9d_33f4a510","updated":"2023-08-03 19:04:44.000000000","message":"For now, I am going to make that decision based on the fact that ovn_port is part of the network. But I am wondering if we should maybe have a dedicated conf variable for it in the dhcp agent? Seems like it would be more explicit/cleaner.\nFor example use_ovn_metadata_route \u003d False.\nBut I think that will require some tripleo heat template changes as well. \nwdyt?","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"1862f118dea7f0d33efff81670bd4daba8fd9ec9","unresolved":true,"context_lines":[{"line_number":1462,"context_line":"        return False"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    @classmethod"},{"line_number":1465,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1466,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        This method returns True for truly isolated networks (ie: not attached"},{"line_number":1469,"context_line":"        to a router) when enable_isolated_metadata is True, or for all the"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe152a3_08c52bf6","line":1466,"range":{"start_line":1465,"start_character":0,"end_line":1466,"end_character":71},"in_reply_to":"bb584675_a3d17b12","updated":"2023-08-22 07:12:00.000000000","message":"Yeap right introducing a config option will lead changes in deployment tools to make this work. So i think it should be fine to detect ovn metadata port for this case as it\u0027s a special use case to use ovn metadata along with dhcp-agent.","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"963363e695e312cc91718cbede7b01630642d420","unresolved":false,"context_lines":[{"line_number":1462,"context_line":"        return False"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    @classmethod"},{"line_number":1465,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1466,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        This method returns True for truly isolated networks (ie: not attached"},{"line_number":1469,"context_line":"        to a router) when enable_isolated_metadata is True, or for all the"}],"source_content_type":"text/x-python","patch_set":3,"id":"aa305b58_7565c071","line":1466,"range":{"start_line":1465,"start_character":0,"end_line":1466,"end_character":71},"in_reply_to":"ffe152a3_08c52bf6","updated":"2023-08-25 21:14:04.000000000","message":"Ack","commit_id":"3ed24f1900c5913556182aba82acf7b33c5fd495"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1dad9a4e90ebc5615636bc1de9c6597a8cd03f6c","unresolved":true,"context_lines":[{"line_number":1290,"context_line":"                    host_routes.append(\"%s,%s\" % (hr.destination, hr.nexthop))"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"            # Determine metadata port route"},{"line_number":1293,"context_line":"            if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":1294,"context_line":"                metadata_route_ip \u003d None"},{"line_number":1295,"context_line":"                # NOTE: OVN metadata port IP is used in a case when the DHCP"},{"line_number":1296,"context_line":"                # agent is deployed in the ML2/OVN enviroment where the native"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a64218f_829d476a","line":1293,"updated":"2023-08-03 19:51:08.000000000","message":"This use of the constant is Ok since it\u0027s in new code","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"1862f118dea7f0d33efff81670bd4daba8fd9ec9","unresolved":true,"context_lines":[{"line_number":1290,"context_line":"                    host_routes.append(\"%s,%s\" % (hr.destination, hr.nexthop))"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"            # Determine metadata port route"},{"line_number":1293,"context_line":"            if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":1294,"context_line":"                metadata_route_ip \u003d None"},{"line_number":1295,"context_line":"                # NOTE: OVN metadata port IP is used in a case when the DHCP"},{"line_number":1296,"context_line":"                # agent is deployed in the ML2/OVN enviroment where the native"}],"source_content_type":"text/x-python","patch_set":6,"id":"1c9eae61_06f2a293","line":1293,"in_reply_to":"1a64218f_829d476a","updated":"2023-08-22 07:12:00.000000000","message":"+1","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"963363e695e312cc91718cbede7b01630642d420","unresolved":false,"context_lines":[{"line_number":1290,"context_line":"                    host_routes.append(\"%s,%s\" % (hr.destination, hr.nexthop))"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"            # Determine metadata port route"},{"line_number":1293,"context_line":"            if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":1294,"context_line":"                metadata_route_ip \u003d None"},{"line_number":1295,"context_line":"                # NOTE: OVN metadata port IP is used in a case when the DHCP"},{"line_number":1296,"context_line":"                # agent is deployed in the ML2/OVN enviroment where the native"}],"source_content_type":"text/x-python","patch_set":6,"id":"d545304e_2d0ea2cd","line":1293,"in_reply_to":"1c9eae61_06f2a293","updated":"2023-08-25 21:14:04.000000000","message":"ACK. I\u0027ll keep use of `constants` here but revert in places where I did not make a change.","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1dad9a4e90ebc5615636bc1de9c6597a8cd03f6c","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1485,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1486,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @classmethod"},{"line_number":1489,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1490,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"}],"source_content_type":"text/x-python","patch_set":6,"id":"c630acb7_b2356eb0","line":1487,"updated":"2023-08-03 19:51:08.000000000","message":"Created https://review.opendev.org/c/openstack/neutron/+/890453 so we don\u0027t duplicate this check in multiple places","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"1862f118dea7f0d33efff81670bd4daba8fd9ec9","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1485,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1486,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @classmethod"},{"line_number":1489,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1490,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8787ba_79f85d62","line":1487,"in_reply_to":"5254d8a3_e0ee4afc","updated":"2023-08-22 07:12:00.000000000","message":"@Miro i think we should not need the further check with network_id as we are iterating over network.ports so those ovnmeta ports belong to network itself and can assume they are suffixed with network_id as that\u0027s how those are set. So should be fine to reuse the common function added by Brian in the other patch.","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"963363e695e312cc91718cbede7b01630642d420","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1485,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1486,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @classmethod"},{"line_number":1489,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1490,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"}],"source_content_type":"text/x-python","patch_set":6,"id":"d4282202_9bd018be","line":1487,"in_reply_to":"7a8787ba_79f85d62","updated":"2023-08-25 21:14:04.000000000","message":"Actually I just realized that I will have two propblems with this new function.\n1. The `is_ovn_metadataport` expects a subscribable object where you can call e.g. port[\u0027device_owner\u0027]. As where here port is an instance of a class and device_owner is not subscribable. I could workaround that by passing port like this `is_ovn_metadata_port(port.__dict__)`. \n2. However, I need to backport this to Wallaby which means I will have to backport that function as well.\n\nSo I am not going to use the new function. WDYT?","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"0d62c2692b3849af6677045929e0ddb5498845fa","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1485,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1486,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @classmethod"},{"line_number":1489,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1490,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"}],"source_content_type":"text/x-python","patch_set":6,"id":"b74ad068_4b880564","line":1487,"in_reply_to":"82703955_0fb46574","updated":"2023-08-30 01:24:30.000000000","message":"Sorry I am not sure what you mean by the last comment. Are you saying there is a method called `do_dict()`? I guess that is essentially the same as `__dict__` but better since calling \"private\" methods in python is antipattern.\nBut regardless, If I need to backport it to previous releases I cant use the new function without backport of the other patch as well","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7be6589b91a056c37f10d33a0db969457487338d","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1485,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1486,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @classmethod"},{"line_number":1489,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1490,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"}],"source_content_type":"text/x-python","patch_set":6,"id":"beeedf1a_78f86252","line":1487,"in_reply_to":"b74ad068_4b880564","updated":"2023-08-30 18:18:57.000000000","message":"Yes, I believe port.to_dict() should just pass it as a dictionary.\n\nI understand the backport mess I maybe created by adding that function. Maybe there\u0027s two solutions:\n\n1) In the backports, just copy the function from utils to here as a private method, and put that note in the commit message.\n\n2) Create the private method as you are here, but create a follow-on to use the one in utils, that way the backport is easier.","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":1484,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1485,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1486,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @classmethod"},{"line_number":1489,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1490,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"}],"source_content_type":"text/x-python","patch_set":6,"id":"0173f69c_0f292bba","line":1487,"in_reply_to":"beeedf1a_78f86252","updated":"2023-09-01 02:40:06.000000000","message":"Just checked the code and I think we are good actually. Port is an instance of DictModel [1]. So this is just a matter of fixing up some unit test code in test_dhcp.py. For this reason, I\u0027ll go with your suggestion #2, i.e. I will keep this private method and I will follow up with a separate patch on the master branch. \n\n[1] https://opendev.org/openstack/neutron/src/branch/master/neutron/agent/linux/dhcp.py#L81","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"98555dd0c6702b29af9edd7c92c0c4b70d68b99b","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1485,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1486,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @classmethod"},{"line_number":1489,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1490,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"}],"source_content_type":"text/x-python","patch_set":6,"id":"5254d8a3_e0ee4afc","line":1487,"in_reply_to":"c630acb7_b2356eb0","updated":"2023-08-09 19:57:15.000000000","message":"Good idea. Although in my case I would have to do further check, something like this\n```def is_networks_ovn_metadata_port(port, network_id):\n      return is_ovn_metadataport(port) and port.device_id.endswith(network_id)```\n\nUnless we have use for such common function somewhere else, but I dont see it anywhere.\n\nOr consider adding network_id as an optional argument to your function?","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"150f496970b0edcd223eff17dfce10124008b13f","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1485,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1486,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @classmethod"},{"line_number":1489,"context_line":"    def should_enable_metadata(cls, conf, network):"},{"line_number":1490,"context_line":"        \"\"\"Determine whether the metadata proxy is needed for a network"}],"source_content_type":"text/x-python","patch_set":6,"id":"82703955_0fb46574","line":1487,"in_reply_to":"d4282202_9bd018be","updated":"2023-08-28 21:14:53.000000000","message":"Can you just pass port.to_dict() ? Or I guess we could change it to do that?","commit_id":"e9cae1e3240686cc319359bebd508bf8dec7e1e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7be6589b91a056c37f10d33a0db969457487338d","unresolved":true,"context_lines":[{"line_number":497,"context_line":"            # if a subnet is specified to have dhcp disabled"},{"line_number":498,"context_line":"            if not subnet.enable_dhcp:"},{"line_number":499,"context_line":"                continue"},{"line_number":500,"context_line":"            if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":501,"context_line":"                mode \u003d \u0027static\u0027"},{"line_number":502,"context_line":"            else:"},{"line_number":503,"context_line":"                # Note(scollins) If the IPv6 attributes are not set, set it as"}],"source_content_type":"text/x-python","patch_set":8,"id":"d448a56b_e15b3793","line":500,"updated":"2023-08-30 18:18:57.000000000","message":"Please leave this and below using \u00274\u0027 to reduce changed lines since it\u0027s not necessary for the fix.","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":497,"context_line":"            # if a subnet is specified to have dhcp disabled"},{"line_number":498,"context_line":"            if not subnet.enable_dhcp:"},{"line_number":499,"context_line":"                continue"},{"line_number":500,"context_line":"            if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":501,"context_line":"                mode \u003d \u0027static\u0027"},{"line_number":502,"context_line":"            else:"},{"line_number":503,"context_line":"                # Note(scollins) If the IPv6 attributes are not set, set it as"}],"source_content_type":"text/x-python","patch_set":8,"id":"fe93bd56_6622cce2","line":500,"in_reply_to":"d448a56b_e15b3793","updated":"2023-09-01 02:40:06.000000000","message":"Done","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e7869f9d72ae3c5784e4dade125e7c840a6b24c7","unresolved":true,"context_lines":[{"line_number":1216,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"},{"line_number":1217,"context_line":"                    return fixed_ip.ip_address"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"    def _get_metadata_port_route_ip(self, subnet):"},{"line_number":1220,"context_line":"        \"\"\"Get the IP for the metadata port route"},{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"        DHCP agent policy for determining the IP for metadata port routing."}],"source_content_type":"text/x-python","patch_set":10,"id":"a001ba52_0fc952d6","line":1219,"updated":"2023-09-05 21:37:59.000000000","message":"I don\u0027t see this being called","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"8b16e98ce546bb6ae28a65c7d72f31e7abfb3788","unresolved":false,"context_lines":[{"line_number":1216,"context_line":"                if fixed_ip.subnet_id \u003d\u003d subnet.id:"},{"line_number":1217,"context_line":"                    return fixed_ip.ip_address"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"    def _get_metadata_port_route_ip(self, subnet):"},{"line_number":1220,"context_line":"        \"\"\"Get the IP for the metadata port route"},{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"        DHCP agent policy for determining the IP for metadata port routing."}],"source_content_type":"text/x-python","patch_set":10,"id":"0db381f4_a16731c3","line":1219,"in_reply_to":"a001ba52_0fc952d6","updated":"2023-09-07 01:19:36.000000000","message":"Will remove, see response below","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e7869f9d72ae3c5784e4dade125e7c840a6b24c7","unresolved":true,"context_lines":[{"line_number":1295,"context_line":"                    host_routes.append(\"%s,%s\" % (hr.destination, hr.nexthop))"},{"line_number":1296,"context_line":""},{"line_number":1297,"context_line":"            # Determine metadata port route"},{"line_number":1298,"context_line":"            if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":1299,"context_line":"                metadata_route_ip \u003d None"},{"line_number":1300,"context_line":"                # NOTE: OVN metadata port IP is used in a case when the DHCP"},{"line_number":1301,"context_line":"                # agent is deployed in the ML2/OVN enviroment where the native"},{"line_number":1302,"context_line":"                # ovn-controller dhcp is disabled. The ovn metadata route"},{"line_number":1303,"context_line":"                # takes precedence over native force_metadata and"},{"line_number":1304,"context_line":"                # enable_isolated_metadata routes settings."},{"line_number":1305,"context_line":"                ovn_metadata_port_ip \u003d self._get_ovn_metadata_port_ip(subnet)"},{"line_number":1306,"context_line":"                if ovn_metadata_port_ip:"},{"line_number":1307,"context_line":"                    metadata_route_ip \u003d ovn_metadata_port_ip"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"                elif (self.conf.force_metadata or"},{"line_number":1310,"context_line":"                        (isolated_subnets[subnet.id] and"},{"line_number":1311,"context_line":"                        self.conf.enable_isolated_metadata)):"},{"line_number":1312,"context_line":"                    subnet_dhcp_ip \u003d subnet_to_interface_ip.get(subnet.id)"},{"line_number":1313,"context_line":"                    if subnet_dhcp_ip:"},{"line_number":1314,"context_line":"                        metadata_route_ip \u003d subnet_dhcp_ip"},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"                if not isolated_subnets[subnet.id] and gateway:"},{"line_number":1317,"context_line":"                    metadata_route_ip \u003d gateway"},{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"                if metadata_route_ip:"},{"line_number":1320,"context_line":"                    host_routes.append("}],"source_content_type":"text/x-python","patch_set":10,"id":"f37b1ad0_b122be49","line":1317,"range":{"start_line":1298,"start_character":12,"end_line":1317,"end_character":47},"updated":"2023-09-05 21:37:59.000000000","message":"Should all the above be replaced with a single call?\n\nmetadata_route_ip \u003d self._get_metadata_port_route_ip(subnet)","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"8b16e98ce546bb6ae28a65c7d72f31e7abfb3788","unresolved":false,"context_lines":[{"line_number":1295,"context_line":"                    host_routes.append(\"%s,%s\" % (hr.destination, hr.nexthop))"},{"line_number":1296,"context_line":""},{"line_number":1297,"context_line":"            # Determine metadata port route"},{"line_number":1298,"context_line":"            if subnet.ip_version \u003d\u003d constants.IP_VERSION_4:"},{"line_number":1299,"context_line":"                metadata_route_ip \u003d None"},{"line_number":1300,"context_line":"                # NOTE: OVN metadata port IP is used in a case when the DHCP"},{"line_number":1301,"context_line":"                # agent is deployed in the ML2/OVN enviroment where the native"},{"line_number":1302,"context_line":"                # ovn-controller dhcp is disabled. The ovn metadata route"},{"line_number":1303,"context_line":"                # takes precedence over native force_metadata and"},{"line_number":1304,"context_line":"                # enable_isolated_metadata routes settings."},{"line_number":1305,"context_line":"                ovn_metadata_port_ip \u003d self._get_ovn_metadata_port_ip(subnet)"},{"line_number":1306,"context_line":"                if ovn_metadata_port_ip:"},{"line_number":1307,"context_line":"                    metadata_route_ip \u003d ovn_metadata_port_ip"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"                elif (self.conf.force_metadata or"},{"line_number":1310,"context_line":"                        (isolated_subnets[subnet.id] and"},{"line_number":1311,"context_line":"                        self.conf.enable_isolated_metadata)):"},{"line_number":1312,"context_line":"                    subnet_dhcp_ip \u003d subnet_to_interface_ip.get(subnet.id)"},{"line_number":1313,"context_line":"                    if subnet_dhcp_ip:"},{"line_number":1314,"context_line":"                        metadata_route_ip \u003d subnet_dhcp_ip"},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"                if not isolated_subnets[subnet.id] and gateway:"},{"line_number":1317,"context_line":"                    metadata_route_ip \u003d gateway"},{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"                if metadata_route_ip:"},{"line_number":1320,"context_line":"                    host_routes.append("}],"source_content_type":"text/x-python","patch_set":10,"id":"0577a067_2e58a073","line":1317,"range":{"start_line":1298,"start_character":12,"end_line":1317,"end_character":47},"in_reply_to":"f37b1ad0_b122be49","updated":"2023-09-07 01:19:36.000000000","message":"Dang it, I need a vacation, another silly mistake..... the `self._get_metadata_port_route_ip` is from my first implementation of this change. At first I wanted to single source the metadata route ip logic into a single method to make it easier to unit test and make this function a bit shorter.  But later I realized it was not as straightforward as I wanted and I wanted to prevent multiple calls to the `_make_subnet_interface_ip_map` . Long story short, fixed up existing logic here and this method is not needed. Thanks for raising this issue","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e7869f9d72ae3c5784e4dade125e7c840a6b24c7","unresolved":true,"context_lines":[{"line_number":1486,"context_line":"        return False"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @staticmethod"},{"line_number":1489,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1490,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1491,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1492,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9d5b3270_79761a7c","line":1489,"updated":"2023-09-05 21:37:59.000000000","message":"Maybe add a note here about the utils code and how this is so it is backportable.","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"46195d5ddf2d0b0be2dbeb7c080b455124575aa5","unresolved":true,"context_lines":[{"line_number":1486,"context_line":"        return False"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @staticmethod"},{"line_number":1489,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1490,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1491,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1492,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"f3f7beb0_7d779a2a","line":1489,"in_reply_to":"834f237d_06635420","updated":"2023-09-18 18:22:25.000000000","message":"This method is unnecessary in the master branch, and is only here in order to facilitate backporting this change to stable. It was something discussed in prior comments if I\u0027m remembering correctly. If there was a follow-on patch removing this I would drop it but I don\u0027t see it at the moment, I just don\u0027t want to lose the information.","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"c520a9cfa7c0aec73a25aa2db9d22aa3c3fc8964","unresolved":true,"context_lines":[{"line_number":1486,"context_line":"        return False"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @staticmethod"},{"line_number":1489,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1490,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1491,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1492,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"834f237d_06635420","line":1489,"in_reply_to":"9d5b3270_79761a7c","updated":"2023-09-07 01:33:16.000000000","message":"Not clear on this... you mean a note stating that this function exists in utils in the future branches? Fromt the past branches prospective I think this function is good as is without any note. again maybe I am not understanding you correctly","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"f592f690380a79d8ed74546f92995eca9a858048","unresolved":false,"context_lines":[{"line_number":1486,"context_line":"        return False"},{"line_number":1487,"context_line":""},{"line_number":1488,"context_line":"    @staticmethod"},{"line_number":1489,"context_line":"    def _is_ovn_metadata_port(port, network_id):"},{"line_number":1490,"context_line":"        return (port.device_id \u003d\u003d \u0027ovnmeta-\u0027 + network_id and"},{"line_number":1491,"context_line":"                port.device_owner \u003d\u003d constants.DEVICE_OWNER_DISTRIBUTED)"},{"line_number":1492,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"38e295e3_7cf35f6d","line":1489,"in_reply_to":"f3f7beb0_7d779a2a","updated":"2023-09-22 20:45:46.000000000","message":"Here is the follow up change to address this(if I understand the whole gerrit process corretly). I think this should work, such that I can still use this patch for clean backport but have the master use the function from ovn_utils.\n\nhttps://review.opendev.org/c/openstack/neutron/+/896299","commit_id":"d6a18a5664cd2dada68a21e091c0d299d7e6d06b"}],"neutron/tests/unit/agent/dhcp/test_agent.py":[{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"ea77f7a093719c358c0c37a0fe0d47541b1cbe13","unresolved":true,"context_lines":[{"line_number":883,"context_line":"                                 is_isolated_network\u003dFalse)"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    def test_enable_dhcp_helper_enable_metadata_ovn_network(self):"},{"line_number":886,"context_line":"        # Metadata should not be enabled when the dhcp agent is used"},{"line_number":887,"context_line":"        # in ML2/OVN where the ovn metadata agent is responsible for the"},{"line_number":888,"context_line":"        # metadata service."},{"line_number":889,"context_line":"        self._enable_dhcp_helper(fake_ovn_network, is_ovn_network\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"754bc3b3_d5538e71","line":886,"updated":"2023-08-26 04:13:30.000000000","message":"Not big fan of how these tests turned out but I did not want to start refactoring the whole test class and existing helper function.","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":883,"context_line":"                                 is_isolated_network\u003dFalse)"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    def test_enable_dhcp_helper_enable_metadata_ovn_network(self):"},{"line_number":886,"context_line":"        # Metadata should not be enabled when the dhcp agent is used"},{"line_number":887,"context_line":"        # in ML2/OVN where the ovn metadata agent is responsible for the"},{"line_number":888,"context_line":"        # metadata service."},{"line_number":889,"context_line":"        self._enable_dhcp_helper(fake_ovn_network, is_ovn_network\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"98e03e27_90e0b9dc","line":886,"in_reply_to":"754bc3b3_d5538e71","updated":"2023-09-01 02:40:06.000000000","message":"Done","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"}],"neutron/tests/unit/agent/linux/test_dhcp.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e313da4a75ae3b1576215a149511b92c92bfc39d","unresolved":true,"context_lines":[{"line_number":94,"context_line":"    def __init__(self):"},{"line_number":95,"context_line":"        self.id \u003d \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa\u0027"},{"line_number":96,"context_line":"        self.admin_state_up \u003d True"},{"line_number":97,"context_line":"        self.device_owner \u003d constants.DEVICE_OWNER_DHCP"},{"line_number":98,"context_line":"        self.fixed_ips \u003d ["},{"line_number":99,"context_line":"            FakeIPAllocation(\u0027192.168.0.10\u0027,"},{"line_number":100,"context_line":"                             \u0027dddddddd-dddd-dddd-dddd-dddddddddddd\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fe95256_44d95198","line":97,"updated":"2023-06-26 17:58:51.000000000","message":"OVN metadata ports are constants.DEVICE_OWNER_DISTRIBUTED","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"8f88b52b07032d438ac8c9c0051eadb36ecdd96b","unresolved":true,"context_lines":[{"line_number":94,"context_line":"    def __init__(self):"},{"line_number":95,"context_line":"        self.id \u003d \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa\u0027"},{"line_number":96,"context_line":"        self.admin_state_up \u003d True"},{"line_number":97,"context_line":"        self.device_owner \u003d constants.DEVICE_OWNER_DHCP"},{"line_number":98,"context_line":"        self.fixed_ips \u003d ["},{"line_number":99,"context_line":"            FakeIPAllocation(\u0027192.168.0.10\u0027,"},{"line_number":100,"context_line":"                             \u0027dddddddd-dddd-dddd-dddd-dddddddddddd\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd3754d1_8545adab","line":97,"in_reply_to":"9fe95256_44d95198","updated":"2023-06-27 06:34:11.000000000","message":"yes right, will fix.","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"334d6dd9222685df005180d03614e9affb7c8048","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def __init__(self):"},{"line_number":95,"context_line":"        self.id \u003d \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa\u0027"},{"line_number":96,"context_line":"        self.admin_state_up \u003d True"},{"line_number":97,"context_line":"        self.device_owner \u003d constants.DEVICE_OWNER_DHCP"},{"line_number":98,"context_line":"        self.fixed_ips \u003d ["},{"line_number":99,"context_line":"            FakeIPAllocation(\u0027192.168.0.10\u0027,"},{"line_number":100,"context_line":"                             \u0027dddddddd-dddd-dddd-dddd-dddddddddddd\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"072667e3_d2d5e889","line":97,"in_reply_to":"cd3754d1_8545adab","updated":"2023-07-26 12:57:52.000000000","message":"Done","commit_id":"ab1d8a9b85b1d4a94e0ca0b7662a360c644eac9d"}],"releasenotes/notes/dhcp-agent-ovn-metadata-port-33a654ccb9554c65.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7be6589b91a056c37f10d33a0db969457487338d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"23d7d801_dc32f7c7","line":4,"range":{"start_line":4,"start_character":10,"end_line":4,"end_character":33},"updated":"2023-08-30 18:18:57.000000000","message":"s/scenario where the DHCP","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7be6589b91a056c37f10d33a0db969457487338d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"a6785f6c_d47f6027","line":4,"range":{"start_line":4,"start_character":72,"end_line":4,"end_character":75},"updated":"2023-08-30 18:18:57.000000000","message":"s/the OVN","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"a027a4fb8609e0bb5b950ba461d2af60e250fa78","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"484226fd_c22aa75e","line":4,"range":{"start_line":4,"start_character":10,"end_line":4,"end_character":33},"in_reply_to":"23d7d801_dc32f7c7","updated":"2023-08-31 15:18:41.000000000","message":"dang, I need to stop working on these patches before the bed :) . Thanks for the review","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"8a4683cb_0527c4b8","line":4,"range":{"start_line":4,"start_character":10,"end_line":4,"end_character":33},"in_reply_to":"484226fd_c22aa75e","updated":"2023-09-01 02:40:06.000000000","message":"Done","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"180b1491_928a29d9","line":4,"range":{"start_line":4,"start_character":72,"end_line":4,"end_character":75},"in_reply_to":"a6785f6c_d47f6027","updated":"2023-09-01 02:40:06.000000000","message":"Done","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7be6589b91a056c37f10d33a0db969457487338d","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"},{"line_number":8,"context_line":"    to query the metadata service. For more information see the bug report"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"d506551e_14282da5","line":5,"range":{"start_line":5,"start_character":47,"end_line":5,"end_character":62},"updated":"2023-08-30 18:18:57.000000000","message":"s/for baremetal","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7be6589b91a056c37f10d33a0db969457487338d","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"},{"line_number":8,"context_line":"    to query the metadata service. For more information see the bug report"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"66db4e32_42c6e98c","line":5,"range":{"start_line":5,"start_character":31,"end_line":5,"end_character":37},"updated":"2023-08-30 18:18:57.000000000","message":"s/serve","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"},{"line_number":8,"context_line":"    to query the metadata service. For more information see the bug report"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3df09753_f898b271","line":5,"range":{"start_line":5,"start_character":31,"end_line":5,"end_character":37},"in_reply_to":"66db4e32_42c6e98c","updated":"2023-09-01 02:40:06.000000000","message":"Done","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"},{"line_number":8,"context_line":"    to query the metadata service. For more information see the bug report"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"55391d76_6fc2523a","line":5,"range":{"start_line":5,"start_character":47,"end_line":5,"end_character":62},"in_reply_to":"d506551e_14282da5","updated":"2023-09-01 02:40:06.000000000","message":"Done","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7be6589b91a056c37f10d33a0db969457487338d","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"},{"line_number":8,"context_line":"    to query the metadata service. For more information see the bug report"},{"line_number":9,"context_line":"    https://bugs.launchpad.net/neutron/+bug/1982569"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7a6370f7_714372a1","line":6,"range":{"start_line":6,"start_character":26,"end_line":6,"end_character":30},"updated":"2023-08-30 18:18:57.000000000","message":"s/DHCP to be consistent","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed the scenario where DHCP agent is deployed in conjunction with OVN"},{"line_number":5,"context_line":"    metadata agent in order to server metadata for a baremetal nodes."},{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"},{"line_number":8,"context_line":"    to query the metadata service. For more information see the bug report"},{"line_number":9,"context_line":"    https://bugs.launchpad.net/neutron/+bug/1982569"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"d5a980ad_bd751466","line":6,"range":{"start_line":6,"start_character":26,"end_line":6,"end_character":30},"in_reply_to":"7a6370f7_714372a1","updated":"2023-09-01 02:40:06.000000000","message":"Done","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7be6589b91a056c37f10d33a0db969457487338d","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"},{"line_number":8,"context_line":"    to query the metadata service. For more information see the bug report"},{"line_number":9,"context_line":"    https://bugs.launchpad.net/neutron/+bug/1982569"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3665f858_9e95bf4c","line":9,"updated":"2023-08-30 18:18:57.000000000","message":"nit:\n\nFor more information, see `bug 1982569 \u003chttps://bugs.launchpad.net/neutron/+bug/1982569\u003e`_.","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"b7ed89a451487140ac01055938407520f9c49a47","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    In this scenario, the dhcp agent would not set the route needed for the"},{"line_number":7,"context_line":"    OVN metadata agent service resulting in baremetal nodes not being able"},{"line_number":8,"context_line":"    to query the metadata service. For more information see the bug report"},{"line_number":9,"context_line":"    https://bugs.launchpad.net/neutron/+bug/1982569"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"92b3bafe_dd59f686","line":9,"in_reply_to":"3665f858_9e95bf4c","updated":"2023-09-01 02:40:06.000000000","message":"Done","commit_id":"74c0c940eac3d270b73fa2ddc49e84dcc919e203"}]}
