)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0360d996b4463c9a885740525349c79733beecbf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Check DefaultPrefixLength in Subnetpools"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Applya check in the default prefixlength in subnetpools"},{"line_number":10,"context_line":"so that the prefixlength of the subnetpool can be checked with"},{"line_number":11,"context_line":"network prefix length."},{"line_number":12,"context_line":"In case of inconsistency, do not allow creation of subnets from the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bff0334d_9cad0beb","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":6},"updated":"2017-04-10 12:09:56.000000000","message":"Apply a","commit_id":"dee339dc4ade186c0af9012ade4592d87325c1b6"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0360d996b4463c9a885740525349c79733beecbf","unresolved":false,"context_lines":[{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"        for prefix in prefixes:"},{"line_number":1008,"context_line":"            if default_prefixlen \u003c prefix.prefixlen:"},{"line_number":1009,"context_line":"                msg \u003d _(\"Illegal subnetpool default prefixlen /%s\")"},{"line_number":1010,"context_line":"                raise n_exc.SubnetPoolCreateUpdateError("},{"line_number":1011,"context_line":"                    reason\u003dmsg % str(default_prefixlen))"},{"line_number":1012,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_9c962b93","line":1009,"range":{"start_line":1009,"start_character":25,"end_line":1009,"end_character":32},"updated":"2017-04-10 12:09:56.000000000","message":"I would prefer Invalid","commit_id":"dee339dc4ade186c0af9012ade4592d87325c1b6"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"6291bfc6902e33cbb859cbf0c178778e21a560f3","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"            if default_prefixlen \u003c prefix.prefixlen:"},{"line_number":1047,"context_line":"                msg \u003d _(\"Invalid subnetpool default prefixlen /%s\")"},{"line_number":1048,"context_line":"                raise n_exc.SubnetPoolCreateUpdateError("},{"line_number":1049,"context_line":"                    reason\u003dmsg % str(default_prefixlen))"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"    def _validate_address_scope_id(self, context, address_scope_id,"},{"line_number":1052,"context_line":"                                   subnetpool_id, sp_prefixes, ip_version):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_081b18d0","line":1049,"updated":"2017-08-27 01:30:16.000000000","message":"str() is not necessary because u specified \"%s\" in msg.","commit_id":"5c5860ab6c418c77e8aeb4a1fe87bd8f5a1c3f91"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"26714d896b021ccdc6a13e1d42e37b591c2dfde4","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"            if default_prefixlen \u003c prefix.prefixlen:"},{"line_number":1047,"context_line":"                msg \u003d _(\"Invalid subnetpool default prefixlen /%s\")"},{"line_number":1048,"context_line":"                raise n_exc.SubnetPoolCreateUpdateError("},{"line_number":1049,"context_line":"                    reason\u003dmsg % str(default_prefixlen))"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"    def _validate_address_scope_id(self, context, address_scope_id,"},{"line_number":1052,"context_line":"                                   subnetpool_id, sp_prefixes, ip_version):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_cad3c0d4","line":1049,"in_reply_to":"7f287b81_081b18d0","updated":"2017-08-28 04:12:31.000000000","message":"If the default_prefixlength is not String, then would the %s have any impact?","commit_id":"5c5860ab6c418c77e8aeb4a1fe87bd8f5a1c3f91"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"1a23c17013c7f2e09b9960a5a929406c7055c280","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"            if default_prefixlen \u003c prefix.prefixlen:"},{"line_number":1047,"context_line":"                msg \u003d _(\"Invalid subnetpool default prefixlen /%s\")"},{"line_number":1048,"context_line":"                raise n_exc.SubnetPoolCreateUpdateError("},{"line_number":1049,"context_line":"                    reason\u003dmsg % str(default_prefixlen))"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"    def _validate_address_scope_id(self, context, address_scope_id,"},{"line_number":1052,"context_line":"                                   subnetpool_id, sp_prefixes, ip_version):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_ec2459b1","line":1049,"in_reply_to":"7f287b81_cad3c0d4","updated":"2017-08-28 04:44:35.000000000","message":"I mean %s converts string so using %s and str() seems redundancy.  I think it\u0027s OK when default_prefixlen can convert to string.","commit_id":"5c5860ab6c418c77e8aeb4a1fe87bd8f5a1c3f91"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"dc05971100d39281b70672e8c8281d8e222bad90","unresolved":false,"context_lines":[{"line_number":1102,"context_line":"        return [self._make_subnet_dict(subnet_obj) for subnet_obj in"},{"line_number":1103,"context_line":"                self._get_subnets_by_network(context, network_id)]"},{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"    def _validate_default_prefixlen(self, context, default_prefixlen,"},{"line_number":1106,"context_line":"                                    prefixes):"},{"line_number":1107,"context_line":"        \"\"\"Check if the subnetpool can be allocated with the default"},{"line_number":1108,"context_line":"        prefixlen."}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_d118a1d4","line":1105,"updated":"2019-09-17 20:22:38.000000000","message":"Consider doing this validation in the SubnetPoolReader or SubnetPoolHelper instead of doing it here. See https://github.com/openstack/neutron/blob/c21d922abd1208a72fe64d404a8eab93e0c56870/neutron/ipam/subnet_alloc.py","commit_id":"0cee41cc8b9d8efa001437aa42ab074b6f2d1e3c"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"dc05971100d39281b70672e8c8281d8e222bad90","unresolved":false,"context_lines":[{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"    def _validate_default_prefixlen(self, context, default_prefixlen,"},{"line_number":1106,"context_line":"                                    prefixes):"},{"line_number":1107,"context_line":"        \"\"\"Check if the subnetpool can be allocated with the default"},{"line_number":1108,"context_line":"        prefixlen."},{"line_number":1109,"context_line":"        \"\"\""},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        for prefix in prefixes:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_11d719f0","line":1108,"range":{"start_line":1107,"start_character":12,"end_line":1108,"end_character":18},"updated":"2019-09-17 20:22:38.000000000","message":"\"Check that a subnet could be allocated from the pool with the specified default_prefixlen\"?","commit_id":"0cee41cc8b9d8efa001437aa42ab074b6f2d1e3c"}],"neutron/ipam/exceptions.py":[{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"dc05971100d39281b70672e8c8281d8e222bad90","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    message \u003d _(\"Exception used to signal that IP allocation is deferred\")"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"class SubnetPoolCreateUpdateError(exceptions.BadRequest):"},{"line_number":95,"context_line":"    message \u003d _(\"Unable to create/update subnet pool: %(reason)s.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_9139c942","line":95,"range":{"start_line":94,"start_character":0,"end_line":95,"end_character":67},"updated":"2019-09-17 20:22:38.000000000","message":"I would not define this exception here. Take a look at https://github.com/openstack/neutron/blob/c21d922abd1208a72fe64d404a8eab93e0c56870/neutron/ipam/subnet_alloc.py#L372 which does some validation of the subnet pool parameters. There may be an exception that could be re-used too.","commit_id":"0cee41cc8b9d8efa001437aa42ab074b6f2d1e3c"}],"neutron/tests/unit/db/test_db_base_plugin_v2.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"5caf322096f7d237b78182956387965c20aad121","unresolved":false,"context_lines":[{"line_number":5708,"context_line":"                                         min_prefixlen\u003d\u002724\u0027,"},{"line_number":5709,"context_line":"                                         max_prefixlen\u003d\u002729\u0027)"},{"line_number":5710,"context_line":""},{"line_number":5711,"context_line":"        data \u003d {\u0027subnetpool\u0027: {\u0027max_prefixlen\u0027: \u002729\u0027}}"},{"line_number":5712,"context_line":"        req \u003d self.new_update_request(\u0027subnetpools\u0027, data,"},{"line_number":5713,"context_line":"                                      initial_subnetpool[\u0027subnetpool\u0027][\u0027id\u0027])"},{"line_number":5714,"context_line":"        res \u003d self.deserialize(self.fmt, req.get_response(self.api))"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_11339aad","line":5711,"updated":"2017-04-16 07:30:20.000000000","message":"this test is now not doing anything because the update is to the same max as the create. Adjust this to 30.","commit_id":"2c368edf1888b4be8593053ce8042d531c8a5ec7"}],"neutron/tests/unit/db/test_migration.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0360d996b4463c9a885740525349c79733beecbf","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        self.assertTrue(expand.downgrade_ops.is_empty())"},{"line_number":676,"context_line":"        self.assertTrue(contract.downgrade_ops.is_empty())"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        self.assertEqual("},{"line_number":679,"context_line":"            textwrap.dedent(\"\"\"\\"},{"line_number":680,"context_line":"            # ### commands auto generated by Alembic - please adjust! ###"},{"line_number":681,"context_line":"                op.create_table(\u0027organization\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_1c0c5beb","line":678,"updated":"2017-04-10 12:09:56.000000000","message":"is this related to the prefix validation? seems odd","commit_id":"dee339dc4ade186c0af9012ade4592d87325c1b6"}]}
