)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2f9ec108f018b5be8a9ce44ce095975d80788f13","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodrigo Duarte Sousa \u003crodrigods@lsd.ufcg.edu.br\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-02-19 11:12:42 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not allow create a project with slash in name"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To get a scoped token using the project name, you will need"},{"line_number":10,"context_line":"to inform the full hierarchy name. We will use the \u0027/\u0027 character"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_18a3be00","line":7,"updated":"2015-02-19 14:48:26.000000000","message":"Do not allow [...] ?","commit_id":"bc1634580b76e84591a1642ab9ba8e056daa6cb9"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"989f3847bcf5851b1e7cad3e086206f8b2d1ef94","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodrigo Duarte Sousa \u003crodrigods@lsd.ufcg.edu.br\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-02-19 11:12:42 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not allow create a project with slash in name"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To get a scoped token using the project name, you will need"},{"line_number":10,"context_line":"to inform the full hierarchy name. We will use the \u0027/\u0027 character"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_71ca156f","line":7,"in_reply_to":"da86d52c_18a3be00","updated":"2015-02-19 15:47:10.000000000","message":"Done","commit_id":"bc1634580b76e84591a1642ab9ba8e056daa6cb9"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2f9ec108f018b5be8a9ce44ce095975d80788f13","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Co-Authored-By: Rodrigo Duarte Sousa \u003crodrigods@lsd.ufcg.edu.br\u003e"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"bp reseller"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ic86f8f9da69b8d97e78271a4d7373c83ea28689e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_78abdad5","line":16,"updated":"2015-02-19 14:48:26.000000000","message":"Partially-Implements is a good choice here, right?","commit_id":"bc1634580b76e84591a1642ab9ba8e056daa6cb9"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"989f3847bcf5851b1e7cad3e086206f8b2d1ef94","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Co-Authored-By: Rodrigo Duarte Sousa \u003crodrigods@lsd.ufcg.edu.br\u003e"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"bp reseller"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ic86f8f9da69b8d97e78271a4d7373c83ea28689e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_b1c00d4b","line":16,"in_reply_to":"da86d52c_78abdad5","updated":"2015-02-19 15:47:10.000000000","message":"Done","commit_id":"bc1634580b76e84591a1642ab9ba8e056daa6cb9"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"8e498baa335483d5709a60d4afca1df512a6c180","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To get a scoped token using the project name, you will need"},{"line_number":10,"context_line":"to inform the full hierarchy name. We will use the \u0027/\u0027 character"},{"line_number":11,"context_line":"as a delimiter beetwen the projects, so for this point, we can"},{"line_number":12,"context_line":"not create a project with a slash in the name."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Co-Authored-By: Rodrigo Duarte Sousa \u003crodrigods@lsd.ufcg.edu.br\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da86d52c_a6ce032b","line":11,"updated":"2015-02-19 20:25:10.000000000","message":"NIT: between","commit_id":"98badca56c163f81362756870ea83bd023ab3e17"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"64f13ac5a966b0f655506b4b5e7a7b245f780d11","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To get a scoped token using the project name, you will need"},{"line_number":10,"context_line":"to inform the full hierarchy name. We will use the \u0027/\u0027 character"},{"line_number":11,"context_line":"as a delimiter beetwen the projects, so for this point, we can"},{"line_number":12,"context_line":"not create a project with a slash in the name."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Co-Authored-By: Rodrigo Duarte Sousa \u003crodrigods@lsd.ufcg.edu.br\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba7be1f8_91af5e2b","line":11,"in_reply_to":"da86d52c_a6ce032b","updated":"2015-02-19 23:48:49.000000000","message":"Done","commit_id":"98badca56c163f81362756870ea83bd023ab3e17"}],"keystone/clean.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"783f6b0e18f804cd4eb685cc3192da1faa606a5e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    # since this special character is used to represent the project path"},{"line_number":74,"context_line":"    # in the hierarchy when requesting a token using the project name."},{"line_number":75,"context_line":"    if \u0027/\u0027 in name:"},{"line_number":76,"context_line":"        msg \u003d _(\"project name cannot contain the reserved character \u0027/\u0027 \""},{"line_number":77,"context_line":"                \"(forward slash)\")"},{"line_number":78,"context_line":"        raise exception.ValidationError(msg)"},{"line_number":79,"context_line":"    return name"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_7983a8cc","line":76,"updated":"2015-02-20 07:59:43.000000000","message":"(nit): one can capitalize \u0027p\u0027.","commit_id":"cdbf169a621880c958fc166e5699324fc8d442ca"}],"keystone/resource/core.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"94d87f24d8a815b1912d155aa7ef193656006a0c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        project_name \u003d project.get(\u0027name\u0027)"},{"line_number":87,"context_line":"        if (project_name and type(project_name) is str and"},{"line_number":88,"context_line":"                \u0027/\u0027 in project_name):"},{"line_number":89,"context_line":"            raise exception.ForbiddenAction("},{"line_number":90,"context_line":"                action\u003d_(\u0027A project cannot have the \u0027"},{"line_number":91,"context_line":"                         \u0027reserverd character \"/\" \u0027"},{"line_number":92,"context_line":"                         \u0027(forward slash) in its \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_ac7990c6","line":89,"updated":"2015-02-19 16:17:53.000000000","message":"Hm, I am wondering if this is a proper exception to be raised. It is forbidden while it should be some ValidationError exception. I would be even good with creating new Exception class inheriting from ValidationError, like ProjectNameValidationError or sth like that?","commit_id":"4589a1450b35e709c6747d745f96196f4c7a8d98"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"2a0bdfa15c87bebe259c5482bd322ad6edad9612","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                # NOTE(rodrigods): We need to assert that a project is not"},{"line_number":108,"context_line":"                # being inserted in a hierarchy that already contains another"},{"line_number":109,"context_line":"                # project with a forward slash in the name."},{"line_number":110,"context_line":"                clean.project_name(ref.get(\u0027name\u0027))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            self._assert_max_hierarchy_depth(tenant.get(\u0027parent_id\u0027),"},{"line_number":113,"context_line":"                                             parents_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_cca87b8e","line":110,"updated":"2015-02-19 18:58:16.000000000","message":"Don\u0027t think we need to validate her, we\u0027ll be performing the check for \"/\" three times.\n\n* in the controller using the schema: https://github.com/openstack/keystone/blob/master/keystone/resource/controllers.py#L153\n* in the manager (here)\n* in the backend: https://github.com/openstack/keystone/blob/master/keystone/resource/backends/sql.py#L142","commit_id":"ea2a0189a7d2869b7a9cf366ea7a27c10259ad2c"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"d7c51560349ec252cd1a8510e81586450d5d8467","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                # NOTE(rodrigods): We need to assert that a project is not"},{"line_number":108,"context_line":"                # being inserted in a hierarchy that already contains another"},{"line_number":109,"context_line":"                # project with a forward slash in the name."},{"line_number":110,"context_line":"                clean.project_name(ref.get(\u0027name\u0027))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            self._assert_max_hierarchy_depth(tenant.get(\u0027parent_id\u0027),"},{"line_number":113,"context_line":"                                             parents_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_261db3be","line":110,"in_reply_to":"da86d52c_6c8b0fc0","updated":"2015-02-19 20:20:20.000000000","message":"ah good call, thanks for the explanation","commit_id":"ea2a0189a7d2869b7a9cf366ea7a27c10259ad2c"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"21fa35042aa2ed281ef89dde8501727d84b4f6d4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                # NOTE(rodrigods): We need to assert that a project is not"},{"line_number":108,"context_line":"                # being inserted in a hierarchy that already contains another"},{"line_number":109,"context_line":"                # project with a forward slash in the name."},{"line_number":110,"context_line":"                clean.project_name(ref.get(\u0027name\u0027))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            self._assert_max_hierarchy_depth(tenant.get(\u0027parent_id\u0027),"},{"line_number":113,"context_line":"                                             parents_list)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_6c8b0fc0","line":110,"in_reply_to":"da86d52c_cca87b8e","updated":"2015-02-19 19:06:08.000000000","message":"This is for the cases where we already have such type of names in the db (previously this patch). So we avoid having situations where project with name \"a/b/c/\" is part from a hierarchy:\n\n    a/b/c\n   /     \\\n  x       y\n\nWe would never be able to retrieve scoped tokens for projects X and Y using their names.","commit_id":"ea2a0189a7d2869b7a9cf366ea7a27c10259ad2c"}],"keystone/tests/unit/test_v3_assignment.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"2f9ec108f018b5be8a9ce44ce095975d80788f13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da86d52c_38832204","updated":"2015-02-19 14:48:26.000000000","message":"You added a regex constaint to the schema and you are checking this here, but you also added a check in create_project() method. This should be also checked - something like self.resource_api.create_project() and expect exception.ForbiddenAction to be raised.","commit_id":"bc1634580b76e84591a1642ab9ba8e056daa6cb9"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"989f3847bcf5851b1e7cad3e086206f8b2d1ef94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da86d52c_d1a2e1ac","in_reply_to":"da86d52c_38832204","updated":"2015-02-19 15:47:10.000000000","message":"Done","commit_id":"bc1634580b76e84591a1642ab9ba8e056daa6cb9"}]}
