)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"950d16354d1e2c46e54e6976263e6365286b49fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"17fdd1ec_32618b73","updated":"2022-09-27 11:31:57.000000000","message":"Looks ok, let\u0027s wait for the CI","commit_id":"7964bc7ab5169a9392fd62d00694057abb618f83"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"0134e1d885a46ad90c3760cd4894d5ad46a4184a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7b3ba32d_af9a2467","updated":"2022-09-27 07:43:50.000000000","message":"recheck - some packaging issue in grenade job","commit_id":"7964bc7ab5169a9392fd62d00694057abb618f83"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"aaa3ab2ccaf602e3936af47d405886b8f5310b24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ce628b37_3dda2680","updated":"2022-10-18 07:49:49.000000000","message":"recheck unrelated error","commit_id":"4db391a2f54d346eb86c43e695a1c91eb02fa914"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"eef098089a5e69ca685c117ac33e97862018298f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b57f601d_366502d8","updated":"2022-11-02 10:42:21.000000000","message":"Nice patch but I\u0027m missing some FTs in neutron.tests.functional.agent.linux.test_ip_lib","commit_id":"a2580de74b987788b5485f60d216cffa4c4414c1"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"2031f0efd32cf6b630fd9e2ab7963db47d50ed3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6e9bd311_34adc68d","updated":"2022-10-27 13:17:44.000000000","message":"recheck timeout","commit_id":"a2580de74b987788b5485f60d216cffa4c4414c1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ecadf4a4a16bb35e3673e1291367379ac8263e80","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b2ca3bd2_936e5a01","updated":"2022-12-02 05:48:37.000000000","message":"-1 only for the return/pass thing.","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"92d833fe5bf52705e0ccb02c2d6adceab5f23940","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b52ad5ef_50bae6c7","updated":"2022-11-11 15:17:17.000000000","message":"recheck unrelated fullstack error","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"06cd805e4b1f77df34bd953405e3cf085000fbf0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ba1c72bb_3c308ff1","updated":"2022-12-14 15:38:11.000000000","message":"LGTM","commit_id":"81980146cbdcc42d2398f4e777e659fc59c3b55f"}],"neutron/agent/ovn/metadata/agent.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f49e4ad30f3bcb30bc36ab4b7c2529bb6233e060","unresolved":true,"context_lines":[{"line_number":494,"context_line":"        # port in the network."},{"line_number":495,"context_line":"        ipv4_cidrs \u003d []"},{"line_number":496,"context_line":"        for cidr in metadata_port.ip_addresses - current_cidrs:"},{"line_number":497,"context_line":"            if utils.get_ip_version(cidr) \u003d\u003d 4:"},{"line_number":498,"context_line":"                ipv4_cidrs.append(cidr)"},{"line_number":499,"context_line":"        ip2.addr.add_multiple(ipv4_cidrs)"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fc85bc64_55d48669","line":497,"range":{"start_line":497,"start_character":45,"end_line":497,"end_character":46},"updated":"2022-10-26 12:50:18.000000000","message":"I know I\u0027m annoying nit picker but please use neutron_lib constant for that :)","commit_id":"4db391a2f54d346eb86c43e695a1c91eb02fa914"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"7f6d2651f8ada355d496dcee404cdbe4fc8875e9","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        # port in the network."},{"line_number":495,"context_line":"        ipv4_cidrs \u003d []"},{"line_number":496,"context_line":"        for cidr in metadata_port.ip_addresses - current_cidrs:"},{"line_number":497,"context_line":"            if utils.get_ip_version(cidr) \u003d\u003d 4:"},{"line_number":498,"context_line":"                ipv4_cidrs.append(cidr)"},{"line_number":499,"context_line":"        ip2.addr.add_multiple(ipv4_cidrs)"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"688a8a23_fdf8af15","line":497,"range":{"start_line":497,"start_character":45,"end_line":497,"end_character":46},"in_reply_to":"fc85bc64_55d48669","updated":"2022-10-27 01:34:16.000000000","message":"No problem, this is good feedback. I already addressed this in patch 861124 which will conflict with this patch for sure. The code from 861124 will take precedence","commit_id":"4db391a2f54d346eb86c43e695a1c91eb02fa914"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ecadf4a4a16bb35e3673e1291367379ac8263e80","unresolved":true,"context_lines":[{"line_number":487,"context_line":"        if cidrs_to_delete:"},{"line_number":488,"context_line":"            ip2.addr.delete_multiple(cidrs_to_delete)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        # NOTE(dalvarez): metadata only works on IPv4. We\u0027re doing this"},{"line_number":491,"context_line":"        # extra check here because it could be that the metadata port has"},{"line_number":492,"context_line":"        # an IPv6 address if there\u0027s an IPv6 subnet with SLAAC in its"},{"line_number":493,"context_line":"        # network. Neutron IPAM will autoallocate an IPv6 address for every"}],"source_content_type":"text/x-python","patch_set":8,"id":"22b09926_fcf46063","line":490,"updated":"2022-12-02 05:48:37.000000000","message":"Not directly related to this patch, but does OVN really not support metadata on IPv6?","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"901e54c0b82fb1bfaa11a93526e0ddbe639fdb72","unresolved":true,"context_lines":[{"line_number":487,"context_line":"        if cidrs_to_delete:"},{"line_number":488,"context_line":"            ip2.addr.delete_multiple(cidrs_to_delete)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        # NOTE(dalvarez): metadata only works on IPv4. We\u0027re doing this"},{"line_number":491,"context_line":"        # extra check here because it could be that the metadata port has"},{"line_number":492,"context_line":"        # an IPv6 address if there\u0027s an IPv6 subnet with SLAAC in its"},{"line_number":493,"context_line":"        # network. Neutron IPAM will autoallocate an IPv6 address for every"}],"source_content_type":"text/x-python","patch_set":8,"id":"b83e19d9_4c4b2cfb","line":490,"in_reply_to":"22b09926_fcf46063","updated":"2022-12-02 07:41:17.000000000","message":"Unfortunatelly currently not but I have plan to add support for it in OVN driver","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6521c97bb80722a809f1259464e4f0bab57f2bae","unresolved":false,"context_lines":[{"line_number":487,"context_line":"        if cidrs_to_delete:"},{"line_number":488,"context_line":"            ip2.addr.delete_multiple(cidrs_to_delete)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        # NOTE(dalvarez): metadata only works on IPv4. We\u0027re doing this"},{"line_number":491,"context_line":"        # extra check here because it could be that the metadata port has"},{"line_number":492,"context_line":"        # an IPv6 address if there\u0027s an IPv6 subnet with SLAAC in its"},{"line_number":493,"context_line":"        # network. Neutron IPAM will autoallocate an IPv6 address for every"}],"source_content_type":"text/x-python","patch_set":8,"id":"0696df79_34c130d9","line":490,"in_reply_to":"b83e19d9_4c4b2cfb","updated":"2022-12-04 04:27:51.000000000","message":"Ack","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"}],"neutron/common/utils.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"950d16354d1e2c46e54e6976263e6365286b49fd","unresolved":true,"context_lines":[{"line_number":322,"context_line":"    broadcast \u003d net.broadcast"},{"line_number":323,"context_line":"    if broadcast:"},{"line_number":324,"context_line":"        return str(broadcast)"},{"line_number":325,"context_line":"    # A IPv4 /32 cidr returns None, in this case"},{"line_number":326,"context_line":"    # return the ip"},{"line_number":327,"context_line":"    elif net.version \u003d\u003d 4:"},{"line_number":328,"context_line":"        return str(net.ip)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7e7a501d_7480b79d","line":325,"updated":"2022-09-27 11:31:57.000000000","message":"nit: this is slightliest different to the original. Now we return broadcast for IPv6, not before.","commit_id":"7964bc7ab5169a9392fd62d00694057abb618f83"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"2031f0efd32cf6b630fd9e2ab7963db47d50ed3d","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    broadcast \u003d net.broadcast"},{"line_number":323,"context_line":"    if broadcast:"},{"line_number":324,"context_line":"        return str(broadcast)"},{"line_number":325,"context_line":"    # A IPv4 /32 cidr returns None, in this case"},{"line_number":326,"context_line":"    # return the ip"},{"line_number":327,"context_line":"    elif net.version \u003d\u003d 4:"},{"line_number":328,"context_line":"        return str(net.ip)"}],"source_content_type":"text/x-python","patch_set":3,"id":"862b8289_ceffc3a1","line":325,"in_reply_to":"7e7a501d_7480b79d","updated":"2022-10-27 13:17:44.000000000","message":"Ack","commit_id":"7964bc7ab5169a9392fd62d00694057abb618f83"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f49e4ad30f3bcb30bc36ab4b7c2529bb6233e060","unresolved":true,"context_lines":[{"line_number":324,"context_line":"        return str(broadcast)"},{"line_number":325,"context_line":"    # A IPv4 /32 cidr returns None, in this case"},{"line_number":326,"context_line":"    # return the ip"},{"line_number":327,"context_line":"    elif net.version \u003d\u003d 4:"},{"line_number":328,"context_line":"        return str(net.ip)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"408b4155_d0c57c6a","line":327,"range":{"start_line":327,"start_character":24,"end_line":327,"end_character":25},"updated":"2022-10-26 12:50:18.000000000","message":"same here","commit_id":"4db391a2f54d346eb86c43e695a1c91eb02fa914"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"7f6d2651f8ada355d496dcee404cdbe4fc8875e9","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        return str(broadcast)"},{"line_number":325,"context_line":"    # A IPv4 /32 cidr returns None, in this case"},{"line_number":326,"context_line":"    # return the ip"},{"line_number":327,"context_line":"    elif net.version \u003d\u003d 4:"},{"line_number":328,"context_line":"        return str(net.ip)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"228e7e6b_88d89ced","line":327,"range":{"start_line":327,"start_character":24,"end_line":327,"end_character":25},"in_reply_to":"408b4155_d0c57c6a","updated":"2022-10-27 01:34:16.000000000","message":"Done","commit_id":"4db391a2f54d346eb86c43e695a1c91eb02fa914"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ecadf4a4a16bb35e3673e1291367379ac8263e80","unresolved":true,"context_lines":[{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"def get_broadcast_address(cidr):"},{"line_number":315,"context_line":"    \"\"\"Returns the broadcast address of a cidr"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    :param cidr: (string, netaddr.IPNetwork, netaddr.IPAddress) either an ipv4"},{"line_number":318,"context_line":"                 or ipv6 cidr."}],"source_content_type":"text/x-python","patch_set":8,"id":"4edd6eb5_3c19fc62","line":315,"updated":"2022-12-02 05:48:37.000000000","message":"There should be some additional description of how this is different from cidr_broadcast_address().","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6521c97bb80722a809f1259464e4f0bab57f2bae","unresolved":true,"context_lines":[{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"def get_broadcast_address(cidr):"},{"line_number":315,"context_line":"    \"\"\"Returns the broadcast address of a cidr"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    :param cidr: (string, netaddr.IPNetwork, netaddr.IPAddress) either an ipv4"},{"line_number":318,"context_line":"                 or ipv6 cidr."}],"source_content_type":"text/x-python","patch_set":8,"id":"f2911137_403eb1f8","line":315,"in_reply_to":"4edd6eb5_3c19fc62","updated":"2022-12-04 04:27:51.000000000","message":"I was trying to single source the note from ip_lib.py L#818. Where we did an explicit check if broadcast was none with ipv4 /32 CIDR. But now I am having second thoughts about that.\nI did not want to mess with `cidr_broadcat_address` because there are other functions that depend on its logic. I.e. in case there is a /32 cidr it returns None and a broadcast addr for all ipv6 cidr. Although, that is going to change in netaddr 0.9 release. See note here:\nhttps://netaddr.readthedocs.io/en/latest/changes.html?highlight\u003dbroadcast#miscellanea\n\nSo what I am trying to do is:\n1. Single source logic of when IPv4 cidr /32 returns an IP instead of None\n2. Do not mess with cidr_broadcast_address as that function already operates on the fact that ipv4 /32 cidr returns none\n\nLet me just rewrite this function with this specific purpose. Let me know what you think","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ecadf4a4a16bb35e3673e1291367379ac8263e80","unresolved":true,"context_lines":[{"line_number":319,"context_line":"    :returns: (string) broadcast address of the cidr"},{"line_number":320,"context_line":"    \"\"\""},{"line_number":321,"context_line":"    net \u003d netaddr.IPNetwork(cidr)"},{"line_number":322,"context_line":"    broadcast \u003d net.broadcast"},{"line_number":323,"context_line":"    if broadcast:"},{"line_number":324,"context_line":"        return str(broadcast)"},{"line_number":325,"context_line":"    # A IPv4 /32 cidr returns None for broadcast, in this case"}],"source_content_type":"text/x-python","patch_set":8,"id":"e524a218_d832dd70","line":322,"updated":"2022-12-02 05:48:37.000000000","message":"IMHO this is nonsense, IPv6 does not have a broadcast address, even if netaddr calculates the last address of the cidr and returns it. But then this seems to be done in cidr_broadcast_address, too, so maybe there is something at work I don\u0027t understand.","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6521c97bb80722a809f1259464e4f0bab57f2bae","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    :returns: (string) broadcast address of the cidr"},{"line_number":320,"context_line":"    \"\"\""},{"line_number":321,"context_line":"    net \u003d netaddr.IPNetwork(cidr)"},{"line_number":322,"context_line":"    broadcast \u003d net.broadcast"},{"line_number":323,"context_line":"    if broadcast:"},{"line_number":324,"context_line":"        return str(broadcast)"},{"line_number":325,"context_line":"    # A IPv4 /32 cidr returns None for broadcast, in this case"}],"source_content_type":"text/x-python","patch_set":8,"id":"2ae503c7_3f8a3e24","line":322,"in_reply_to":"e524a218_d832dd70","updated":"2022-12-04 04:27:51.000000000","message":"I agree, but it seems to me that we have an existing code for years which relies on the fact that netaddr provides a broadcast for IPV6. Also see my response above","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"901e54c0b82fb1bfaa11a93526e0ddbe639fdb72","unresolved":true,"context_lines":[{"line_number":325,"context_line":"    # A IPv4 /32 cidr returns None for broadcast, in this case"},{"line_number":326,"context_line":"    # return the ip"},{"line_number":327,"context_line":"    elif net.prefixlen \u003d\u003d 32 and net.version \u003d\u003d n_const.IP_VERSION_4:"},{"line_number":328,"context_line":"        return str(net.ip)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"def get_ip_version(ip_or_cidr):"}],"source_content_type":"text/x-python","patch_set":8,"id":"b46c7104_454db1c6","line":328,"updated":"2022-12-02 07:41:17.000000000","message":"can it maybe be something like:\n\n    broadcast \u003d cidr_broadcast_address(cidr)\n    if not broadcast and (net.prefixlen \u003d\u003d 32 and net.version \u003d\u003d n_const.IP_VERSION_4):\n        broadcast \u003d str(net.ip)\n        \n    return broadcast\n    \nThat way You will reuse cidr_broadcast_address in this new function and there will be no code duplication. Or maybe You can even somehow merge those 2 functions together?","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"4a64616c3f7783a7afabb4ac230c3737cfd54521","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    # A IPv4 /32 cidr returns None for broadcast, in this case"},{"line_number":326,"context_line":"    # return the ip"},{"line_number":327,"context_line":"    elif net.prefixlen \u003d\u003d 32 and net.version \u003d\u003d n_const.IP_VERSION_4:"},{"line_number":328,"context_line":"        return str(net.ip)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"def get_ip_version(ip_or_cidr):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9b53c8e8_e1bafbd1","line":328,"in_reply_to":"b46c7104_454db1c6","updated":"2022-12-14 04:01:22.000000000","message":"Done","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"}],"neutron/privileged/agent/linux/ip_lib.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ecadf4a4a16bb35e3673e1291367379ac8263e80","unresolved":true,"context_lines":[{"line_number":296,"context_line":"                              scope\u003dget_scope_name(scope))"},{"line_number":297,"context_line":"        except netlink_exceptions.NetlinkError as e:"},{"line_number":298,"context_line":"            if e.code \u003d\u003d errno.EEXIST:"},{"line_number":299,"context_line":"                raise IpAddressAlreadyExists(ip\u003dip, device\u003ddevice)"},{"line_number":300,"context_line":"            raise"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"2ac8a413_639ed2f3","line":299,"updated":"2022-12-02 05:48:37.000000000","message":"I wonder if the exceptions should be collected and raised at the end of the loop only.","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"901e54c0b82fb1bfaa11a93526e0ddbe639fdb72","unresolved":true,"context_lines":[{"line_number":296,"context_line":"                              scope\u003dget_scope_name(scope))"},{"line_number":297,"context_line":"        except netlink_exceptions.NetlinkError as e:"},{"line_number":298,"context_line":"            if e.code \u003d\u003d errno.EEXIST:"},{"line_number":299,"context_line":"                raise IpAddressAlreadyExists(ip\u003dip, device\u003ddevice)"},{"line_number":300,"context_line":"            raise"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"662492bb_01dff646","line":299,"in_reply_to":"2ac8a413_639ed2f3","updated":"2022-12-02 07:41:17.000000000","message":"IMO this is fine","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6521c97bb80722a809f1259464e4f0bab57f2bae","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                              scope\u003dget_scope_name(scope))"},{"line_number":297,"context_line":"        except netlink_exceptions.NetlinkError as e:"},{"line_number":298,"context_line":"            if e.code \u003d\u003d errno.EEXIST:"},{"line_number":299,"context_line":"                raise IpAddressAlreadyExists(ip\u003dip, device\u003ddevice)"},{"line_number":300,"context_line":"            raise"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ac2be83b_098299af","line":299,"in_reply_to":"662492bb_01dff646","updated":"2022-12-04 04:27:51.000000000","message":"I also agree that this is fine. If we add the collection mechanism then the benefit for the caller is that the caller will see all the IPs that already exists, instead of finding out one by one. But then what? The function still raised and if it was not handled for then outcome is still the same. I say lets leave it as is, if we need such functionality we can add it later.","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ecadf4a4a16bb35e3673e1291367379ac8263e80","unresolved":true,"context_lines":[{"line_number":340,"context_line":"            # requested address\u0027)"},{"line_number":341,"context_line":"            # this shouldn\u0027t raise an error"},{"line_number":342,"context_line":"            if e.code \u003d\u003d errno.EADDRNOTAVAIL:"},{"line_number":343,"context_line":"                return"},{"line_number":344,"context_line":"            raise"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"2164f114_6f2756a8","line":343,"updated":"2022-12-02 05:48:37.000000000","message":"This should be pass, not return, else the loop might be cut short.","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"901e54c0b82fb1bfaa11a93526e0ddbe639fdb72","unresolved":true,"context_lines":[{"line_number":340,"context_line":"            # requested address\u0027)"},{"line_number":341,"context_line":"            # this shouldn\u0027t raise an error"},{"line_number":342,"context_line":"            if e.code \u003d\u003d errno.EADDRNOTAVAIL:"},{"line_number":343,"context_line":"                return"},{"line_number":344,"context_line":"            raise"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"e6c7650b_0470fc9c","line":343,"in_reply_to":"2164f114_6f2756a8","updated":"2022-12-02 07:41:17.000000000","message":"+1","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6521c97bb80722a809f1259464e4f0bab57f2bae","unresolved":false,"context_lines":[{"line_number":340,"context_line":"            # requested address\u0027)"},{"line_number":341,"context_line":"            # this shouldn\u0027t raise an error"},{"line_number":342,"context_line":"            if e.code \u003d\u003d errno.EADDRNOTAVAIL:"},{"line_number":343,"context_line":"                return"},{"line_number":344,"context_line":"            raise"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"d9f89ba2_837fa38d","line":343,"in_reply_to":"e6c7650b_0470fc9c","updated":"2022-12-04 04:27:51.000000000","message":"Ack","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"}],"neutron/tests/functional/agent/linux/test_ip_lib.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"901e54c0b82fb1bfaa11a93526e0ddbe639fdb72","unresolved":true,"context_lines":[{"line_number":680,"context_line":""},{"line_number":681,"context_line":"        device.addr.delete_multiple(cidrs)"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        self.assertEqual(len(device.addr.list()), 0)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    def test_delete_some_ip_addresses(self):"},{"line_number":686,"context_line":"        cidrs \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"85c86b59_1e13d731","line":683,"updated":"2022-12-02 07:41:17.000000000","message":"please use pattern: assertEqual(expected, actual) as we are using that everywhere","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6521c97bb80722a809f1259464e4f0bab57f2bae","unresolved":false,"context_lines":[{"line_number":680,"context_line":""},{"line_number":681,"context_line":"        device.addr.delete_multiple(cidrs)"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        self.assertEqual(len(device.addr.list()), 0)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    def test_delete_some_ip_addresses(self):"},{"line_number":686,"context_line":"        cidrs \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"a4f17677_8208a429","line":683,"in_reply_to":"85c86b59_1e13d731","updated":"2022-12-04 04:27:51.000000000","message":"Ack","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"901e54c0b82fb1bfaa11a93526e0ddbe639fdb72","unresolved":true,"context_lines":[{"line_number":702,"context_line":"        self.assertCountEqual("},{"line_number":703,"context_line":"            self._get_cidrs_from_device(device),"},{"line_number":704,"context_line":"            cidrs[:2]"},{"line_number":705,"context_line":"        )"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    def test_flush_ip_addresses(self):"},{"line_number":708,"context_line":"        ip_addresses \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"cda33853_c6ae91ee","line":705,"updated":"2022-12-02 07:41:17.000000000","message":"ditto","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6521c97bb80722a809f1259464e4f0bab57f2bae","unresolved":false,"context_lines":[{"line_number":702,"context_line":"        self.assertCountEqual("},{"line_number":703,"context_line":"            self._get_cidrs_from_device(device),"},{"line_number":704,"context_line":"            cidrs[:2]"},{"line_number":705,"context_line":"        )"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    def test_flush_ip_addresses(self):"},{"line_number":708,"context_line":"        ip_addresses \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"ff4e34d8_432542d8","line":705,"in_reply_to":"cda33853_c6ae91ee","updated":"2022-12-04 04:27:51.000000000","message":"Ack","commit_id":"aacf2229ef1ac2a7663393857fc47d8abe4889d0"}]}
