)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36998,"name":"Ilia Baikov","display_name":"Ilia Baikov","email":"ilia.baikov@ib.systems","username":"frct1"},"change_message_id":"1da948c4dd6d7351b1af5b038b86603857d10b79","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6ec04e99_c7228961","updated":"2025-08-16 14:00:06.000000000","message":"It needs to be cherry-picked to previous branches as well. First occurence happened at Zed release. Didn\u0027t test older releases but them are also affected.","commit_id":"a6db4b269d94b8f877afd73f8f6769e52fcfbb67"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e8fafcb8f0b28e2c578f14609ec066f8087a8fed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e561010a_ab03cec2","updated":"2025-08-17 17:26:38.000000000","message":"Thanks for the patch, had some comments. It will also need a test and most likely some updated to existing ones.","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"118e24e2b526c5be87578bde9ad2d945901ace87","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e668d5b0_24534152","updated":"2025-08-17 01:35:30.000000000","message":"recheck","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"}],"neutron/agent/l2/extensions/dhcp/ipv4.py":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"ec2a9fa73bee45d1f44ec4162f0c1607f0a12054","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":70,"context_line":"        # Get IPv4-specific information to avoid processing IPv6 addresses"},{"line_number":71,"context_line":"        ip_info \u003d self.get_port_ip(port_info, ip_version\u003dconstants.IP_VERSION_4)"},{"line_number":72,"context_line":"        if not ip_info:"},{"line_number":73,"context_line":"            return"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cba779ac_45e29186","line":71,"updated":"2025-08-16 16:11:57.000000000","message":"```suggestion\n        ip_info \u003d self.get_port_ip(port_info,\n                                   ip_version\u003dconstants.IP_VERSION_4)\n```","commit_id":"a6db4b269d94b8f877afd73f8f6769e52fcfbb67"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"91b394751547a35ef4d024c22e07138ab04d1a56","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":70,"context_line":"        # Get IPv4-specific information to avoid processing IPv6 addresses"},{"line_number":71,"context_line":"        ip_info \u003d self.get_port_ip(port_info, ip_version\u003dconstants.IP_VERSION_4)"},{"line_number":72,"context_line":"        if not ip_info:"},{"line_number":73,"context_line":"            return"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fdf7fb8a_35bab25a","line":71,"in_reply_to":"cba779ac_45e29186","updated":"2025-08-16 16:18:08.000000000","message":"Done","commit_id":"a6db4b269d94b8f877afd73f8f6769e52fcfbb67"},{"author":{"_account_id":36998,"name":"Ilia Baikov","display_name":"Ilia Baikov","email":"ilia.baikov@ib.systems","username":"frct1"},"change_message_id":"c017a81f2f88fcc923278b876f14154eca263ba0","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":70,"context_line":"        # Get IPv4-specific information to avoid processing IPv6 addresses"},{"line_number":71,"context_line":"        ip_info \u003d self.get_port_ip(port_info, ip_version\u003dconstants.IP_VERSION_4)"},{"line_number":72,"context_line":"        if not ip_info:"},{"line_number":73,"context_line":"            return"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"66751395_9e433297","line":71,"in_reply_to":"cba779ac_45e29186","updated":"2025-08-17 19:01:55.000000000","message":"Fix applied.","commit_id":"a6db4b269d94b8f877afd73f8f6769e52fcfbb67"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d7fcdd5bb0da818c110c5292e4adf242770a001b","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        return bin_routes"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":70,"context_line":"        # Get IPv4-specific information to avoid processing IPv6 addresses"},{"line_number":71,"context_line":"        ip_info \u003d self.get_port_ip(port_info,"},{"line_number":72,"context_line":"                                   ip_version\u003dconstants.IP_VERSION_4)"},{"line_number":73,"context_line":"        if not ip_info:"}],"source_content_type":"text/x-python","patch_set":2,"id":"968ad05f_73128c9d","line":70,"updated":"2025-08-21 12:56:42.000000000","message":"Could you please add unit tests to cover this issue (somewhere here perhaps can be easily reused the current method _test_get_dhcp_options):\nhttps://opendev.org/openstack/neutron/src/commit/4af6c8805adfac2e307c51cefe789e97019f0445/neutron/tests/unit/agent/l2/extensions/dhcp/test_ipv4.py#L70-L146","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4bc05ed542868f80ea461dabc589312fd0fa326d","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        return bin_routes"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":70,"context_line":"        # Get IPv4-specific information to avoid processing IPv6 addresses"},{"line_number":71,"context_line":"        ip_info \u003d self.get_port_ip(port_info,"},{"line_number":72,"context_line":"                                   ip_version\u003dconstants.IP_VERSION_4)"},{"line_number":73,"context_line":"        if not ip_info:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8eab194d_a9909e31","line":70,"in_reply_to":"5bd64e63_2de61da2","updated":"2025-08-25 12:07:17.000000000","message":"thanks for your time","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"},{"author":{"_account_id":36998,"name":"Ilia Baikov","display_name":"Ilia Baikov","email":"ilia.baikov@ib.systems","username":"frct1"},"change_message_id":"472a13056fa7809bf4fb7749609afe23f41db104","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        return bin_routes"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":70,"context_line":"        # Get IPv4-specific information to avoid processing IPv6 addresses"},{"line_number":71,"context_line":"        ip_info \u003d self.get_port_ip(port_info,"},{"line_number":72,"context_line":"                                   ip_version\u003dconstants.IP_VERSION_4)"},{"line_number":73,"context_line":"        if not ip_info:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5bd64e63_2de61da2","line":70,"in_reply_to":"968ad05f_73128c9d","updated":"2025-08-25 00:20:18.000000000","message":"I will try to. Not sure how would it look like as I never created tests before :D","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e8fafcb8f0b28e2c578f14609ec066f8087a8fed","unresolved":true,"context_lines":[{"line_number":137,"context_line":"                        value\u003dself.get_bin_routes(gateway_ip,"},{"line_number":138,"context_line":"                                                  host_routes)))"},{"line_number":139,"context_line":"        # MTU"},{"line_number":140,"context_line":"        mtu \u003d int(port_info.get(\u0027mtu\u0027, 0))"},{"line_number":141,"context_line":"        if mtu \u003e 0:"},{"line_number":142,"context_line":"            mtu_bin \u003d struct.pack(\u0027!H\u0027, mtu)"},{"line_number":143,"context_line":"            option_list.append("}],"source_content_type":"text/x-python","patch_set":2,"id":"0b9e6f33_797912be","line":140,"updated":"2025-08-17 17:26:38.000000000","message":"This is the only usage of port_info besides above, could maybe just pass mtu directly.","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e8fafcb8f0b28e2c578f14609ec066f8087a8fed","unresolved":true,"context_lines":[{"line_number":154,"context_line":"        ip_addr \u003d ip_info[\u0027ip_address\u0027]"},{"line_number":155,"context_line":"        gateway_ip \u003d ip_info[\u0027gateway_ip\u0027]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        options \u003d self.get_dhcp_options(port_info, is_ack)"},{"line_number":158,"context_line":"        if is_ack:"},{"line_number":159,"context_line":"            fqdn \u003d \u0027host-%s\u0027 % ip_addr.replace(\u0027.\u0027, \u0027-\u0027).replace(\u0027:\u0027, \u0027-\u0027)"},{"line_number":160,"context_line":"            if cfg.CONF.dns_domain:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d5a30497_228b346a","line":157,"updated":"2025-08-17 17:26:38.000000000","message":"So the caller already did the same call you proposed above, it should just pass it here, maybe along with port_info (or just the mtu?)","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"},{"author":{"_account_id":36998,"name":"Ilia Baikov","display_name":"Ilia Baikov","email":"ilia.baikov@ib.systems","username":"frct1"},"change_message_id":"c017a81f2f88fcc923278b876f14154eca263ba0","unresolved":true,"context_lines":[{"line_number":154,"context_line":"        ip_addr \u003d ip_info[\u0027ip_address\u0027]"},{"line_number":155,"context_line":"        gateway_ip \u003d ip_info[\u0027gateway_ip\u0027]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        options \u003d self.get_dhcp_options(port_info, is_ack)"},{"line_number":158,"context_line":"        if is_ack:"},{"line_number":159,"context_line":"            fqdn \u003d \u0027host-%s\u0027 % ip_addr.replace(\u0027.\u0027, \u0027-\u0027).replace(\u0027:\u0027, \u0027-\u0027)"},{"line_number":160,"context_line":"            if cfg.CONF.dns_domain:"}],"source_content_type":"text/x-python","patch_set":2,"id":"de6120f4_a317bbbc","line":157,"in_reply_to":"d5a30497_228b346a","updated":"2025-08-17 19:01:55.000000000","message":"I think we can skip a second pull from cache (at get_dhcp_options) and just pass ip_info to get_dhcp_options. WDYT?","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"},{"author":{"_account_id":36998,"name":"Ilia Baikov","display_name":"Ilia Baikov","email":"ilia.baikov@ib.systems","username":"frct1"},"change_message_id":"611b980087cdda3b567ca546b0dffcd995df47d8","unresolved":true,"context_lines":[{"line_number":154,"context_line":"        ip_addr \u003d ip_info[\u0027ip_address\u0027]"},{"line_number":155,"context_line":"        gateway_ip \u003d ip_info[\u0027gateway_ip\u0027]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        options \u003d self.get_dhcp_options(port_info, is_ack)"},{"line_number":158,"context_line":"        if is_ack:"},{"line_number":159,"context_line":"            fqdn \u003d \u0027host-%s\u0027 % ip_addr.replace(\u0027.\u0027, \u0027-\u0027).replace(\u0027:\u0027, \u0027-\u0027)"},{"line_number":160,"context_line":"            if cfg.CONF.dns_domain:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1155cc17_c476e1cb","line":157,"in_reply_to":"de6120f4_a317bbbc","updated":"2025-08-17 19:03:11.000000000","message":"Didn\u0027t see if ipv4 get_dhcp_options is used somewhere else. I will check.","commit_id":"a078f06df54449b652d105c96607d241d4bfa16c"}]}
