)]}'
{"cinder/api/contrib/quotas.py":[{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"9480e891b5701345cdecd39b71ca24d38cb4efad","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                                  delete operation."},{"line_number":115,"context_line":"        :param parent_id: The parent id of the project in which the user"},{"line_number":116,"context_line":"                          want to perform an update or delete operation."},{"line_number":117,"context_line":"        \"\"\""},{"line_number":118,"context_line":"        if context_project.parent_id and parent_id !\u003d context_project.id:"},{"line_number":119,"context_line":"            msg \u003d _(\"Update and delete quota operations can only be made \""},{"line_number":120,"context_line":"                    \"by an admin of immediate parent or by the CLOUD admin.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_3be6f2b4","line":117,"updated":"2015-12-05 03:55:48.000000000","message":"Aren\u0027t these going to raise missing attribute exceptions on None in the v3 policy case? Since you are setting it to None on line 193.","commit_id":"3b920336026c3e74be964e6f6a7944ccb12e0cc5"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"b4c2d2e612b4903b8f9c9b70be899af8db751ceb","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                                  delete operation."},{"line_number":115,"context_line":"        :param parent_id: The parent id of the project in which the user"},{"line_number":116,"context_line":"                          want to perform an update or delete operation."},{"line_number":117,"context_line":"        \"\"\""},{"line_number":118,"context_line":"        if context_project.parent_id and parent_id !\u003d context_project.id:"},{"line_number":119,"context_line":"            msg \u003d _(\"Update and delete quota operations can only be made \""},{"line_number":120,"context_line":"                    \"by an admin of immediate parent or by the CLOUD admin.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_71425940","line":117,"in_reply_to":"7a740942_3be6f2b4","updated":"2015-12-05 06:07:55.000000000","message":"yep, I was a bit hasty putting this up.  next patch will address all the places this is called.","commit_id":"3b920336026c3e74be964e6f6a7944ccb12e0cc5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b7593fc992888cef4b6ebe7c6814d0bcb0af7a7a","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":196,"context_line":"        except exceptions.Forbidden:"},{"line_number":197,"context_line":"            # The current keystone v3 policy file will not allow retrieving the"},{"line_number":198,"context_line":"            # project without a domain scoped token."},{"line_number":199,"context_line":"            project \u003d None"},{"line_number":200,"context_line":"        return project"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_500dda3c","line":198,"range":{"start_line":198,"start_character":51,"end_line":198,"end_character":52},"updated":"2015-12-17 18:33:46.000000000","message":"perhaps put in an error or warning log here to improve supportability?","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"5717cfac0ce4769cf193e6f6c169bc12f5cd6c91","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":196,"context_line":"        except exceptions.Forbidden:"},{"line_number":197,"context_line":"            # The current keystone v3 policy file will not allow retrieving the"},{"line_number":198,"context_line":"            # project without a domain scoped token."},{"line_number":199,"context_line":"            project \u003d None"},{"line_number":200,"context_line":"        return project"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_301ee05f","line":198,"range":{"start_line":198,"start_character":51,"end_line":198,"end_character":52},"in_reply_to":"3a7e1126_22047dbe","updated":"2015-12-18 13:38:57.000000000","message":"++","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"a5e8fe0530f894f85bd2691b1ea0729a4d98eac5","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":196,"context_line":"        except exceptions.Forbidden:"},{"line_number":197,"context_line":"            # The current keystone v3 policy file will not allow retrieving the"},{"line_number":198,"context_line":"            # project without a domain scoped token."},{"line_number":199,"context_line":"            project \u003d None"},{"line_number":200,"context_line":"        return project"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_71e6a0b1","line":198,"range":{"start_line":198,"start_character":51,"end_line":198,"end_character":52},"in_reply_to":"3a7e1126_301ee05f","updated":"2015-12-18 17:15:24.000000000","message":"Get project is allowed for cloud admin, domain admin using domain scope and project admin using project scope.\n\nNeed to tweak the comment for clarity\n\nhttps://github.com/openstack/keystone/blob/master/etc/policy.v3cloudsample.json\n\n\"identity:get_project\": \"rule:cloud_admin or rule:admin_and_matching_target_project_domain_id or rule:admin_and_matching_target_project_id\",","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"5d8737de1a2d35f22e882b6b334866d2ecca22a0","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":196,"context_line":"        except exceptions.Forbidden:"},{"line_number":197,"context_line":"            # The current keystone v3 policy file will not allow retrieving the"},{"line_number":198,"context_line":"            # project without a domain scoped token."},{"line_number":199,"context_line":"            project \u003d None"},{"line_number":200,"context_line":"        return project"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_22047dbe","line":198,"range":{"start_line":198,"start_character":51,"end_line":198,"end_character":52},"in_reply_to":"3a7e1126_500dda3c","updated":"2015-12-17 21:31:03.000000000","message":"Good call.  Will do.","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"63723a634d6dbe8ab5cb42c114b6867df9155d37","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":196,"context_line":"        except exceptions.Forbidden:"},{"line_number":197,"context_line":"            # The current keystone v3 policy file will not allow retrieving the"},{"line_number":198,"context_line":"            # project without a domain scoped token."},{"line_number":199,"context_line":"            project \u003d None"},{"line_number":200,"context_line":"        return project"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a7b0d38_e7b41d36","line":198,"range":{"start_line":198,"start_character":51,"end_line":198,"end_character":52},"in_reply_to":"3a7e1126_71e6a0b1","updated":"2015-12-27 22:55:44.000000000","message":"Good point, the comment is not quite right.  Thx!","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"a5e8fe0530f894f85bd2691b1ea0729a4d98eac5","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        except exceptions.Forbidden:"},{"line_number":197,"context_line":"            # The current keystone v3 policy file will not allow retrieving the"},{"line_number":198,"context_line":"            # project without a domain scoped token."},{"line_number":199,"context_line":"            project \u003d None"},{"line_number":200,"context_line":"        return project"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @wsgi.serializers(xml\u003dQuotaTemplate)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_b165e81e","line":199,"updated":"2015-12-18 17:15:24.000000000","message":"good catch","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b7593fc992888cef4b6ebe7c6814d0bcb0af7a7a","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        parent_id \u003d None"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        project \u003d self._get_project(context, context.project_id)"},{"line_number":375,"context_line":"        if project:"},{"line_number":376,"context_line":"            parent_id \u003d project.parent_id"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        return self._format_quota_set(id, QUOTAS.get_defaults("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_cb827f52","line":375,"range":{"start_line":375,"start_character":18,"end_line":375,"end_character":19},"updated":"2015-12-17 18:33:46.000000000","message":"I assume we only care about a project hierarchy that is two level deep?","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"5d8737de1a2d35f22e882b6b334866d2ecca22a0","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        parent_id \u003d None"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        project \u003d self._get_project(context, context.project_id)"},{"line_number":375,"context_line":"        if project:"},{"line_number":376,"context_line":"            parent_id \u003d project.parent_id"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        return self._format_quota_set(id, QUOTAS.get_defaults("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_e2a195aa","line":375,"range":{"start_line":375,"start_character":18,"end_line":375,"end_character":19},"in_reply_to":"3a7e1126_cb827f52","updated":"2015-12-17 21:31:03.000000000","message":"it looks that way here.  not sure if we need a comment to clarify but I can add one.","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"5717cfac0ce4769cf193e6f6c169bc12f5cd6c91","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        parent_id \u003d None"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        project \u003d self._get_project(context, context.project_id)"},{"line_number":375,"context_line":"        if project:"},{"line_number":376,"context_line":"            parent_id \u003d project.parent_id"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        return self._format_quota_set(id, QUOTAS.get_defaults("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_851f586b","line":375,"range":{"start_line":375,"start_character":18,"end_line":375,"end_character":19},"in_reply_to":"3a7e1126_e2a195aa","updated":"2015-12-18 13:38:57.000000000","message":"I think that we just need to care about it, following this point of the spec: https://github.com/openstack/cinder-specs/blob/master/specs/liberty/cinder-nested-quota-driver.rst#other-end-user-impact","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"a5e8fe0530f894f85bd2691b1ea0729a4d98eac5","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        parent_id \u003d None"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        project \u003d self._get_project(context, context.project_id)"},{"line_number":375,"context_line":"        if project:"},{"line_number":376,"context_line":"            parent_id \u003d project.parent_id"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        return self._format_quota_set(id, QUOTAS.get_defaults("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_d1daf44b","line":375,"range":{"start_line":375,"start_character":18,"end_line":375,"end_character":19},"in_reply_to":"3a7e1126_e2a195aa","updated":"2015-12-18 17:15:24.000000000","message":"Yes. When Vilobh implemented this, the idea was to just support access when the user have access to direct parent one-level up.\n\nI think the most efficient  way to implement this would be add the project_parent_id in context by  Keystonemiddleware.","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"a5e8fe0530f894f85bd2691b1ea0729a4d98eac5","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                                \"non-zero quota. This should not be performed\")"},{"line_number":417,"context_line":"                        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"            if parent_id:"},{"line_number":420,"context_line":"                # Get the children of the project which the token is scoped to"},{"line_number":421,"context_line":"                # in order to know if the target_project is in its hierarchy."},{"line_number":422,"context_line":"                context_project \u003d self._get_project(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a7e1126_34b2464d","line":419,"updated":"2015-12-18 17:15:24.000000000","message":"why the need to indent line 419 to line 448 to the left?\n\nWith this move, line 445-448 are duplicated. Why not keep the old code?","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"63723a634d6dbe8ab5cb42c114b6867df9155d37","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                                \"non-zero quota. This should not be performed\")"},{"line_number":417,"context_line":"                        raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"            if parent_id:"},{"line_number":420,"context_line":"                # Get the children of the project which the token is scoped to"},{"line_number":421,"context_line":"                # in order to know if the target_project is in its hierarchy."},{"line_number":422,"context_line":"                context_project \u003d self._get_project(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a7b0d38_8784395e","line":419,"in_reply_to":"3a7e1126_34b2464d","updated":"2015-12-27 22:55:44.000000000","message":"Good idea, I had done this initially to minimize create new vars for targe_project_id.\nLet me revisit this.","commit_id":"93e7e9c5617d52ed297f3380ecb2bbfadad2eb54"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"607da9d3646f8c773e8c369b60163f807fb3e877","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            # can call \u0027identity:get_project\u0027 with a project scope."},{"line_number":227,"context_line":"            LOG.error(_LE(\"Failed to get_project, user with tenant id: %s \""},{"line_number":228,"context_line":"                          \"may not have necessary permissions or \""},{"line_number":229,"context_line":"                          \"correct token scope.\") % id)"},{"line_number":230,"context_line":"            generic_project \u003d None"},{"line_number":231,"context_line":"        return generic_project"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_bf253a0b","line":229,"updated":"2016-01-07 18:49:35.000000000","message":"Please change % to , to pass in id as an arg to the logger.","commit_id":"1a689a62ba9f4f249e63ade4e1e56666f7ef47e3"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"50538fc012cf2f317df6c94d3b7f359dc4d8adc8","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            # can call \u0027identity:get_project\u0027 with a project scope."},{"line_number":227,"context_line":"            LOG.error(_LE(\"Failed to get_project, user with tenant id: %s \""},{"line_number":228,"context_line":"                          \"may not have necessary permissions or \""},{"line_number":229,"context_line":"                          \"correct token scope.\") % id)"},{"line_number":230,"context_line":"            generic_project \u003d None"},{"line_number":231,"context_line":"        return generic_project"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_a59e2eb6","line":229,"in_reply_to":"fa69d971_bf253a0b","updated":"2016-01-08 18:23:24.000000000","message":"Done","commit_id":"1a689a62ba9f4f249e63ade4e1e56666f7ef47e3"}]}
