)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"33673320fa47cbb8bb5c8385e581ac4b70078f1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4bf6d0d5_cb6ffbc2","updated":"2025-04-17 14:42:26.000000000","message":"You will have to add some unit tests to asset your change.","commit_id":"f1eb803ff0f6649aba0697c472734c01cc5dbaa6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1bbca76460f2047fb212d7b02c84f2f82f320c3f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2e91a37e_446a63b8","updated":"2025-04-23 10:22:28.000000000","message":"Thank you for your fix. You just missed to add tests that assert your change for ipv6, right?","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"783eb8cf463cf7c58eb558c43a4ae790f94934d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"aebf3805_d6aa701c","updated":"2025-04-28 12:47:25.000000000","message":"if I understand well this patch is also for this problem: https://review.opendev.org/c/openstack/neutron/+/947814","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e8f6c470ea4aaf491a805e98fdec462f2994f441","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"43be78c2_09b29b62","in_reply_to":"2e91a37e_446a63b8","updated":"2025-04-24 01:13:50.000000000","message":"+1","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"e40d8bd03c424cc3a6055f07a27f4a8d31177045","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"de3a74fc_188d6746","in_reply_to":"aebf3805_d6aa701c","updated":"2025-04-29 04:21:27.000000000","message":"LIU just pushed it as an example for me and Workflow -1 on it. We will continue this patch.","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"446c13b503c8bafdb5f4c2c1c20065a5f54000b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9a6fa7e2_e05b6e3e","in_reply_to":"de3a74fc_188d6746","updated":"2025-04-30 11:49:13.000000000","message":"ack","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"8c27b898dfd9c90205ce69d53e4e894e4d26831a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"5370187f_bbf1429f","updated":"2025-05-06 06:39:20.000000000","message":"Looks good to me, thank you.","commit_id":"c0ab600db1fbbba969d711b58f9383442a4fadf7"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2f49472306fe01cf07c621b714093c80d49a983","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"8455e254_8a369bc1","updated":"2025-05-07 20:30:58.000000000","message":"Only the one issue","commit_id":"c0ab600db1fbbba969d711b58f9383442a4fadf7"}],"neutron/agent/l2/extensions/dhcp/extension.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6808838a477c60a408bcf39379ea1623588ee1b3","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                    \u0027cidr\u0027: subnet.cidr,"},{"line_number":65,"context_line":"                    \u0027host_routes\u0027: subnet.host_routes,"},{"line_number":66,"context_line":"                    \u0027dns_nameservers\u0027: subnet.dns_nameservers,"},{"line_number":67,"context_line":"                    \u0027gateway_ip\u0027: subnet.gateway_ip}"},{"line_number":68,"context_line":"            fixed_ips.append(info)"},{"line_number":69,"context_line":"        net \u003d self.cache_api.get_resource_by_id("},{"line_number":70,"context_line":"            resources.NETWORK, port_obj.network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f2e6cecc_6823de38","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":52},"updated":"2025-04-18 11:56:20.000000000","message":"We have local fix that change the gateway IP with:\n```\nif subnet.gateway_ip is None:\n   if ipv4:\n       \u0027gateway_ip\u0027 \u003d \"default 169.254.169.254\"\n   if ipv6\n       \u0027gateway_ip\u0027 \u003d \"default value of fe80::a9fe:a9fe\"\nelse:\n    \u0027gateway_ip\u0027 \u003d subnet.gateway_ip\n```\n\n\nand then in each ipv4/ipv6 responder, check if the gateway_ip is default, do some similar work as you pushed here.","commit_id":"42fea00149b461f4e4a2d2e08ff87ac89ea0e59b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"e3bd39cb1346efc94bcbf0b558f951ee10753ad4","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                    \u0027cidr\u0027: subnet.cidr,"},{"line_number":65,"context_line":"                    \u0027host_routes\u0027: subnet.host_routes,"},{"line_number":66,"context_line":"                    \u0027dns_nameservers\u0027: subnet.dns_nameservers,"},{"line_number":67,"context_line":"                    \u0027gateway_ip\u0027: subnet.gateway_ip}"},{"line_number":68,"context_line":"            fixed_ips.append(info)"},{"line_number":69,"context_line":"        net \u003d self.cache_api.get_resource_by_id("},{"line_number":70,"context_line":"            resources.NETWORK, port_obj.network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"8bf34ccb_283f22d3","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":52},"in_reply_to":"55763398_95016ab1","updated":"2025-04-19 07:45:06.000000000","message":"Oops, I think that is not a good way because we need to if check some points like this. We want to just keep gateway_ip is None as \n\n        ret_pkt.add_protocol(\n            ipv4.ipv4(dst\u003dheader_ipv4.dst,\n                      src\u003dgateway_ip,\n                      proto\u003dheader_ipv4.proto))\n\nMeanwhile, some other points still need to be checked:\n\n\n--- get_dhcp_options ---\n        if gateway_ip !\u003d dhcp_extension.LINK_LOCAL_GATEWAY[\u00274\u0027]:\n            option_list.append(\n                dhcp.option(tag\u003ddhcp.DHCP_GATEWAY_ADDR_OPT,\n                            value\u003dbin_server))\n\n\n\n--- get_bin_routes ---\n        if gateway and gateway !\u003d dhcp_extension.LINK_LOCAL_GATEWAY[\u00274\u0027]:\n            # Default routes\n            default_route \u003d self.get_bin_route(constants.IPv4_ANY, gateway)\n            bin_routes +\u003d default_route\n\n            # For some VMs they may need the metadata IP\u0027s route, we move\n            # the destination to gateway IP.\n            meta_route \u003d self.get_bin_route(\n                constants.METADATA_V4_CIDR, gateway)\n            bin_routes +\u003d meta_route\n\n\nWhy dont we just define a DHCPV4_LOCAL_RESPONDER \u003d \"169.254.169.254\" or \"127.0.0.1\" as I already pushed?","commit_id":"42fea00149b461f4e4a2d2e08ff87ac89ea0e59b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"6c4762a4aa2a774fc214cb4fb6d90650eef12882","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    \u0027cidr\u0027: subnet.cidr,"},{"line_number":65,"context_line":"                    \u0027host_routes\u0027: subnet.host_routes,"},{"line_number":66,"context_line":"                    \u0027dns_nameservers\u0027: subnet.dns_nameservers,"},{"line_number":67,"context_line":"                    \u0027gateway_ip\u0027: subnet.gateway_ip}"},{"line_number":68,"context_line":"            fixed_ips.append(info)"},{"line_number":69,"context_line":"        net \u003d self.cache_api.get_resource_by_id("},{"line_number":70,"context_line":"            resources.NETWORK, port_obj.network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ead138a9_a08a75df","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":52},"in_reply_to":"68447b0d_110b927a","updated":"2025-04-22 16:51:55.000000000","message":"Okie","commit_id":"42fea00149b461f4e4a2d2e08ff87ac89ea0e59b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"62c19ed5edb880c5ee4fe5fdd5bbda6df47f7c7b","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                    \u0027cidr\u0027: subnet.cidr,"},{"line_number":65,"context_line":"                    \u0027host_routes\u0027: subnet.host_routes,"},{"line_number":66,"context_line":"                    \u0027dns_nameservers\u0027: subnet.dns_nameservers,"},{"line_number":67,"context_line":"                    \u0027gateway_ip\u0027: subnet.gateway_ip}"},{"line_number":68,"context_line":"            fixed_ips.append(info)"},{"line_number":69,"context_line":"        net \u003d self.cache_api.get_resource_by_id("},{"line_number":70,"context_line":"            resources.NETWORK, port_obj.network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"68447b0d_110b927a","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":52},"in_reply_to":"8bf34ccb_283f22d3","updated":"2025-04-22 10:45:28.000000000","message":"I pushed the POC: https://review.opendev.org/c/openstack/neutron/+/947814","commit_id":"42fea00149b461f4e4a2d2e08ff87ac89ea0e59b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"ff4adf6d0f0794402462e10ad0ffa40f9d09e9f9","unresolved":true,"context_lines":[{"line_number":64,"context_line":"                    \u0027cidr\u0027: subnet.cidr,"},{"line_number":65,"context_line":"                    \u0027host_routes\u0027: subnet.host_routes,"},{"line_number":66,"context_line":"                    \u0027dns_nameservers\u0027: subnet.dns_nameservers,"},{"line_number":67,"context_line":"                    \u0027gateway_ip\u0027: subnet.gateway_ip}"},{"line_number":68,"context_line":"            fixed_ips.append(info)"},{"line_number":69,"context_line":"        net \u003d self.cache_api.get_resource_by_id("},{"line_number":70,"context_line":"            resources.NETWORK, port_obj.network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"55763398_95016ab1","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":52},"in_reply_to":"f2e6cecc_6823de38","updated":"2025-04-19 06:46:36.000000000","message":"Good idea, got it","commit_id":"42fea00149b461f4e4a2d2e08ff87ac89ea0e59b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e8f6c470ea4aaf491a805e98fdec462f2994f441","unresolved":true,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"LINK_LOCAL_GATEWAY \u003d {"},{"line_number":30,"context_line":"    \u00274\u0027: constants.METADATA_V4_IP,"},{"line_number":31,"context_line":"    \u00276\u0027: constants.METADATA_V6_IP"},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"550b01a1_9ab8e451","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":7},"updated":"2025-04-24 01:13:50.000000000","message":"It\u0027s better use the constants.IP_VERSION_4 here.","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"8a1bf07bbd27d7549e24f607fdb11381f04338f4","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"LINK_LOCAL_GATEWAY \u003d {"},{"line_number":30,"context_line":"    \u00274\u0027: constants.METADATA_V4_IP,"},{"line_number":31,"context_line":"    \u00276\u0027: constants.METADATA_V6_IP"},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"cf713d33_44c979dc","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":7},"in_reply_to":"550b01a1_9ab8e451","updated":"2025-04-29 16:02:55.000000000","message":"Done","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e8f6c470ea4aaf491a805e98fdec462f2994f441","unresolved":true,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"LINK_LOCAL_GATEWAY \u003d {"},{"line_number":30,"context_line":"    \u00274\u0027: constants.METADATA_V4_IP,"},{"line_number":31,"context_line":"    \u00276\u0027: constants.METADATA_V6_IP"},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"265fe40f_ee430e8b","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":6},"updated":"2025-04-24 01:13:50.000000000","message":"constants.IP_VERSION_6","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"8a1bf07bbd27d7549e24f607fdb11381f04338f4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"LINK_LOCAL_GATEWAY \u003d {"},{"line_number":30,"context_line":"    \u00274\u0027: constants.METADATA_V4_IP,"},{"line_number":31,"context_line":"    \u00276\u0027: constants.METADATA_V6_IP"},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ac45eb55_8185d497","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":6},"in_reply_to":"265fe40f_ee430e8b","updated":"2025-04-29 16:02:55.000000000","message":"Done","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e8f6c470ea4aaf491a805e98fdec462f2994f441","unresolved":true,"context_lines":[{"line_number":69,"context_line":"                    \u0027host_routes\u0027: subnet.host_routes,"},{"line_number":70,"context_line":"                    \u0027dns_nameservers\u0027: subnet.dns_nameservers,"},{"line_number":71,"context_line":"                    \u0027gateway_ip\u0027: subnet.gateway_ip or LINK_LOCAL_GATEWAY["},{"line_number":72,"context_line":"                        f\u0027{subnet.ip_version}\u0027"},{"line_number":73,"context_line":"                    ]}"},{"line_number":74,"context_line":"            fixed_ips.append(info)"},{"line_number":75,"context_line":"        net \u003d self.cache_api.get_resource_by_id("}],"source_content_type":"text/x-python","patch_set":8,"id":"0d5aaaab_52156232","line":72,"range":{"start_line":72,"start_character":24,"end_line":72,"end_character":46},"updated":"2025-04-24 01:13:50.000000000","message":"Then directly use LINK_LOCAL_GATEWAY[subnet.ip_version] here.","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"8a1bf07bbd27d7549e24f607fdb11381f04338f4","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    \u0027host_routes\u0027: subnet.host_routes,"},{"line_number":70,"context_line":"                    \u0027dns_nameservers\u0027: subnet.dns_nameservers,"},{"line_number":71,"context_line":"                    \u0027gateway_ip\u0027: subnet.gateway_ip or LINK_LOCAL_GATEWAY["},{"line_number":72,"context_line":"                        f\u0027{subnet.ip_version}\u0027"},{"line_number":73,"context_line":"                    ]}"},{"line_number":74,"context_line":"            fixed_ips.append(info)"},{"line_number":75,"context_line":"        net \u003d self.cache_api.get_resource_by_id("}],"source_content_type":"text/x-python","patch_set":8,"id":"de5f5ea6_9362c4e2","line":72,"range":{"start_line":72,"start_character":24,"end_line":72,"end_character":46},"in_reply_to":"0d5aaaab_52156232","updated":"2025-04-29 16:02:55.000000000","message":"Done","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"}],"neutron/agent/l2/extensions/dhcp/ipv4.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"33673320fa47cbb8bb5c8385e581ac4b70078f1f","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        dns_nameservers \u003d fixed_ips[0][\u0027dns_nameservers\u0027]"},{"line_number":72,"context_line":"        host_routes \u003d fixed_ips[0][\u0027host_routes\u0027]"},{"line_number":73,"context_line":"        gateway_ip \u003d fixed_ips[0][\u0027gateway_ip\u0027]"},{"line_number":74,"context_line":"        bin_server \u003d addrconv.ipv4.text_to_bin(gateway_ip or \u0027127.0.0.1\u0027)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        option_list \u003d []"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f0f54863_8f97bc86","line":74,"updated":"2025-04-17 14:42:26.000000000","message":"Can you define a constant LOCAL_DHCP_RESPONDER or something?","commit_id":"f1eb803ff0f6649aba0697c472734c01cc5dbaa6"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a567bedb8cd50ea932be3f900f4186a0ba1a95fd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        dns_nameservers \u003d fixed_ips[0][\u0027dns_nameservers\u0027]"},{"line_number":72,"context_line":"        host_routes \u003d fixed_ips[0][\u0027host_routes\u0027]"},{"line_number":73,"context_line":"        gateway_ip \u003d fixed_ips[0][\u0027gateway_ip\u0027]"},{"line_number":74,"context_line":"        bin_server \u003d addrconv.ipv4.text_to_bin(gateway_ip or \u0027127.0.0.1\u0027)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        option_list \u003d []"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b48b7a2c_9b698f1e","line":74,"in_reply_to":"64861a60_ccc967a9","updated":"2025-04-17 17:00:57.000000000","message":"Done","commit_id":"f1eb803ff0f6649aba0697c472734c01cc5dbaa6"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"144592924f6ec730896ddeaa81008ba2536f8be6","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        dns_nameservers \u003d fixed_ips[0][\u0027dns_nameservers\u0027]"},{"line_number":72,"context_line":"        host_routes \u003d fixed_ips[0][\u0027host_routes\u0027]"},{"line_number":73,"context_line":"        gateway_ip \u003d fixed_ips[0][\u0027gateway_ip\u0027]"},{"line_number":74,"context_line":"        bin_server \u003d addrconv.ipv4.text_to_bin(gateway_ip or \u0027127.0.0.1\u0027)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        option_list \u003d []"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"64861a60_ccc967a9","line":74,"in_reply_to":"f0f54863_8f97bc86","updated":"2025-04-17 16:45:12.000000000","message":"Sure, that makes sense","commit_id":"f1eb803ff0f6649aba0697c472734c01cc5dbaa6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"33673320fa47cbb8bb5c8385e581ac4b70078f1f","unresolved":true,"context_lines":[{"line_number":85,"context_line":"                            value\u003dDHCPV4_MSG_TYPE_BYTES_OFFER))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        option_list.append("},{"line_number":88,"context_line":"            dhcp.option(tag\u003ddhcp.DHCP_SERVER_IDENTIFIER_OPT,"},{"line_number":89,"context_line":"                        value\u003dbin_server))"},{"line_number":90,"context_line":"        option_list.append("},{"line_number":91,"context_line":"            dhcp.option(tag\u003ddhcp.DHCP_IP_ADDR_LEASE_TIME_OPT,"}],"source_content_type":"text/x-python","patch_set":1,"id":"6d97a98c_411eca70","line":88,"updated":"2025-04-17 14:42:26.000000000","message":"Looks rights to have it identified as 127.0.0.1","commit_id":"f1eb803ff0f6649aba0697c472734c01cc5dbaa6"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"144592924f6ec730896ddeaa81008ba2536f8be6","unresolved":true,"context_lines":[{"line_number":85,"context_line":"                            value\u003dDHCPV4_MSG_TYPE_BYTES_OFFER))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        option_list.append("},{"line_number":88,"context_line":"            dhcp.option(tag\u003ddhcp.DHCP_SERVER_IDENTIFIER_OPT,"},{"line_number":89,"context_line":"                        value\u003dbin_server))"},{"line_number":90,"context_line":"        option_list.append("},{"line_number":91,"context_line":"            dhcp.option(tag\u003ddhcp.DHCP_IP_ADDR_LEASE_TIME_OPT,"}],"source_content_type":"text/x-python","patch_set":1,"id":"c1df350a_d90b0fae","line":88,"in_reply_to":"6d97a98c_411eca70","updated":"2025-04-17 16:45:12.000000000","message":"Yeah, I think we can change in that way","commit_id":"f1eb803ff0f6649aba0697c472734c01cc5dbaa6"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a567bedb8cd50ea932be3f900f4186a0ba1a95fd","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                            value\u003dDHCPV4_MSG_TYPE_BYTES_OFFER))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        option_list.append("},{"line_number":88,"context_line":"            dhcp.option(tag\u003ddhcp.DHCP_SERVER_IDENTIFIER_OPT,"},{"line_number":89,"context_line":"                        value\u003dbin_server))"},{"line_number":90,"context_line":"        option_list.append("},{"line_number":91,"context_line":"            dhcp.option(tag\u003ddhcp.DHCP_IP_ADDR_LEASE_TIME_OPT,"}],"source_content_type":"text/x-python","patch_set":1,"id":"affb3867_912f03f7","line":88,"in_reply_to":"c1df350a_d90b0fae","updated":"2025-04-17 17:00:57.000000000","message":"Done","commit_id":"f1eb803ff0f6649aba0697c472734c01cc5dbaa6"}],"neutron/tests/unit/agent/l2/extensions/dhcp/test_base.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e8f6c470ea4aaf491a805e98fdec462f2994f441","unresolved":true,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"NO_GATEWAY_PORT_INFO \u003d {"},{"line_number":107,"context_line":"    \u0027device_owner\u0027: \u0027compute:nova\u0027,"},{"line_number":108,"context_line":"    \u0027admin_state_up\u0027: True,"},{"line_number":109,"context_line":"    \u0027network_id\u0027: \u0027d666ccb3-69e9-46cb-b157-bb3741d87d5a\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"493279bc_9bec6959","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":20},"updated":"2025-04-24 01:13:50.000000000","message":"Many duplicated code here, we can merge these two INFOs:\n```\nPORT_INFO \u003d {\n      ...\n     \u0027fixed_ips\u0027: [\n     IPV4_INFO,\n     IPV6_INFO],\n     ...\n}\n\nIPV4_INFO_NO_GATEWAY \u003d IPV4_INFO.update({\u0027gateway_ip\u0027: netaddr.IPAddress(\u0027169.254.169.254\u0027)})\nIPV6_INFO_NO_GATEWAY \u003d IPV4_INFO.update({\u0027gateway_ip\u0027: netaddr.IPAddress(\u0027fe80::a9fe:a9fe\u0027)})\n\nNO_GATEWAY_PORT_INFO \u003d {\n      ...\n     \u0027fixed_ips\u0027: [\n     IPV4_INFO_NO_GATEWAY,\n     IPV6_INFO_NO_GATEWAY],\n     ...\n}\n```","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"8a1bf07bbd27d7549e24f607fdb11381f04338f4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"NO_GATEWAY_PORT_INFO \u003d {"},{"line_number":107,"context_line":"    \u0027device_owner\u0027: \u0027compute:nova\u0027,"},{"line_number":108,"context_line":"    \u0027admin_state_up\u0027: True,"},{"line_number":109,"context_line":"    \u0027network_id\u0027: \u0027d666ccb3-69e9-46cb-b157-bb3741d87d5a\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"f3649e34_362dad03","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":20},"in_reply_to":"493279bc_9bec6959","updated":"2025-04-29 16:02:55.000000000","message":"Done","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2f49472306fe01cf07c621b714093c80d49a983","unresolved":true,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"IPV4_INFO_NO_GATEWAY \u003d {"},{"line_number":123,"context_line":"    **IPV4_INFO,"},{"line_number":124,"context_line":"    \u0027gateway_ip\u0027: netaddr.IPAddress(\u0027169.254.169.254\u0027)"},{"line_number":125,"context_line":"}"},{"line_number":126,"context_line":"IPV6_INFO_NO_GATEWAY \u003d {"},{"line_number":127,"context_line":"    **IPV6_INFO,"}],"source_content_type":"text/x-python","patch_set":11,"id":"33f23e7d_43f60d5c","line":124,"updated":"2025-05-07 20:30:58.000000000","message":"Should use the constant for the address here","commit_id":"c0ab600db1fbbba969d711b58f9383442a4fadf7"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"4c9ffc646511979fe746c36c80c3389222ee59d6","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"IPV4_INFO_NO_GATEWAY \u003d {"},{"line_number":123,"context_line":"    **IPV4_INFO,"},{"line_number":124,"context_line":"    \u0027gateway_ip\u0027: netaddr.IPAddress(\u0027169.254.169.254\u0027)"},{"line_number":125,"context_line":"}"},{"line_number":126,"context_line":"IPV6_INFO_NO_GATEWAY \u003d {"},{"line_number":127,"context_line":"    **IPV6_INFO,"}],"source_content_type":"text/x-python","patch_set":11,"id":"32b4c7c7_5e8bef09","line":124,"in_reply_to":"33f23e7d_43f60d5c","updated":"2025-05-08 02:16:39.000000000","message":"Done","commit_id":"c0ab600db1fbbba969d711b58f9383442a4fadf7"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2f49472306fe01cf07c621b714093c80d49a983","unresolved":true,"context_lines":[{"line_number":125,"context_line":"}"},{"line_number":126,"context_line":"IPV6_INFO_NO_GATEWAY \u003d {"},{"line_number":127,"context_line":"    **IPV6_INFO,"},{"line_number":128,"context_line":"    \u0027gateway_ip\u0027: netaddr.IPAddress(\u0027fe80::a9fe:a9fe\u0027)"},{"line_number":129,"context_line":"}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"31423d8d_a8d5abf5","line":128,"updated":"2025-05-07 20:30:58.000000000","message":"And here","commit_id":"c0ab600db1fbbba969d711b58f9383442a4fadf7"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"4c9ffc646511979fe746c36c80c3389222ee59d6","unresolved":false,"context_lines":[{"line_number":125,"context_line":"}"},{"line_number":126,"context_line":"IPV6_INFO_NO_GATEWAY \u003d {"},{"line_number":127,"context_line":"    **IPV6_INFO,"},{"line_number":128,"context_line":"    \u0027gateway_ip\u0027: netaddr.IPAddress(\u0027fe80::a9fe:a9fe\u0027)"},{"line_number":129,"context_line":"}"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"d22f34f4_4a2b030a","line":128,"in_reply_to":"31423d8d_a8d5abf5","updated":"2025-05-08 02:16:39.000000000","message":"\u003e And here","commit_id":"c0ab600db1fbbba969d711b58f9383442a4fadf7"}],"neutron/tests/unit/agent/l2/extensions/dhcp/test_ipv4.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e8f6c470ea4aaf491a805e98fdec462f2994f441","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        dhcp_pkt \u003d ret_pkt.get_protocols(dhcp.dhcp)"},{"line_number":68,"context_line":"        self.assertIsNotNone(dhcp_pkt)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_get_dhcp_options(self):"},{"line_number":71,"context_line":"        expect_bin_routes \u003d (b\u0027\\x00\\xc0\\xa8o\\x01 \\xa9\\xfe\\xa9\\xfe\\xc0\\xa8o\\x01\u0027"},{"line_number":72,"context_line":"                             b\u0027\\x18\\x01\\x01\\x01\\xc0\\xa8\\x01d \u0027"},{"line_number":73,"context_line":"                             b\u0027\\x02\\x02\\x02\\x02\\xc0\\xa8\\x01e\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"178cde23_6ebfba0b","line":70,"range":{"start_line":70,"start_character":8,"end_line":70,"end_character":29},"updated":"2025-04-24 01:13:50.000000000","message":"same here, merge these duplicated code:\n```\ndef _test_get_dhcp_options(self, port_info, has_gateway_ip\u003dFalse):\n    if has_gateway_ip:\n        \u003cthen build the expect option list\u003e\n    ...\n    offer_options \u003d self.dhcp4_responer.get_dhcp_options(port_info)\n    ...\n    ack_options \u003d self.dhcp4_responer.get_dhcp_options(\n           port_info, is_ack\u003dTrue)\n    ...\n\n\ndef test_get_dhcp_options(self):\n    self._test_get_dhcp_options(self.port_info)\n\ndef test_get_dhcp_options_no_gateway(self):\n    self._test_get_dhcp_options(self.no_gateway_port_info, has_gateway_ip\u003dTrue)\n```","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"8a1bf07bbd27d7549e24f607fdb11381f04338f4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        dhcp_pkt \u003d ret_pkt.get_protocols(dhcp.dhcp)"},{"line_number":68,"context_line":"        self.assertIsNotNone(dhcp_pkt)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_get_dhcp_options(self):"},{"line_number":71,"context_line":"        expect_bin_routes \u003d (b\u0027\\x00\\xc0\\xa8o\\x01 \\xa9\\xfe\\xa9\\xfe\\xc0\\xa8o\\x01\u0027"},{"line_number":72,"context_line":"                             b\u0027\\x18\\x01\\x01\\x01\\xc0\\xa8\\x01d \u0027"},{"line_number":73,"context_line":"                             b\u0027\\x02\\x02\\x02\\x02\\xc0\\xa8\\x01e\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"b6e8b34b_9bbe3567","line":70,"range":{"start_line":70,"start_character":8,"end_line":70,"end_character":29},"in_reply_to":"178cde23_6ebfba0b","updated":"2025-04-29 16:02:55.000000000","message":"Done","commit_id":"9094e4c385a3bab4fca6c9acfc77351326e0849b"}]}
