)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"1b50e1de08f463804974ef3895238c08b208278c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"disabling dhcp and gateway on a subnet. /32 is also supported in"},{"line_number":12,"context_line":"openstack."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Fixes bug 1580927"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I3bfa3efb9fb8076656b16c89d2f35d74efde12b7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_7ae3f433","line":14,"updated":"2016-05-19 11:55:26.000000000","message":"Use \"Closes-Bug: 1580927\" instead","commit_id":"f0dc1bfca4c6aa71351de30e5991f3d5fcaeaf72"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"79f28339688642c85be485fbb7a23ccd4bb4c68d","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Nurmatov Mamatisa \u003cnurmatov.mamatisa@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-03-31 10:19:53 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Using 31-Bit and 32-Bit prefixes reasonably"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When needing to create a point to point connection via a subnet,"},{"line_number":10,"context_line":"generally and /31 is the recommended cidr. Neutron supports /31"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"e2840976_f90634d7","line":7,"updated":"2021-04-01 14:23:46.000000000","message":"Maybe mention that this is specific for IPv4 only?","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"0c39693b9560cc08244f00bf2b913f7b5ce98cbb","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Nurmatov Mamatisa \u003cnurmatov.mamatisa@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-03-31 10:19:53 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Using 31-Bit and 32-Bit prefixes reasonably"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When needing to create a point to point connection via a subnet,"},{"line_number":10,"context_line":"generally and /31 is the recommended cidr. Neutron supports /31"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ef9f2733_1d867696","line":7,"in_reply_to":"e2840976_f90634d7","updated":"2021-04-12 10:57:32.000000000","message":"Done","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"}],"neutron/db/ipam_backend_mixin.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"1b50e1de08f463804974ef3895238c08b208278c","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        Finally, verify that each range fall within the subnet\u0027s CIDR."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        subnet \u003d netaddr.IPNetwork(subnet_cidr)"},{"line_number":262,"context_line":"        if subnet._netmask_int \u003c\u003d 30:"},{"line_number":263,"context_line":"            subnet_first_ip \u003d netaddr.IPAddress(subnet.first + 1)"},{"line_number":264,"context_line":"            # last address is broadcast in v4"},{"line_number":265,"context_line":"            subnet_last_ip \u003d netaddr.IPAddress(subnet.last - (subnet.version \u003d\u003d 4))"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_3a920ca0","line":262,"updated":"2016-05-19 11:55:26.000000000","message":"I think you want to check for (subnet.version \u003d\u003d 4) here. \n\nAnd maybe do the same for /12[78] for v6.","commit_id":"f0dc1bfca4c6aa71351de30e5991f3d5fcaeaf72"},{"author":{"_account_id":17642,"name":"hanjiabao","email":"hanjiabao@awcloud.com","username":"sandmore"},"change_message_id":"a1dc45ef5fc9fabfc8f41bfd052d179b86ca0bbe","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        Finally, verify that each range fall within the subnet\u0027s CIDR."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        subnet \u003d netaddr.IPNetwork(subnet_cidr)"},{"line_number":262,"context_line":"        if subnet._netmask_int \u003c\u003d 30:"},{"line_number":263,"context_line":"            subnet_first_ip \u003d netaddr.IPAddress(subnet.first + 1)"},{"line_number":264,"context_line":"            # last address is broadcast in v4"},{"line_number":265,"context_line":"            subnet_last_ip \u003d netaddr.IPAddress(subnet.last - (subnet.version \u003d\u003d 4))"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_da4ae082","line":262,"in_reply_to":"bab6814e_3a920ca0","updated":"2016-05-19 12:12:28.000000000","message":"Done","commit_id":"f0dc1bfca4c6aa71351de30e5991f3d5fcaeaf72"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4c484d517f12934fd57bedca17d17a2365c84d41","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        Finally, verify that each range fall within the subnet\u0027s CIDR."},{"line_number":260,"context_line":"        \"\"\""},{"line_number":261,"context_line":"        subnet \u003d netaddr.IPNetwork(subnet_cidr)"},{"line_number":262,"context_line":"        if subnet._netmask_int \u003c\u003d 30:"},{"line_number":263,"context_line":"            subnet_first_ip \u003d netaddr.IPAddress(subnet.first + 1)"},{"line_number":264,"context_line":"            # last address is broadcast in v4"},{"line_number":265,"context_line":"            subnet_last_ip \u003d netaddr.IPAddress(subnet.last - (subnet.version \u003d\u003d 4))"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_8d83fd55","line":262,"in_reply_to":"bab6814e_3a920ca0","updated":"2016-05-19 13:51:13.000000000","message":"overly-nitpicky, but const.IP_VERSION_4\n\nWe\u0027ve been trying to use it instead of \u00274\u0027 since it\u0027s easier to search for it and find what you want.","commit_id":"f0dc1bfca4c6aa71351de30e5991f3d5fcaeaf72"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4c484d517f12934fd57bedca17d17a2365c84d41","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        if subnet._netmask_int \u003c\u003d 30:"},{"line_number":263,"context_line":"            subnet_first_ip \u003d netaddr.IPAddress(subnet.first + 1)"},{"line_number":264,"context_line":"            # last address is broadcast in v4"},{"line_number":265,"context_line":"            subnet_last_ip \u003d netaddr.IPAddress(subnet.last - (subnet.version \u003d\u003d 4))"},{"line_number":266,"context_line":"        else:"},{"line_number":267,"context_line":"            subnet_first_ip \u003d netaddr.IPAddress(subnet.first)"},{"line_number":268,"context_line":"            subnet_last_ip \u003d netaddr.IPAddress(subnet.last)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_8dd13d5a","line":265,"updated":"2016-05-19 13:51:13.000000000","message":"This line looks \u003e79 chars.","commit_id":"f0dc1bfca4c6aa71351de30e5991f3d5fcaeaf72"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"aab502f97dc1bf9461d5c8ac6a68cd61f066b2ee","unresolved":true,"context_lines":[{"line_number":309,"context_line":"        Finally, verify that each range fall within the subnet\u0027s CIDR."},{"line_number":310,"context_line":"        \"\"\""},{"line_number":311,"context_line":"        subnet \u003d netaddr.IPNetwork(subnet_cidr)"},{"line_number":312,"context_line":"        if subnet._netmask_int \u003c\u003d 30:"},{"line_number":313,"context_line":"            subnet_first_ip \u003d netaddr.IPAddress(subnet.first + 1)"},{"line_number":314,"context_line":"            # last address is broadcast in v4"},{"line_number":315,"context_line":"            subnet_last_ip \u003d netaddr.IPAddress("}],"source_content_type":"text/x-python","patch_set":3,"id":"777d88fd_3e82df8e","line":312,"updated":"2021-02-25 19:22:54.000000000","message":"This is wrong for IPv6.","commit_id":"5502206716148e126b271f0434ee5e9a2e8d2f9f"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"aab502f97dc1bf9461d5c8ac6a68cd61f066b2ee","unresolved":true,"context_lines":[{"line_number":316,"context_line":"                subnet.last - (subnet.version \u003d\u003d const.IP_VERSION_4))"},{"line_number":317,"context_line":"        elif subnet.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":318,"context_line":"            subnet_first_ip \u003d netaddr.IPAddress(subnet.first)"},{"line_number":319,"context_line":"            subnet_last_ip \u003d netaddr.IPAddress(subnet.last)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        LOG.debug(\"Performing IP validity checks on allocation pools\")"},{"line_number":322,"context_line":"        ip_sets \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"2f2f5785_2809dded","line":319,"updated":"2021-02-25 19:22:54.000000000","message":"This actually changes the default behaviour in order not to reserve the network and broadcast addresses anymore. While I think that that is a good idea in general, it needs to be documented properly, tested and mentioned in a release note.","commit_id":"5502206716148e126b271f0434ee5e9a2e8d2f9f"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"29f34bbec954ffe9d5799bbf521e872aedac2ead","unresolved":true,"context_lines":[{"line_number":316,"context_line":"                subnet.last - (subnet.version \u003d\u003d const.IP_VERSION_4))"},{"line_number":317,"context_line":"        elif subnet.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":318,"context_line":"            subnet_first_ip \u003d netaddr.IPAddress(subnet.first)"},{"line_number":319,"context_line":"            subnet_last_ip \u003d netaddr.IPAddress(subnet.last)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        LOG.debug(\"Performing IP validity checks on allocation pools\")"},{"line_number":322,"context_line":"        ip_sets \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"c0118efd_43ca0815","line":319,"in_reply_to":"2f2f5785_2809dded","updated":"2021-03-01 10:41:07.000000000","message":"Seems I messed up the if and else parts. So this part is actually fine, the code just needs to be amended to handle IPv6 properly.","commit_id":"5502206716148e126b271f0434ee5e9a2e8d2f9f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"eca1c2094bf4f76f538d99e54814c1322fa3b143","unresolved":true,"context_lines":[{"line_number":300,"context_line":"                            subnet.ip_version \u003d\u003d subnet_ip_version):"},{"line_number":301,"context_line":"                        raise exc.NetworkSubnetPoolAffinityError()"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def validate_allocation_pools(self, ip_pools, subnet_cidr):"},{"line_number":304,"context_line":"        \"\"\"Validate IP allocation pools."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        Verify start and end address for each allocation pool are valid,"}],"source_content_type":"text/x-python","patch_set":6,"id":"597e6dd7_acc04ca5","line":303,"updated":"2021-03-22 14:26:05.000000000","message":"This is related only to allocation pools. If the subnet is called with --subnet-range (cidr is manually assigned), the ml2 plugin \"create_subnet\" method will call \"_validate_subnet\". There the request will be rejected because \"ip_ver \u003d\u003d 4 and subnet_prefixlen \u003e 30\" is not allowed. Error message: \"Subnet has a prefix length that is incompatible with DHCP service enabled\"\n\nApart from handling this code path, you also need to consider checking if DHCP is enabled. We can\u0027t create a 3rd IP (for DHCP) in a /31 subnet.","commit_id":"2a2283538754da133f7f58a529f4e924f89ae198"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"194683c1e383dd5a5786342320100562db5b3ec1","unresolved":true,"context_lines":[{"line_number":300,"context_line":"                            subnet.ip_version \u003d\u003d subnet_ip_version):"},{"line_number":301,"context_line":"                        raise exc.NetworkSubnetPoolAffinityError()"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def validate_allocation_pools(self, ip_pools, subnet_cidr):"},{"line_number":304,"context_line":"        \"\"\"Validate IP allocation pools."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        Verify start and end address for each allocation pool are valid,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ea870980_dc284c7a","line":303,"in_reply_to":"597e6dd7_acc04ca5","updated":"2021-03-23 09:31:39.000000000","message":"In Bug case creating subnet with netmask /31 via disabling dhcp and gateway on a subnet. Why should we check again for dhcp?","commit_id":"2a2283538754da133f7f58a529f4e924f89ae198"}],"neutron/tests/unit/db/test_db_base_plugin_v2.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"32436ccd8bf22000bf33b43b2abd50e5eaa3a8f0","unresolved":true,"context_lines":[{"line_number":5091,"context_line":"            with self.subnet(network\u003dnetwork,"},{"line_number":5092,"context_line":"                             enable_dhcp\u003dFalse,"},{"line_number":5093,"context_line":"                             gateway_ip\u003dNone,"},{"line_number":5094,"context_line":"                             cidr\u003d\u002710.14.0.20/31\u0027) as subnet:"},{"line_number":5095,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["},{"line_number":5096,"context_line":"                    {\u0027start\u0027: \u002710.14.0.20\u0027, \u0027end\u0027: \u002710.14.0.21\u0027}]}}"},{"line_number":5097,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"}],"source_content_type":"text/x-python","patch_set":7,"id":"e12e6c1d_553e1cd9","line":5094,"range":{"start_line":5094,"start_character":46,"end_line":5094,"end_character":48},"updated":"2021-03-23 11:14:21.000000000","message":"You should also test /32 subnets, if you state that in the commit message.","commit_id":"13001112b397b036c4ed000dbe2a05aa0bce0820"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"803ca239c34cb7e90c135226c8e935534396295f","unresolved":true,"context_lines":[{"line_number":5091,"context_line":"            with self.subnet(network\u003dnetwork,"},{"line_number":5092,"context_line":"                             enable_dhcp\u003dFalse,"},{"line_number":5093,"context_line":"                             gateway_ip\u003dNone,"},{"line_number":5094,"context_line":"                             cidr\u003d\u002710.14.0.20/31\u0027) as subnet:"},{"line_number":5095,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["},{"line_number":5096,"context_line":"                    {\u0027start\u0027: \u002710.14.0.20\u0027, \u0027end\u0027: \u002710.14.0.21\u0027}]}}"},{"line_number":5097,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"}],"source_content_type":"text/x-python","patch_set":7,"id":"6b447937_8b90a09e","line":5094,"range":{"start_line":5094,"start_character":46,"end_line":5094,"end_character":48},"in_reply_to":"e12e6c1d_553e1cd9","updated":"2021-03-23 13:34:34.000000000","message":"Done","commit_id":"13001112b397b036c4ed000dbe2a05aa0bce0820"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"79f28339688642c85be485fbb7a23ccd4bb4c68d","unresolved":true,"context_lines":[{"line_number":5107,"context_line":"        with self.network() as network:"},{"line_number":5108,"context_line":"            with self.subnet(network\u003dnetwork,"},{"line_number":5109,"context_line":"                             enable_dhcp\u003dFalse,"},{"line_number":5110,"context_line":"                             gateway_ip\u003dNone,"},{"line_number":5111,"context_line":"                             cidr\u003d\u002710.14.0.20/32\u0027) as subnet:"},{"line_number":5112,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["},{"line_number":5113,"context_line":"                    {\u0027start\u0027: \u002710.14.0.20\u0027, \u0027end\u0027: \u002710.14.0.20\u0027}]}}"}],"source_content_type":"text/x-python","patch_set":10,"id":"eb529990_a2311584","line":5110,"updated":"2021-04-01 14:23:46.000000000","message":"I think it will also be useful to have a test with an gateway_ip outside of the subnet cidr, in fact I assume that that will be a more common usecase, otherwise, what would you do with a single IP address without connectivity?\n\nAlso, but likely that\u0027s out of the scope of the current patch, wouldn\u0027t it be possible to also have an DHCP server that runs with an address outside of the CIDR? So one could have a bunch of /32 subnets all in the same network and still have instances be able to autoconfigure themselves with those?","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"0c39693b9560cc08244f00bf2b913f7b5ce98cbb","unresolved":true,"context_lines":[{"line_number":5107,"context_line":"        with self.network() as network:"},{"line_number":5108,"context_line":"            with self.subnet(network\u003dnetwork,"},{"line_number":5109,"context_line":"                             enable_dhcp\u003dFalse,"},{"line_number":5110,"context_line":"                             gateway_ip\u003dNone,"},{"line_number":5111,"context_line":"                             cidr\u003d\u002710.14.0.20/32\u0027) as subnet:"},{"line_number":5112,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["},{"line_number":5113,"context_line":"                    {\u0027start\u0027: \u002710.14.0.20\u0027, \u0027end\u0027: \u002710.14.0.20\u0027}]}}"}],"source_content_type":"text/x-python","patch_set":10,"id":"d676b579_c24be9fe","line":5110,"in_reply_to":"6b4d238a_64f3df9c","updated":"2021-04-12 10:57:32.000000000","message":"Done","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ecd2ae649429e1d1e1abca1e1e9895c0c0101015","unresolved":true,"context_lines":[{"line_number":5107,"context_line":"        with self.network() as network:"},{"line_number":5108,"context_line":"            with self.subnet(network\u003dnetwork,"},{"line_number":5109,"context_line":"                             enable_dhcp\u003dFalse,"},{"line_number":5110,"context_line":"                             gateway_ip\u003dNone,"},{"line_number":5111,"context_line":"                             cidr\u003d\u002710.14.0.20/32\u0027) as subnet:"},{"line_number":5112,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["},{"line_number":5113,"context_line":"                    {\u0027start\u0027: \u002710.14.0.20\u0027, \u0027end\u0027: \u002710.14.0.20\u0027}]}}"}],"source_content_type":"text/x-python","patch_set":10,"id":"6b4d238a_64f3df9c","line":5110,"in_reply_to":"82b4664f_66d7931d","updated":"2021-04-10 10:46:45.000000000","message":"Yes, neutron allows this for quite some time, the latest reference I found on the fly is https://bugs.launchpad.net/neutron/+bug/1861674, which is a fix for this for HA routers.","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"8a7b4b5b8a9bc4aa72da39c1d259bc10fb26f604","unresolved":true,"context_lines":[{"line_number":5107,"context_line":"        with self.network() as network:"},{"line_number":5108,"context_line":"            with self.subnet(network\u003dnetwork,"},{"line_number":5109,"context_line":"                             enable_dhcp\u003dFalse,"},{"line_number":5110,"context_line":"                             gateway_ip\u003dNone,"},{"line_number":5111,"context_line":"                             cidr\u003d\u002710.14.0.20/32\u0027) as subnet:"},{"line_number":5112,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["},{"line_number":5113,"context_line":"                    {\u0027start\u0027: \u002710.14.0.20\u0027, \u0027end\u0027: \u002710.14.0.20\u0027}]}}"}],"source_content_type":"text/x-python","patch_set":10,"id":"82b4664f_66d7931d","line":5110,"in_reply_to":"eb529990_a2311584","updated":"2021-04-01 14:31:29.000000000","message":"How could gateway IP be outside of CIDR? Can you please give an example? Does neutron allow this?","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a285356db56e503b36d70c460d5035805c5e91b4","unresolved":true,"context_lines":[{"line_number":5094,"context_line":"                             gateway_ip\u003d\u002710.14.0.19\u0027,"},{"line_number":5095,"context_line":"                             cidr\u003d\u002710.14.0.20/31\u0027) as subnet:"},{"line_number":5096,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["},{"line_number":5097,"context_line":"                    {\u0027start\u0027: \u002710.14.0.20\u0027, \u0027end\u0027: \u002710.14.0.21\u0027}]}}"},{"line_number":5098,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"},{"line_number":5099,"context_line":"                                              subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":5100,"context_line":"                res \u003d req.get_response(self.api)"}],"source_content_type":"text/x-python","patch_set":12,"id":"cc9e7fb3_baaf082a","line":5097,"updated":"2021-04-14 12:41:08.000000000","message":"why do we always need to give allocation pool in such case? According to my test it wasn\u0027t working without specifing allocation pool. Maybe it should works in such case too?","commit_id":"520bb02ce051ff8ea8f39d4ad4bf469129fb364c"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"2ee15b80d0793408e92250ff09aa28f3ddcaeece","unresolved":true,"context_lines":[{"line_number":5094,"context_line":"                             gateway_ip\u003d\u002710.14.0.19\u0027,"},{"line_number":5095,"context_line":"                             cidr\u003d\u002710.14.0.20/31\u0027) as subnet:"},{"line_number":5096,"context_line":"                data \u003d {\u0027subnet\u0027: {\u0027allocation_pools\u0027: ["},{"line_number":5097,"context_line":"                    {\u0027start\u0027: \u002710.14.0.20\u0027, \u0027end\u0027: \u002710.14.0.21\u0027}]}}"},{"line_number":5098,"context_line":"                req \u003d self.new_update_request(\u0027subnets\u0027, data,"},{"line_number":5099,"context_line":"                                              subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":5100,"context_line":"                res \u003d req.get_response(self.api)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7504cbc2_ef2b9b62","line":5097,"in_reply_to":"cc9e7fb3_baaf082a","updated":"2021-04-15 14:24:58.000000000","message":"I will check.","commit_id":"520bb02ce051ff8ea8f39d4ad4bf469129fb364c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a285356db56e503b36d70c460d5035805c5e91b4","unresolved":true,"context_lines":[{"line_number":5102,"context_line":"                res \u003d self._create_port(self.fmt, network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":5103,"context_line":"                self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)"},{"line_number":5104,"context_line":"                res \u003d self._create_port(self.fmt, network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":5105,"context_line":"                self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)"},{"line_number":5106,"context_line":""},{"line_number":5107,"context_line":"    def test_update_subnet_allocation_pools_with_prefixlen_32(self):"},{"line_number":5108,"context_line":"        with self.network() as network:"}],"source_content_type":"text/x-python","patch_set":12,"id":"21d8f081_5340bbbb","line":5105,"updated":"2021-04-14 12:41:08.000000000","message":"what about testing creation of such subnet? Why You don\u0027t do that?\nAnd also I think You should test possibility to create port in case when there is only /31 or /32 subnet available.\nMaybe it can be done in the fullstack tests as more \"end-to-end\" test?","commit_id":"520bb02ce051ff8ea8f39d4ad4bf469129fb364c"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"2ee15b80d0793408e92250ff09aa28f3ddcaeece","unresolved":true,"context_lines":[{"line_number":5102,"context_line":"                res \u003d self._create_port(self.fmt, network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":5103,"context_line":"                self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)"},{"line_number":5104,"context_line":"                res \u003d self._create_port(self.fmt, network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":5105,"context_line":"                self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)"},{"line_number":5106,"context_line":""},{"line_number":5107,"context_line":"    def test_update_subnet_allocation_pools_with_prefixlen_32(self):"},{"line_number":5108,"context_line":"        with self.network() as network:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7bf911f6_37da7a75","line":5105,"in_reply_to":"21d8f081_5340bbbb","updated":"2021-04-15 14:24:58.000000000","message":"I took this patch and there were only subnet updates tests. I will check subnet creation case. \n\nThis test sends http requests to neutron server, no mocks involved, are fullstack tests more \"end-to-end\"?","commit_id":"520bb02ce051ff8ea8f39d4ad4bf469129fb364c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"be55eb050f6d5e9b4df200c3d2e2891858f62fa5","unresolved":true,"context_lines":[{"line_number":5090,"context_line":"                res \u003d self._create_port(self.fmt, network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":5091,"context_line":"                self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)"},{"line_number":5092,"context_line":"                res \u003d self._create_port(self.fmt, network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":5093,"context_line":"                self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)"},{"line_number":5094,"context_line":""},{"line_number":5095,"context_line":"    def test_update_subnet_allocation_pools_with_prefixlen_31(self):"},{"line_number":5096,"context_line":"        with self.network() as network:"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f8033a7_e620523a","line":5093,"updated":"2021-06-09 20:25:38.000000000","message":"nit: You could do that in simple loop like:\n\n    for _ in range(2):\n        ...","commit_id":"437a311eca27bde5799b04d6a27d8e0e2aaf1c1f"}],"releasenotes/notes/create-subnet-with-prefixlen-31-32-4cf8c9417325721a.yaml":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"79f28339688642c85be485fbb7a23ccd4bb4c68d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron supports create subnet with prefixlen /31 and /32"},{"line_number":5,"context_line":"    via disabling dhcp and gateway on a subnet."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"49e924cc_71b240d8","line":2,"updated":"2021-04-01 14:23:46.000000000","message":"Not sure that I would place this here or under \"features\", maybe in both?","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"ecd2ae649429e1d1e1abca1e1e9895c0c0101015","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron supports create subnet with prefixlen /31 and /32"},{"line_number":5,"context_line":"    via disabling dhcp and gateway on a subnet."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7a986127_3fb68bde","line":2,"in_reply_to":"1cdfbf3e_9309b064","updated":"2021-04-10 10:46:45.000000000","message":"I\u0027d go for \"features\"","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"8a7b4b5b8a9bc4aa72da39c1d259bc10fb26f604","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron supports create subnet with prefixlen /31 and /32"},{"line_number":5,"context_line":"    via disabling dhcp and gateway on a subnet."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"1cdfbf3e_9309b064","line":2,"in_reply_to":"49e924cc_71b240d8","updated":"2021-04-01 14:31:29.000000000","message":"May be in \"others\"?","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"0c39693b9560cc08244f00bf2b913f7b5ce98cbb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron supports create subnet with prefixlen /31 and /32"},{"line_number":5,"context_line":"    via disabling dhcp and gateway on a subnet."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"20e0c818_369a251c","line":2,"in_reply_to":"7a986127_3fb68bde","updated":"2021-04-12 10:57:32.000000000","message":"Done","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"79f28339688642c85be485fbb7a23ccd4bb4c68d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron supports create subnet with prefixlen /31 and /32"},{"line_number":5,"context_line":"    via disabling dhcp and gateway on a subnet."},{"line_number":6,"context_line":"    For more information, see bug"},{"line_number":7,"context_line":"    `1580927 \u003chttps://bugs.launchpad.net/neutron/+bug/1580927\u003e`_."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"00d7a599_f7f9bd2c","line":4,"updated":"2021-04-01 14:23:46.000000000","message":"... creating a subnet with prefixlen 31 or 32\n\nAlso maybe mention that this is specific for IPv4 only?","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"0c39693b9560cc08244f00bf2b913f7b5ce98cbb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron supports create subnet with prefixlen /31 and /32"},{"line_number":5,"context_line":"    via disabling dhcp and gateway on a subnet."},{"line_number":6,"context_line":"    For more information, see bug"},{"line_number":7,"context_line":"    `1580927 \u003chttps://bugs.launchpad.net/neutron/+bug/1580927\u003e`_."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"76ed991b_5c5fadec","line":4,"in_reply_to":"00d7a599_f7f9bd2c","updated":"2021-04-12 10:57:32.000000000","message":"Done","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"79f28339688642c85be485fbb7a23ccd4bb4c68d","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron supports create subnet with prefixlen /31 and /32"},{"line_number":5,"context_line":"    via disabling dhcp and gateway on a subnet."},{"line_number":6,"context_line":"    For more information, see bug"},{"line_number":7,"context_line":"    `1580927 \u003chttps://bugs.launchpad.net/neutron/+bug/1580927\u003e`_."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"c889db2e_7b26321f","line":5,"range":{"start_line":5,"start_character":27,"end_line":5,"end_character":34},"updated":"2021-04-01 14:23:46.000000000","message":"I don\u0027t think it is necessary to disable the gateway, it could also be outside of the CIDR. See also my other comments.","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"0c39693b9560cc08244f00bf2b913f7b5ce98cbb","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron supports create subnet with prefixlen /31 and /32"},{"line_number":5,"context_line":"    via disabling dhcp and gateway on a subnet."},{"line_number":6,"context_line":"    For more information, see bug"},{"line_number":7,"context_line":"    `1580927 \u003chttps://bugs.launchpad.net/neutron/+bug/1580927\u003e`_."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3079dd43_50b62950","line":5,"range":{"start_line":5,"start_character":27,"end_line":5,"end_character":34},"in_reply_to":"c889db2e_7b26321f","updated":"2021-04-12 10:57:32.000000000","message":"Done","commit_id":"8f1b1b3a438b05642086b6b8e4e92d97d42981d9"}]}
