)]}'
{"neutron/agent/l2/extensions/dhcp/ipv4.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8cbe6ba8c02268ceb81290f7c96c7f82330a2f44","unresolved":true,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"METADATA_DEFAULT_IP \u003d \u0027169.254.169.254\u0027"},{"line_number":36,"context_line":"DHCPV4_TYPE_MAP \u003d {dhcp.DHCP_DISCOVER: \u0027DHCPDISCOVER\u0027,"},{"line_number":37,"context_line":"                   dhcp.DHCP_OFFER: \u0027DHCPOFFER\u0027,"},{"line_number":38,"context_line":"                   dhcp.DHCP_REQUEST: \u0027DHCPREQUEST\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9b7810b0_608f7703","line":35,"updated":"2021-03-05 07:55:39.000000000","message":"it is already defined in neutron/agent/linux/dhcp.py - maybe You can import it or move it to some better place and reuse in couple of places the same constant?","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9e88fb9e9f20d881228017f6c23b85ad7086f5ef","unresolved":true,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"METADATA_DEFAULT_IP \u003d \u0027169.254.169.254\u0027"},{"line_number":36,"context_line":"DHCPV4_TYPE_MAP \u003d {dhcp.DHCP_DISCOVER: \u0027DHCPDISCOVER\u0027,"},{"line_number":37,"context_line":"                   dhcp.DHCP_OFFER: \u0027DHCPOFFER\u0027,"},{"line_number":38,"context_line":"                   dhcp.DHCP_REQUEST: \u0027DHCPREQUEST\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"50d52754_35a22f7f","line":35,"in_reply_to":"9b7810b0_608f7703","updated":"2021-03-05 09:23:22.000000000","message":"Move the difination will need some refactor work for DHCP agent related code. For now, I\u0027m intending to not change any existing code, especially DHCP agent related code. I will add a TODO here to merge the difination.","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8cbe6ba8c02268ceb81290f7c96c7f82330a2f44","unresolved":true,"context_lines":[{"line_number":47,"context_line":"                                                *args, **kwargs)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_bin_route(self, destination, nexthop):"},{"line_number":50,"context_line":"        if self.version \u003d\u003d \"v4\":"},{"line_number":51,"context_line":"            text_protocol \u003d addrconv.ipv4"},{"line_number":52,"context_line":"        else:"},{"line_number":53,"context_line":"            text_protocol \u003d addrconv.ipv6"}],"source_content_type":"text/x-python","patch_set":7,"id":"88290d03_cef68b62","line":50,"range":{"start_line":50,"start_character":27,"end_line":50,"end_character":31},"updated":"2021-03-05 07:55:39.000000000","message":"please maybe use constant from neutron-lib","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9e88fb9e9f20d881228017f6c23b85ad7086f5ef","unresolved":true,"context_lines":[{"line_number":47,"context_line":"                                                *args, **kwargs)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_bin_route(self, destination, nexthop):"},{"line_number":50,"context_line":"        if self.version \u003d\u003d \"v4\":"},{"line_number":51,"context_line":"            text_protocol \u003d addrconv.ipv4"},{"line_number":52,"context_line":"        else:"},{"line_number":53,"context_line":"            text_protocol \u003d addrconv.ipv6"}],"source_content_type":"text/x-python","patch_set":7,"id":"bd2c6850_a9701d98","line":50,"range":{"start_line":50,"start_character":27,"end_line":50,"end_character":31},"in_reply_to":"88290d03_cef68b62","updated":"2021-03-05 09:23:22.000000000","message":"Due to the LOG formating, same to this:\nhttps://review.opendev.org/c/openstack/neutron/+/773281/7/neutron/agent/l2/extensions/dhcp/base.py#41","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8cbe6ba8c02268ceb81290f7c96c7f82330a2f44","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        if self.version \u003d\u003d \"v4\":"},{"line_number":51,"context_line":"            text_protocol \u003d addrconv.ipv4"},{"line_number":52,"context_line":"        else:"},{"line_number":53,"context_line":"            text_protocol \u003d addrconv.ipv6"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        bin_route \u003d b\u0027\u0027"},{"line_number":56,"context_line":"        net \u003d netaddr.IPNetwork(str(destination))"}],"source_content_type":"text/x-python","patch_set":7,"id":"f8f5400d_b9d21aac","line":53,"updated":"2021-03-05 07:55:39.000000000","message":"if this is IPv4Responder, why You need here to handle ipv6 address converion?","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9e88fb9e9f20d881228017f6c23b85ad7086f5ef","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        if self.version \u003d\u003d \"v4\":"},{"line_number":51,"context_line":"            text_protocol \u003d addrconv.ipv4"},{"line_number":52,"context_line":"        else:"},{"line_number":53,"context_line":"            text_protocol \u003d addrconv.ipv6"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        bin_route \u003d b\u0027\u0027"},{"line_number":56,"context_line":"        net \u003d netaddr.IPNetwork(str(destination))"}],"source_content_type":"text/x-python","patch_set":7,"id":"77a2e2a7_3fc09d58","line":53,"in_reply_to":"f8f5400d_b9d21aac","updated":"2021-03-05 09:23:22.000000000","message":"This method will be moved to base class. Thanks.","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8cbe6ba8c02268ceb81290f7c96c7f82330a2f44","unresolved":true,"context_lines":[{"line_number":53,"context_line":"            text_protocol \u003d addrconv.ipv6"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        bin_route \u003d b\u0027\u0027"},{"line_number":56,"context_line":"        net \u003d netaddr.IPNetwork(str(destination))"},{"line_number":57,"context_line":"        dest \u003d str(net.ip)"},{"line_number":58,"context_line":"        mask \u003d net.prefixlen"},{"line_number":59,"context_line":"        bin_route +\u003d struct.pack(\u0027B\u0027, mask)"}],"source_content_type":"text/x-python","patch_set":7,"id":"6a035b85_00faec05","line":56,"range":{"start_line":56,"start_character":36,"end_line":56,"end_character":47},"updated":"2021-03-05 07:55:39.000000000","message":"what is the type of destination that You need to convert it to string?","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"748971c53f10e55503628a1d096e558d94b1021f","unresolved":true,"context_lines":[{"line_number":53,"context_line":"            text_protocol \u003d addrconv.ipv6"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        bin_route \u003d b\u0027\u0027"},{"line_number":56,"context_line":"        net \u003d netaddr.IPNetwork(str(destination))"},{"line_number":57,"context_line":"        dest \u003d str(net.ip)"},{"line_number":58,"context_line":"        mask \u003d net.prefixlen"},{"line_number":59,"context_line":"        bin_route +\u003d struct.pack(\u0027B\u0027, mask)"}],"source_content_type":"text/x-python","patch_set":7,"id":"e2712da1_1c281559","line":56,"range":{"start_line":56,"start_character":36,"end_line":56,"end_character":47},"in_reply_to":"4eafc43a_27cecda6","updated":"2021-03-08 11:24:50.000000000","message":"so if it already is netaddr.IPNetwork() object, why do You need to convert it to string and make new IPNetwork() object from that string?","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9e88fb9e9f20d881228017f6c23b85ad7086f5ef","unresolved":true,"context_lines":[{"line_number":53,"context_line":"            text_protocol \u003d addrconv.ipv6"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        bin_route \u003d b\u0027\u0027"},{"line_number":56,"context_line":"        net \u003d netaddr.IPNetwork(str(destination))"},{"line_number":57,"context_line":"        dest \u003d str(net.ip)"},{"line_number":58,"context_line":"        mask \u003d net.prefixlen"},{"line_number":59,"context_line":"        bin_route +\u003d struct.pack(\u0027B\u0027, mask)"}],"source_content_type":"text/x-python","patch_set":7,"id":"4eafc43a_27cecda6","line":56,"range":{"start_line":56,"start_character":36,"end_line":56,"end_character":47},"in_reply_to":"6a035b85_00faec05","updated":"2021-03-05 09:23:22.000000000","message":"Please take a look at the test data, the destination here is not a string, but a netaddr.IPNetwork(\u00271.1.1.0/24\u0027). The entire route entry is:\n\n             subnet_obj.Route(\n                 destination\u003dnetaddr.IPNetwork(\u00271.1.1.0/24\u0027),\n                 nexthop\u003d\u0027192.168.1.100\u0027,\n                 subnet_id\u003d\u0027daed3c3d-d95a-48a8-a8b1-17d408cd760f\u0027)\n\nThis is what neutron-server return.","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8cbe6ba8c02268ceb81290f7c96c7f82330a2f44","unresolved":true,"context_lines":[{"line_number":74,"context_line":"        # the destination to gateway IP."},{"line_number":75,"context_line":"        if gateway:"},{"line_number":76,"context_line":"            meta_route \u003d self.get_bin_route("},{"line_number":77,"context_line":"                (\u0027%s/32\u0027 % METADATA_DEFAULT_IP), gateway)"},{"line_number":78,"context_line":"            bin_routes +\u003d meta_route"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Subnet routes"}],"source_content_type":"text/x-python","patch_set":7,"id":"f1812ca6_ecc767b4","line":77,"updated":"2021-03-05 07:55:39.000000000","message":"if there is gateway set, why we need static route to metadata IP through this gateway? Wouldn\u0027t it be reachable simply through default gateway in such case?","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9e88fb9e9f20d881228017f6c23b85ad7086f5ef","unresolved":true,"context_lines":[{"line_number":74,"context_line":"        # the destination to gateway IP."},{"line_number":75,"context_line":"        if gateway:"},{"line_number":76,"context_line":"            meta_route \u003d self.get_bin_route("},{"line_number":77,"context_line":"                (\u0027%s/32\u0027 % METADATA_DEFAULT_IP), gateway)"},{"line_number":78,"context_line":"            bin_routes +\u003d meta_route"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # Subnet routes"}],"source_content_type":"text/x-python","patch_set":7,"id":"6f224048_3873d41e","line":77,"in_reply_to":"f1812ca6_ecc767b4","updated":"2021-03-05 09:23:22.000000000","message":"For the traditional DHCP agent, if the DHCP namespace enabled isolated metadata proxy, the response neutron DHCP agent will add a route (to 169.254.169.254 via \u003cthis_dhcp_instance_port_ip\u003e) implicitly. In such case, we add this option here to refresh the route inside the VM.","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8cbe6ba8c02268ceb81290f7c96c7f82330a2f44","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        net \u003d netaddr.IPNetwork(fixed_ips[0][\u0027cidr\u0027])"},{"line_number":89,"context_line":"        dns_nameservers \u003d fixed_ips[0][\u0027dns_nameservers\u0027]"},{"line_number":90,"context_line":"        host_routes \u003d fixed_ips[0][\u0027host_routes\u0027]"},{"line_number":91,"context_line":"        gateway_ip \u003d fixed_ips[0][\u0027gateway_ip\u0027]"},{"line_number":92,"context_line":"        bin_server \u003d addrconv.ipv4.text_to_bin(gateway_ip)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        option_list \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"3b364340_c5becb63","line":91,"updated":"2021-03-05 07:55:39.000000000","message":"there can be more that one fixed IP on the port, and each can be from different subnet, is that ok to just base all on first IP in such case?","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"748971c53f10e55503628a1d096e558d94b1021f","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        net \u003d netaddr.IPNetwork(fixed_ips[0][\u0027cidr\u0027])"},{"line_number":89,"context_line":"        dns_nameservers \u003d fixed_ips[0][\u0027dns_nameservers\u0027]"},{"line_number":90,"context_line":"        host_routes \u003d fixed_ips[0][\u0027host_routes\u0027]"},{"line_number":91,"context_line":"        gateway_ip \u003d fixed_ips[0][\u0027gateway_ip\u0027]"},{"line_number":92,"context_line":"        bin_server \u003d addrconv.ipv4.text_to_bin(gateway_ip)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        option_list \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"7debc134_6c5c1460","line":91,"in_reply_to":"0be090ca_55aa0fe7","updated":"2021-03-08 11:24:50.000000000","message":"I really don\u0027t think it is good idea. Even if in Your case it\u0027s not used a lot, there may be users who will use more than one IP address on port. Is that such big problem to make this working out of the box?","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9e88fb9e9f20d881228017f6c23b85ad7086f5ef","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        net \u003d netaddr.IPNetwork(fixed_ips[0][\u0027cidr\u0027])"},{"line_number":89,"context_line":"        dns_nameservers \u003d fixed_ips[0][\u0027dns_nameservers\u0027]"},{"line_number":90,"context_line":"        host_routes \u003d fixed_ips[0][\u0027host_routes\u0027]"},{"line_number":91,"context_line":"        gateway_ip \u003d fixed_ips[0][\u0027gateway_ip\u0027]"},{"line_number":92,"context_line":"        bin_server \u003d addrconv.ipv4.text_to_bin(gateway_ip)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        option_list \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"0be090ca_55aa0fe7","line":91,"in_reply_to":"3b364340_c5becb63","updated":"2021-03-05 09:23:22.000000000","message":"From my experiences, that\u0027s not a general case, I did not see that is used too much in real user applications. So, for now, this is for the first IP only. Maybe a TODO can be added here. In the spec, I posted that we only take care the first IP. The secondary IPs will not be considered.","commit_id":"eaf78784c52d7c9126499c701ac501cb4a291952"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"21605a5288f3fb6938ec03c7c9e476eae51b2ce3","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# TODO(liuyulong): merge the existing definition with"},{"line_number":35,"context_line":"# neutron/agent/linux/dhcp.py"},{"line_number":36,"context_line":"METADATA_DEFAULT_IP \u003d \u0027169.254.169.254\u0027"},{"line_number":37,"context_line":"DHCPV4_TYPE_MAP \u003d {dhcp.DHCP_DISCOVER: \u0027DHCPDISCOVER\u0027,"},{"line_number":38,"context_line":"                   dhcp.DHCP_OFFER: \u0027DHCPOFFER\u0027,"},{"line_number":39,"context_line":"                   dhcp.DHCP_REQUEST: \u0027DHCPREQUEST\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"17c49824_7918a5bd","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":19},"updated":"2021-03-11 08:14:17.000000000","message":"there is METADATA_V4_IP in neutron-lib","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d186a4ff78e7c4918e254c6c03564f46faeaa5d9","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# TODO(liuyulong): merge the existing definition with"},{"line_number":35,"context_line":"# neutron/agent/linux/dhcp.py"},{"line_number":36,"context_line":"METADATA_DEFAULT_IP \u003d \u0027169.254.169.254\u0027"},{"line_number":37,"context_line":"DHCPV4_TYPE_MAP \u003d {dhcp.DHCP_DISCOVER: \u0027DHCPDISCOVER\u0027,"},{"line_number":38,"context_line":"                   dhcp.DHCP_OFFER: \u0027DHCPOFFER\u0027,"},{"line_number":39,"context_line":"                   dhcp.DHCP_REQUEST: \u0027DHCPREQUEST\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5c0571b9_eae1ca6b","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":19},"in_reply_to":"17c49824_7918a5bd","updated":"2021-03-11 09:10:13.000000000","message":"+1\nhttps://opendev.org/openstack/neutron-lib/src/branch/master/neutron_lib/constants.py#L615","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9cdce0f1d8a74d2b4e00a8b8c6df2da16a8511e1","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# TODO(liuyulong): merge the existing definition with"},{"line_number":35,"context_line":"# neutron/agent/linux/dhcp.py"},{"line_number":36,"context_line":"METADATA_DEFAULT_IP \u003d \u0027169.254.169.254\u0027"},{"line_number":37,"context_line":"DHCPV4_TYPE_MAP \u003d {dhcp.DHCP_DISCOVER: \u0027DHCPDISCOVER\u0027,"},{"line_number":38,"context_line":"                   dhcp.DHCP_OFFER: \u0027DHCPOFFER\u0027,"},{"line_number":39,"context_line":"                   dhcp.DHCP_REQUEST: \u0027DHCPREQUEST\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"a0fb982a_a00a8797","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":19},"in_reply_to":"17c49824_7918a5bd","updated":"2021-03-11 09:26:21.000000000","message":"OK, we implemented this 2 yes ago, so I need catch up the upstream changes. 😊","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"21605a5288f3fb6938ec03c7c9e476eae51b2ce3","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class DHCPIPv4Responder(dhcp_base.DHCPResponderBase):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def __init__(self, agent_api, ext_api, *args, **kwargs):"},{"line_number":46,"context_line":"        super(DHCPIPv4Responder, self).__init__(agent_api, ext_api,"},{"line_number":47,"context_line":"                                                version\u003ddhcp_base.IPV4_STR,"},{"line_number":48,"context_line":"                                                *args, **kwargs)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def get_bin_routes(self, gateway, routes):"},{"line_number":51,"context_line":"        bin_routes \u003d b\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"8c9707af_1c84cbc7","line":48,"range":{"start_line":45,"start_character":4,"end_line":48,"end_character":64},"updated":"2021-03-11 08:14:17.000000000","message":"can omit if only calling super","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9cdce0f1d8a74d2b4e00a8b8c6df2da16a8511e1","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class DHCPIPv4Responder(dhcp_base.DHCPResponderBase):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def __init__(self, agent_api, ext_api, *args, **kwargs):"},{"line_number":46,"context_line":"        super(DHCPIPv4Responder, self).__init__(agent_api, ext_api,"},{"line_number":47,"context_line":"                                                version\u003ddhcp_base.IPV4_STR,"},{"line_number":48,"context_line":"                                                *args, **kwargs)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def get_bin_routes(self, gateway, routes):"},{"line_number":51,"context_line":"        bin_routes \u003d b\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"deb7d968_a7d1baaf","line":48,"range":{"start_line":45,"start_character":4,"end_line":48,"end_character":64},"in_reply_to":"8c9707af_1c84cbc7","updated":"2021-03-11 09:26:21.000000000","message":"Done","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d186a4ff78e7c4918e254c6c03564f46faeaa5d9","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class DHCPIPv4Responder(dhcp_base.DHCPResponderBase):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def __init__(self, agent_api, ext_api, *args, **kwargs):"},{"line_number":46,"context_line":"        super(DHCPIPv4Responder, self).__init__(agent_api, ext_api,"},{"line_number":47,"context_line":"                                                version\u003ddhcp_base.IPV4_STR,"},{"line_number":48,"context_line":"                                                *args, **kwargs)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def get_bin_routes(self, gateway, routes):"},{"line_number":51,"context_line":"        bin_routes \u003d b\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"3d137ded_7f8c84ab","line":48,"range":{"start_line":45,"start_character":4,"end_line":48,"end_character":64},"in_reply_to":"8c9707af_1c84cbc7","updated":"2021-03-11 09:10:13.000000000","message":"it\u0027s here necessary as I see as version is passed as ipv4 and ipv6 in case of DHCPIPv6Responder (next patch)","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"21605a5288f3fb6938ec03c7c9e476eae51b2ce3","unresolved":true,"context_lines":[{"line_number":47,"context_line":"                                                version\u003ddhcp_base.IPV4_STR,"},{"line_number":48,"context_line":"                                                *args, **kwargs)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def get_bin_routes(self, gateway, routes):"},{"line_number":51,"context_line":"        bin_routes \u003d b\u0027\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Default routes"}],"source_content_type":"text/x-python","patch_set":10,"id":"35ecf57f_70c947b7","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":46},"updated":"2021-03-11 08:14:17.000000000","message":"can be staticmethod if make get_bin_route() static as well","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9cdce0f1d8a74d2b4e00a8b8c6df2da16a8511e1","unresolved":true,"context_lines":[{"line_number":47,"context_line":"                                                version\u003ddhcp_base.IPV4_STR,"},{"line_number":48,"context_line":"                                                *args, **kwargs)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def get_bin_routes(self, gateway, routes):"},{"line_number":51,"context_line":"        bin_routes \u003d b\u0027\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Default routes"}],"source_content_type":"text/x-python","patch_set":10,"id":"0ff22241_6f57ccc0","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":46},"in_reply_to":"35ecf57f_70c947b7","updated":"2021-03-11 09:26:21.000000000","message":"Why staticmethod method? All these methods will be called in this class only. And these method are inherited from base class.","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"21605a5288f3fb6938ec03c7c9e476eae51b2ce3","unresolved":true,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        # For some VMs they may need the metadate IP\u0027s route, we move"},{"line_number":58,"context_line":"        # the destination to gateway IP."},{"line_number":59,"context_line":"        if gateway:"},{"line_number":60,"context_line":"            meta_route \u003d self.get_bin_route("},{"line_number":61,"context_line":"                (\u0027%s/32\u0027 % METADATA_DEFAULT_IP), gateway)"},{"line_number":62,"context_line":"            bin_routes +\u003d meta_route"}],"source_content_type":"text/x-python","patch_set":10,"id":"280eeebd_fef43bc8","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":18},"updated":"2021-03-11 08:14:17.000000000","message":"if gateway is not a required parameter, can it be None by default?","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9cdce0f1d8a74d2b4e00a8b8c6df2da16a8511e1","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        # For some VMs they may need the metadate IP\u0027s route, we move"},{"line_number":58,"context_line":"        # the destination to gateway IP."},{"line_number":59,"context_line":"        if gateway:"},{"line_number":60,"context_line":"            meta_route \u003d self.get_bin_route("},{"line_number":61,"context_line":"                (\u0027%s/32\u0027 % METADATA_DEFAULT_IP), gateway)"},{"line_number":62,"context_line":"            bin_routes +\u003d meta_route"}],"source_content_type":"text/x-python","patch_set":10,"id":"928bd97d_04ff8a17","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":18},"in_reply_to":"280eeebd_fef43bc8","updated":"2021-03-11 09:26:21.000000000","message":"Done","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"21605a5288f3fb6938ec03c7c9e476eae51b2ce3","unresolved":true,"context_lines":[{"line_number":58,"context_line":"        # the destination to gateway IP."},{"line_number":59,"context_line":"        if gateway:"},{"line_number":60,"context_line":"            meta_route \u003d self.get_bin_route("},{"line_number":61,"context_line":"                (\u0027%s/32\u0027 % METADATA_DEFAULT_IP), gateway)"},{"line_number":62,"context_line":"            bin_routes +\u003d meta_route"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Subnet routes"}],"source_content_type":"text/x-python","patch_set":10,"id":"e9176775_698e09c6","line":61,"range":{"start_line":61,"start_character":17,"end_line":61,"end_character":46},"updated":"2021-03-11 08:14:17.000000000","message":"METADATA_V4_CIDR from neutron-lib","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9cdce0f1d8a74d2b4e00a8b8c6df2da16a8511e1","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # the destination to gateway IP."},{"line_number":59,"context_line":"        if gateway:"},{"line_number":60,"context_line":"            meta_route \u003d self.get_bin_route("},{"line_number":61,"context_line":"                (\u0027%s/32\u0027 % METADATA_DEFAULT_IP), gateway)"},{"line_number":62,"context_line":"            bin_routes +\u003d meta_route"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # Subnet routes"}],"source_content_type":"text/x-python","patch_set":10,"id":"c0c0a103_58ac96bf","line":61,"range":{"start_line":61,"start_character":17,"end_line":61,"end_character":46},"in_reply_to":"e9176775_698e09c6","updated":"2021-03-11 09:26:21.000000000","message":"Done","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"21605a5288f3fb6938ec03c7c9e476eae51b2ce3","unresolved":true,"context_lines":[{"line_number":66,"context_line":"            bin_routes +\u003d self.get_bin_route(route[\u0027destination\u0027],"},{"line_number":67,"context_line":"                                             route[\u0027nexthop\u0027])"},{"line_number":68,"context_line":"        return bin_routes"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":71,"context_line":"        fixed_ips \u003d port_info[\u0027fixed_ips\u0027]"},{"line_number":72,"context_line":"        net \u003d netaddr.IPNetwork(fixed_ips[0][\u0027cidr\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac22bbf_9d0b0f26","line":69,"updated":"2021-03-11 08:14:17.000000000","message":"staticmethod?","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"21605a5288f3fb6938ec03c7c9e476eae51b2ce3","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                                             route[\u0027nexthop\u0027])"},{"line_number":68,"context_line":"        return bin_routes"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":71,"context_line":"        fixed_ips \u003d port_info[\u0027fixed_ips\u0027]"},{"line_number":72,"context_line":"        net \u003d netaddr.IPNetwork(fixed_ips[0][\u0027cidr\u0027])"},{"line_number":73,"context_line":"        dns_nameservers \u003d fixed_ips[0][\u0027dns_nameservers\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"4129995d_e493611a","line":70,"range":{"start_line":70,"start_character":4,"end_line":70,"end_character":56},"updated":"2021-03-11 08:14:17.000000000","message":"nit: please refactor into several methods for better readability","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9cdce0f1d8a74d2b4e00a8b8c6df2da16a8511e1","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                                             route[\u0027nexthop\u0027])"},{"line_number":68,"context_line":"        return bin_routes"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_dhcp_options(self, port_info, is_ack\u003dFalse):"},{"line_number":71,"context_line":"        fixed_ips \u003d port_info[\u0027fixed_ips\u0027]"},{"line_number":72,"context_line":"        net \u003d netaddr.IPNetwork(fixed_ips[0][\u0027cidr\u0027])"},{"line_number":73,"context_line":"        dns_nameservers \u003d fixed_ips[0][\u0027dns_nameservers\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"e71c84ae_7d182be1","line":70,"range":{"start_line":70,"start_character":4,"end_line":70,"end_character":56},"in_reply_to":"4129995d_e493611a","updated":"2021-03-11 09:26:21.000000000","message":"The following lines 71-76 datas are widely used in this method. Otherwise, all such datas get action will be re-write in every small functions. And all these are data type transformation, nothing complicated. We are just filling a list. After try that way, the new call looks a bit ugly. There are too many small functions with one data trans action, just looks not necessary.","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"91570ee6690854bd6f4f23533669e8e42f49fda6","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        if is_ack:"},{"line_number":73,"context_line":"            option_list.append("},{"line_number":74,"context_line":"                dhcp.option(tag\u003ddhcp.DHCP_MESSAGE_TYPE_OPT,"},{"line_number":75,"context_line":"                            value\u003db\u0027\\x05\u0027))"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            option_list.append("},{"line_number":78,"context_line":"                dhcp.option(tag\u003ddhcp.DHCP_MESSAGE_TYPE_OPT,"}],"source_content_type":"text/x-python","patch_set":11,"id":"09a16b81_8726b39e","line":75,"range":{"start_line":75,"start_character":34,"end_line":75,"end_character":41},"updated":"2021-03-11 12:35:38.000000000","message":"better use constants to avoid majic numbers","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a824c513e1102f6f3b689e33d1635fb8c3b105bb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        if is_ack:"},{"line_number":73,"context_line":"            option_list.append("},{"line_number":74,"context_line":"                dhcp.option(tag\u003ddhcp.DHCP_MESSAGE_TYPE_OPT,"},{"line_number":75,"context_line":"                            value\u003db\u0027\\x05\u0027))"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            option_list.append("},{"line_number":78,"context_line":"                dhcp.option(tag\u003ddhcp.DHCP_MESSAGE_TYPE_OPT,"}],"source_content_type":"text/x-python","patch_set":11,"id":"dd51474c_c3e49922","line":75,"range":{"start_line":75,"start_character":34,"end_line":75,"end_character":41},"in_reply_to":"09a16b81_8726b39e","updated":"2021-03-15 02:39:10.000000000","message":"Done","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"91570ee6690854bd6f4f23533669e8e42f49fda6","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            option_list.append("},{"line_number":78,"context_line":"                dhcp.option(tag\u003ddhcp.DHCP_MESSAGE_TYPE_OPT,"},{"line_number":79,"context_line":"                            value\u003db\u0027\\x02\u0027))"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        option_list.append("},{"line_number":82,"context_line":"            dhcp.option(tag\u003ddhcp.DHCP_SERVER_IDENTIFIER_OPT,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7da3920f_1688d641","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":41},"updated":"2021-03-11 12:35:38.000000000","message":"ditto","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a824c513e1102f6f3b689e33d1635fb8c3b105bb","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            option_list.append("},{"line_number":78,"context_line":"                dhcp.option(tag\u003ddhcp.DHCP_MESSAGE_TYPE_OPT,"},{"line_number":79,"context_line":"                            value\u003db\u0027\\x02\u0027))"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        option_list.append("},{"line_number":82,"context_line":"            dhcp.option(tag\u003ddhcp.DHCP_SERVER_IDENTIFIER_OPT,"}],"source_content_type":"text/x-python","patch_set":11,"id":"839a36c9_e76a2225","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":41},"in_reply_to":"7da3920f_1688d641","updated":"2021-03-15 02:39:10.000000000","message":"Done","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"91570ee6690854bd6f4f23533669e8e42f49fda6","unresolved":true,"context_lines":[{"line_number":102,"context_line":"                        value\u003daddrconv.ipv4.text_to_bin(str(net.netmask))))"},{"line_number":103,"context_line":"        # Option: (28) Broadcast Address"},{"line_number":104,"context_line":"        option_list.append("},{"line_number":105,"context_line":"            dhcp.option(tag\u003d28,"},{"line_number":106,"context_line":"                        value\u003daddrconv.ipv4.text_to_bin(str(net.broadcast))))"},{"line_number":107,"context_line":"        # DNS"},{"line_number":108,"context_line":"        if dns_nameservers:"}],"source_content_type":"text/x-python","patch_set":11,"id":"057c478b_07db31d5","line":105,"range":{"start_line":105,"start_character":28,"end_line":105,"end_character":30},"updated":"2021-03-11 12:35:38.000000000","message":"ditto","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a824c513e1102f6f3b689e33d1635fb8c3b105bb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                        value\u003daddrconv.ipv4.text_to_bin(str(net.netmask))))"},{"line_number":103,"context_line":"        # Option: (28) Broadcast Address"},{"line_number":104,"context_line":"        option_list.append("},{"line_number":105,"context_line":"            dhcp.option(tag\u003d28,"},{"line_number":106,"context_line":"                        value\u003daddrconv.ipv4.text_to_bin(str(net.broadcast))))"},{"line_number":107,"context_line":"        # DNS"},{"line_number":108,"context_line":"        if dns_nameservers:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5dfe1826_fc8a76bb","line":105,"range":{"start_line":105,"start_character":28,"end_line":105,"end_character":30},"in_reply_to":"057c478b_07db31d5","updated":"2021-03-15 02:39:10.000000000","message":"Done","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"91570ee6690854bd6f4f23533669e8e42f49fda6","unresolved":true,"context_lines":[{"line_number":134,"context_line":"        return options"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def get_ret_packet(self, packet_in, port_info, is_ack\u003dFalse):"},{"line_number":137,"context_line":"        ip_info \u003d self.get_port_ip(port_info, ip_version\u003d4)"},{"line_number":138,"context_line":"        if not ip_info:"},{"line_number":139,"context_line":"            return"},{"line_number":140,"context_line":"        ip_addr \u003d ip_info[\u0027ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"a8099828_adaea0f5","line":137,"range":{"start_line":137,"start_character":57,"end_line":137,"end_character":58},"updated":"2021-03-11 12:35:38.000000000","message":"ditto","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a824c513e1102f6f3b689e33d1635fb8c3b105bb","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        return options"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def get_ret_packet(self, packet_in, port_info, is_ack\u003dFalse):"},{"line_number":137,"context_line":"        ip_info \u003d self.get_port_ip(port_info, ip_version\u003d4)"},{"line_number":138,"context_line":"        if not ip_info:"},{"line_number":139,"context_line":"            return"},{"line_number":140,"context_line":"        ip_addr \u003d ip_info[\u0027ip_address\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"435f7f11_67f99f43","line":137,"range":{"start_line":137,"start_character":57,"end_line":137,"end_character":58},"in_reply_to":"a8099828_adaea0f5","updated":"2021-03-15 02:39:10.000000000","message":"Done","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"}],"neutron/conf/plugins/ml2/drivers/ovs_conf.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c003bc98bdc58c542a36237e224b718e7b2d4028","unresolved":true,"context_lines":[{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"def register_ovs_agent_opts(cfg\u003dcfg.CONF):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f85f39af_83c88240","line":184,"updated":"2021-02-01 18:12:47.000000000","message":"We can\u0027t just use the agent ones I guess?","commit_id":"601bd6d5b90c87c8a95eb93fcdd5a06fc5e255f7"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"888e0d9d034e5fa00d3ebd565fd39ef4b1cfc78c","unresolved":true,"context_lines":[{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"def register_ovs_agent_opts(cfg\u003dcfg.CONF):"}],"source_content_type":"text/x-python","patch_set":1,"id":"82c650b1_098dcc8d","line":184,"in_reply_to":"f85f39af_83c88240","updated":"2021-02-03 04:23:23.000000000","message":"Too much refactor work, they are in DNSMASQ_OPTS now.","commit_id":"601bd6d5b90c87c8a95eb93fcdd5a06fc5e255f7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d186a4ff78e7c4918e254c6c03564f46faeaa5d9","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                       \"traffic.\")),"},{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"def register_ovs_agent_opts(cfg\u003dcfg.CONF):"}],"source_content_type":"text/x-python","patch_set":10,"id":"82ea4c32_e4b95c8c","line":184,"range":{"start_line":177,"start_character":0,"end_line":184,"end_character":1},"updated":"2021-03-11 09:10:13.000000000","message":"can\u0027t You reuse the original cfg options:\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/conf/agent/dhcp.py#L113-L118\n\nWould be much simpler configuration/upgrade for admins/operators","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9adcc28fbf19cc094a0cc53517fe97ad2aadcd99","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                       \"traffic.\")),"},{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"def register_ovs_agent_opts(cfg\u003dcfg.CONF):"}],"source_content_type":"text/x-python","patch_set":10,"id":"eee432d4_2b44ec0c","line":184,"range":{"start_line":177,"start_character":0,"end_line":184,"end_character":1},"in_reply_to":"5dca6e98_e87843da","updated":"2021-03-11 10:30:07.000000000","message":"Those optiona are exactly the same, I just suggested to reuse them if possible, please consider, but I can leave with it just I feel it better to use the already widely used cfg options (dhcp_renewal_time, dhcp_rebinding_time) with the same meaning.","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9cdce0f1d8a74d2b4e00a8b8c6df2da16a8511e1","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                       \"traffic.\")),"},{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"def register_ovs_agent_opts(cfg\u003dcfg.CONF):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5dca6e98_e87843da","line":184,"range":{"start_line":177,"start_character":0,"end_line":184,"end_character":1},"in_reply_to":"82ea4c32_e4b95c8c","updated":"2021-03-11 09:26:21.000000000","message":"Let\u0027s do not toch any existing DHCP agent related code, I do not want to implement this with some refactor of DHCP agent. If everything works fine, maybe we can do such refactor as a follow-up.","commit_id":"71b5543b40d07a1322c938f105cc42877a09f5c1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9c56342df09a12c88f285a4c0fc9a2299bdd3631","unresolved":true,"context_lines":[{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"0450c67d_204e9fd5","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":65},"updated":"2021-03-12 11:37:02.000000000","message":"Liu: Please change these to dhcp_renewal_time and dhcp_rebinding_time to keep the naming consistent.\n\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/conf/agent/dhcp.py#L113-L118","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"260cf137ad8f9aa2453adf340bf556af15523a82","unresolved":true,"context_lines":[{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3ed14700_135c62ce","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":65},"in_reply_to":"0450c67d_204e9fd5","updated":"2021-03-12 11:49:26.000000000","message":"It is in that \"dhcp_*\" style once, but since it is in \u0027[DHCP]\u0027 config section. So we removed that prefix.","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e6dc92c693d87ee23effe69446180c5127785bf4","unresolved":false,"context_lines":[{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"66d2fb7a_55da72c9","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":65},"in_reply_to":"3ed14700_135c62ce","updated":"2021-03-16 11:21:50.000000000","message":"Ack","commit_id":"87506765e1baa4cf3f9532be3bfe042b47b855dd"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"acd0cbc4e1c74abfe1d54180c747e8e44e146f9d","unresolved":true,"context_lines":[{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"fdb50360_c84f0103","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":65},"updated":"2021-04-08 14:39:15.000000000","message":"I still keep that would be better to call these in the same way as in [1] as these are the same options, but can leave with it :-)\n\n[1] https://opendev.org/openstack/neutron/src/branch/master/neutron/conf/agent/dhcp.py#L113-L118","commit_id":"b0022c51fed2c824ab85c0ec8f5dc2b9f5a13c59"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"76923822ccf7d4330e0cc9cab6c39297835888e2","unresolved":true,"context_lines":[{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"fca6f316_624a8787","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":65},"in_reply_to":"a038e8dc_1c22baeb","updated":"2021-04-16 07:17:55.000000000","message":"I also think this should be unified and same options should be reused in 2 places. But it can be done as follow up patch.","commit_id":"b0022c51fed2c824ab85c0ec8f5dc2b9f5a13c59"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d9a9c97fe16d1b20da748f53d93e832b49ea2eac","unresolved":true,"context_lines":[{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"a038e8dc_1c22baeb","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":65},"in_reply_to":"bb87c0f7_de1e84e7","updated":"2021-04-16 06:37:30.000000000","message":"I am fine with that, if it will be agreed it still will be in the same cycle","commit_id":"b0022c51fed2c824ab85c0ec8f5dc2b9f5a13c59"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"4cb4a89dcae93155182a9b41d2909b8270d1e4e3","unresolved":true,"context_lines":[{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"dhcp_opts \u003d ["},{"line_number":178,"context_line":"    cfg.IntOpt(\u0027renewal_time\u0027, default\u003d0,"},{"line_number":179,"context_line":"               help\u003d_(\"DHCP renewal time T1 (in seconds). If set to 0, it \""},{"line_number":180,"context_line":"                      \"will default to half of the lease time.\")),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027rebinding_time\u0027, default\u003d0,"},{"line_number":182,"context_line":"               help\u003d_(\"DHCP rebinding time T2 (in seconds). If set to 0, it \""},{"line_number":183,"context_line":"                      \"will default to 7/8 of the lease time.\")),"},{"line_number":184,"context_line":"]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bb87c0f7_de1e84e7","line":183,"range":{"start_line":178,"start_character":0,"end_line":183,"end_character":65},"in_reply_to":"fdb50360_c84f0103","updated":"2021-04-16 00:50:34.000000000","message":"If we reach a final consensus, I will upload a follow-up patch to do the refactor work. For now, for this long series of patches, let\u0027s make it clear and independent.","commit_id":"b0022c51fed2c824ab85c0ec8f5dc2b9f5a13c59"}]}
