)]}'
{"keystone/common/validation/parameter_types.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"52e9dab9b2cb28df25c6b946b8440ad21a49783d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":41,"context_line":"    # TODO(lbragstad): Find a way to make this configurable such that the end"},{"line_number":42,"context_line":"    # user chooses how much control they want over id_strings with a regex"},{"line_number":43,"context_line":"    \u0027pattern\u0027: \u0027^[a-zA-Z0-9-_]+$\u0027"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"description \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_95b5b532","line":43,"updated":"2016-01-07 19:22:23.000000000","message":"The TODO says to make this configurable -- is now a good time to do that?","commit_id":"654c3e3d83e6f941115b984f0f2e53a57ffeb8ee"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"a056456a7f3d478d8da9bf32b16bac849ebc2c33","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":41,"context_line":"    # TODO(lbragstad): Find a way to make this configurable such that the end"},{"line_number":42,"context_line":"    # user chooses how much control they want over id_strings with a regex"},{"line_number":43,"context_line":"    \u0027pattern\u0027: \u0027^[a-zA-Z0-9-_]+$\u0027"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"description \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_b576b9d6","line":43,"in_reply_to":"fa69d971_95b5b532","updated":"2016-01-07 19:37:43.000000000","message":"hm, question is if it\u0027s needed yet. I think all of the existing validation will benefit from this simple addition and when we have some more special case we can think of a configurable option.","commit_id":"654c3e3d83e6f941115b984f0f2e53a57ffeb8ee"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2900b268dd71b32007a946fb56cef0c617aaffab","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":41,"context_line":"    # TODO(lbragstad): Find a way to make this configurable such that the end"},{"line_number":42,"context_line":"    # user chooses how much control they want over id_strings with a regex"},{"line_number":43,"context_line":"    \u0027pattern\u0027: \u0027^[a-zA-Z0-9-_]+$\u0027"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"description \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_ab893528","line":43,"updated":"2016-01-21 20:48:58.000000000","message":"I don\u0027t think this should be done here. You are changing what an ID is for everything and this is used against UUIDs currently. Why not have a specific type for the thing you actually want to have an _?\n\nBased on the bug you really want a few type \u0027multi_id_string\u0027 that can validate as multiple `id_string\u0027 parts joined by a _.","commit_id":"2ca363ef7b5ba556eafd06d57dc82f37852b3cd7"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"c72c3748f52830fef1d5620994ba0db310b8006e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":41,"context_line":"    # TODO(lbragstad): Find a way to make this configurable such that the end"},{"line_number":42,"context_line":"    # user chooses how much control they want over id_strings with a regex"},{"line_number":43,"context_line":"    \u0027pattern\u0027: \u0027^[a-zA-Z0-9-_]+$\u0027"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"description \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_f8c34b55","line":43,"in_reply_to":"9a68dd71_ab893528","updated":"2016-01-29 17:25:43.000000000","message":"Done. Created a separate mapping_id_string dict for validating only mapping_ids.","commit_id":"2ca363ef7b5ba556eafd06d57dc82f37852b3cd7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0adc6f939b33b64c0cfc70348439b93b5948266f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":48,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":49,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":50,"context_line":"    \u0027pattern\u0027: \u0027^[a-zA-Z0-9-_]+$\u0027"},{"line_number":51,"context_line":"}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"description \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_d0ce5b2d","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":33},"updated":"2016-01-29 22:28:02.000000000","message":"are there any other characters we should include here? why do we limit this at all, \n\nmaybe we should change the common one on line 43 to allow underscore too?\n\nmore info here: https://perishablepress.com/stop-using-unsafe-characters-in-urls/","commit_id":"b81a8266d1e6248ca759d51ef1a003423887ee8a"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"220b9f5007d03c03af7608776fdd9aa26f7ea42a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":48,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":49,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":50,"context_line":"    \u0027pattern\u0027: \u0027^[a-zA-Z0-9-_]+$\u0027"},{"line_number":51,"context_line":"}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"description \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_f3a4894b","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":33},"in_reply_to":"7a5de9d1_d0ce5b2d","updated":"2016-02-01 15:40:50.000000000","message":"I\u0027d rather not loosen existing types unless we really need to. I think it is like this so that we can easily validate our generated IDs. This one is a little different in that it\u0027s provided by a user. Also it\u0027s nice to explicitly give types a name.","commit_id":"b81a8266d1e6248ca759d51ef1a003423887ee8a"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"a42c7473627d4687059f3065cb0a6d03a9c4cd6b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":48,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":49,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":50,"context_line":"    \u0027pattern\u0027: \u0027^[a-zA-Z0-9-_]+$\u0027"},{"line_number":51,"context_line":"}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"description \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_ebc24584","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":33},"in_reply_to":"7a5de9d1_f3a4894b","updated":"2016-02-01 18:28:37.000000000","message":"the first patches I had \u0027_\u0027 added to the common pattern, but as David said, it seems like we don\u0027t want to make the domain_id validation any more flexible than necessary. I could loosen up this mapping_id regex even more, or we could do that when there is a needed use case since we won\u0027t impact the other validations.","commit_id":"b81a8266d1e6248ca759d51ef1a003423887ee8a"}],"keystone/tests/unit/test_validation.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b10afe0c39c9798658a201a8b8a535d2c15c569e","unresolved":false,"context_lines":[{"line_number":506,"context_line":"                                   \u0027domain_id\u0027: domain_id}"},{"line_number":507,"context_line":"            self.create_project_validator.validate(request_to_validate)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def test_validate_project_request_with_invalid_domain_id_fails(self):"},{"line_number":510,"context_line":"        \"\"\"Exception is raised when `domain_id` as a non-id value.\"\"\""},{"line_number":511,"context_line":"        for domain_id in [False, \u0027fake_project\u0027]:"},{"line_number":512,"context_line":"            request_to_validate \u003d {\u0027name\u0027: self.project_name,"},{"line_number":513,"context_line":"                                   \u0027domain_id\u0027: domain_id}"},{"line_number":514,"context_line":"            self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_ed12ea08","side":"PARENT","line":511,"range":{"start_line":509,"start_character":7,"end_line":511,"end_character":49},"updated":"2016-01-21 18:16:20.000000000","message":"We could keep this test behavior but just remove the assertRaises part.","commit_id":"7f485562f9fd9c44dabf779f4c32951dbac55885"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b10afe0c39c9798658a201a8b8a535d2c15c569e","unresolved":false,"context_lines":[{"line_number":506,"context_line":"                                   \u0027domain_id\u0027: domain_id}"},{"line_number":507,"context_line":"            self.create_project_validator.validate(request_to_validate)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def test_validate_project_request_with_invalid_domain_id_fails(self):"},{"line_number":510,"context_line":"        \"\"\"Validate invalid domain id."},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        Exception is raised when `domain_id` is not a string or"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_cd260668","line":509,"range":{"start_line":509,"start_character":8,"end_line":509,"end_character":67},"updated":"2016-01-21 18:16:20.000000000","message":"We should also make a test that is specific to mapping_id, per the last couple comments in the bug report. Domain ids are always generated by keystone.","commit_id":"2ca363ef7b5ba556eafd06d57dc82f37852b3cd7"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"14ca76a915e2ba3a8678b404f6189f0d039a0bb8","unresolved":false,"context_lines":[{"line_number":506,"context_line":"                                   \u0027domain_id\u0027: domain_id}"},{"line_number":507,"context_line":"            self.create_project_validator.validate(request_to_validate)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def test_validate_project_request_with_invalid_domain_id_fails(self):"},{"line_number":510,"context_line":"        \"\"\"Validate invalid domain id."},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        Exception is raised when `domain_id` is not a string or"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_ebc96d79","line":509,"range":{"start_line":509,"start_character":8,"end_line":509,"end_character":67},"in_reply_to":"9a68dd71_cd260668","updated":"2016-01-21 20:57:01.000000000","message":"Agreed.  Copy pasta from Line 2000 for an example!","commit_id":"2ca363ef7b5ba556eafd06d57dc82f37852b3cd7"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"c72c3748f52830fef1d5620994ba0db310b8006e","unresolved":false,"context_lines":[{"line_number":506,"context_line":"                                   \u0027domain_id\u0027: domain_id}"},{"line_number":507,"context_line":"            self.create_project_validator.validate(request_to_validate)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def test_validate_project_request_with_invalid_domain_id_fails(self):"},{"line_number":510,"context_line":"        \"\"\"Validate invalid domain id."},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        Exception is raised when `domain_id` is not a string or"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_1898a777","line":509,"range":{"start_line":509,"start_character":8,"end_line":509,"end_character":67},"in_reply_to":"9a68dd71_ebc96d79","updated":"2016-01-29 17:25:43.000000000","message":"Done","commit_id":"2ca363ef7b5ba556eafd06d57dc82f37852b3cd7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ea78f193375340e956006b488f3051b32aa40f11","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        Exception is raised when `domain_id` is not a string or"},{"line_number":513,"context_line":"        contains illegal characters."},{"line_number":514,"context_line":"        \"\"\""},{"line_number":515,"context_line":"        for domain_id in [False, \u0027fake@domain.openstack\u0027]:"},{"line_number":516,"context_line":"            request_to_validate \u003d {\u0027name\u0027: self.project_name,"},{"line_number":517,"context_line":"                                   \u0027domain_id\u0027: domain_id}"},{"line_number":518,"context_line":"            self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_4d5696d3","line":515,"range":{"start_line":515,"start_character":38,"end_line":515,"end_character":55},"updated":"2016-01-21 18:13:58.000000000","message":"so the illegal characters here are the \u0027@\u0027 and the \u0027.\u0027 right?","commit_id":"2ca363ef7b5ba556eafd06d57dc82f37852b3cd7"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"c72c3748f52830fef1d5620994ba0db310b8006e","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        Exception is raised when `domain_id` is not a string or"},{"line_number":513,"context_line":"        contains illegal characters."},{"line_number":514,"context_line":"        \"\"\""},{"line_number":515,"context_line":"        for domain_id in [False, \u0027fake@domain.openstack\u0027]:"},{"line_number":516,"context_line":"            request_to_validate \u003d {\u0027name\u0027: self.project_name,"},{"line_number":517,"context_line":"                                   \u0027domain_id\u0027: domain_id}"},{"line_number":518,"context_line":"            self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_b88f1329","line":515,"range":{"start_line":515,"start_character":38,"end_line":515,"end_character":55},"in_reply_to":"9a68dd71_4d5696d3","updated":"2016-01-29 17:25:43.000000000","message":"Kept this test as it is after all..","commit_id":"2ca363ef7b5ba556eafd06d57dc82f37852b3cd7"}]}
