)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":10,"context_line":"includes wrapping the create and update methods for Regions, Services,"},{"line_number":11,"context_line":"and Endpoints."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"bp api-validation"},{"line_number":14,"context_line":"Change-Id: If8b665ffb0ed22a3f060254786fe1feaf0b78318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1ae5cdf2_662b1f82","line":13,"updated":"2014-06-13 20:19:33.000000000","message":"bp:","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":10,"context_line":"includes wrapping the create and update methods for Regions, Services,"},{"line_number":11,"context_line":"and Endpoints."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"bp api-validation"},{"line_number":14,"context_line":"Change-Id: If8b665ffb0ed22a3f060254786fe1feaf0b78318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1ae5cdf2_ca092486","line":13,"in_reply_to":"1ae5cdf2_662b1f82","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"4336f388785f5ee7fcd1fd0bc8e087ccc8e9cb18","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and Endpoints. This change removes functionality specific to the Catalog"},{"line_number":12,"context_line":"API for validating parameters for incoming requests."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"bp: api-validation"},{"line_number":15,"context_line":"Change-Id: If8b665ffb0ed22a3f060254786fe1feaf0b78318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"1abeadc6_ca473376","line":14,"updated":"2014-08-26 14:13:09.000000000","message":"I had another patch related with this topic in https://bugs.launchpad.net/keystone/+bug/1284430 and I\u0027ve abandoned in favor or this patch. So, I think could be a good idea add Closes-bug in the commit message, like:\n\nCloses-Bug: #1284430","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4d7cfddc5c7784116975277fe8eff5b0ec22a29b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and Endpoints. This change removes functionality specific to the Catalog"},{"line_number":12,"context_line":"API for validating parameters for incoming requests."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"bp: api-validation"},{"line_number":15,"context_line":"Change-Id: If8b665ffb0ed22a3f060254786fe1feaf0b78318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"1abeadc6_eeea3aab","line":14,"in_reply_to":"1abeadc6_ca473376","updated":"2014-08-26 18:55:08.000000000","message":"++","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"73e28e05e0b55a278290b712799ad2cdbe4ad824","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and Endpoints. This change removes functionality specific to the Catalog"},{"line_number":12,"context_line":"API for validating parameters for incoming requests."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"bp: api-validation"},{"line_number":15,"context_line":"Change-Id: If8b665ffb0ed22a3f060254786fe1feaf0b78318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"1abeadc6_fc4f4b32","line":14,"in_reply_to":"1abeadc6_ca473376","updated":"2014-08-26 20:34:33.000000000","message":"Done","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"}],"keystone/catalog/controllers.py":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return RegionV3.wrap_member(context, ref)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @controller.protected()"},{"line_number":195,"context_line":"    def delete_region(self, context, region_id):"},{"line_number":196,"context_line":"        return self.catalog_api.delete_region(region_id)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_6636bf04","line":195,"updated":"2014-06-13 20:19:33.000000000","message":"Out of curiosity, why do we not validate delete region, delete service, delete endpoint?","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return RegionV3.wrap_member(context, ref)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @controller.protected()"},{"line_number":195,"context_line":"    def delete_region(self, context, region_id):"},{"line_number":196,"context_line":"        return self.catalog_api.delete_region(region_id)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_aa285886","line":195,"in_reply_to":"1ae5cdf2_6636bf04","updated":"2014-06-23 18:41:49.000000000","message":"No region, service, or endpoint reference is passed into delete_ methods. Only the ID is passed in on delete methods.","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"b5d8261bcb305e0c8ff76458b0060eb3abad4a24","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    @controller.protected()"},{"line_number":305,"context_line":"    @validation.validated(schema.endpoint_create, \u0027endpoint\u0027)"},{"line_number":306,"context_line":"    def create_endpoint(self, context, endpoint):"},{"line_number":307,"context_line":"        self._validate_endpoint(endpoint)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        ref \u003d self._assign_unique_id(self._normalize_dict(endpoint))"},{"line_number":310,"context_line":"        self._require_attribute(ref, \u0027service_id\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"baada198_8bca446c","line":307,"updated":"2014-07-25 07:13:23.000000000","message":"I like your patch but, with this change, Is it necessary to call self._validate_endpoint(endpoint)?. Also, Is it necessary do it in Region and Service?.\n\nI think that using @validation.validated feature is not necessary to call _validate.whatever() function, is not it?","commit_id":"5ad7f220a1896e9e4686f76e9b80bd89afae3343"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a2a83b395d7ff637f15ce37a2f7d0cbc27b778e3","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    @controller.protected()"},{"line_number":305,"context_line":"    @validation.validated(schema.endpoint_create, \u0027endpoint\u0027)"},{"line_number":306,"context_line":"    def create_endpoint(self, context, endpoint):"},{"line_number":307,"context_line":"        self._validate_endpoint(endpoint)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        ref \u003d self._assign_unique_id(self._normalize_dict(endpoint))"},{"line_number":310,"context_line":"        self._require_attribute(ref, \u0027service_id\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"baada198_548bc4bf","line":307,"in_reply_to":"baada198_8bca446c","updated":"2014-07-30 13:50:36.000000000","message":"Good point, you\u0027re right. If we are going to be using the validation module for validating input we shouldn\u0027t need to use _validate_endpoint/service(), etc... Which looks like it is for checking the type of `enabled` if it is passed in the request. I think this was related to a bug that was fixed in Icehouse but regardless, it can be removed now.","commit_id":"5ad7f220a1896e9e4686f76e9b80bd89afae3343"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b829acf84d7a2ab6d8f134b983ce8fff405c15d9","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        ref \u003d cls.filter_endpoint(ref)"},{"line_number":269,"context_line":"        return super(EndpointV3, cls).wrap_member(context, ref)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _validate_endpoint(self, endpoint):"},{"line_number":272,"context_line":"        if \u0027enabled\u0027 in endpoint and not isinstance(endpoint[\u0027enabled\u0027], bool):"},{"line_number":273,"context_line":"            msg \u003d _(\u0027Enabled field must be a boolean\u0027)"},{"line_number":274,"context_line":"            raise exception.ValidationError(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa98f980_433b2f3a","line":271,"updated":"2014-09-01 18:12:17.000000000","message":"Remove this since it\u0027s not used.","commit_id":"8ef267c3ee3f0f1e6bdb74da7ed68aeb958e5567"}],"keystone/catalog/schema.py":[{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"32e8f8da27cd47a51b3943fd46c6022c19ca0470","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        # specified in the request, Keystone will assign a uuid as the \u0027id\u0027"},{"line_number":24,"context_line":"        # for the region."},{"line_number":25,"context_line":"        \u0027id\u0027: {"},{"line_number":26,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":27,"context_line":"            \u0027pattern\u0027: \u0027[a-z0-9-]+\u0027"},{"line_number":28,"context_line":"        },"},{"line_number":29,"context_line":"        \u0027parent_region_id\u0027: {"}],"source_content_type":"text/x-python","patch_set":23,"id":"7ac7a964_b4d41548","line":26,"updated":"2014-08-15 12:26:29.000000000","message":"According to the Lance Bragstad NOTE, the type should be: [\u0027string\u0027, \u0027null\u0027]\n\nIsn\u0027t it?. Right now, this line breaks keystone.tests.test_v3_catalog.CatalogTestCase.test_create_region_with_empty_id() test.\n\nAnd the same rule for region_update as well.","commit_id":"533095cb93c7f130ed5fbf8229d6dbb7e89fe315"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from keystone.common.validation import parameter_types"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"region_create \u003d {"},{"line_number":17,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":18,"context_line":"    \u0027properties\u0027: {"},{"line_number":19,"context_line":"        \u0027description\u0027: parameter_types.description,"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_4c6ef502","line":16,"updated":"2014-08-18 20:56:40.000000000","message":"if these were put inside a class then smurf naming wouldn\u0027t be required...\n\nclass Region:\n  create \u003d {\n  }\n\n  update \u003d {\n  }","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"6b36192d477348c9bb8cc7aa91be63a42872a320","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from keystone.common.validation import parameter_types"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"region_create \u003d {"},{"line_number":17,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":18,"context_line":"    \u0027properties\u0027: {"},{"line_number":19,"context_line":"        \u0027description\u0027: parameter_types.description,"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_bd31d55b","line":16,"in_reply_to":"1abeadc6_4c6ef502","updated":"2014-08-22 09:41:10.000000000","message":"Do you think that it is a good improvement? \n\nAnd, if we make this change, How it should be called from controllers function? Some this this?: @validation.validated(schema.Region.create, \u0027region\u0027)","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        },"},{"line_number":28,"context_line":"        \u0027parent_region_id\u0027: {"},{"line_number":29,"context_line":"            \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":30,"context_line":"        }"},{"line_number":31,"context_line":"    },"},{"line_number":32,"context_line":"    # NOTE(lbragstad): No parameters are required for creating regions."},{"line_number":33,"context_line":"    \u0027additionalProperties\u0027: True"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_4fcb47a5","line":30,"updated":"2014-08-18 20:56:40.000000000","message":"suggest put the , on the last element of all these collections so that it\u0027s easier to update.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        },"},{"line_number":28,"context_line":"        \u0027parent_region_id\u0027: {"},{"line_number":29,"context_line":"            \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":30,"context_line":"        }"},{"line_number":31,"context_line":"    },"},{"line_number":32,"context_line":"    # NOTE(lbragstad): No parameters are required for creating regions."},{"line_number":33,"context_line":"    \u0027additionalProperties\u0027: True"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_0d67004e","line":30,"in_reply_to":"1abeadc6_4fcb47a5","updated":"2014-08-22 09:10:57.000000000","message":"Done","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"region_update \u003d {"},{"line_number":37,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":38,"context_line":"    \u0027properties\u0027: {"},{"line_number":39,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":40,"context_line":"        \u0027id\u0027: {"},{"line_number":41,"context_line":"            \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":42,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_4c45156f","line":39,"updated":"2014-08-18 20:56:40.000000000","message":"this is a copy-paste of the properties in _create. create a variable and share it rather than copy paste.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"region_update \u003d {"},{"line_number":37,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":38,"context_line":"    \u0027properties\u0027: {"},{"line_number":39,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":40,"context_line":"        \u0027id\u0027: {"},{"line_number":41,"context_line":"            \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":42,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_2d5afc82","line":39,"in_reply_to":"1abeadc6_4c45156f","updated":"2014-08-22 09:10:57.000000000","message":"Done","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":55,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":56,"context_line":"        \u0027name\u0027: {"},{"line_number":57,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":58,"context_line":"        },"},{"line_number":59,"context_line":"        \u0027type\u0027: {"},{"line_number":60,"context_line":"            \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_0f4eaf6f","line":57,"updated":"2014-08-18 20:56:40.000000000","message":"should this be [\u0027string\u0027, \u0027null\u0027] ? why is \u0027id\u0027 [\u0027string\u0027, \u0027null\u0027] ?","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":55,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":56,"context_line":"        \u0027name\u0027: {"},{"line_number":57,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":58,"context_line":"        },"},{"line_number":59,"context_line":"        \u0027type\u0027: {"},{"line_number":60,"context_line":"            \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_ad928cf3","line":57,"in_reply_to":"1abeadc6_0f4eaf6f","updated":"2014-08-22 09:10:57.000000000","message":"If I\u0027m not wrong, regions could be created without ID and, in that case, the system assign automatically and ID to the new region. In services this behavior is not the same. Please, correct me if I\u0027m wrong.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"service_update \u003d {"},{"line_number":68,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":69,"context_line":"    \u0027properties\u0027: {"},{"line_number":70,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":71,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":72,"context_line":"        \u0027name\u0027: {"},{"line_number":73,"context_line":"            \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_0c323d10","line":70,"updated":"2014-08-18 20:56:40.000000000","message":"this is copied from line 54. create a variable and share it.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"service_update \u003d {"},{"line_number":68,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":69,"context_line":"    \u0027properties\u0027: {"},{"line_number":70,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":71,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":72,"context_line":"        \u0027name\u0027: {"},{"line_number":73,"context_line":"            \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_2d44bc72","line":70,"in_reply_to":"1abeadc6_0c323d10","updated":"2014-08-22 09:10:57.000000000","message":"Done","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        \u0027region_id\u0027: {"},{"line_number":92,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":93,"context_line":"        },"},{"line_number":94,"context_line":"        # Do we need both of these? Since \u0027region\u0027 was deprecrated in v3.2"},{"line_number":95,"context_line":"        \u0027region\u0027: {"},{"line_number":96,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":97,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_8c256dc4","line":94,"updated":"2014-08-18 20:56:40.000000000","message":"yes.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        \u0027region_id\u0027: {"},{"line_number":92,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":93,"context_line":"        },"},{"line_number":94,"context_line":"        # Do we need both of these? Since \u0027region\u0027 was deprecrated in v3.2"},{"line_number":95,"context_line":"        \u0027region\u0027: {"},{"line_number":96,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":97,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_6d28749a","line":94,"in_reply_to":"1abeadc6_8c256dc4","updated":"2014-08-22 09:10:57.000000000","message":"Done","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        },"},{"line_number":101,"context_line":"        \u0027url\u0027: parameter_types.url"},{"line_number":102,"context_line":"    },"},{"line_number":103,"context_line":"    \u0027required\u0027: [\u0027service_id\u0027, \u0027interface\u0027, \u0027url\u0027],"},{"line_number":104,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":105,"context_line":"}"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_af65bbe2","line":103,"updated":"2014-08-18 20:56:40.000000000","message":"suggest put these in alphabetical order.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        },"},{"line_number":101,"context_line":"        \u0027url\u0027: parameter_types.url"},{"line_number":102,"context_line":"    },"},{"line_number":103,"context_line":"    \u0027required\u0027: [\u0027service_id\u0027, \u0027interface\u0027, \u0027url\u0027],"},{"line_number":104,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":105,"context_line":"}"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_2d3bdceb","line":103,"in_reply_to":"1abeadc6_af65bbe2","updated":"2014-08-22 09:10:57.000000000","message":"Done","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":107,"context_line":"endpoint_update \u003d {"},{"line_number":108,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":109,"context_line":"    \u0027properties\u0027: {"},{"line_number":110,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":111,"context_line":"        \u0027interface\u0027: {"},{"line_number":112,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":113,"context_line":"            \u0027enum\u0027: [\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_4f426711","line":110,"updated":"2014-08-18 20:56:40.000000000","message":"this is copy-pasted. share it.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"endpoint_update \u003d {"},{"line_number":108,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":109,"context_line":"    \u0027properties\u0027: {"},{"line_number":110,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":111,"context_line":"        \u0027interface\u0027: {"},{"line_number":112,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":113,"context_line":"            \u0027enum\u0027: [\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_5eeb5c77","line":110,"in_reply_to":"1abeadc6_4f426711","updated":"2014-08-22 09:10:57.000000000","message":"Done","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"539b58386987eeffd1ee2b2d86a14c0c4d27c965","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"region_create \u003d region_schema"},{"line_number":76,"context_line":"region_update \u003d region_schema"},{"line_number":77,"context_line":"region_update[\u0027minProperties\u0027] \u003d 1"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"service_create \u003d service_schema"},{"line_number":80,"context_line":"service_update \u003d service_schema"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_8c1c976c","line":77,"updated":"2014-08-25 21:06:10.000000000","message":"move these up with the region_schema definition","commit_id":"a1c28d510104ab8ba9c3ae7ebb7e5d2c469c1843"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"4b7d9011a09f7db85bef980a1ebb9c79c8764d39","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"region_create \u003d region_schema"},{"line_number":76,"context_line":"region_update \u003d region_schema"},{"line_number":77,"context_line":"region_update[\u0027minProperties\u0027] \u003d 1"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"service_create \u003d service_schema"},{"line_number":80,"context_line":"service_update \u003d service_schema"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_5ecf73b0","line":77,"in_reply_to":"1abeadc6_8c1c976c","updated":"2014-08-26 08:23:57.000000000","message":"Done","commit_id":"a1c28d510104ab8ba9c3ae7ebb7e5d2c469c1843"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"539b58386987eeffd1ee2b2d86a14c0c4d27c965","unresolved":false,"context_lines":[{"line_number":79,"context_line":"service_create \u003d service_schema"},{"line_number":80,"context_line":"service_update \u003d service_schema"},{"line_number":81,"context_line":"service_update[\u0027minProperties\u0027] \u003d 1"},{"line_number":82,"context_line":"del service_update[\u0027required\u0027]"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"endpoint_create \u003d endpoint_schema"},{"line_number":85,"context_line":"endpoint_update \u003d endpoint_schema"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_ec2a6b7d","line":82,"updated":"2014-08-25 21:06:10.000000000","message":"same comment here with service_schema","commit_id":"a1c28d510104ab8ba9c3ae7ebb7e5d2c469c1843"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"4b7d9011a09f7db85bef980a1ebb9c79c8764d39","unresolved":false,"context_lines":[{"line_number":79,"context_line":"service_create \u003d service_schema"},{"line_number":80,"context_line":"service_update \u003d service_schema"},{"line_number":81,"context_line":"service_update[\u0027minProperties\u0027] \u003d 1"},{"line_number":82,"context_line":"del service_update[\u0027required\u0027]"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"endpoint_create \u003d endpoint_schema"},{"line_number":85,"context_line":"endpoint_update \u003d endpoint_schema"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_9ec02b7e","line":82,"in_reply_to":"1abeadc6_ec2a6b7d","updated":"2014-08-26 08:23:57.000000000","message":"Done","commit_id":"a1c28d510104ab8ba9c3ae7ebb7e5d2c469c1843"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4d7cfddc5c7784116975277fe8eff5b0ec22a29b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from keystone.common.validation import parameter_types"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_region_properties \u003d {"},{"line_number":17,"context_line":"    \u0027description\u0027: parameter_types.description,"},{"line_number":18,"context_line":"    # NOTE(lbragstad): If a user wants to create a region with a specific"},{"line_number":19,"context_line":"    # value as the \u0027id\u0027, it is done in the request URL, e.g."}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_30d00c53","line":16,"updated":"2014-08-26 18:55:08.000000000","message":"This is missing URL.","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"73e28e05e0b55a278290b712799ad2cdbe4ad824","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from keystone.common.validation import parameter_types"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_region_properties \u003d {"},{"line_number":17,"context_line":"    \u0027description\u0027: parameter_types.description,"},{"line_number":18,"context_line":"    # NOTE(lbragstad): If a user wants to create a region with a specific"},{"line_number":19,"context_line":"    # value as the \u0027id\u0027, it is done in the request URL, e.g."}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_819c345f","line":16,"in_reply_to":"1abeadc6_30d00c53","updated":"2014-08-26 20:34:33.000000000","message":"I don\u0027t think URL is a region property? \n\nhttps://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3.md#create-region-post-regions\n\nhttps://github.com/openstack/keystone/blob/master/keystone/common/sql/migrate_repo/versions/037_add_region_table.py#L25-L28","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"884f48dd6bde817acfedc206f8ed7352d6e33d99","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from keystone.common.validation import parameter_types"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_region_properties \u003d {"},{"line_number":17,"context_line":"    \u0027description\u0027: parameter_types.description,"},{"line_number":18,"context_line":"    # NOTE(lbragstad): If a user wants to create a region with a specific"},{"line_number":19,"context_line":"    # value as the \u0027id\u0027, it is done in the request URL, e.g."}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_e07159df","line":16,"in_reply_to":"1abeadc6_819c345f","updated":"2014-08-27 01:52:36.000000000","message":"It was recently added: https://review.openstack.org/#/c/106935/","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4d7cfddc5c7784116975277fe8eff5b0ec22a29b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \u0027id\u0027: {"},{"line_number":24,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":25,"context_line":"    },"},{"line_number":26,"context_line":"    \u0027parent_region_id\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":28,"context_line":"    },"},{"line_number":29,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_70ca84a2","line":26,"updated":"2014-08-26 18:55:08.000000000","message":"Should this be the string_id type?","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4d7cfddc5c7784116975277fe8eff5b0ec22a29b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":43,"context_line":"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"_service_properties \u003d {"},{"line_number":46,"context_line":"    \u0027description\u0027: parameter_types.description,"},{"line_number":47,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":48,"context_line":"    \u0027name\u0027: {"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_0902103e","line":45,"updated":"2014-08-26 18:55:08.000000000","message":"Are these correct?  It doesn\u0027t match what I see here: https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/sql.py#L55","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"73e28e05e0b55a278290b712799ad2cdbe4ad824","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":43,"context_line":"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"_service_properties \u003d {"},{"line_number":46,"context_line":"    \u0027description\u0027: parameter_types.description,"},{"line_number":47,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":48,"context_line":"    \u0027name\u0027: {"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_618398cc","line":45,"in_reply_to":"1abeadc6_0902103e","updated":"2014-08-26 20:34:33.000000000","message":"i was basing this off of: \n\nhttps://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3.md#services-v3services\n\nbut yes, checking the actual database schema and I think type, enabled, and ID are the only things that are required, if name is supplied in the request it is shoved into the \u0027extra\u0027 column.\n\nThe identity-api documentation should be updated as well.","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4d7cfddc5c7784116975277fe8eff5b0ec22a29b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \u0027type\u0027: \u0027string\u0027,"},{"line_number":74,"context_line":"        \u0027enum\u0027: [\u0027admin\u0027, \u0027internal\u0027, \u0027public\u0027]"},{"line_number":75,"context_line":"    },"},{"line_number":76,"context_line":"    \u0027region_id\u0027: {"},{"line_number":77,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":78,"context_line":"    },"},{"line_number":79,"context_line":"    \u0027region\u0027: {"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_7058c4fa","line":76,"updated":"2014-08-26 18:55:08.000000000","message":"Should these IDs be string_id type?","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"73e28e05e0b55a278290b712799ad2cdbe4ad824","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \u0027type\u0027: \u0027string\u0027,"},{"line_number":74,"context_line":"        \u0027enum\u0027: [\u0027admin\u0027, \u0027internal\u0027, \u0027public\u0027]"},{"line_number":75,"context_line":"    },"},{"line_number":76,"context_line":"    \u0027region_id\u0027: {"},{"line_number":77,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":78,"context_line":"    },"},{"line_number":79,"context_line":"    \u0027region\u0027: {"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_9c12d756","line":76,"in_reply_to":"1abeadc6_7058c4fa","updated":"2014-08-26 20:34:33.000000000","message":"You mean with this change? \n\nhttps://review.openstack.org/#/c/108862/","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"faced9b3271f18343de169f5dc229feee7261ee8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from keystone.common.validation import parameter_types"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_region_properties \u003d {"},{"line_number":17,"context_line":"    \u0027description\u0027: parameter_types.description,"},{"line_number":18,"context_line":"    # NOTE(lbragstad): If a user wants to create a region with a specific"},{"line_number":19,"context_line":"    # value as the \u0027id\u0027, it is done in the request URL, e.g."}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_df114505","line":16,"updated":"2014-08-28 19:53:59.000000000","message":"We need to add the URL here. http://git.openstack.org/cgit/openstack/keystone/tree/keystone/catalog/backends/sql.py#n29","commit_id":"a0b5338542108db373335d6f81810ad491db0fff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"01da59af375d2a2a3647ba59abb0a89adf0652f3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from keystone.common.validation import parameter_types"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_region_properties \u003d {"},{"line_number":17,"context_line":"    \u0027description\u0027: parameter_types.description,"},{"line_number":18,"context_line":"    # NOTE(lbragstad): If a user wants to create a region with a specific"},{"line_number":19,"context_line":"    # value as the \u0027id\u0027, it is done in the request URL, e.g."}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_a2c2b2e6","line":16,"in_reply_to":"1abeadc6_df114505","updated":"2014-08-28 20:45:24.000000000","message":"Done, nice catch... \n\nWe\u0027ll have to update the docs to it looks like. https://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3.md#create-region-post-regions","commit_id":"a0b5338542108db373335d6f81810ad491db0fff"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"faced9b3271f18343de169f5dc229feee7261ee8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    },"},{"line_number":29,"context_line":"}"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"region_create \u003d {"},{"line_number":32,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":33,"context_line":"    \u0027properties\u0027: _region_properties,"},{"line_number":34,"context_line":"    \u0027additionalProperties\u0027: True"}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_bc79f783","line":31,"updated":"2014-08-28 19:53:59.000000000","message":"Our SQL backend requires description.\nhttp://git.openstack.org/cgit/openstack/keystone/tree/keystone/catalog/backends/sql.py#n29\n\nAssuming this is correct I\u0027ve updated the docs: https://review.openstack.org/117599","commit_id":"a0b5338542108db373335d6f81810ad491db0fff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"01da59af375d2a2a3647ba59abb0a89adf0652f3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    },"},{"line_number":29,"context_line":"}"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"region_create \u003d {"},{"line_number":32,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":33,"context_line":"    \u0027properties\u0027: _region_properties,"},{"line_number":34,"context_line":"    \u0027additionalProperties\u0027: True"}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_62525a36","line":31,"in_reply_to":"1abeadc6_bc79f783","updated":"2014-08-28 20:45:24.000000000","message":"We should need to require `description` here because of https://github.com/openstack/keystone/blob/master/keystone/catalog/core.py#L98-L101\n\nThe manager layer will always check if description is provided in the reference, so the reference should never reach the driver with `description` as null.","commit_id":"a0b5338542108db373335d6f81810ad491db0fff"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"faced9b3271f18343de169f5dc229feee7261ee8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":43,"context_line":"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"_service_properties \u003d {"},{"line_number":46,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":47,"context_line":"    \u0027type\u0027: {"},{"line_number":48,"context_line":"        \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_7fef5187","line":45,"updated":"2014-08-28 19:53:59.000000000","message":"Name is not listed here, but is in the docs. http://docs.openstack.org/api/openstack-identity-service/3/content/services-v3services.html","commit_id":"a0b5338542108db373335d6f81810ad491db0fff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"01da59af375d2a2a3647ba59abb0a89adf0652f3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":43,"context_line":"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"_service_properties \u003d {"},{"line_number":46,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":47,"context_line":"    \u0027type\u0027: {"},{"line_number":48,"context_line":"        \u0027type\u0027: \u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_adfb8379","line":45,"in_reply_to":"1abeadc6_7fef5187","updated":"2014-08-28 20:45:24.000000000","message":"Done","commit_id":"a0b5338542108db373335d6f81810ad491db0fff"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"faced9b3271f18343de169f5dc229feee7261ee8","unresolved":false,"context_lines":[{"line_number":45,"context_line":"_service_properties \u003d {"},{"line_number":46,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":47,"context_line":"    \u0027type\u0027: {"},{"line_number":48,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":49,"context_line":"    }"},{"line_number":50,"context_line":"}"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_dfd305d3","line":48,"updated":"2014-08-28 19:53:59.000000000","message":"Should we constrain this to 255? http://git.openstack.org/cgit/openstack/keystone/tree/keystone/catalog/backends/sql.py#n55","commit_id":"a0b5338542108db373335d6f81810ad491db0fff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"01da59af375d2a2a3647ba59abb0a89adf0652f3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"_service_properties \u003d {"},{"line_number":46,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":47,"context_line":"    \u0027type\u0027: {"},{"line_number":48,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":49,"context_line":"    }"},{"line_number":50,"context_line":"}"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_cd00bf68","line":48,"in_reply_to":"1abeadc6_dfd305d3","updated":"2014-08-28 20:45:24.000000000","message":"Done","commit_id":"a0b5338542108db373335d6f81810ad491db0fff"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"d071a743bb9262044fcc638a8f1c0708645bc645","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    # specified in the request, Keystone will assign a uuid as the \u0027id\u0027"},{"line_number":22,"context_line":"    # for the region."},{"line_number":23,"context_line":"    \u0027id\u0027: {"},{"line_number":24,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":25,"context_line":"    },"},{"line_number":26,"context_line":"    \u0027parent_region_id\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_13a1f693","line":24,"updated":"2014-08-28 21:52:48.000000000","message":"i would never pass { \"id\": null } though in the request body, it\u0027s just not a required part of the request. so, this shouldn\u0027t be nullable","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"db35c88338c6cde6a4d007bebbb0289fccf5f192","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    # specified in the request, Keystone will assign a uuid as the \u0027id\u0027"},{"line_number":22,"context_line":"    # for the region."},{"line_number":23,"context_line":"    \u0027id\u0027: {"},{"line_number":24,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":25,"context_line":"    },"},{"line_number":26,"context_line":"    \u0027parent_region_id\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_b3092286","line":24,"in_reply_to":"1abeadc6_13a1f693","updated":"2014-08-28 21:59:02.000000000","message":"++","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4aaed2c072626f493f1ef4ca49e5fd619a37eee7","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    # specified in the request, Keystone will assign a uuid as the \u0027id\u0027"},{"line_number":22,"context_line":"    # for the region."},{"line_number":23,"context_line":"    \u0027id\u0027: {"},{"line_number":24,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":25,"context_line":"    },"},{"line_number":26,"context_line":"    \u0027parent_region_id\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_c9dfae0b","line":24,"in_reply_to":"1abeadc6_13a1f693","updated":"2014-08-29 12:20:22.000000000","message":"Done","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"d071a743bb9262044fcc638a8f1c0708645bc645","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":25,"context_line":"    },"},{"line_number":26,"context_line":"    \u0027parent_region_id\u0027: {"},{"line_number":27,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":28,"context_line":"    },"},{"line_number":29,"context_line":"    \u0027url\u0027: parameter_types.url"},{"line_number":30,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_53a7eea6","line":27,"updated":"2014-08-28 21:52:48.000000000","message":"this *should* be nullable, indicating a top-level region","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"d071a743bb9262044fcc638a8f1c0708645bc645","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    },"},{"line_number":79,"context_line":"    \u0027region\u0027: {"},{"line_number":80,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":81,"context_line":"    },"},{"line_number":82,"context_line":"    \u0027service_id\u0027: {"},{"line_number":83,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":84,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_93bc26bd","line":81,"updated":"2014-08-28 21:52:48.000000000","message":"ideally, region and region_id should not be allowed in the same request","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"db35c88338c6cde6a4d007bebbb0289fccf5f192","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    },"},{"line_number":79,"context_line":"    \u0027region\u0027: {"},{"line_number":80,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":81,"context_line":"    },"},{"line_number":82,"context_line":"    \u0027service_id\u0027: {"},{"line_number":83,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":84,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_d35cde7f","line":81,"in_reply_to":"1abeadc6_93bc26bd","updated":"2014-08-28 21:59:02.000000000","message":"I don\u0027t know it jsonschema can do that, but it would be a trivial controller fix.","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c3532231087905dd11537f3c2222278fc1dfa086","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    },"},{"line_number":79,"context_line":"    \u0027region\u0027: {"},{"line_number":80,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":81,"context_line":"    },"},{"line_number":82,"context_line":"    \u0027service_id\u0027: {"},{"line_number":83,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":84,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_470643cf","line":81,"in_reply_to":"1abeadc6_d35cde7f","updated":"2014-08-29 02:25:24.000000000","message":"We could add logic to the controller to log a deprecated message if \u0027region\u0027 is used instead of \u0027region_id\u0027.","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"bff3bf5fea581ca6dd5626b9b8c98526ca67b628","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"_region_properties \u003d {"},{"line_number":17,"context_line":"    \u0027description\u0027: parameter_types.description,"},{"line_number":18,"context_line":"    # NOTE(lbragstad): If a user wants to create a region with a specific"},{"line_number":19,"context_line":"    # value as the \u0027id\u0027, it is done in the request URL, e.g."},{"line_number":20,"context_line":"    # PUT /regions/us-east. This is not required and if an \u0027id\u0027 is not"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa98f980_85dd2273","line":17,"updated":"2014-09-01 16:35:29.000000000","message":"Should this be constrained to 255 characters like the SQL column?","commit_id":"8ef267c3ee3f0f1e6bdb74da7ed68aeb958e5567"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b829acf84d7a2ab6d8f134b983ce8fff405c15d9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    # value as the \u0027id\u0027, it is done in the request URL, e.g."},{"line_number":20,"context_line":"    # PUT /regions/us-east. This is not required and if an \u0027id\u0027 is not"},{"line_number":21,"context_line":"    # specified in the request, Keystone will assign a uuid as the \u0027id\u0027"},{"line_number":22,"context_line":"    # for the region."},{"line_number":23,"context_line":"    \u0027id\u0027: {"},{"line_number":24,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":25,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa98f980_836fd791","line":22,"updated":"2014-09-01 18:12:17.000000000","message":"This note is inaccurate and it would be easier to just remove it. You can use a PUT or POST and specify the ID.","commit_id":"8ef267c3ee3f0f1e6bdb74da7ed68aeb958e5567"}],"keystone/tests/test_v3.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    def new_endpoint_ref(self, service_id, interface\u003dNone, **kwargs):"},{"line_number":285,"context_line":"        ref \u003d self.new_ref()"},{"line_number":286,"context_line":"        del ref[\u0027enabled\u0027]  # enabled is optional"},{"line_number":287,"context_line":"        if interface in [\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027]:"},{"line_number":288,"context_line":"            ref[\u0027interface\u0027] \u003d interface"},{"line_number":289,"context_line":"        else:"},{"line_number":290,"context_line":"            ref[\u0027interface\u0027] \u003d \u0027public\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_4fdee740","line":287,"updated":"2014-08-18 20:56:40.000000000","message":"aren\u0027t these changes to the tests showing that this change isn\u0027t backwards compatible?","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"f4a8e847e537c1f3df909b17332fe84595e7d207","unresolved":false,"context_lines":[{"line_number":284,"context_line":"    def new_endpoint_ref(self, service_id, interface\u003dNone, **kwargs):"},{"line_number":285,"context_line":"        ref \u003d self.new_ref()"},{"line_number":286,"context_line":"        del ref[\u0027enabled\u0027]  # enabled is optional"},{"line_number":287,"context_line":"        if interface in [\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027]:"},{"line_number":288,"context_line":"            ref[\u0027interface\u0027] \u003d interface"},{"line_number":289,"context_line":"        else:"},{"line_number":290,"context_line":"            ref[\u0027interface\u0027] \u003d \u0027public\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_2de75ce5","line":287,"in_reply_to":"1abeadc6_4fdee740","updated":"2014-08-22 06:50:50.000000000","message":"Sorry Brant, I don\u0027t understand, What do you suggest to change in these lines?","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4d7cfddc5c7784116975277fe8eff5b0ec22a29b","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        if interface in [\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027]:"},{"line_number":288,"context_line":"            ref[\u0027interface\u0027] \u003d interface"},{"line_number":289,"context_line":"        else:"},{"line_number":290,"context_line":"            ref[\u0027interface\u0027] \u003d \u0027public\u0027"},{"line_number":291,"context_line":"        ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":292,"context_line":"        ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":293,"context_line":"        ref[\u0027region\u0027] \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_d09d1859","line":290,"updated":"2014-08-26 18:55:08.000000000","message":"We can replace this entire block with \"ref[\u0027interface\u0027] \u003d interface\" if we used \u0027public\u0027 as the default instead of None.","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"73e28e05e0b55a278290b712799ad2cdbe4ad824","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        if interface in [\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027]:"},{"line_number":288,"context_line":"            ref[\u0027interface\u0027] \u003d interface"},{"line_number":289,"context_line":"        else:"},{"line_number":290,"context_line":"            ref[\u0027interface\u0027] \u003d \u0027public\u0027"},{"line_number":291,"context_line":"        ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":292,"context_line":"        ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":293,"context_line":"        ref[\u0027region\u0027] \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_3c7703a1","line":290,"in_reply_to":"1abeadc6_d09d1859","updated":"2014-08-26 20:34:33.000000000","message":"Done","commit_id":"f80909c9bbb74813c1ae03cc389dc37424dc02e4"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"c38b549dd0f99ed29b900a759a2bd99bee3405de","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        del ref[\u0027enabled\u0027]  # enabled is optional"},{"line_number":287,"context_line":"        ref[\u0027interface\u0027] \u003d interface"},{"line_number":288,"context_line":"        ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":289,"context_line":"        ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":290,"context_line":"        ref[\u0027region\u0027] \u003d uuid.uuid4().hex"},{"line_number":291,"context_line":"        ref.update(kwargs)"},{"line_number":292,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_4ae9deb5","line":289,"updated":"2014-08-29 06:36:51.000000000","message":"Just my question, why use `https` here?","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4aaed2c072626f493f1ef4ca49e5fd619a37eee7","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        del ref[\u0027enabled\u0027]  # enabled is optional"},{"line_number":287,"context_line":"        ref[\u0027interface\u0027] \u003d interface"},{"line_number":288,"context_line":"        ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":289,"context_line":"        ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":290,"context_line":"        ref[\u0027region\u0027] \u003d uuid.uuid4().hex"},{"line_number":291,"context_line":"        ref.update(kwargs)"},{"line_number":292,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":33,"id":"1abeadc6_4928fee1","line":289,"in_reply_to":"1abeadc6_4ae9deb5","updated":"2014-08-29 12:20:22.000000000","message":"Here we are just populating some test data for the endpoint reference dictionary. The regular expression that is being used to match valid URLs will not raise an exception on a URL like \u0027https://example.com\u0027. We could do the same test with \u0027http://example.com\u0027. The purpose of ref[\u0027url\u0027] is to hold some valid URL value for the sake of building a endpoint reference.","commit_id":"a9ef68e99331e0ea9343724c1208cbc6cc39da59"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"f3b3d7b5d5b6c9d1579ba6092ac8a6f2ebe5675e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        del ref[\u0027enabled\u0027]  # enabled is optional"},{"line_number":287,"context_line":"        ref[\u0027interface\u0027] \u003d interface"},{"line_number":288,"context_line":"        ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":289,"context_line":"        ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":290,"context_line":"        ref[\u0027region\u0027] \u003d uuid.uuid4().hex"},{"line_number":291,"context_line":"        ref.update(kwargs)"},{"line_number":292,"context_line":"        return ref"}],"source_content_type":"text/x-python","patch_set":36,"id":"1abeadc6_01c24833","line":289,"updated":"2014-08-30 00:16:43.000000000","message":"YAY validation!","commit_id":"91987e8340c449c95dbee376c406db1ab49834ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"32fc5df9c687504a5742a4caca5de5bca18a926a","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        ref[\u0027interface\u0027] \u003d interface"},{"line_number":288,"context_line":"        ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":289,"context_line":"        ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":290,"context_line":"        ref[\u0027region\u0027] \u003d uuid.uuid4().hex"},{"line_number":291,"context_line":"        ref.update(kwargs)"},{"line_number":292,"context_line":"        return ref"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"fa98f980_ec752733","line":290,"updated":"2014-08-31 07:51:54.000000000","message":"i think the endpoint-\u003eregion_id patch messed something up here","commit_id":"91987e8340c449c95dbee376c406db1ab49834ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2b9ab0d5f9bdcadda58fc87e54a31bbd8a74c3af","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def new_endpoint_ref(self, service_id, interface\u003d\u0027public\u0027, **kwargs):"},{"line_number":287,"context_line":"        ref \u003d self.new_ref()"},{"line_number":288,"context_line":"        del ref[\u0027enabled\u0027]  # enabled is optional"},{"line_number":289,"context_line":"        ref[\u0027interface\u0027] \u003d interface"},{"line_number":290,"context_line":"        ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":291,"context_line":"        ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":292,"context_line":"        ref[\u0027region_id\u0027] \u003d self.region_id"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa98f980_afb943eb","line":289,"updated":"2014-09-01 04:47:58.000000000","message":"yay real values","commit_id":"8ef267c3ee3f0f1e6bdb74da7ed68aeb958e5567"}],"keystone/tests/test_v3_catalog.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"f3b3d7b5d5b6c9d1579ba6092ac8a6f2ebe5675e","unresolved":false,"context_lines":[{"line_number":440,"context_line":"    def test_create_endpoint_with_empty_url(self):"},{"line_number":441,"context_line":"        \"\"\"Call ``POST /endpoints``.\"\"\""},{"line_number":442,"context_line":"        ref \u003d self.new_endpoint_ref(service_id\u003dself.service_id)"},{"line_number":443,"context_line":"        ref[\"url\"] \u003d \u0027\u0027"},{"line_number":444,"context_line":"        self.post(\u0027/endpoints\u0027, body\u003d{\u0027endpoint\u0027: ref}, expected_status\u003d400)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    def test_get_endpoint(self):"}],"source_content_type":"text/x-python","patch_set":36,"id":"1abeadc6_e1cd4c5e","line":443,"updated":"2014-08-30 00:16:43.000000000","message":"This is a minor change in behavior in the test (not in the resulting user-facing logic). I assume that this is to test actual validation vs. non-existent property, a comment would be good to indicate the difference here.","commit_id":"91987e8340c449c95dbee376c406db1ab49834ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2b9ab0d5f9bdcadda58fc87e54a31bbd8a74c3af","unresolved":false,"context_lines":[{"line_number":465,"context_line":"    def test_create_endpoint_with_empty_url(self):"},{"line_number":466,"context_line":"        \"\"\"Call ``POST /endpoints``.\"\"\""},{"line_number":467,"context_line":"        ref \u003d self.new_endpoint_ref(service_id\u003dself.service_id)"},{"line_number":468,"context_line":"        ref[\"url\"] \u003d \u0027\u0027"},{"line_number":469,"context_line":"        self.post(\u0027/endpoints\u0027, body\u003d{\u0027endpoint\u0027: ref}, expected_status\u003d400)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def test_get_endpoint(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa98f980_4fa1b7a8","line":468,"updated":"2014-09-01 04:47:58.000000000","message":"shouldn\u0027t this still work if url was missing?","commit_id":"8ef267c3ee3f0f1e6bdb74da7ed68aeb958e5567"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0a039343cd8e26986e45ceec47fb61dc0c4c0985","unresolved":false,"context_lines":[{"line_number":465,"context_line":"    def test_create_endpoint_with_empty_url(self):"},{"line_number":466,"context_line":"        \"\"\"Call ``POST /endpoints``.\"\"\""},{"line_number":467,"context_line":"        ref \u003d self.new_endpoint_ref(service_id\u003dself.service_id)"},{"line_number":468,"context_line":"        ref[\"url\"] \u003d \u0027\u0027"},{"line_number":469,"context_line":"        self.post(\u0027/endpoints\u0027, body\u003d{\u0027endpoint\u0027: ref}, expected_status\u003d400)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def test_get_endpoint(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"fa98f980_9f6ad518","line":468,"in_reply_to":"fa98f980_4fa1b7a8","updated":"2014-09-01 16:03:32.000000000","message":"correct, if the \u0027url\u0027 isn\u0027t provided in the reference from new_endpoint_ref, but as it stands right now, \u0027url\u0027 is returned from new_endpoint_ref()","commit_id":"8ef267c3ee3f0f1e6bdb74da7ed68aeb958e5567"}],"keystone/tests/test_validation.py":[{"author":{"_account_id":11717,"name":"Ryan Oshima","email":"ryan.oshima@hp.com","username":"RyanOshima"},"change_message_id":"ca365524dcfbfa68f19858ad5f89f1a3998fc25b","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def test_validate_region_request(self):"},{"line_number":345,"context_line":"        \"\"\"Test that we validate a basic region request.\"\"\""},{"line_number":346,"context_line":"        # Create_region doesn\u0027t take an parameters in the request so let\u0027s"},{"line_number":347,"context_line":"        # make sure we cover that case."},{"line_number":348,"context_line":"        request_to_validate \u003d {}"},{"line_number":349,"context_line":"        self.create_region_validator.validate(request_to_validate)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_4cc74b96","line":346,"updated":"2014-06-04 23:47:14.000000000","message":"\"an\"/\"any\"","commit_id":"2c9c067c1a098f57c10dd373522c86d5175055bd"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def test_validate_region_request(self):"},{"line_number":394,"context_line":"        \"\"\"Test that we validate a basic region request.\"\"\""},{"line_number":395,"context_line":"        # Create_region doesn\u0027t take an parameters in the request so let\u0027s"},{"line_number":396,"context_line":"        # make sure we cover that case."},{"line_number":397,"context_line":"        request_to_validate \u003d {}"},{"line_number":398,"context_line":"        self.create_region_validator.validate(request_to_validate)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_fcf98180","line":395,"updated":"2014-06-13 20:19:33.000000000","message":"an \u003d\u003e any","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def test_validate_region_request(self):"},{"line_number":394,"context_line":"        \"\"\"Test that we validate a basic region request.\"\"\""},{"line_number":395,"context_line":"        # Create_region doesn\u0027t take an parameters in the request so let\u0027s"},{"line_number":396,"context_line":"        # make sure we cover that case."},{"line_number":397,"context_line":"        request_to_validate \u003d {}"},{"line_number":398,"context_line":"        self.create_region_validator.validate(request_to_validate)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_2a3b68c9","line":395,"in_reply_to":"1ae5cdf2_fcf98180","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                               \u0027parent_region_id\u0027: uuid.uuid4().hex}"},{"line_number":412,"context_line":"        self.create_region_validator.validate(request_to_validate)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def test_validate_region_succeeds_with_extra_parameters(self):"},{"line_number":415,"context_line":"        \"\"\"Test that we validate extra data when validating a create region"},{"line_number":416,"context_line":"           request with extra values."},{"line_number":417,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_6994d036","line":414,"updated":"2014-06-13 20:19:33.000000000","message":"Rename function to: test_validate_region_create_...","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                               \u0027parent_region_id\u0027: uuid.uuid4().hex}"},{"line_number":412,"context_line":"        self.create_region_validator.validate(request_to_validate)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def test_validate_region_succeeds_with_extra_parameters(self):"},{"line_number":415,"context_line":"        \"\"\"Test that we validate extra data when validating a create region"},{"line_number":416,"context_line":"           request with extra values."},{"line_number":417,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_ea70a0a6","line":414,"in_reply_to":"1ae5cdf2_6994d036","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        request_to_validate \u003d {\u0027other_attr\u0027: uuid.uuid4().hex}"},{"line_number":419,"context_line":"        self.create_region_validator.validate(request_to_validate)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def test_validate_region_update(self):"},{"line_number":422,"context_line":"        \"\"\"Test that we validate a region update request.\"\"\""},{"line_number":423,"context_line":"        request_to_validate \u003d {\u0027id\u0027: \u0027us-west\u0027,"},{"line_number":424,"context_line":"                               \u0027description\u0027: \u0027US West Region\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_e99f004e","line":421,"updated":"2014-06-13 20:19:33.000000000","message":"Rename function to: test_validate_region_update_succeeds","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        request_to_validate \u003d {\u0027other_attr\u0027: uuid.uuid4().hex}"},{"line_number":419,"context_line":"        self.create_region_validator.validate(request_to_validate)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def test_validate_region_update(self):"},{"line_number":422,"context_line":"        \"\"\"Test that we validate a region update request.\"\"\""},{"line_number":423,"context_line":"        request_to_validate \u003d {\u0027id\u0027: \u0027us-west\u0027,"},{"line_number":424,"context_line":"                               \u0027description\u0027: \u0027US West Region\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_ca6be4b7","line":421,"in_reply_to":"1ae5cdf2_e99f004e","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":429,"context_line":"        \"\"\"Test that extra data is validated when passing extra attributes in"},{"line_number":430,"context_line":"           the region update request."},{"line_number":431,"context_line":"        \"\"\""},{"line_number":432,"context_line":"        request_to_validate \u003d {\u0027other_attr\u0027: uuid.uuid4().hex}"},{"line_number":433,"context_line":"        self.update_region_validator.validate(request_to_validate)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    def test_validate_region_update_fails_with_no_parameters(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_698db030","line":432,"updated":"2014-06-13 20:19:33.000000000","message":"Our request that we are testing should include all mandatory fields plus the extra fields.","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":429,"context_line":"        \"\"\"Test that extra data is validated when passing extra attributes in"},{"line_number":430,"context_line":"           the region update request."},{"line_number":431,"context_line":"        \"\"\""},{"line_number":432,"context_line":"        request_to_validate \u003d {\u0027other_attr\u0027: uuid.uuid4().hex}"},{"line_number":433,"context_line":"        self.update_region_validator.validate(request_to_validate)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    def test_validate_region_update_fails_with_no_parameters(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_cac76497","line":432,"in_reply_to":"1ae5cdf2_698db030","updated":"2014-06-23 18:41:49.000000000","message":"For regions, we don\u0027t require any attributes, but we do accept optional ones: \n\nhttps://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3.md#regions-v3regions\n\nSo, for this case we should be able to execute this test case by testing that we successfully validate an attribute that isn\u0027t included in the schema.","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        self.create_service_validator \u003d validators.SchemaValidator(create)"},{"line_number":455,"context_line":"        self.update_service_validator \u003d validators.SchemaValidator(update)"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    def test_validate_service_create_request(self):"},{"line_number":458,"context_line":"        \"\"\"Test that we validate a service create request.\"\"\""},{"line_number":459,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027Nova\u0027,"},{"line_number":460,"context_line":"                               \u0027description\u0027: \u0027OpenStack Compute Service\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_49b8f4c7","line":457,"updated":"2014-06-13 20:19:33.000000000","message":"Rename function to: test_validate_service_create_succeeds","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        self.create_service_validator \u003d validators.SchemaValidator(create)"},{"line_number":455,"context_line":"        self.update_service_validator \u003d validators.SchemaValidator(update)"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    def test_validate_service_create_request(self):"},{"line_number":458,"context_line":"        \"\"\"Test that we validate a service create request.\"\"\""},{"line_number":459,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027Nova\u0027,"},{"line_number":460,"context_line":"                               \u0027description\u0027: \u0027OpenStack Compute Service\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_ea434011","line":457,"in_reply_to":"1ae5cdf2_49b8f4c7","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                               \u0027type\u0027: \u0027compute\u0027}"},{"line_number":463,"context_line":"        self.create_service_validator.validate(request_to_validate)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def test_validate_service_create_request_with_required_parameters(self):"},{"line_number":466,"context_line":"        \"\"\"Test that we validate a service create request with only the"},{"line_number":467,"context_line":"           required parameters."},{"line_number":468,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_c9f96481","line":465,"updated":"2014-06-13 20:19:33.000000000","message":"Rename function to: test_validate_service_create_succeeds_with_required_parameters","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                               \u0027type\u0027: \u0027compute\u0027}"},{"line_number":463,"context_line":"        self.create_service_validator.validate(request_to_validate)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def test_validate_service_create_request_with_required_parameters(self):"},{"line_number":466,"context_line":"        \"\"\"Test that we validate a service create request with only the"},{"line_number":467,"context_line":"           required parameters."},{"line_number":468,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_aa6058a5","line":465,"in_reply_to":"1ae5cdf2_c9f96481","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        request_to_validate \u003d {\u0027type\u0027: \u0027compute\u0027}"},{"line_number":471,"context_line":"        self.create_service_validator.validate(request_to_validate)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def test_validate_service_create_request_fails_without_type(self):"},{"line_number":474,"context_line":"        \"\"\"Test that an exception is raised when trying to create a service"},{"line_number":475,"context_line":"           without \u0027type\u0027."},{"line_number":476,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_29eba8a4","line":473,"updated":"2014-06-13 20:19:33.000000000","message":"Rename function to: test_validate_service_create_fails_without_type","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        request_to_validate \u003d {\u0027type\u0027: \u0027compute\u0027}"},{"line_number":471,"context_line":"        self.create_service_validator.validate(request_to_validate)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def test_validate_service_create_request_fails_without_type(self):"},{"line_number":474,"context_line":"        \"\"\"Test that an exception is raised when trying to create a service"},{"line_number":475,"context_line":"           without \u0027type\u0027."},{"line_number":476,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_ea5a60f1","line":473,"in_reply_to":"1ae5cdf2_29eba8a4","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":485,"context_line":"                               \u0027type\u0027: uuid.uuid4().hex}"},{"line_number":486,"context_line":"        self.create_service_validator.validate(request_to_validate)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    def test_validate_service_update_request(self):"},{"line_number":489,"context_line":"        \"\"\"Test that we validate a service update request.\"\"\""},{"line_number":490,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027Cinder\u0027,"},{"line_number":491,"context_line":"                               \u0027type\u0027: \u0027volume\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_c94084a7","line":488,"updated":"2014-06-13 20:19:33.000000000","message":"Rename function to: test_validate_service_update_request_succeeds","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":485,"context_line":"                               \u0027type\u0027: uuid.uuid4().hex}"},{"line_number":486,"context_line":"        self.create_service_validator.validate(request_to_validate)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    def test_validate_service_update_request(self):"},{"line_number":489,"context_line":"        \"\"\"Test that we validate a service update request.\"\"\""},{"line_number":490,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027Cinder\u0027,"},{"line_number":491,"context_line":"                               \u0027type\u0027: \u0027volume\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_4a69948b","line":488,"in_reply_to":"1ae5cdf2_c94084a7","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        \"\"\"Test that an validation passes when updating a service with"},{"line_number":507,"context_line":"           extra parameters."},{"line_number":508,"context_line":"        \"\"\""},{"line_number":509,"context_line":"        request_to_validate \u003d {\u0027other_attr\u0027: uuid.uuid4().hex}"},{"line_number":510,"context_line":"        self.update_service_validator.validate(request_to_validate)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_89b2fc03","line":509,"updated":"2014-06-13 20:19:33.000000000","message":"Our request that we are testing should include all mandatory fields plus the extra fields.","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        \"\"\"Test that an validation passes when updating a service with"},{"line_number":507,"context_line":"           extra parameters."},{"line_number":508,"context_line":"        \"\"\""},{"line_number":509,"context_line":"        request_to_validate \u003d {\u0027other_attr\u0027: uuid.uuid4().hex}"},{"line_number":510,"context_line":"        self.update_service_validator.validate(request_to_validate)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_8a29dc3c","line":509,"in_reply_to":"1ae5cdf2_89b2fc03","updated":"2014-06-23 18:41:49.000000000","message":"Update requests only require that we pass in at least one value to update. Unlike create requests that require certain values to be successful.","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        self.create_endpoint_validator \u003d validators.SchemaValidator(create)"},{"line_number":522,"context_line":"        self.update_endpoint_validator \u003d validators.SchemaValidator(update)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def test_validate_endpoint_request(self):"},{"line_number":525,"context_line":"        \"\"\"Test that we validate an endpoint request.\"\"\""},{"line_number":526,"context_line":"        request_to_validate \u003d {\u0027enabled\u0027: True,"},{"line_number":527,"context_line":"                               \u0027interface\u0027: \u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_c927a410","line":524,"updated":"2014-06-13 20:19:33.000000000","message":"Rename function to: test_validate_endpoint_request_succeeds","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        self.create_endpoint_validator \u003d validators.SchemaValidator(create)"},{"line_number":522,"context_line":"        self.update_endpoint_validator \u003d validators.SchemaValidator(update)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def test_validate_endpoint_request(self):"},{"line_number":525,"context_line":"        \"\"\"Test that we validate an endpoint request.\"\"\""},{"line_number":526,"context_line":"        request_to_validate \u003d {\u0027enabled\u0027: True,"},{"line_number":527,"context_line":"                               \u0027interface\u0027: \u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_aa2e9840","line":524,"in_reply_to":"1ae5cdf2_c927a410","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":530,"context_line":"                               \u0027url\u0027: \u0027https://service.example.com:5000/\u0027}"},{"line_number":531,"context_line":"        self.create_endpoint_validator.validate(request_to_validate)"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"    def test_validate_endpoint_with_required_parameters(self):"},{"line_number":534,"context_line":"        \"\"\"Test that we validate an endpoint request with only the required"},{"line_number":535,"context_line":"           parameters."},{"line_number":536,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_e9e38002","line":533,"updated":"2014-06-13 20:19:33.000000000","message":"rename: test_validate_endpoint_create_succeeds_with_required_parameters","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":530,"context_line":"                               \u0027url\u0027: \u0027https://service.example.com:5000/\u0027}"},{"line_number":531,"context_line":"        self.create_endpoint_validator.validate(request_to_validate)"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"    def test_validate_endpoint_with_required_parameters(self):"},{"line_number":534,"context_line":"        \"\"\"Test that we validate an endpoint request with only the required"},{"line_number":535,"context_line":"           parameters."},{"line_number":536,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_4a17d4ee","line":533,"in_reply_to":"1ae5cdf2_e9e38002","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        self.create_endpoint_validator.validate(request_to_validate)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def test_validate_endpoint_create_fails_without_service_id(self):"},{"line_number":553,"context_line":"        \"\"\"Test that an exception is raised when require endpoint parameters"},{"line_number":554,"context_line":"           are not included in the request."},{"line_number":555,"context_line":"        \"\"\""},{"line_number":556,"context_line":"        request_to_validate \u003d {\u0027interface\u0027: \u0027public\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_29448845","line":553,"updated":"2014-06-13 20:19:33.000000000","message":"Comment is generic. We\u0027re testing the missing service id here.","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        self.create_endpoint_validator.validate(request_to_validate)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def test_validate_endpoint_create_fails_without_service_id(self):"},{"line_number":553,"context_line":"        \"\"\"Test that an exception is raised when require endpoint parameters"},{"line_number":554,"context_line":"           are not included in the request."},{"line_number":555,"context_line":"        \"\"\""},{"line_number":556,"context_line":"        request_to_validate \u003d {\u0027interface\u0027: \u0027public\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_aabcd8dc","line":553,"in_reply_to":"1ae5cdf2_29448845","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":560,"context_line":"                          request_to_validate)"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"    def test_validate_endpoint_create_fails_without_interface(self):"},{"line_number":563,"context_line":"        \"\"\"Test that an exception is raised when require endpoint parameters"},{"line_number":564,"context_line":"           are not included in the request."},{"line_number":565,"context_line":"        \"\"\""},{"line_number":566,"context_line":"        request_to_validate \u003d {\u0027service_id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_c942443d","line":563,"updated":"2014-06-13 20:19:33.000000000","message":"Comment is generic. We\u0027re testing the missing interface here.","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":560,"context_line":"                          request_to_validate)"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"    def test_validate_endpoint_create_fails_without_interface(self):"},{"line_number":563,"context_line":"        \"\"\"Test that an exception is raised when require endpoint parameters"},{"line_number":564,"context_line":"           are not included in the request."},{"line_number":565,"context_line":"        \"\"\""},{"line_number":566,"context_line":"        request_to_validate \u003d {\u0027service_id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_cab12403","line":563,"in_reply_to":"1ae5cdf2_c942443d","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                          request_to_validate)"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"    def test_validate_endpoint_create_fails_without_url(self):"},{"line_number":573,"context_line":"        \"\"\"Test that an exception is raised when require endpoint parameters"},{"line_number":574,"context_line":"           are not included in the request."},{"line_number":575,"context_line":"        \"\"\""},{"line_number":576,"context_line":"        request_to_validate \u003d {\u0027service_id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_69521014","line":573,"updated":"2014-06-13 20:19:33.000000000","message":"Comment is generic. We\u0027re testing the missing URL here.","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                          request_to_validate)"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"    def test_validate_endpoint_create_fails_without_url(self):"},{"line_number":573,"context_line":"        \"\"\"Test that an exception is raised when require endpoint parameters"},{"line_number":574,"context_line":"           are not included in the request."},{"line_number":575,"context_line":"        \"\"\""},{"line_number":576,"context_line":"        request_to_validate \u003d {\u0027service_id\u0027: uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_0acb0c74","line":573,"in_reply_to":"1ae5cdf2_69521014","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":601,"context_line":"                          self.update_endpoint_validator.validate,"},{"line_number":602,"context_line":"                          request_to_validate)"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"    def test_validate_endpoint_update_request(self):"},{"line_number":605,"context_line":"        \"\"\"Test that we validate an endpoint update request.\"\"\""},{"line_number":606,"context_line":"        request_to_validate \u003d {\u0027enabled\u0027: True,"},{"line_number":607,"context_line":"                               \u0027interface\u0027: \u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_e922a0ff","line":604,"updated":"2014-06-13 20:19:33.000000000","message":"Rename function to: test_validate_endpoint_update_request_succeeds","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":601,"context_line":"                          self.update_endpoint_validator.validate,"},{"line_number":602,"context_line":"                          request_to_validate)"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"    def test_validate_endpoint_update_request(self):"},{"line_number":605,"context_line":"        \"\"\"Test that we validate an endpoint update request.\"\"\""},{"line_number":606,"context_line":"        request_to_validate \u003d {\u0027enabled\u0027: True,"},{"line_number":607,"context_line":"                               \u0027interface\u0027: \u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_aaa3f8af","line":604,"in_reply_to":"1ae5cdf2_e922a0ff","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7ddab229ba3d1cf89dd99cd270750744d5049127","unresolved":false,"context_lines":[{"line_number":621,"context_line":""},{"line_number":622,"context_line":"    def test_validate_endpoint_update_succeeds_with_extra_parameters(self):"},{"line_number":623,"context_line":"        \"\"\"Test that extra parameters pass validation on update endpoint.\"\"\""},{"line_number":624,"context_line":"        request_to_validate \u003d {\u0027other_attr\u0027: uuid.uuid4().hex}"},{"line_number":625,"context_line":"        self.update_endpoint_validator.validate(request_to_validate)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_897afc74","line":624,"updated":"2014-06-13 20:19:33.000000000","message":"Modify the test update request to include all mandatory fields plus extra:\n\nrequest_to_validate \u003d {\n                        \u0027enabled\u0027: True,\n                        \u0027interface\u0027: \u0027admin\u0027,\n                        \u0027region_id\u0027: uuid.uuid4().hex,\n                        \u0027service_id\u0027: uuid.uuid4().hex\n\t\t        \u0027url\u0027: \u0027https://service.example.com:5000/\u0027,\n                        \u0027other_attr\u0027: uuid.uuid4().hex}","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"715c76f8fc53e7a20b267c92ad26e0ce9ff61f09","unresolved":false,"context_lines":[{"line_number":621,"context_line":""},{"line_number":622,"context_line":"    def test_validate_endpoint_update_succeeds_with_extra_parameters(self):"},{"line_number":623,"context_line":"        \"\"\"Test that extra parameters pass validation on update endpoint.\"\"\""},{"line_number":624,"context_line":"        request_to_validate \u003d {\u0027other_attr\u0027: uuid.uuid4().hex}"},{"line_number":625,"context_line":"        self.update_endpoint_validator.validate(request_to_validate)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_aa14d89f","line":624,"in_reply_to":"1ae5cdf2_897afc74","updated":"2014-06-23 18:41:49.000000000","message":"Done","commit_id":"646aef7e06fd90e10494a6e601fbcf72d6dde264"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"_VALID_ENABLED_FORMATS \u003d [True, False]"},{"line_number":38,"context_line":"_INVALID_ENABLED_FORMATS \u003d [\"some string\"]"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class ValidationTestCase(tests.TestCase):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_afcbfb70","line":38,"updated":"2014-08-18 20:56:40.000000000","message":"use \u0027 for strings consistently.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"_VALID_ENABLED_FORMATS \u003d [True, False]"},{"line_number":38,"context_line":"_INVALID_ENABLED_FORMATS \u003d [\"some string\"]"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class ValidationTestCase(tests.TestCase):"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_7e61f803","line":38,"in_reply_to":"1abeadc6_afcbfb70","updated":"2014-08-22 09:10:57.000000000","message":"Done","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39e03467ac2e81cbcb113f0f331288379e96195e","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        create \u003d catalog_schema.region_create"},{"line_number":176,"context_line":"        update \u003d catalog_schema.region_update"},{"line_number":177,"context_line":"        self.create_region_validator \u003d validators.SchemaValidator(create)"},{"line_number":178,"context_line":"        self.update_region_validator \u003d validators.SchemaValidator(update)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_validate_region_request(self):"},{"line_number":181,"context_line":"        \"\"\"Test that we validate a basic region request.\"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_2fa7ebbe","line":178,"updated":"2014-08-18 20:56:40.000000000","message":"do any of these have to be member variables? seems like they could all be class variables.","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"dc399368977161f5f493b428340a8711f5db1e4a","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        create \u003d catalog_schema.region_create"},{"line_number":176,"context_line":"        update \u003d catalog_schema.region_update"},{"line_number":177,"context_line":"        self.create_region_validator \u003d validators.SchemaValidator(create)"},{"line_number":178,"context_line":"        self.update_region_validator \u003d validators.SchemaValidator(update)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_validate_region_request(self):"},{"line_number":181,"context_line":"        \"\"\"Test that we validate a basic region request.\"\"\""}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_f929a28a","line":178,"in_reply_to":"1abeadc6_2fa7ebbe","updated":"2014-08-22 09:10:57.000000000","message":"What do you think about to put it on this way?:\n\nself.create_region_validator \u003d validators.SchemaValidator(catalog_schema.region_create)\nself.update_region_validator \u003d validators.SchemaValidator(catalog_schema.region_update)","commit_id":"d2ba360ca410ca407739545fc4c68a11f50cd183"}]}
