)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8c71caaac8f55d0a0cb8ef78be210a7cd317be71","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds prefixlen to the request body when creating subnets"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The python-openstack client uses the OpenStack SDK to interface with Neutron, which strips the prefix length from the client request when creating a subnet from a subnet pool. This patch adds support for prefixlen when creating a subnet."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Partial-Bug: 1754062"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df7087c5_d04bcf84","line":9,"updated":"2018-03-07 18:56:14.000000000","message":"Please wrap at 72 chars.","commit_id":"65b0af2e30317cdd8d9a49c655f93386ad649b59"}],"openstack/cloud/openstackcloud.py":[{"author":{"_account_id":21781,"name":"Hunt Xu","email":"mhuntxu@gmail.com","username":"huntxu"},"change_message_id":"bac925a78a95cc9d2881e1f0ebdb832cd5821a69","unresolved":false,"context_lines":[{"line_number":7657,"context_line":"                      gateway_ip\u003dNone, disable_gateway_ip\u003dFalse,"},{"line_number":7658,"context_line":"                      dns_nameservers\u003dNone, host_routes\u003dNone,"},{"line_number":7659,"context_line":"                      ipv6_ra_mode\u003dNone, ipv6_address_mode\u003dNone,"},{"line_number":7660,"context_line":"                      subnetpool_id\u003dNone, prefixlen\u003dNone,"},{"line_number":7661,"context_line":"                      use_default_subnetpool\u003dFalse):"},{"line_number":7662,"context_line":"        \"\"\"Create a subnet on a specified network."},{"line_number":7663,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_a4ccd089","line":7660,"range":{"start_line":7660,"start_character":42,"end_line":7660,"end_character":51},"updated":"2018-03-08 08:39:25.000000000","message":"The docstring should be updated for this newly added param","commit_id":"ec4045bf02d57225d4f2e88b0b04c6e51bcc9840"},{"author":{"_account_id":21781,"name":"Hunt Xu","email":"mhuntxu@gmail.com","username":"huntxu"},"change_message_id":"bac925a78a95cc9d2881e1f0ebdb832cd5821a69","unresolved":false,"context_lines":[{"line_number":7657,"context_line":"                      gateway_ip\u003dNone, disable_gateway_ip\u003dFalse,"},{"line_number":7658,"context_line":"                      dns_nameservers\u003dNone, host_routes\u003dNone,"},{"line_number":7659,"context_line":"                      ipv6_ra_mode\u003dNone, ipv6_address_mode\u003dNone,"},{"line_number":7660,"context_line":"                      subnetpool_id\u003dNone, prefixlen\u003dNone,"},{"line_number":7661,"context_line":"                      use_default_subnetpool\u003dFalse):"},{"line_number":7662,"context_line":"        \"\"\"Create a subnet on a specified network."},{"line_number":7663,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_c4b544f0","line":7660,"range":{"start_line":7660,"start_character":22,"end_line":7660,"end_character":41},"updated":"2018-03-08 08:39:25.000000000","message":"Why is subnetpool_id here? Seems it is not being used at all","commit_id":"ec4045bf02d57225d4f2e88b0b04c6e51bcc9840"}],"openstack/network/v2/subnet.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8c71caaac8f55d0a0cb8ef78be210a7cd317be71","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":38,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":39,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"},{"line_number":40,"context_line":"        prefixlen\u003d\u0027prefix_length\u0027,"},{"line_number":41,"context_line":"        **tag.TagMixin._tag_query_parameters"},{"line_number":42,"context_line":"    )"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_903a37e5","line":40,"updated":"2018-03-07 18:56:14.000000000","message":"I\u0027d rather keep this sorted, i.e. add in front of project_id.","commit_id":"65b0af2e30317cdd8d9a49c655f93386ad649b59"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8c71caaac8f55d0a0cb8ef78be210a7cd317be71","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        type\u003dbool"},{"line_number":92,"context_line":"    )"},{"line_number":93,"context_line":"    #: The prefix length of the CIDR to carve from subnetpool"},{"line_number":94,"context_line":"    prefixlen \u003d resource.Body(\u0027prefixlen\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_d0198f88","line":94,"updated":"2018-03-07 18:56:14.000000000","message":"Dito","commit_id":"65b0af2e30317cdd8d9a49c655f93386ad649b59"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"911fdfa04c1f839a83f93243dd477781dac6986e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":35,"context_line":"        \u0027segment_id\u0027,"},{"line_number":36,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":37,"context_line":"        prefixlen\u003d\u0027prefix_length\u0027,"},{"line_number":38,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":39,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":40,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_446cdd35","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":17},"updated":"2018-03-07 22:02:38.000000000","message":"This should either be prefix_len or prefix_length. Same with the one on L77.\n\nWould be great to have tests for these changes as well.","commit_id":"1810f151b4a3de0a236a342dd39a3df06107d84f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"58065f3dc183b411ae3abd6b64e907043533bd08","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":35,"context_line":"        \u0027segment_id\u0027,"},{"line_number":36,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":37,"context_line":"        prefixlen\u003d\u0027prefix_length\u0027,"},{"line_number":38,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":39,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":40,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_d57ad986","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":17},"in_reply_to":"df7087c5_446cdd35","updated":"2018-03-08 00:32:16.000000000","message":"Agree. I\u0027d go with prefix_length myself.","commit_id":"1810f151b4a3de0a236a342dd39a3df06107d84f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"6d8f5672cec1ba021c971ce62b61ad4b55fd87e3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    _query_mapping \u003d resource.QueryParameters("},{"line_number":33,"context_line":"        \u0027cidr\u0027, \u0027description\u0027, \u0027gateway_ip\u0027, \u0027ip_version\u0027,"},{"line_number":34,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":35,"context_line":"        \u0027prefix_length\u0027, \u0027segment_id\u0027,"},{"line_number":36,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":37,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":38,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_c321b04f","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":24},"updated":"2018-03-08 15:51:52.000000000","message":"this actually should be:\n\n  prefix_length\u003d\u0027prefixlen\u0027,\n\nbecause the remote name is prefixlen.","commit_id":"f21d024d5810a7ee48d1789e0769db7e18e6a729"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f2700e1931e967883b7398261d0418e993192649","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":35,"context_line":"        \u0027segment_id\u0027,"},{"line_number":36,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":37,"context_line":"        prefix_length\u003d\u0027prefixlen\u0027,"},{"line_number":38,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":39,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":40,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_099323a5","line":37,"updated":"2018-03-10 11:07:25.000000000","message":"Do we need prefix_length in the query parameter mapping?\nprefixlen field is a request-only field, so this has no meaning.","commit_id":"b7b7ee038e5da684660c9450e1b65426856e906a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f2700e1931e967883b7398261d0418e993192649","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    #: The ID of the attached network."},{"line_number":75,"context_line":"    network_id \u003d resource.Body(\u0027network_id\u0027)"},{"line_number":76,"context_line":"    #: The prefix length to use for subnet allocation from a subnet pool"},{"line_number":77,"context_line":"    prefix_length \u003d resource.Body(\u0027prefixlen\u0027)"},{"line_number":78,"context_line":"    #: The ID of the project this subnet is associated with."},{"line_number":79,"context_line":"    project_id \u003d resource.Body(\u0027tenant_id\u0027)"},{"line_number":80,"context_line":"    #: Revision number of the subnet. *Type: int*"}],"source_content_type":"text/x-python","patch_set":7,"id":"df7087c5_69e97f18","line":77,"updated":"2018-03-10 11:07:25.000000000","message":"question: Is there a good way to represent a request-only field?\nNeutron API does not return \u0027prefixlen\u0027 value.","commit_id":"b7b7ee038e5da684660c9450e1b65426856e906a"},{"author":{"_account_id":16011,"name":"James Denton","email":"james.denton@outlook.com","username":"busterswt"},"change_message_id":"34892a10085d69d53117030aefff5817bba34278","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    #: The ID of the attached network."},{"line_number":75,"context_line":"    network_id \u003d resource.Body(\u0027network_id\u0027)"},{"line_number":76,"context_line":"    #: The prefix length to use for subnet allocation from a subnet pool"},{"line_number":77,"context_line":"    prefix_length \u003d resource.Body(\u0027prefixlen\u0027)"},{"line_number":78,"context_line":"    #: The ID of the project this subnet is associated with."},{"line_number":79,"context_line":"    project_id \u003d resource.Body(\u0027tenant_id\u0027)"},{"line_number":80,"context_line":"    #: Revision number of the subnet. *Type: int*"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_d9218ea1","line":77,"in_reply_to":"5f7c97a3_4b1b0ecf","updated":"2019-01-14 17:48:28.000000000","message":"Hid the column here: https://review.openstack.org/#/c/630703/","commit_id":"b7b7ee038e5da684660c9450e1b65426856e906a"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"4c0878e2a90b35ea2cdcc296bcc11e8cba1f7149","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    #: The ID of the attached network."},{"line_number":75,"context_line":"    network_id \u003d resource.Body(\u0027network_id\u0027)"},{"line_number":76,"context_line":"    #: The prefix length to use for subnet allocation from a subnet pool"},{"line_number":77,"context_line":"    prefix_length \u003d resource.Body(\u0027prefixlen\u0027)"},{"line_number":78,"context_line":"    #: The ID of the project this subnet is associated with."},{"line_number":79,"context_line":"    project_id \u003d resource.Body(\u0027tenant_id\u0027)"},{"line_number":80,"context_line":"    #: Revision number of the subnet. *Type: int*"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_4b1b0ecf","line":77,"in_reply_to":"df7087c5_69e97f18","updated":"2018-05-11 09:50:38.000000000","message":"There is no good way for that currently it seems, see the handling of \"use_default_subnetpool\" here and in OSC:\n\nhttp://git.openstack.org/cgit/openstack/python-openstackclient/tree/openstackclient/network/v2/subnet.py#n138\n\nYou\u0027ll need a similar thing here I guess.","commit_id":"b7b7ee038e5da684660c9450e1b65426856e906a"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"d65c4842fa71366ddbf0fdef807d844d745683e5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":32,"context_line":"        \u0027segment_id\u0027,"},{"line_number":33,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":34,"context_line":"        prefix_length\u003d\u0027prefixlen\u0027,"},{"line_number":35,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":36,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":37,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_50280a33","line":34,"updated":"2019-01-23 10:01:17.000000000","message":"Picking up the comment by Akihiro on the previous PS, I\u0027m wondering why you are renaming the parameter. Maybe just sticking to \u0027prefixlen\u0027 as defined by the Neutron API would simplify things a bit.\n\nAlthough if we actually do not need create-only parameters in this location at all, we could drop it completely and also drop the \u0027use_default_subnetpool\u0027 below.","commit_id":"29f09a2bd36d580d2d5d019defbfd7ecd9b51c3a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e5b90df363ccf1ded36d7ba5e8c2ca7dc9a565b1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":32,"context_line":"        \u0027segment_id\u0027,"},{"line_number":33,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":34,"context_line":"        prefix_length\u003d\u0027prefixlen\u0027,"},{"line_number":35,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":36,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":37,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_5684820c","line":34,"in_reply_to":"9fdfeff1_50280a33","updated":"2019-01-23 14:53:33.000000000","message":"Good catch. I totally forgot my comment as it was too long ago :(\n\nI think this is unnecessary in _query_mapping.\n\nRegarding the naming of parameter \"prefix_length\", OpenStack SDK use \"xxx_prefix_length\" for subnet pool [1], so I believe \"length\" brings consistency rather than prefix_len.\n\n[1] https://github.com/openstack/openstacksdk/blob/master/openstack/network/v2/subnet_pool.py#L36","commit_id":"29f09a2bd36d580d2d5d019defbfd7ecd9b51c3a"},{"author":{"_account_id":16011,"name":"James Denton","email":"james.denton@outlook.com","username":"busterswt"},"change_message_id":"e421d5d05fb653fb7d27d81ab1b495f728515f7c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":32,"context_line":"        \u0027segment_id\u0027,"},{"line_number":33,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":34,"context_line":"        prefix_length\u003d\u0027prefixlen\u0027,"},{"line_number":35,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":36,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":37,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_5a1d7c0d","line":34,"in_reply_to":"9fdfeff1_50280a33","updated":"2019-01-23 19:16:01.000000000","message":"On an unpatched system, looking at the debug output of an \u0027openstack subnet create\u0027, \"prefix_length\" is the name of the parameter being sent by the client, while \"prefixlen\" is what the API expects. Am I not simply mapping those here? Seems to follow the established practice of the other params here.","commit_id":"29f09a2bd36d580d2d5d019defbfd7ecd9b51c3a"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"78070fef0f3d4926d1924d517df9e38b4aa6305a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":32,"context_line":"        \u0027segment_id\u0027,"},{"line_number":33,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":34,"context_line":"        prefix_length\u003d\u0027prefixlen\u0027,"},{"line_number":35,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":36,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":37,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_85313f0e","line":34,"in_reply_to":"9fdfeff1_5a1d7c0d","updated":"2019-01-24 09:50:35.000000000","message":"Oh, right, the client already uses it, so too late to change the name anyway.\n\nTesting locally, it seems we can drop this line for the query_mapping, though.","commit_id":"29f09a2bd36d580d2d5d019defbfd7ecd9b51c3a"},{"author":{"_account_id":16011,"name":"James Denton","email":"james.denton@outlook.com","username":"busterswt"},"change_message_id":"22337b2371afedad004dd01889ddd6bc74ad9620","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027ipv6_address_mode\u0027, \u0027ipv6_ra_mode\u0027, \u0027name\u0027, \u0027network_id\u0027,"},{"line_number":32,"context_line":"        \u0027segment_id\u0027,"},{"line_number":33,"context_line":"        is_dhcp_enabled\u003d\u0027enable_dhcp\u0027,"},{"line_number":34,"context_line":"        prefix_length\u003d\u0027prefixlen\u0027,"},{"line_number":35,"context_line":"        project_id\u003d\u0027tenant_id\u0027,"},{"line_number":36,"context_line":"        subnet_pool_id\u003d\u0027subnetpool_id\u0027,"},{"line_number":37,"context_line":"        use_default_subnet_pool\u003d\u0027use_default_subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_579f80b3","line":34,"in_reply_to":"9fdfeff1_85313f0e","updated":"2019-01-24 19:16:54.000000000","message":"Done","commit_id":"29f09a2bd36d580d2d5d019defbfd7ecd9b51c3a"}],"openstack/tests/functional/network/v2/test_subnet_from_subnet_pool.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"912e7835ec926d1bdc74d173a171cb0d14cf1dd3","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    MINIMUM_PREFIX_LENGTH \u003d 8"},{"line_number":25,"context_line":"    DEFAULT_PREFIX_LENGTH \u003d 24"},{"line_number":26,"context_line":"    MAXIMUM_PREFIX_LENGTH \u003d 32"},{"line_number":27,"context_line":"    SUBNET_PREFIX_LENGTH \u003d \"28\""},{"line_number":28,"context_line":"    IP_VERSION \u003d 4"},{"line_number":29,"context_line":"    PREFIXES \u003d [\u002710.100.0.0/24\u0027]"},{"line_number":30,"context_line":"    NET_ID \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_e4f06ccc","line":27,"range":{"start_line":27,"start_character":27,"end_line":27,"end_character":31},"updated":"2018-03-09 08:28:51.000000000","message":"one question: why subnet prefix is given as a string but min/default/max prefixes are integers? Can\u0027t we do it all consistent?","commit_id":"ea2fc6fe3fa3caff42cabe016f32c4fd18f3efe4"},{"author":{"_account_id":16011,"name":"James Denton","email":"james.denton@outlook.com","username":"busterswt"},"change_message_id":"42a015bcb447f028d5486b040a9c3a4d979c3514","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    MINIMUM_PREFIX_LENGTH \u003d 8"},{"line_number":25,"context_line":"    DEFAULT_PREFIX_LENGTH \u003d 24"},{"line_number":26,"context_line":"    MAXIMUM_PREFIX_LENGTH \u003d 32"},{"line_number":27,"context_line":"    SUBNET_PREFIX_LENGTH \u003d \"28\""},{"line_number":28,"context_line":"    IP_VERSION \u003d 4"},{"line_number":29,"context_line":"    PREFIXES \u003d [\u002710.100.0.0/24\u0027]"},{"line_number":30,"context_line":"    NET_ID \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_9bea2baa","line":27,"range":{"start_line":27,"start_character":27,"end_line":27,"end_character":31},"in_reply_to":"df7087c5_e4f06ccc","updated":"2018-03-09 12:52:34.000000000","message":"Indeed we can. Thanks for pointing out.","commit_id":"ea2fc6fe3fa3caff42cabe016f32c4fd18f3efe4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"912e7835ec926d1bdc74d173a171cb0d14cf1dd3","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            default_prefixlen\u003dself.DEFAULT_PREFIX_LENGTH,"},{"line_number":44,"context_line":"            max_prefixlen\u003dself.MAXIMUM_PREFIX_LENGTH,"},{"line_number":45,"context_line":"            prefixes\u003dself.PREFIXES)"},{"line_number":46,"context_line":"        assert isinstance(subnet_pool, _subnet_pool.SubnetPool)"},{"line_number":47,"context_line":"        self.assertEqual(self.SUB_POOL_NAME, subnet_pool.name)"},{"line_number":48,"context_line":"        self.SUB_POOL_ID \u003d subnet_pool.id"},{"line_number":49,"context_line":"        net \u003d self.conn.network.create_network(name\u003dself.NET_NAME)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_842bb02e","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":14},"updated":"2018-03-09 08:28:51.000000000","message":"please use self.assertTrue() instead","commit_id":"ea2fc6fe3fa3caff42cabe016f32c4fd18f3efe4"},{"author":{"_account_id":16011,"name":"James Denton","email":"james.denton@outlook.com","username":"busterswt"},"change_message_id":"42a015bcb447f028d5486b040a9c3a4d979c3514","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            default_prefixlen\u003dself.DEFAULT_PREFIX_LENGTH,"},{"line_number":44,"context_line":"            max_prefixlen\u003dself.MAXIMUM_PREFIX_LENGTH,"},{"line_number":45,"context_line":"            prefixes\u003dself.PREFIXES)"},{"line_number":46,"context_line":"        assert isinstance(subnet_pool, _subnet_pool.SubnetPool)"},{"line_number":47,"context_line":"        self.assertEqual(self.SUB_POOL_NAME, subnet_pool.name)"},{"line_number":48,"context_line":"        self.SUB_POOL_ID \u003d subnet_pool.id"},{"line_number":49,"context_line":"        net \u003d self.conn.network.create_network(name\u003dself.NET_NAME)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_dbcae318","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":14},"in_reply_to":"df7087c5_473cbabe","updated":"2018-03-09 12:52:34.000000000","message":"I used test_subnet and test_subnet_pool as references, but have gone with self.assertIsInstance based on recommendation.","commit_id":"ea2fc6fe3fa3caff42cabe016f32c4fd18f3efe4"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"af20b63ab0e5c829d63b073f8de0d140d1218e21","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            default_prefixlen\u003dself.DEFAULT_PREFIX_LENGTH,"},{"line_number":44,"context_line":"            max_prefixlen\u003dself.MAXIMUM_PREFIX_LENGTH,"},{"line_number":45,"context_line":"            prefixes\u003dself.PREFIXES)"},{"line_number":46,"context_line":"        assert isinstance(subnet_pool, _subnet_pool.SubnetPool)"},{"line_number":47,"context_line":"        self.assertEqual(self.SUB_POOL_NAME, subnet_pool.name)"},{"line_number":48,"context_line":"        self.SUB_POOL_ID \u003d subnet_pool.id"},{"line_number":49,"context_line":"        net \u003d self.conn.network.create_network(name\u003dself.NET_NAME)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_473cbabe","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":14},"in_reply_to":"df7087c5_842bb02e","updated":"2018-03-09 09:14:46.000000000","message":"Or even self.assertIsInstance()?","commit_id":"ea2fc6fe3fa3caff42cabe016f32c4fd18f3efe4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"912e7835ec926d1bdc74d173a171cb0d14cf1dd3","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.assertEqual(self.SUB_POOL_NAME, subnet_pool.name)"},{"line_number":48,"context_line":"        self.SUB_POOL_ID \u003d subnet_pool.id"},{"line_number":49,"context_line":"        net \u003d self.conn.network.create_network(name\u003dself.NET_NAME)"},{"line_number":50,"context_line":"        assert isinstance(net, network.Network)"},{"line_number":51,"context_line":"        self.assertEqual(self.NET_NAME, net.name)"},{"line_number":52,"context_line":"        self.NET_ID \u003d net.id"},{"line_number":53,"context_line":"        sub \u003d self.conn.network.create_subnet("}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_2422e453","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":14},"updated":"2018-03-09 08:28:51.000000000","message":"ditto","commit_id":"ea2fc6fe3fa3caff42cabe016f32c4fd18f3efe4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"912e7835ec926d1bdc74d173a171cb0d14cf1dd3","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            network_id\u003dself.NET_ID,"},{"line_number":57,"context_line":"            prefixlen\u003dself.SUBNET_PREFIX_LENGTH,"},{"line_number":58,"context_line":"            subnetpool_id\u003dself.SUB_POOL_ID)"},{"line_number":59,"context_line":"        assert isinstance(sub, subnet.Subnet)"},{"line_number":60,"context_line":"        self.assertEqual(self.SUB_NAME, sub.name)"},{"line_number":61,"context_line":"        self.SUB_ID \u003d sub.id"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_441d980d","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":14},"updated":"2018-03-09 08:28:51.000000000","message":"ditto","commit_id":"ea2fc6fe3fa3caff42cabe016f32c4fd18f3efe4"}],"openstack/tests/unit/cloud/test_subnet.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"af20b63ab0e5c829d63b073f8de0d140d1218e21","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                          self.subnet_id, gateway_ip\u003d\"192.168.199.3\","},{"line_number":397,"context_line":"                          disable_gateway_ip\u003dTrue)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def test_create_subnet_from_subnetpool_with_prefix(self):"},{"line_number":400,"context_line":"        pool \u003d [{\u0027start\u0027: \u0027172.16.0.2\u0027, \u0027end\u0027: \u0027172.16.0.15\u0027}]"},{"line_number":401,"context_line":"        id \u003d \u0027143296eb-7f47-4755-835c-488123475604\u0027"},{"line_number":402,"context_line":"        gateway \u003d \u0027172.16.0.1\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_677e9e6c","line":399,"updated":"2018-03-09 09:14:46.000000000","message":"Nit: I\u0027d call this \"...with_prefixlen\" just to be clear","commit_id":"ea2fc6fe3fa3caff42cabe016f32c4fd18f3efe4"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"78070fef0f3d4926d1924d517df9e38b4aa6305a","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                          self.subnet_id, gateway_ip\u003d\"192.168.199.3\","},{"line_number":397,"context_line":"                          disable_gateway_ip\u003dTrue)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def test_create_subnet_from_subnetpool_with_prefixlen(self):"},{"line_number":400,"context_line":"        pool \u003d [{\u0027start\u0027: \u0027172.16.0.2\u0027, \u0027end\u0027: \u0027172.16.0.15\u0027}]"},{"line_number":401,"context_line":"        id \u003d \u0027143296eb-7f47-4755-835c-488123475604\u0027"},{"line_number":402,"context_line":"        gateway \u003d \u0027172.16.0.1\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_d8172a45","line":399,"updated":"2019-01-24 09:50:35.000000000","message":"If you respin anyway, maybe move this after the other \"test_create_*\" funcs, so that they are grouped together in the code.","commit_id":"29f09a2bd36d580d2d5d019defbfd7ecd9b51c3a"},{"author":{"_account_id":16011,"name":"James Denton","email":"james.denton@outlook.com","username":"busterswt"},"change_message_id":"22337b2371afedad004dd01889ddd6bc74ad9620","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                          self.subnet_id, gateway_ip\u003d\"192.168.199.3\","},{"line_number":397,"context_line":"                          disable_gateway_ip\u003dTrue)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def test_create_subnet_from_subnetpool_with_prefixlen(self):"},{"line_number":400,"context_line":"        pool \u003d [{\u0027start\u0027: \u0027172.16.0.2\u0027, \u0027end\u0027: \u0027172.16.0.15\u0027}]"},{"line_number":401,"context_line":"        id \u003d \u0027143296eb-7f47-4755-835c-488123475604\u0027"},{"line_number":402,"context_line":"        gateway \u003d \u0027172.16.0.1\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_379c3cbf","line":399,"in_reply_to":"9fdfeff1_d8172a45","updated":"2019-01-24 19:16:54.000000000","message":"Done","commit_id":"29f09a2bd36d580d2d5d019defbfd7ecd9b51c3a"}]}
