)]}'
{"keystone/common/validation/parameter_types.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d4c8ca976a0da00a24b9d8cd47bfa0957ec2de76","unresolved":false,"context_lines":[{"line_number":40,"context_line":"}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"password \u003d {"},{"line_number":43,"context_line":"    \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"tenant_id \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_fc9a0fc4","line":43,"updated":"2014-09-08 20:21:38.000000000","message":"This should not be null here.  If you need it to be nullable from here: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/common/validation/__init__.py#n41","commit_id":"ffde2080cac536ad4a82f22ca7ad8e3b0c8c05ba"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d4c8ca976a0da00a24b9d8cd47bfa0957ec2de76","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"tenant_id \u003d {"},{"line_number":47,"context_line":"    \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_1c87d362","line":46,"updated":"2014-09-08 20:21:38.000000000","message":"tenant_id and domain_id should probably be the id_string type from here: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/common/validation/parameter_types.py#n31","commit_id":"ffde2080cac536ad4a82f22ca7ad8e3b0c8c05ba"}],"keystone/identity/controllers.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d4c8ca976a0da00a24b9d8cd47bfa0957ec2de76","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@dependency.requires(\u0027assignment_api\u0027, \u0027identity_api\u0027)"},{"line_number":32,"context_line":"class User(controller.V2Controller):"},{"line_number":33,"context_line":"    _CREATE \u003d {"},{"line_number":34,"context_line":"        \u0027type\u0027: \u0027object\u0027,"},{"line_number":35,"context_line":"        \u0027properties\u0027: {"},{"line_number":36,"context_line":"            \u0027name\u0027: parameter_types.name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_5c46bb24","line":33,"updated":"2014-09-08 20:21:38.000000000","message":"The v2 API is deprecated so I\u0027m not sure that we want to add this validation.","commit_id":"ffde2080cac536ad4a82f22ca7ad8e3b0c8c05ba"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d4c8ca976a0da00a24b9d8cd47bfa0957ec2de76","unresolved":false,"context_lines":[{"line_number":199,"context_line":"class UserV3(controller.V3Controller):"},{"line_number":200,"context_line":"    collection_name \u003d \u0027users\u0027"},{"line_number":201,"context_line":"    member_name \u003d \u0027user\u0027"},{"line_number":202,"context_line":"    _CREATE \u003d {"},{"line_number":203,"context_line":"        \u0027type\u0027: \u0027object\u0027,"},{"line_number":204,"context_line":"        \u0027properties\u0027: {"},{"line_number":205,"context_line":"            \u0027name\u0027: parameter_types.name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_7cdc5f75","line":202,"updated":"2014-09-08 20:21:38.000000000","message":"This doesn\u0027t follow the schema module pattern that is used in the rest of the code. For example, the assignment schemas are all in keystone.assignment.schema so I would expect the identity schemas to be found at keystone.identity.schema. See http://git.openstack.org/cgit/openstack/keystone/tree/keystone/assignment/schema.py for details.","commit_id":"ffde2080cac536ad4a82f22ca7ad8e3b0c8c05ba"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d4c8ca976a0da00a24b9d8cd47bfa0957ec2de76","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            \u0027email\u0027: parameter_types.email,"},{"line_number":208,"context_line":"            \u0027password\u0027: parameter_types.password,"},{"line_number":209,"context_line":"            \u0027description\u0027: parameter_types.description,"},{"line_number":210,"context_line":"            \u0027default_project_id\u0027: parameter_types.tenant_id,"},{"line_number":211,"context_line":"            \u0027domain_id\u0027: parameter_types.domain_id"},{"line_number":212,"context_line":"        },"},{"line_number":213,"context_line":"        \u0027required\u0027: [\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_fca04fa7","line":210,"updated":"2014-09-08 20:21:38.000000000","message":"These two should just use id_string.","commit_id":"ffde2080cac536ad4a82f22ca7ad8e3b0c8c05ba"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d4c8ca976a0da00a24b9d8cd47bfa0957ec2de76","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        # The manager layer will generate the unique ID for users"},{"line_number":232,"context_line":"        ref \u003d self._normalize_dict(user)"},{"line_number":233,"context_line":"        ref \u003d self._normalize_domain_id(context, ref)"},{"line_number":234,"context_line":"        UserV3.schema_validator.validate(ref)"},{"line_number":235,"context_line":"        ref \u003d self.identity_api.create_user(ref)"},{"line_number":236,"context_line":"        return UserV3.wrap_member(context, ref)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_dc51cbd9","line":234,"updated":"2014-09-08 20:21:38.000000000","message":"Why not use the validated decorator like: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/assignment/controllers.py#n397","commit_id":"ffde2080cac536ad4a82f22ca7ad8e3b0c8c05ba"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d4c8ca976a0da00a24b9d8cd47bfa0957ec2de76","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        return UserV3.wrap_member(context, ref)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    @controller.protected()"},{"line_number":265,"context_line":"    def update_user(self, context, user_id, user):"},{"line_number":266,"context_line":"        return self._update_user(context, user_id, user)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    @controller.protected(callback\u003d_check_user_and_group_protection)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_5c2b1b30","line":265,"updated":"2014-09-08 20:21:38.000000000","message":"Why are we not validating this too?","commit_id":"ffde2080cac536ad4a82f22ca7ad8e3b0c8c05ba"}]}
