)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"abd26aaabacce0275dcadcc70b6c1fcf4d7695a1","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-01-25 14:20:42 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"The nested quota driver implements quota management in nested projects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Icc480e4f36374275b65c05fb1879074f57e9b1c3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a930d6b_0bc39457","line":8,"updated":"2015-01-26 13:18:39.000000000","message":"think you should reference the blueprint here:\n\n  bp nested-quota-driver-api","commit_id":"df1270e216c222640ffe86d27527c2dd6a69441f"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"c8785548aa51c0a3ff917dd3bcdc788e1dd74819","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-01-25 14:20:42 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"The nested quota driver implements quota management in nested projects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Icc480e4f36374275b65c05fb1879074f57e9b1c3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a930d6b_9abee363","line":8,"in_reply_to":"1a930d6b_0bc39457","updated":"2015-01-26 16:39:55.000000000","message":"++","commit_id":"df1270e216c222640ffe86d27527c2dd6a69441f"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"8a42ef965abbabd29331b71ae69705644a907407","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     sajeesh \u003csajeesh.cs@cern.ch\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-31 12:50:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"The nested quota driver implements quota management in nested projects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Sajeesh CS \u003csajeesh.cs@cern.ch\u003e"},{"line_number":10,"context_line":"Co-Authored-By: Raildo Mascena \u003craildo@lsd.ufcg.edu.br\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da86d52c_571dcf72","line":7,"updated":"2015-01-31 13:45:38.000000000","message":"same suggestion for the commit message: https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"d7f5109877e4127119368c053935e28a0099c6a5"}],"etc/nova/policy.json":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"c8785548aa51c0a3ff917dd3bcdc788e1dd74819","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":""}],"source_content_type":"application/json","patch_set":3,"id":"1a930d6b_0515383f","line":3,"updated":"2015-01-26 16:39:55.000000000","message":"I think that this changes are not related to nested quotas, since you\u0027re removing some lines related to os-baremetal, os-cloudpipe.. and other things. maybe this is a different patch, like \"creating project_admin in policy file and remove some capabilities.\" and maybe other patch like: \"adding volume extension in policy fie.\"","commit_id":"df1270e216c222640ffe86d27527c2dd6a69441f"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_8f8075f8","line":4,"updated":"2015-02-04 20:14:00.000000000","message":"the rule \"admin_or_owner\" does not consider the owner of the instance. We should have something like:\n\"owner: \"project_id:%(project_id)s\",\n\"admin_or_owner\": \"is_admin:True or rule:project_admin or rule:owner\"","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"d111f63b03bec6329b19d825f83e83ef817b44d9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_dd6f4fc2","line":4,"in_reply_to":"da86d52c_386fa2fd","updated":"2015-02-12 17:10:57.000000000","message":"Yes, you are right. I will change it","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_f878cbc5","line":4,"in_reply_to":"da86d52c_8f8075f8","updated":"2015-02-05 02:34:56.000000000","message":"According to the BP,the user should have a role in the parent project and the token must be scoped to the parent project project. So \"and\" rule:owner will be accurate","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"2ad1d014077c8a7c858180fa5d17a76bc1bf073e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_b770cb74","line":4,"in_reply_to":"da86d52c_aa38a6d3","updated":"2015-02-07 01:10:44.000000000","message":"If a user wants to update the quota of project,he should have a role in its parent project and the token must be scoped to the parent.For demonstration purpose, I have created a role called \"project_admin\". According to this policy file, the user who is admin, and also who is having a role,project_admin in the parent project can update the quota ,provided the token is scoped to the parent project. In \"project_id:%(project_id)s\", I am passing the id of the parent. So project_admin can handle it.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"07a82fb2852d03db10ce78146f6bbffca7f2b8d9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_386fa2fd","line":4,"in_reply_to":"da86d52c_b770cb74","updated":"2015-02-12 15:03:49.000000000","message":"The problem is that you\u0027ve also changed the \u0027admin_or_owner\u0027 rule, that is used in several places across nova. For example, you are changing the behaviour of \"compute:start\": \"rule:admin_or_owner\", where only the admin will be able to create an instance","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e5ff887816d7415411649331dd9cc691ad0d2964","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_aa38a6d3","line":4,"in_reply_to":"da86d52c_f878cbc5","updated":"2015-02-05 13:09:30.000000000","message":"I don\u0027t understand how the owner of the instance can handle it. Looks like only admins can.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    \"compute:create\": \"\","}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_afa29948","line":5,"updated":"2015-02-04 20:14:00.000000000","message":"And I believe this must be in a separated patch.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    \"compute:create\": \"\","}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_b842d365","line":5,"in_reply_to":"da86d52c_afa29948","updated":"2015-02-05 02:34:56.000000000","message":"You mean a separate change ?  I will do it","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e5ff887816d7415411649331dd9cc691ad0d2964","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"context_is_admin\":  \"role:admin\","},{"line_number":3,"context_line":"    \"project_admin\":\"role:project_admin and project_id:%(project_id)s\","},{"line_number":4,"context_line":"    \"admin_or_owner\":  \"is_admin:True or rule:project_admin\","},{"line_number":5,"context_line":"    \"default\": \"rule:admin_or_owner\","},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    \"compute:create\": \"\","}],"source_content_type":"application/json","patch_set":14,"id":"da86d52c_0d3b8c9d","line":5,"in_reply_to":"da86d52c_b842d365","updated":"2015-02-05 13:09:30.000000000","message":"Yes, that\u0027s it","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"}],"nova/api/openstack/compute/contrib/quotas.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"b309134f384c5c9516a42aee299cb02f095220a6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        \"\"\" The keytsone output for the following url is used for"},{"line_number":154,"context_line":"        finding the subtree under the project \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        auth_url \u003d \u0027/%s/%s/%s?%s\u0027 % (\"v3\", \"projects\", parent_id, \"subtree\")"},{"line_number":157,"context_line":"        conn \u003d httplib.HTTPConnection(auth_server)"},{"line_number":158,"context_line":"        conn.request(\"GET\", auth_url, jsonutils.dumps(params), headers\u003dheaders)"},{"line_number":159,"context_line":"        response \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_cb942c8d","line":156,"updated":"2015-01-26 13:13:21.000000000","message":"is it common to request the keystone server directly? I think this should be using keystoneclient. The change in keystoneclient is not merged yet (https://review.openstack.org/#/c/115770/), so we have dependency here.\n\nanother point is that we won\u0027t be using the ?subtree_as_list query param, but the ?subtree_as_ids, which has a change under review for the keystone server (https://review.openstack.org/#/c/148618/), and has not been submitted to keystoneclient yet.","commit_id":"df1270e216c222640ffe86d27527c2dd6a69441f"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"823a766c325d525f4d4b75fffc03b751d4a47d80","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        \"\"\" The keytsone output for the following url is used for"},{"line_number":154,"context_line":"        finding the subtree under the project \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        auth_url \u003d \u0027/%s/%s/%s?%s\u0027 % (\"v3\", \"projects\", parent_id, \"subtree\")"},{"line_number":157,"context_line":"        conn \u003d httplib.HTTPConnection(auth_server)"},{"line_number":158,"context_line":"        conn.request(\"GET\", auth_url, jsonutils.dumps(params), headers\u003dheaders)"},{"line_number":159,"context_line":"        response \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a930d6b_20e4afaa","line":156,"updated":"2015-01-27 17:11:12.000000000","message":"the right query parameter will be \"subtree_as_ids\", it will return a structured dictionary reprensenting the hierarchy. Both keystone server and client changes are still under review: https://review.openstack.org/#/c/148618/ and https://review.openstack.org/#/c/150078/ we hope to get they merged in the next couple of weeks.\n\nthe query param you are currently using, \"subtree\", was replaced with the \"subtree_as_list\" query param, which is currently merged in keystone server.","commit_id":"1f3b7b9b05c6445c56367c5615dce220c9608159"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"70fa416af3fb27886ff2fdbc7004fe1ff0d1f6b6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        \"\"\" The keytsone output for the following url is used for"},{"line_number":154,"context_line":"        finding the subtree under the project \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        auth_url \u003d \u0027/%s/%s/%s?%s\u0027 % (\"v3\", \"projects\", parent_id, \"subtree\")"},{"line_number":157,"context_line":"        conn \u003d httplib.HTTPConnection(auth_server)"},{"line_number":158,"context_line":"        conn.request(\"GET\", auth_url, jsonutils.dumps(params), headers\u003dheaders)"},{"line_number":159,"context_line":"        response \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_662f72a2","line":156,"in_reply_to":"1a930d6b_20e4afaa","updated":"2015-01-28 10:39:41.000000000","message":"I will change it","commit_id":"1f3b7b9b05c6445c56367c5615dce220c9608159"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"b0f08f4e9b0528fddd7d6bea3e71899a773c4fbc","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        finding the subtree under the project \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        auth_url \u003d \u0027/%s/%s/%s?%s\u0027 % (\"v3\", \"projects\", parent_id,"},{"line_number":157,"context_line":"                                    \"subtree_as_list\")"},{"line_number":158,"context_line":"        conn \u003d httplib.HTTPConnection(auth_server)"},{"line_number":159,"context_line":"        conn.request(\"GET\", auth_url, jsonutils.dumps(params), headers\u003dheaders)"},{"line_number":160,"context_line":"        response \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_a9039e0b","line":157,"updated":"2015-02-03 20:35:01.000000000","message":"change to \"subtree_as_ids\" which already returns the hierarchy represented as a structured dictionary. See this docstring https://github.com/openstack/keystone/blob/master/keystone/resource/core.py#L304-L326\n\nthe API spec reference: https://github.com/openstack/keystone-specs/blob/master/api/v3/identity-api-v3.rst#get-project\n\nwe hope to get it merged into keystoneclient in the next few weeks as well: https://review.openstack.org/#/c/150078/","commit_id":"ee6f7946aa314f9b19655305809587bbc2504582"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        parent_id \u003d None"},{"line_number":136,"context_line":"        if \"project\" not in data:"},{"line_number":137,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            parent_id \u003d data[\"project\"][\"parent_id\"]"},{"line_number":140,"context_line":"        except Exception:"},{"line_number":141,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_c1c24184","line":138,"updated":"2015-02-04 20:14:00.000000000","message":"This should\u0027ve been using the python-keystoneclient, instead of directly calling Keystone API. This call does not depend on the patch Rodrigo previously mentioned.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"2ad1d014077c8a7c858180fa5d17a76bc1bf073e","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        parent_id \u003d None"},{"line_number":136,"context_line":"        if \"project\" not in data:"},{"line_number":137,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            parent_id \u003d data[\"project\"][\"parent_id\"]"},{"line_number":140,"context_line":"        except Exception:"},{"line_number":141,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_17ffd7ab","line":138,"in_reply_to":"da86d52c_4d5824fa","updated":"2015-02-07 01:10:44.000000000","message":"ok,I will try it","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        parent_id \u003d None"},{"line_number":136,"context_line":"        if \"project\" not in data:"},{"line_number":137,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            parent_id \u003d data[\"project\"][\"parent_id\"]"},{"line_number":140,"context_line":"        except Exception:"},{"line_number":141,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_d83ea7d9","line":138,"in_reply_to":"da86d52c_c1c24184","updated":"2015-02-05 02:34:56.000000000","message":"python-keystoneclient has not been merged.According to Rodrigo,it will take a few more days.Till then,I am forced to contact keystone directly.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e5ff887816d7415411649331dd9cc691ad0d2964","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        parent_id \u003d None"},{"line_number":136,"context_line":"        if \"project\" not in data:"},{"line_number":137,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            parent_id \u003d data[\"project\"][\"parent_id\"]"},{"line_number":140,"context_line":"        except Exception:"},{"line_number":141,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_4d5824fa","line":138,"in_reply_to":"da86d52c_d83ea7d9","updated":"2015-02-05 13:09:30.000000000","message":"Nope. This get project to get the immediate parent call depends only on keystone. We can call the get() in v3/project object on keystoneclient and it\u0027ll have the \"parent\" attribute. Understand what I mean?","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        finding the subtree under the project \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        auth_url \u003d \u0027/%s/%s/%s?%s\u0027 % (\"v3\", \"projects\", parent_id,"},{"line_number":157,"context_line":"                                    \"subtree_as_list\")"},{"line_number":158,"context_line":"        conn \u003d httplib.HTTPConnection(auth_server)"},{"line_number":159,"context_line":"        conn.request(\"GET\", auth_url, jsonutils.dumps(params), headers\u003dheaders)"},{"line_number":160,"context_line":"        response \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_ea939f58","line":157,"updated":"2015-02-04 20:14:00.000000000","message":"Remind to change to subtree_as_ids_ as Rodrigo suggested in the last patch set","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"2ad1d014077c8a7c858180fa5d17a76bc1bf073e","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        finding the subtree under the project \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        auth_url \u003d \u0027/%s/%s/%s?%s\u0027 % (\"v3\", \"projects\", parent_id,"},{"line_number":157,"context_line":"                                    \"subtree_as_list\")"},{"line_number":158,"context_line":"        conn \u003d httplib.HTTPConnection(auth_server)"},{"line_number":159,"context_line":"        conn.request(\"GET\", auth_url, jsonutils.dumps(params), headers\u003dheaders)"},{"line_number":160,"context_line":"        response \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_372bfb34","line":157,"in_reply_to":"da86d52c_0d09ccdd","updated":"2015-02-07 01:10:44.000000000","message":"ok","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e5ff887816d7415411649331dd9cc691ad0d2964","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        finding the subtree under the project \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        auth_url \u003d \u0027/%s/%s/%s?%s\u0027 % (\"v3\", \"projects\", parent_id,"},{"line_number":157,"context_line":"                                    \"subtree_as_list\")"},{"line_number":158,"context_line":"        conn \u003d httplib.HTTPConnection(auth_server)"},{"line_number":159,"context_line":"        conn.request(\"GET\", auth_url, jsonutils.dumps(params), headers\u003dheaders)"},{"line_number":160,"context_line":"        response \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_0d09ccdd","line":157,"in_reply_to":"da86d52c_3856e32a","updated":"2015-02-05 13:09:30.000000000","message":"This is the only case you need to wait.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        finding the subtree under the project \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        auth_url \u003d \u0027/%s/%s/%s?%s\u0027 % (\"v3\", \"projects\", parent_id,"},{"line_number":157,"context_line":"                                    \"subtree_as_list\")"},{"line_number":158,"context_line":"        conn \u003d httplib.HTTPConnection(auth_server)"},{"line_number":159,"context_line":"        conn.request(\"GET\", auth_url, jsonutils.dumps(params), headers\u003dheaders)"},{"line_number":160,"context_line":"        response \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_3856e32a","line":157,"in_reply_to":"da86d52c_ea939f58","updated":"2015-02-05 02:34:56.000000000","message":"ok","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":189,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":192,"context_line":"                target \u003d {\"project_id\": parent_id}"},{"line_number":193,"context_line":"                try:"},{"line_number":194,"context_line":"                    if parent_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_616b55f1","line":191,"updated":"2015-02-04 20:14:00.000000000","message":"Should\u0027ve been using the python-keystoneclient","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e5ff887816d7415411649331dd9cc691ad0d2964","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":189,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":192,"context_line":"                target \u003d {\"project_id\": parent_id}"},{"line_number":193,"context_line":"                try:"},{"line_number":194,"context_line":"                    if parent_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_cd0254b3","line":191,"in_reply_to":"da86d52c_180bdf2a","updated":"2015-02-05 13:09:30.000000000","message":"Already available as I said.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":189,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":192,"context_line":"                target \u003d {\"project_id\": parent_id}"},{"line_number":193,"context_line":"                try:"},{"line_number":194,"context_line":"                    if parent_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_180bdf2a","line":191,"in_reply_to":"da86d52c_616b55f1","updated":"2015-02-05 02:34:56.000000000","message":"I will use python-keystoneclient,once it is merged","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                        authorize_delete(context, target\u003dtarget)"},{"line_number":196,"context_line":"                        nova.context.\\"},{"line_number":197,"context_line":"                            authorize_root_or_parent_project_context(context,"},{"line_number":198,"context_line":"                                                                     parent_id)"},{"line_number":199,"context_line":"                    else:"},{"line_number":200,"context_line":"                        authorize_root_delete(context)"},{"line_number":201,"context_line":"                        nova.context.\\"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_92125907","line":198,"updated":"2015-02-04 20:14:00.000000000","message":"Does that mean that only the parent can update the child? If I have a Hierarchy: A \u003e B \u003e C \u003e D, and I get a token scoped to B, I can\u0027t manage D? And how can A manage D?","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e5ff887816d7415411649331dd9cc691ad0d2964","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                        authorize_delete(context, target\u003dtarget)"},{"line_number":196,"context_line":"                        nova.context.\\"},{"line_number":197,"context_line":"                            authorize_root_or_parent_project_context(context,"},{"line_number":198,"context_line":"                                                                     parent_id)"},{"line_number":199,"context_line":"                    else:"},{"line_number":200,"context_line":"                        authorize_root_delete(context)"},{"line_number":201,"context_line":"                        nova.context.\\"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_8d23fc54","line":198,"in_reply_to":"da86d52c_6c289c86","updated":"2015-02-05 13:09:30.000000000","message":"Why can\u0027t I? And how can A manage C and D? The \"authorize_root_delete\" suggests that it is possible.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"2ad1d014077c8a7c858180fa5d17a76bc1bf073e","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                        authorize_delete(context, target\u003dtarget)"},{"line_number":196,"context_line":"                        nova.context.\\"},{"line_number":197,"context_line":"                            authorize_root_or_parent_project_context(context,"},{"line_number":198,"context_line":"                                                                     parent_id)"},{"line_number":199,"context_line":"                    else:"},{"line_number":200,"context_line":"                        authorize_root_delete(context)"},{"line_number":201,"context_line":"                        nova.context.\\"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_979d875c","line":198,"in_reply_to":"da86d52c_8d23fc54","updated":"2015-02-07 01:10:44.000000000","message":"Please consider the hierarchy ,  A -\u003e B -\u003e C-\u003eD,where A is the root project.\nA user having a role in A can manage the quota of C, if the token is scoped to B. He can manage the quota of D,if the token is scoped to C which is the parent of D. Token for managing the quota should be always scoped to the parent project.Only exception is while managing the quota of the root project.Only \"admin\" can update the quota of A and the token must be scoped to A. \"authorize_root_delete\" deals with the deletion of quota in root project,that is A. I will add more comments in the next patch to make it more readable.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                        authorize_delete(context, target\u003dtarget)"},{"line_number":196,"context_line":"                        nova.context.\\"},{"line_number":197,"context_line":"                            authorize_root_or_parent_project_context(context,"},{"line_number":198,"context_line":"                                                                     parent_id)"},{"line_number":199,"context_line":"                    else:"},{"line_number":200,"context_line":"                        authorize_root_delete(context)"},{"line_number":201,"context_line":"                        nova.context.\\"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_6c289c86","line":198,"in_reply_to":"da86d52c_92125907","updated":"2015-02-05 02:34:56.000000000","message":"You cannot manage D, if you get a token scoped to B.It should be scoped to C,which is the parent of D.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"07a82fb2852d03db10ce78146f6bbffca7f2b8d9","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                        authorize_delete(context, target\u003dtarget)"},{"line_number":196,"context_line":"                        nova.context.\\"},{"line_number":197,"context_line":"                            authorize_root_or_parent_project_context(context,"},{"line_number":198,"context_line":"                                                                     parent_id)"},{"line_number":199,"context_line":"                    else:"},{"line_number":200,"context_line":"                        authorize_root_delete(context)"},{"line_number":201,"context_line":"                        nova.context.\\"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_fb042416","line":198,"in_reply_to":"da86d52c_979d875c","updated":"2015-02-12 15:03:49.000000000","message":"ok. looking forward to the next patch. Is this in the spec? Is it expected that the \u0027grandparent\u0027 is not allowed to manage its \u0027grandchilren\u0027?","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"d111f63b03bec6329b19d825f83e83ef817b44d9","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                        authorize_delete(context, target\u003dtarget)"},{"line_number":196,"context_line":"                        nova.context.\\"},{"line_number":197,"context_line":"                            authorize_root_or_parent_project_context(context,"},{"line_number":198,"context_line":"                                                                     parent_id)"},{"line_number":199,"context_line":"                    else:"},{"line_number":200,"context_line":"                        authorize_root_delete(context)"},{"line_number":201,"context_line":"                        nova.context.\\"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_fdf97380","line":198,"in_reply_to":"da86d52c_fb042416","updated":"2015-02-12 17:10:57.000000000","message":"Actually the wording should be changed. Consider a hierarchy A-\u003eB-\u003eC ,where A is the root project. Actually, A is not \"managing\" C. Instead, a user who is having a role in A(grandparent),say project_admin to update quota as defined in the policy file ,can manage the quota of C,provided he is having the same role in B(parent of C)  and the token must be scoped to B.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                headers \u003d {\"X-Auth-Token\": token,"},{"line_number":266,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":267,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":268,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":269,"context_line":"        try:"},{"line_number":270,"context_line":"            if user_id:"},{"line_number":271,"context_line":"                authorize_show(context)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_c175e1cb","line":268,"updated":"2015-02-04 20:14:00.000000000","message":"Should\u0027ve been using the python-keystoneclient","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e5ff887816d7415411649331dd9cc691ad0d2964","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                headers \u003d {\"X-Auth-Token\": token,"},{"line_number":266,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":267,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":268,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":269,"context_line":"        try:"},{"line_number":270,"context_line":"            if user_id:"},{"line_number":271,"context_line":"                authorize_show(context)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_4ddd8441","line":268,"in_reply_to":"da86d52c_2c3224f2","updated":"2015-02-05 13:09:30.000000000","message":"Already available as I said.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"2ad1d014077c8a7c858180fa5d17a76bc1bf073e","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                headers \u003d {\"X-Auth-Token\": token,"},{"line_number":266,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":267,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":268,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":269,"context_line":"        try:"},{"line_number":270,"context_line":"            if user_id:"},{"line_number":271,"context_line":"                authorize_show(context)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_b7a1ab97","line":268,"in_reply_to":"da86d52c_4ddd8441","updated":"2015-02-07 01:10:44.000000000","message":"ok","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                headers \u003d {\"X-Auth-Token\": token,"},{"line_number":266,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":267,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":268,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":269,"context_line":"        try:"},{"line_number":270,"context_line":"            if user_id:"},{"line_number":271,"context_line":"                authorize_show(context)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_2c3224f2","line":268,"in_reply_to":"da86d52c_c175e1cb","updated":"2015-02-05 02:34:56.000000000","message":"I will use python-keystoneclient,once it is merged","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                headers \u003d {\"X-Auth-Token\": token,"},{"line_number":305,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":306,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":307,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":308,"context_line":"                target \u003d {\"project_id\": parent_id}"},{"line_number":309,"context_line":"                try:"},{"line_number":310,"context_line":"                    if user_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_1733bb14","line":307,"updated":"2015-02-04 20:14:00.000000000","message":"Should\u0027ve been using the python-keystoneclient","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e5ff887816d7415411649331dd9cc691ad0d2964","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                headers \u003d {\"X-Auth-Token\": token,"},{"line_number":305,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":306,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":307,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":308,"context_line":"                target \u003d {\"project_id\": parent_id}"},{"line_number":309,"context_line":"                try:"},{"line_number":310,"context_line":"                    if user_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_cdf094cb","line":307,"in_reply_to":"da86d52c_0c39e0d6","updated":"2015-02-05 13:09:30.000000000","message":"Already available as I said.","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                headers \u003d {\"X-Auth-Token\": token,"},{"line_number":305,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":306,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":307,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":308,"context_line":"                target \u003d {\"project_id\": parent_id}"},{"line_number":309,"context_line":"                try:"},{"line_number":310,"context_line":"                    if user_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_0c39e0d6","line":307,"in_reply_to":"da86d52c_1733bb14","updated":"2015-02-05 02:34:56.000000000","message":"I will use python-keystoneclient,once it is merged","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"2ad1d014077c8a7c858180fa5d17a76bc1bf073e","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                headers \u003d {\"X-Auth-Token\": token,"},{"line_number":305,"context_line":"                           \"Content-type\": \"application/json\","},{"line_number":306,"context_line":"                           \"Accept\": \"text/json\"}"},{"line_number":307,"context_line":"                parent_id \u003d self._get_parent_id(headers, project_id)"},{"line_number":308,"context_line":"                target \u003d {\"project_id\": parent_id}"},{"line_number":309,"context_line":"                try:"},{"line_number":310,"context_line":"                    if user_id:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_d79e1f54","line":307,"in_reply_to":"da86d52c_cdf094cb","updated":"2015-02-07 01:10:44.000000000","message":"ok","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"75fa48004fa67982428228ed3b22ec2df0d9d938","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        else:"},{"line_number":113,"context_line":"            return {k: v[\u0027limit\u0027] for k, v in values.items()}"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    \"\"\" Function for finding the parent_id of a project."},{"line_number":116,"context_line":"        For root project ,parent_id is NULL\"\"\""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _get_parent_id(self, token, project_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_88b85712","line":115,"updated":"2015-05-22 19:22:40.000000000","message":"this should be placed inside the method","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        else:"},{"line_number":113,"context_line":"            return {k: v[\u0027limit\u0027] for k, v in values.items()}"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    \"\"\" Function for finding the parent_id of a project."},{"line_number":116,"context_line":"        For root project ,parent_id is NULL\"\"\""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _get_parent_id(self, token, project_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_392ce949","line":115,"in_reply_to":"7a016987_88b85712","updated":"2015-06-02 00:13:53.000000000","message":"I will do it","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        keystone \u003d client.Client(token\u003dtoken, auth_url\u003dauth_url,"},{"line_number":124,"context_line":"                                 project_id\u003dproject_id)"},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            data \u003d keystone.projects.get(project_id).__dict__"},{"line_number":127,"context_line":"        except Exception:"},{"line_number":128,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":129,"context_line":"        parent_id \u003d None"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_c552d112","line":126,"updated":"2015-05-31 09:52:00.000000000","message":"instead retrieve the object.__dict__, you can use this method: https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/v3/projects.py#L123 and return the parent_id that is inside the project object.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"75fa48004fa67982428228ed3b22ec2df0d9d938","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        keystone \u003d client.Client(token\u003dtoken, auth_url\u003dauth_url,"},{"line_number":124,"context_line":"                                 project_id\u003dproject_id)"},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            data \u003d keystone.projects.get(project_id).__dict__"},{"line_number":127,"context_line":"        except Exception:"},{"line_number":128,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":129,"context_line":"        parent_id \u003d None"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_483dbf8d","line":126,"updated":"2015-05-22 19:22:40.000000000","message":"you should do that via keystoneclient","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        keystone \u003d client.Client(token\u003dtoken, auth_url\u003dauth_url,"},{"line_number":124,"context_line":"                                 project_id\u003dproject_id)"},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            data \u003d keystone.projects.get(project_id).__dict__"},{"line_number":127,"context_line":"        except Exception:"},{"line_number":128,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":129,"context_line":"        parent_id \u003d None"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_99e4fd0d","line":126,"in_reply_to":"7a016987_c552d112","updated":"2015-06-02 00:13:53.000000000","message":"I will check it","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                 project_id\u003dproject_id)"},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            data \u003d keystone.projects.get(project_id).__dict__"},{"line_number":127,"context_line":"        except Exception:"},{"line_number":128,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":129,"context_line":"        parent_id \u003d None"},{"line_number":130,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_453821d3","line":127,"updated":"2015-05-31 09:52:00.000000000","message":"you really need catch every exception here?","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                 project_id\u003dproject_id)"},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            data \u003d keystone.projects.get(project_id).__dict__"},{"line_number":127,"context_line":"        except Exception:"},{"line_number":128,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":129,"context_line":"        parent_id \u003d None"},{"line_number":130,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_19d80d53","line":127,"in_reply_to":"7a016987_453821d3","updated":"2015-06-02 00:13:53.000000000","message":"Exception is caught in case the communication with keystone is unsuccessul","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        parent_id \u003d None"},{"line_number":130,"context_line":"        try:"},{"line_number":131,"context_line":"            parent_id \u003d data[\"parent_id\"]"},{"line_number":132,"context_line":"        except Exception:"},{"line_number":133,"context_line":"            pass"},{"line_number":134,"context_line":"        return parent_id"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_2533e5f7","line":132,"updated":"2015-05-31 09:52:00.000000000","message":"same here","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"75fa48004fa67982428228ed3b22ec2df0d9d938","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        keystone \u003d client.Client(token\u003dtoken, auth_url\u003dauth_url,"},{"line_number":143,"context_line":"                                 project_id\u003dparent_id)"},{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            data \u003d keystone.projects.get(parent_id,"},{"line_number":146,"context_line":"                                        subtree_as_list\u003dTrue).__dict__"},{"line_number":147,"context_line":"        except Exception:"},{"line_number":148,"context_line":"            raise webob.exc.HTTPForbidden()"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_a85433c9","line":145,"updated":"2015-05-22 19:22:40.000000000","message":"the same as above","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            data \u003d keystone.projects.get(parent_id,"},{"line_number":146,"context_line":"                                        subtree_as_list\u003dTrue).__dict__"},{"line_number":147,"context_line":"        except Exception:"},{"line_number":148,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":149,"context_line":"        subtree \u003d []"},{"line_number":150,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_a55595fa","line":147,"updated":"2015-05-31 09:52:00.000000000","message":"same here","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        try:"},{"line_number":145,"context_line":"            data \u003d keystone.projects.get(parent_id,"},{"line_number":146,"context_line":"                                        subtree_as_list\u003dTrue).__dict__"},{"line_number":147,"context_line":"        except Exception:"},{"line_number":148,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":149,"context_line":"        subtree \u003d []"},{"line_number":150,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_f998916c","line":147,"in_reply_to":"7a016987_a55595fa","updated":"2015-06-02 00:13:53.000000000","message":"will do it","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            try:"},{"line_number":157,"context_line":"                if project_info[\"parent_id\"] \u003d\u003d parent_id:"},{"line_number":158,"context_line":"                    child_list.append(project_info[\"id\"])"},{"line_number":159,"context_line":"            except Exception:"},{"line_number":160,"context_line":"                pass"},{"line_number":161,"context_line":"        return child_list"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_65443d49","line":159,"updated":"2015-05-31 09:52:00.000000000","message":"and here","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                try:"},{"line_number":175,"context_line":"                    if parent_id:"},{"line_number":176,"context_line":"                        authorize_delete(context, target\u003dtarget)"},{"line_number":177,"context_line":"                        nova.context.\\"},{"line_number":178,"context_line":"                            authorize_project_context(context, parent_id)"},{"line_number":179,"context_line":"                    else:"},{"line_number":180,"context_line":"                        authorize_root_delete(context)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_05458941","line":177,"updated":"2015-05-31 09:52:00.000000000","message":"please, use () instead \\ to long lines.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                try:"},{"line_number":175,"context_line":"                    if parent_id:"},{"line_number":176,"context_line":"                        authorize_delete(context, target\u003dtarget)"},{"line_number":177,"context_line":"                        nova.context.\\"},{"line_number":178,"context_line":"                            authorize_project_context(context, parent_id)"},{"line_number":179,"context_line":"                    else:"},{"line_number":180,"context_line":"                        authorize_root_delete(context)"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_f9b3f108","line":177,"in_reply_to":"7a016987_05458941","updated":"2015-06-02 00:13:53.000000000","message":"will do it.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                            authorize_project_context(context, parent_id)"},{"line_number":179,"context_line":"                    else:"},{"line_number":180,"context_line":"                        authorize_root_delete(context)"},{"line_number":181,"context_line":"                        nova.context.\\"},{"line_number":182,"context_line":"                            authorize_project_context(context, project_id)"},{"line_number":183,"context_line":"                except exception.Forbidden:"},{"line_number":184,"context_line":"                    raise webob.exc.HTTPForbidden()"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_c579b194","line":181,"updated":"2015-05-31 09:52:00.000000000","message":"same here","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                            authorize_project_context(context, parent_id)"},{"line_number":179,"context_line":"                    else:"},{"line_number":180,"context_line":"                        authorize_root_delete(context)"},{"line_number":181,"context_line":"                        nova.context.\\"},{"line_number":182,"context_line":"                            authorize_project_context(context, project_id)"},{"line_number":183,"context_line":"                except exception.Forbidden:"},{"line_number":184,"context_line":"                    raise webob.exc.HTTPForbidden()"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_79c82175","line":181,"in_reply_to":"7a016987_c579b194","updated":"2015-06-02 00:13:53.000000000","message":"will do it","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                    raise webob.exc.HTTPForbidden()"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"                if parent_id:"},{"line_number":187,"context_line":"                    child_list \u003d\\"},{"line_number":188,"context_line":"                        self._get_immediate_child_list(token, parent_id)"},{"line_number":189,"context_line":"                else:"},{"line_number":190,"context_line":"                    child_list \u003d\\"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_a56c75d0","line":187,"updated":"2015-05-31 09:52:00.000000000","message":"and here","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                    raise webob.exc.HTTPForbidden()"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"                if parent_id:"},{"line_number":187,"context_line":"                    child_list \u003d\\"},{"line_number":188,"context_line":"                        self._get_immediate_child_list(token, parent_id)"},{"line_number":189,"context_line":"                else:"},{"line_number":190,"context_line":"                    child_list \u003d\\"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_99799d32","line":187,"in_reply_to":"7a016987_a56c75d0","updated":"2015-06-02 00:13:53.000000000","message":"will do it","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                    child_list \u003d\\"},{"line_number":188,"context_line":"                        self._get_immediate_child_list(token, parent_id)"},{"line_number":189,"context_line":"                else:"},{"line_number":190,"context_line":"                    child_list \u003d\\"},{"line_number":191,"context_line":"                        self._get_immediate_child_list(token, project_id)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if parent_id is not None:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_856f39c3","line":190,"updated":"2015-05-31 09:52:00.000000000","message":"and here","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                    child_list \u003d\\"},{"line_number":188,"context_line":"                        self._get_immediate_child_list(token, parent_id)"},{"line_number":189,"context_line":"                else:"},{"line_number":190,"context_line":"                    child_list \u003d\\"},{"line_number":191,"context_line":"                        self._get_immediate_child_list(token, project_id)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if parent_id is not None:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_5973254e","line":190,"in_reply_to":"7a016987_856f39c3","updated":"2015-06-02 00:13:53.000000000","message":"will do it","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"ecd01f35c95c81d9b118b4dd733abca98dde3476","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            if id not in child_list:"},{"line_number":195,"context_line":"                raise exception.InvalidParent(parent_id\u003dparent_id,"},{"line_number":196,"context_line":"                                              project_id\u003dproject_id)"},{"line_number":197,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":198,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        quota_set \u003d body[\u0027quota_set\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_32c303ef","line":197,"updated":"2015-06-17 22:49:51.000000000","message":"params \u003d req.params","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"ecd01f35c95c81d9b118b4dd733abca98dde3476","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                raise exception.InvalidParent(parent_id\u003dparent_id,"},{"line_number":196,"context_line":"                                              project_id\u003dproject_id)"},{"line_number":197,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":198,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        quota_set \u003d body[\u0027quota_set\u0027]"},{"line_number":201,"context_line":"        force_update \u003d strutils.bool_from_string(quota_set.get(\u0027force\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_b2af1329","line":198,"updated":"2015-06-17 22:49:51.000000000","message":"user_id \u003d context.user_id","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"3fc4c6fd753b419da5188519feaaae5441d31550","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            if parent_id:"},{"line_number":232,"context_line":"                db.quota_allocated_update(context, parent_id, child_list)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def show(self, req, id):"},{"line_number":235,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":236,"context_line":"        \"\"\" id is made equivalent to project_id for better readability\"\"\""},{"line_number":237,"context_line":"        project_id \u003d id"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_8a38e1a1","line":234,"updated":"2015-06-16 15:54:09.000000000","message":"It is difficult to see what you\u0027ve really changed and what is new code.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"75fa48004fa67982428228ed3b22ec2df0d9d938","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def show(self, req, id):"},{"line_number":235,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":236,"context_line":"        \"\"\" id is made equivalent to project_id for better readability\"\"\""},{"line_number":237,"context_line":"        project_id \u003d id"},{"line_number":238,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":239,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_884f3733","line":236,"updated":"2015-05-22 19:22:40.000000000","message":"this is a regular comment (not a docstring). You should use #","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def show(self, req, id):"},{"line_number":235,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":236,"context_line":"        \"\"\" id is made equivalent to project_id for better readability\"\"\""},{"line_number":237,"context_line":"        project_id \u003d id"},{"line_number":238,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":239,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_b9ce9981","line":236,"in_reply_to":"7a016987_884f3733","updated":"2015-06-02 00:13:53.000000000","message":"will do that","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"ecd01f35c95c81d9b118b4dd733abca98dde3476","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":236,"context_line":"        \"\"\" id is made equivalent to project_id for better readability\"\"\""},{"line_number":237,"context_line":"        project_id \u003d id"},{"line_number":238,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":239,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":240,"context_line":"        parent_id \u003d None"},{"line_number":241,"context_line":"        if hasattr(context, \u0027auth_token\u0027) and hasattr(context, \u0027project_id\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_92dd2fe2","line":238,"updated":"2015-06-17 22:49:51.000000000","message":"you can get it via req.params","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"0f4ec3ede11950554be7af44c48efe2bc585956f","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":236,"context_line":"        \"\"\" id is made equivalent to project_id for better readability\"\"\""},{"line_number":237,"context_line":"        project_id \u003d id"},{"line_number":238,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":239,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":240,"context_line":"        parent_id \u003d None"},{"line_number":241,"context_line":"        if hasattr(context, \u0027auth_token\u0027) and hasattr(context, \u0027project_id\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_dec94827","line":238,"in_reply_to":"fa32b979_92dd2fe2","updated":"2015-06-19 02:36:54.000000000","message":"this part of code is same that of DbQuotaDriver","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"ecd01f35c95c81d9b118b4dd733abca98dde3476","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        \"\"\" id is made equivalent to project_id for better readability\"\"\""},{"line_number":237,"context_line":"        project_id \u003d id"},{"line_number":238,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":239,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":240,"context_line":"        parent_id \u003d None"},{"line_number":241,"context_line":"        if hasattr(context, \u0027auth_token\u0027) and hasattr(context, \u0027project_id\u0027):"},{"line_number":242,"context_line":"            if(context.auth_token and context.project_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_52fa4744","line":239,"updated":"2015-06-17 22:49:51.000000000","message":"you can get it via context.user_id","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"0f4ec3ede11950554be7af44c48efe2bc585956f","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        \"\"\" id is made equivalent to project_id for better readability\"\"\""},{"line_number":237,"context_line":"        project_id \u003d id"},{"line_number":238,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":239,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":240,"context_line":"        parent_id \u003d None"},{"line_number":241,"context_line":"        if hasattr(context, \u0027auth_token\u0027) and hasattr(context, \u0027project_id\u0027):"},{"line_number":242,"context_line":"            if(context.auth_token and context.project_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_7ed91cf2","line":239,"in_reply_to":"fa32b979_52fa4744","updated":"2015-06-19 02:36:54.000000000","message":"No, user_id from the url is taken","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"ecd01f35c95c81d9b118b4dd733abca98dde3476","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            if user_id:"},{"line_number":248,"context_line":"                authorize_show(context)"},{"line_number":249,"context_line":"                nova.context.authorize_project_context(context, project_id)"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                if parent_id:"},{"line_number":252,"context_line":"                    if context.project_id \u003d\u003d parent_id:"},{"line_number":253,"context_line":"                        target \u003d {\"project_id\": parent_id}"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_32cea32e","line":250,"updated":"2015-06-17 22:49:51.000000000","message":"Why do we even need this for quota-show ?\n\nIf we have A-\u003e B -\u003e C heirarchy and if user does\n\nnova quota-show C -\u003e get token at level C and display resource quota for each resource.\n\ninstances 10\nram 20\netc\n\n\nnova quota-show B -\u003e get token at level B and display resource quota for each resource.\n\ninstances 20\nram 40\netc\n\nor are we planning to show the quota details for both B and C projects ?","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"0f4ec3ede11950554be7af44c48efe2bc585956f","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            if user_id:"},{"line_number":248,"context_line":"                authorize_show(context)"},{"line_number":249,"context_line":"                nova.context.authorize_project_context(context, project_id)"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                if parent_id:"},{"line_number":252,"context_line":"                    if context.project_id \u003d\u003d parent_id:"},{"line_number":253,"context_line":"                        target \u003d {\"project_id\": parent_id}"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_1efb3048","line":250,"in_reply_to":"fa32b979_32cea32e","updated":"2015-06-19 02:36:54.000000000","message":"For quota show , the token can be scoped either to the project or its parent.\n\nFor quota update the token should be scoped to the parent","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"ecd01f35c95c81d9b118b4dd733abca98dde3476","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        project_id \u003d id"},{"line_number":274,"context_line":"        child_list \u003d []"},{"line_number":275,"context_line":"        parent_id \u003d None"},{"line_number":276,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":277,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":278,"context_line":"        if hasattr(context, \u0027auth_token\u0027) and hasattr(context, \u0027project_id\u0027):"},{"line_number":279,"context_line":"            if(context.auth_token and context.project_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_d29c1710","line":276,"updated":"2015-06-17 22:49:51.000000000","message":"ditto as mentioned above","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"ecd01f35c95c81d9b118b4dd733abca98dde3476","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        child_list \u003d []"},{"line_number":275,"context_line":"        parent_id \u003d None"},{"line_number":276,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":277,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":278,"context_line":"        if hasattr(context, \u0027auth_token\u0027) and hasattr(context, \u0027project_id\u0027):"},{"line_number":279,"context_line":"            if(context.auth_token and context.project_id):"},{"line_number":280,"context_line":"                token \u003d context.auth_token"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_928befc2","line":277,"updated":"2015-06-17 22:49:51.000000000","message":"ditto as mentioned above","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"75fa48004fa67982428228ed3b22ec2df0d9d938","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                raise exception.\\"},{"line_number":308,"context_line":"                    InvalidParent(parent_id\u003dparent_id, project_id\u003dproject_id)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        ################"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        quota_set \u003d body[\u0027quota_set\u0027]"},{"line_number":313,"context_line":"        force_update \u003d strutils.bool_from_string(quota_set.get(\u0027force\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_68619ba8","line":310,"updated":"2015-05-22 19:22:40.000000000","message":"why is that?","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                raise exception.\\"},{"line_number":308,"context_line":"                    InvalidParent(parent_id\u003dparent_id, project_id\u003dproject_id)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        ################"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        quota_set \u003d body[\u0027quota_set\u0027]"},{"line_number":313,"context_line":"        force_update \u003d strutils.bool_from_string(quota_set.get(\u0027force\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_99cbdd72","line":310,"in_reply_to":"7a016987_68619ba8","updated":"2015-06-02 00:13:53.000000000","message":"just to confirm that project_id is there in the retrieved child list","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"ecd01f35c95c81d9b118b4dd733abca98dde3476","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def delete(self, req, id):"},{"line_number":353,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":354,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":355,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":356,"context_line":"        body \u003d {\"quota_set\": {\"instances\": \"0\","},{"line_number":357,"context_line":"                              \"cores\": \"0\","}],"source_content_type":"text/x-python","patch_set":15,"id":"3afb71cf_ee7425fe","line":354,"updated":"2015-06-17 22:49:51.000000000","message":"why not use params \u003d req.params ?","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"0f4ec3ede11950554be7af44c48efe2bc585956f","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def delete(self, req, id):"},{"line_number":353,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":354,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":355,"context_line":"        user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":356,"context_line":"        body \u003d {\"quota_set\": {\"instances\": \"0\","},{"line_number":357,"context_line":"                              \"cores\": \"0\","}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_fe9a0c13","line":354,"in_reply_to":"3afb71cf_ee7425fe","updated":"2015-06-19 02:36:54.000000000","message":"This is same as in DbQuotaDriver","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":36,"context_line":"EXTENDED_QUOTAS \u003d {\u0027server_groups\u0027: \u0027os-server-group-quotas\u0027,"},{"line_number":37,"context_line":"                   \u0027server_group_members\u0027: \u0027os-server-group-quotas\u0027}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"authorize_update \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":40,"context_line":"                                        \u0027quotas:update\u0027)"},{"line_number":41,"context_line":"authorize_show \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":42,"context_line":"                                             \u0027quotas:show\u0027)"},{"line_number":43,"context_line":"authorize_delete \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":44,"context_line":"                                             \u0027quotas:delete\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class QuotaSetsController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_f37d996d","line":44,"range":{"start_line":39,"start_character":0,"end_line":44,"end_character":61},"updated":"2015-07-28 21:32:54.000000000","message":"These extra newlines aren\u0027t needed, I think the code was fine the way was","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"e741f615492adb0f92e72dcff462f0ac5125c0fc","unresolved":false,"context_lines":[{"line_number":41,"context_line":"authorize_show \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":42,"context_line":"                                             \u0027quotas:show\u0027)"},{"line_number":43,"context_line":"authorize_delete \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":44,"context_line":"                                             \u0027quotas:delete\u0027)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class QuotaSetsController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_91985f1d","line":44,"in_reply_to":"3a50d1a3_f37d996d","updated":"2015-07-30 19:13:35.000000000","message":"Done","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # By default, parent_id is None"},{"line_number":123,"context_line":"        parent_id \u003d None"},{"line_number":124,"context_line":"        params \u003d urlparse.parse_qs(req.environ.get(\u0027QUERY_STRING\u0027, \u0027\u0027))"},{"line_number":125,"context_line":"        user_id \u003d None"},{"line_number":126,"context_line":"        if self.ext_mgr.is_loaded(\u0027os-user-quotas\u0027):"},{"line_number":127,"context_line":"            user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_b3495133","line":125,"updated":"2015-07-28 21:32:54.000000000","message":"There is no need to move these two lines, they were fine where they were. We want to avoid making unnecessary changes in this feature patch","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            user_id \u003d params.get(\u0027user_id\u0027, [None])[0]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        if QUOTAS.is_nested():"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"            # Note(sajeesh): This check is required because,in the initial"},{"line_number":132,"context_line":"            # release, NestedQuotaDriver is proposed as an optional"},{"line_number":133,"context_line":"            # driver although it a superset of DbQuotaDriver, which can"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_734f4934","line":130,"updated":"2015-07-28 21:32:54.000000000","message":"Don\u0027t need a blank line here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        if QUOTAS.is_nested():"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"            # Note(sajeesh): This check is required because,in the initial"},{"line_number":132,"context_line":"            # release, NestedQuotaDriver is proposed as an optional"},{"line_number":133,"context_line":"            # driver although it a superset of DbQuotaDriver, which can"},{"line_number":134,"context_line":"            # handle hierarchical as well as non-hierarcical projects."},{"line_number":135,"context_line":"            # But, to avoid any potential risks it has been proposed as"},{"line_number":136,"context_line":"            # an optional driver in the current release.The above check"},{"line_number":137,"context_line":"            # will bypass the keystone communication, in case DbQuotaDriver"},{"line_number":138,"context_line":"            # is being used.Once NestedQuotaDriver becomes the default"},{"line_number":139,"context_line":"            # quota driver, this check will become obsolete.The ultimate"},{"line_number":140,"context_line":"            # idea is to keep the program flow unchanged, if"},{"line_number":141,"context_line":"            # NestedQuotaDriver is NOT being  used."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            try:"},{"line_number":144,"context_line":"                parent_id \u003d KEYSTONE.get_parent_id(context, project_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_330b01d8","line":141,"range":{"start_line":131,"start_character":0,"end_line":141,"end_character":51},"updated":"2015-07-28 21:32:54.000000000","message":"The format for a note is # NOTE(name) and I don\u0027t think you need this note, or at the very least you don\u0027t need this much text. The is_nested is explained where it is defined already","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            nova.context.authorize_project_context(context, id)"},{"line_number":149,"context_line":"            return self._format_quota_set(project_id,"},{"line_number":150,"context_line":"                                   self._get_quotas(context,"},{"line_number":151,"context_line":"                            project_id, parent_id\u003dparent_id,"},{"line_number":152,"context_line":"                                           user_id\u003duser_id))"},{"line_number":153,"context_line":"        except exception.Forbidden:"},{"line_number":154,"context_line":"            raise webob.exc.HTTPForbidden()"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_b3f711d2","line":151,"updated":"2015-07-28 21:32:54.000000000","message":"Please fix the indentation here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        if QUOTAS.is_nested():"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"            # Note(sajeesh): This check is required because,in the initial"},{"line_number":194,"context_line":"            # release, NestedQuotaDriver is proposed as an optional"},{"line_number":195,"context_line":"            # driver although it a superset of DbQuotaDriver, which can"},{"line_number":196,"context_line":"            # handle hierarchical as well as non-hierarcical projects."},{"line_number":197,"context_line":"            # But, to avoid any potential risks it has been proposed as"},{"line_number":198,"context_line":"            # an optional driver in the current release.The above check"},{"line_number":199,"context_line":"            # will bypass the keystone communication, in case DbQuotaDriver"},{"line_number":200,"context_line":"            # is being used.Once NestedQuotaDriver becomes the default"},{"line_number":201,"context_line":"            # quota driver, this check will become obsolete.The ultimate"},{"line_number":202,"context_line":"            # idea is to keep the program flow unchanged, if"},{"line_number":203,"context_line":"            # NestedQuotaDriver is NOT being  used."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            try:"},{"line_number":206,"context_line":"                parent_id \u003d KEYSTONE.get_parent_id(context, project_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_ae0a4a24","line":203,"range":{"start_line":193,"start_character":12,"end_line":203,"end_character":51},"updated":"2015-07-28 21:32:54.000000000","message":"Same comment as before","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            try:"},{"line_number":206,"context_line":"                parent_id \u003d KEYSTONE.get_parent_id(context, project_id)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"                # Note(sajeesh): Default quota values of root project are"},{"line_number":209,"context_line":"                # not stored by default.But, while allocated quota to the"},{"line_number":210,"context_line":"                # the child, default quota needs to be stored along with"},{"line_number":211,"context_line":"                # the allocated quota"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_a404aa14","line":208,"updated":"2015-07-28 21:32:54.000000000","message":"Format for a note is # NOTE(name)","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                parent_id \u003d KEYSTONE.get_parent_id(context, project_id)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"                # Note(sajeesh): Default quota values of root project are"},{"line_number":209,"context_line":"                # not stored by default.But, while allocated quota to the"},{"line_number":210,"context_line":"                # the child, default quota needs to be stored along with"},{"line_number":211,"context_line":"                # the allocated quota"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_640a2222","line":209,"range":{"start_line":209,"start_character":39,"end_line":209,"end_character":41},"updated":"2015-07-28 21:32:54.000000000","message":"Need a space here. Also, did you mean \"allocating\" instead of \"allocated\"?","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                    # To check whether a parent project is root project,"},{"line_number":215,"context_line":"                    # ID of the grand parent is found."},{"line_number":216,"context_line":"                    parent_parent_id \u003d KEYSTONE.get_parent_id(context,"},{"line_number":217,"context_line":"                                                        parent_id)"},{"line_number":218,"context_line":"                    if parent_parent_id is None:"},{"line_number":219,"context_line":"                        QUOTAS.store_default_quota_of_root_project(context,"},{"line_number":220,"context_line":"                                                                parent_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_6421c29d","line":217,"updated":"2015-07-28 21:32:54.000000000","message":"Please fix the indentation here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                                                        parent_id)"},{"line_number":218,"context_line":"                    if parent_parent_id is None:"},{"line_number":219,"context_line":"                        QUOTAS.store_default_quota_of_root_project(context,"},{"line_number":220,"context_line":"                                                                parent_id)"},{"line_number":221,"context_line":"                    child_list \u003d KEYSTONE.get_immediate_child_list(context,"},{"line_number":222,"context_line":"                                                               parent_id)"},{"line_number":223,"context_line":"            except exception.Forbidden:"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_e42dd28f","line":220,"updated":"2015-07-28 21:32:54.000000000","message":"Please fix the indentation here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                        QUOTAS.store_default_quota_of_root_project(context,"},{"line_number":220,"context_line":"                                                                parent_id)"},{"line_number":221,"context_line":"                    child_list \u003d KEYSTONE.get_immediate_child_list(context,"},{"line_number":222,"context_line":"                                                               parent_id)"},{"line_number":223,"context_line":"            except exception.Forbidden:"},{"line_number":224,"context_line":"                raise webob.exc.HTTPForbidden()"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_a4526a11","line":222,"updated":"2015-07-28 21:32:54.000000000","message":"Please fix the indentation here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            # permission checks."},{"line_number":229,"context_line":"            nova.context.authorize_project_context(context, project_id)"},{"line_number":230,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context,"},{"line_number":231,"context_line":"                                                      project_id,"},{"line_number":232,"context_line":"                                             parent_id\u003dparent_id,"},{"line_number":233,"context_line":"                                                 user_id\u003duser_id)"},{"line_number":234,"context_line":"        except exception.Forbidden:"},{"line_number":235,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_e444f247","line":233,"range":{"start_line":231,"start_character":54,"end_line":233,"end_character":65},"updated":"2015-07-28 21:32:54.000000000","message":"Please fix the indentation here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        valid_quotas \u003d {}"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        if parent_id:"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            # Note(sajeesh): Force update is not available for sub-projects."},{"line_number":274,"context_line":"            # Thi is necessary to ensure consistency across the hierarchy"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_24665aed","line":272,"updated":"2015-07-28 21:32:54.000000000","message":"Blank line not needed","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        if parent_id:"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            # Note(sajeesh): Force update is not available for sub-projects."},{"line_number":274,"context_line":"            # Thi is necessary to ensure consistency across the hierarchy"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"            force_update \u003d False"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_64a6a210","line":273,"updated":"2015-07-28 21:32:54.000000000","message":"Format is # NOTE(name)","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        if parent_id:"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            # Note(sajeesh): Force update is not available for sub-projects."},{"line_number":274,"context_line":"            # Thi is necessary to ensure consistency across the hierarchy"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"            force_update \u003d False"},{"line_number":277,"context_line":"        for key, value in quota_set.items():"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_84840e5e","line":274,"range":{"start_line":274,"start_character":14,"end_line":274,"end_character":17},"updated":"2015-07-28 21:32:54.000000000","message":"Typo","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            # Note(sajeesh): Force update is not available for sub-projects."},{"line_number":274,"context_line":"            # Thi is necessary to ensure consistency across the hierarchy"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"            force_update \u003d False"},{"line_number":277,"context_line":"        for key, value in quota_set.items():"},{"line_number":278,"context_line":"            if key in NON_QUOTA_KEYS or (not value and value !\u003d 0):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_e45b9220","line":275,"updated":"2015-07-28 21:32:54.000000000","message":"Blank line not needed","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                                            key, value, user_id\u003duser_id)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        if parent_id and not user_id:"},{"line_number":303,"context_line":"                QUOTAS.update_allocated_quota(context, parent_id,"},{"line_number":304,"context_line":"                                              child_list)"},{"line_number":305,"context_line":"        values \u003d self._get_quotas(context, id, parent_id\u003dparent_id,"},{"line_number":306,"context_line":"                                                   user_id\u003duser_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_a4d58a43","line":303,"updated":"2015-07-28 21:32:54.000000000","message":"This is indented too far","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        parent_id \u003d None"},{"line_number":315,"context_line":"        if QUOTAS.is_nested():"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"            # Note(sajeesh): This check is required because,in the initial"},{"line_number":318,"context_line":"            # release, NestedQuotaDriver is proposed as an optional"},{"line_number":319,"context_line":"            # driver although it a superset of DbQuotaDriver, which can"},{"line_number":320,"context_line":"            # handle hierarchical as well as non-hierarcical projects."},{"line_number":321,"context_line":"            # But, to avoid any potential risks it has been proposed as"},{"line_number":322,"context_line":"            # an optional driver in the current release.The above check"},{"line_number":323,"context_line":"            # will bypass the keystone communication, in case DbQuotaDriver"},{"line_number":324,"context_line":"            # is being used.Once NestedQuotaDriver becomes the default"},{"line_number":325,"context_line":"            # quota driver, this check will become obsolete.The ultimate"},{"line_number":326,"context_line":"            # idea is to keep the program flow unchanged, if"},{"line_number":327,"context_line":"            # NestedQuotaDriver is NOT being  used."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"            try:"},{"line_number":330,"context_line":"                parent_id \u003d KEYSTONE.get_parent_id(context, project_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_64cb02a5","line":327,"range":{"start_line":317,"start_character":12,"end_line":327,"end_character":51},"updated":"2015-07-28 21:32:54.000000000","message":"Same comment as earlier","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":352,"context_line":"            parent_id \u003d None"},{"line_number":353,"context_line":"            if QUOTAS.is_nested():"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"                # Note(sajeesh): This check is required because,in the initial"},{"line_number":356,"context_line":"                # release, NestedQuotaDriver is proposed as an optional"},{"line_number":357,"context_line":"                # driver although it a superset of DbQuotaDriver, which can"},{"line_number":358,"context_line":"                # handle hierarchical as well as non-hierarcical projects."},{"line_number":359,"context_line":"                # But, to avoid any potential risks it has been proposed as"},{"line_number":360,"context_line":"                # an optional driver in the current release.The above check"},{"line_number":361,"context_line":"                # will bypass the keystone communication, in case DbQuotaDriver"},{"line_number":362,"context_line":"                # is being used.Once NestedQuotaDriver becomes the default"},{"line_number":363,"context_line":"                # quota driver, this check will become obsolete.The ultimate"},{"line_number":364,"context_line":"                # idea is to keep the program flow unchanged, if"},{"line_number":365,"context_line":"                # NestedQuotaDriver is NOT being  used."},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"                try:"},{"line_number":368,"context_line":"                    parent_id \u003d KEYSTONE.get_parent_id(context, project_id)"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_84396ea6","line":365,"range":{"start_line":355,"start_character":16,"end_line":365,"end_character":55},"updated":"2015-07-28 21:32:54.000000000","message":"Same comment as earlier","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                    parent_id \u003d KEYSTONE.get_parent_id(context, project_id)"},{"line_number":369,"context_line":"                    if not user_id:"},{"line_number":370,"context_line":"                        child_list \u003d KEYSTONE.get_immediate_child_list(context,"},{"line_number":371,"context_line":"                                                          project_id)"},{"line_number":372,"context_line":"                        if child_list:"},{"line_number":373,"context_line":"                            # Quota delete option is allowed only for leaf"},{"line_number":374,"context_line":"                            # projects"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_a43caa93","line":371,"updated":"2015-07-28 21:32:54.000000000","message":"Please fix the indentation here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                        if child_list:"},{"line_number":373,"context_line":"                            # Quota delete option is allowed only for leaf"},{"line_number":374,"context_line":"                            # projects"},{"line_number":375,"context_line":"                            raise exception.\\"},{"line_number":376,"context_line":"                                InvalidQuotaDelete(project_id\u003dproject_id)"},{"line_number":377,"context_line":"                        if parent_id:"},{"line_number":378,"context_line":"                            parent_child_list \u003d (KEYSTONE."}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_8465ee1e","line":375,"updated":"2015-07-28 21:32:54.000000000","message":"Please try to avoid using \\ for line continuation","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                                            get_immediate_child_list(context,"},{"line_number":380,"context_line":"                                            parent_id))"},{"line_number":381,"context_line":"                except exception.Forbidden:"},{"line_number":382,"context_line":"                    raise webob.exc.HTTPForbidden()"},{"line_number":383,"context_line":"            try:"},{"line_number":384,"context_line":"                nova.context.authorize_project_context(context, id)"},{"line_number":385,"context_line":"                # NOTE(alex_xu): back-compatible with db layer hard-code admin"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_0461de04","line":382,"updated":"2015-07-28 21:32:54.000000000","message":"I think this code L367 - L382 should be refactored into a private function, for example \"_get_parent_child_list\" or something else that makes sense. I think it would make it easier to read and solve the line continuation problems","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                nova.context.require_admin_context(context)"},{"line_number":391,"context_line":"                if user_id:"},{"line_number":392,"context_line":"                    QUOTAS.destroy_all_by_project_and_user(context,"},{"line_number":393,"context_line":"                    project_id, user_id)"},{"line_number":394,"context_line":"                else:"},{"line_number":395,"context_line":"                    QUOTAS.destroy_all_by_project(context, project_id)"},{"line_number":396,"context_line":"                    if parent_id:"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_a4634ab0","line":393,"updated":"2015-07-28 21:32:54.000000000","message":"Please fix the indentation here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"27010e03e121378f0a79a6ecd9f454c0460d0e35","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                    QUOTAS.destroy_all_by_project(context, project_id)"},{"line_number":396,"context_line":"                    if parent_id:"},{"line_number":397,"context_line":"                        QUOTAS.update_allocated_quota(context, parent_id,"},{"line_number":398,"context_line":"                                                           parent_child_list)"},{"line_number":399,"context_line":"                return webob.Response(status_int\u003d202)"},{"line_number":400,"context_line":"            except exception.Forbidden:"},{"line_number":401,"context_line":"                raise webob.exc.HTTPForbidden()"}],"source_content_type":"text/x-python","patch_set":35,"id":"3a50d1a3_a4310aa4","line":398,"updated":"2015-07-28 21:32:54.000000000","message":"Please fix the indentation here","commit_id":"4b98cc947a5a3f14ba18d65ab81f40518a03ca08"}],"nova/api/openstack/compute/plugins/v3/quota_sets.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _validate_quota_limit(self, resource, limit, minimum, maximum):"},{"line_number":46,"context_line":"        # NOTE: -1 is a flag value for unlimited"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        if limit \u003c -1:"},{"line_number":49,"context_line":"            msg \u003d (_(\"Quota limit %(limit)s for %(resource)s \""},{"line_number":50,"context_line":"                     \"must be -1 or greater.\") %"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_656b1db8","line":47,"updated":"2015-05-31 09:52:00.000000000","message":"please, remove this whiteline","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return {k: v[\u0027limit\u0027] for k, v in values.items()}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _get_parent_id(self, token, project_id):"},{"line_number":81,"context_line":"        auth_host \u003d KEYSTONE_CONF.keystone_authtoken.auth_host"},{"line_number":82,"context_line":"        auth_port \u003d int(KEYSTONE_CONF.keystone_authtoken.auth_port)"},{"line_number":83,"context_line":"        auth_prcl \u003d \u0027http\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_25b88529","line":80,"updated":"2015-05-31 09:52:00.000000000","message":"Why do you duplicate all this change here and in the quota.py?\n\nCannot reuse this code?","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return {k: v[\u0027limit\u0027] for k, v in values.items()}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _get_parent_id(self, token, project_id):"},{"line_number":81,"context_line":"        auth_host \u003d KEYSTONE_CONF.keystone_authtoken.auth_host"},{"line_number":82,"context_line":"        auth_port \u003d int(KEYSTONE_CONF.keystone_authtoken.auth_port)"},{"line_number":83,"context_line":"        auth_prcl \u003d \u0027http\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_59c1e52d","line":80,"in_reply_to":"7a016987_25b88529","updated":"2015-06-02 00:13:53.000000000","message":"In this code nova v3 calls are supported. The other one which supports v2 calls will become obsolete.So there will not be any duplication","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                   project_id\u003dproject_id)"},{"line_number":87,"context_line":"        try:"},{"line_number":88,"context_line":"            data \u003d keystone.projects.get(project_id).__dict__"},{"line_number":89,"context_line":"        except Exception:"},{"line_number":90,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":91,"context_line":"        parent_id \u003d None"},{"line_number":92,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_055c6917","line":89,"updated":"2015-05-31 09:52:00.000000000","message":"change this exception for a exception.Forbidden","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                   project_id\u003dproject_id)"},{"line_number":87,"context_line":"        try:"},{"line_number":88,"context_line":"            data \u003d keystone.projects.get(project_id).__dict__"},{"line_number":89,"context_line":"        except Exception:"},{"line_number":90,"context_line":"            raise webob.exc.HTTPForbidden()"},{"line_number":91,"context_line":"        parent_id \u003d None"},{"line_number":92,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_f934114b","line":89,"in_reply_to":"7a016987_055c6917","updated":"2015-06-02 00:13:53.000000000","message":"actually this exception is for catching all those events,where the communication with keystone is unsuccessful.I will check if can use a better one.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        parent_id \u003d None"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            parent_id \u003d data[\"parent_id\"]"},{"line_number":94,"context_line":"        except Exception:"},{"line_number":95,"context_line":"            pass"},{"line_number":96,"context_line":"        return parent_id"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_e59dcdbc","line":94,"updated":"2015-05-31 09:52:00.000000000","message":"same here","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        parent_id \u003d None"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            parent_id \u003d data[\"parent_id\"]"},{"line_number":94,"context_line":"        except Exception:"},{"line_number":95,"context_line":"            pass"},{"line_number":96,"context_line":"        return parent_id"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_b93fb924","line":94,"in_reply_to":"7a016987_e59dcdbc","updated":"2015-06-02 00:13:53.000000000","message":"will check it","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"}],"nova/db/api.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":1962,"context_line":"                                               max_rows\u003dmax_rows)"},{"line_number":1963,"context_line":""},{"line_number":1964,"context_line":""},{"line_number":1965,"context_line":"def migrate_flavor_data(context, max_count, flavor_cache):"},{"line_number":1966,"context_line":"    \"\"\"Migrate instance flavor data from system_metadata to instance_extra."},{"line_number":1967,"context_line":""},{"line_number":1968,"context_line":"    :param max_count: The maximum number of instances to consider in this"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_05b3494e","line":1965,"updated":"2015-05-31 09:52:00.000000000","message":"Is this a unrelated change?","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":1962,"context_line":"                                               max_rows\u003dmax_rows)"},{"line_number":1963,"context_line":""},{"line_number":1964,"context_line":""},{"line_number":1965,"context_line":"def migrate_flavor_data(context, max_count, flavor_cache):"},{"line_number":1966,"context_line":"    \"\"\"Migrate instance flavor data from system_metadata to instance_extra."},{"line_number":1967,"context_line":""},{"line_number":1968,"context_line":"    :param max_count: The maximum number of instances to consider in this"}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_b9269914","line":1965,"in_reply_to":"7a016987_05b3494e","updated":"2015-06-02 00:13:53.000000000","message":"yes.I will rebase the code","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"    return result"},{"line_number":1286,"context_line":""},{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"@require_admin_context"},{"line_number":1289,"context_line":"def fixed_ip_get_all(context):"},{"line_number":1290,"context_line":"    result \u003d model_query(context, models.FixedIp, read_deleted\u003d\"yes\").all()"},{"line_number":1291,"context_line":"    if not result:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_6599ddc3","line":1288,"updated":"2015-05-31 09:52:00.000000000","message":"Is this unrelated change?\n\nsame comment for the others similar changes in this file.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"}],"nova/db/sqlalchemy/migrate_repo/versions/269_add_allocated_in_quotas.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"c8785548aa51c0a3ff917dd3bcdc788e1dd74819","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Intel Corporation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_e5b74cf3","line":1,"updated":"2015-01-26 16:39:55.000000000","message":"Just t make more easier the review process, I recommend create a different patches just with this sql migration and tests, I think that we don\u0027t have tests here for this scrpit.","commit_id":"df1270e216c222640ffe86d27527c2dd6a69441f"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"1e450b209f18ea9b933030ec41b2f1ce1bebfe3e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Intel Corporation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":5,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a930d6b_7d92e8f6","line":2,"updated":"2015-01-27 13:45:03.000000000","message":"the sql migration number is already in use, so you can update the number to 272.","commit_id":"1f3b7b9b05c6445c56367c5615dce220c9608159"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"70fa416af3fb27886ff2fdbc7004fe1ff0d1f6b6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Intel Corporation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":5,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_891ab96c","line":2,"in_reply_to":"1a930d6b_7d92e8f6","updated":"2015-01-28 10:39:41.000000000","message":"Yes,I have noticed it.I will change it","commit_id":"1f3b7b9b05c6445c56367c5615dce220c9608159"}],"nova/exception.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2931d5e9424b5b0c10e6a904bc19780f1127963a","unresolved":false,"context_lines":[{"line_number":621,"context_line":""},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"class InvalidParent(Invalid):"},{"line_number":624,"context_line":"    msg_fmt \u003d _(\"Project %(parent_id) is not a valid parent of the\\"},{"line_number":625,"context_line":"              child project %(project_id)\")"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_058a2964","line":624,"updated":"2015-05-31 09:52:00.000000000","message":"don\u0027t use \\, do:\n\nmsg_fmt \u003d _(\"Project %(parent_id)s is not a valid parent of the\"\n                   \" child project %(project_id)s\")","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":621,"context_line":""},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"class InvalidParent(Invalid):"},{"line_number":624,"context_line":"    msg_fmt \u003d _(\"Project %(parent_id) is not a valid parent of the\\"},{"line_number":625,"context_line":"              child project %(project_id)\")"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_197ecde4","line":624,"in_reply_to":"7a016987_058a2964","updated":"2015-06-02 00:13:53.000000000","message":"ok","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"ba0dcd4be704f8c73f90ba52d94f6de1baf2e32a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                    # at least get the core message out if something happened"},{"line_number":133,"context_line":"                    message \u003d self.msg_fmt"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        super(NovaException, self).__init__(message)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def format_message(self):"},{"line_number":138,"context_line":"        # NOTE(mrodden): use the first argument to the python Exception object"}],"source_content_type":"text/x-python","patch_set":36,"id":"3a50d1a3_303a6235","line":135,"updated":"2015-08-01 01:49:31.000000000","message":"why was this line removed?","commit_id":"9521f33c5e7e89a8750ddcbffafbeaca637290dd"}],"nova/quota.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"c8785548aa51c0a3ff917dd3bcdc788e1dd74819","unresolved":false,"context_lines":[{"line_number":61,"context_line":"               deprecated_name\u003d\u0027quota_injected_file_path_bytes\u0027,"},{"line_number":62,"context_line":"               help\u003d\u0027Length of injected file path\u0027),"},{"line_number":63,"context_line":"    # TODO(lyj): quota_injected_file_path_bytes is deprecated in Juno, and will"},{"line_number":64,"context_line":"    #            be removed in K."},{"line_number":65,"context_line":"    cfg.IntOpt(\u0027quota_security_groups\u0027,"},{"line_number":66,"context_line":"               default\u003d0,"},{"line_number":67,"context_line":"               help\u003d\u0027Number of security groups per project\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_65e27c30","line":64,"updated":"2015-01-26 16:39:55.000000000","message":"I think this is a different change. deprecated quota_injected_file_path_bytes isn\u0027t part to nested quota, I recommend creating a new patch just with this change.","commit_id":"df1270e216c222640ffe86d27527c2dd6a69441f"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"a693a508bcfa1609fd660f12f2b0ccd68793260e","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    cfg.StrOpt(\u0027quota_driver\u0027,"},{"line_number":87,"context_line":"               default\u003d\u0027nova.quota.DbQuotaDriver\u0027,"},{"line_number":88,"context_line":"               help\u003d\u0027Default driver to use for quota checks\u0027),"},{"line_number":89,"context_line":"    cfg.StrOpt(\u0027nested_quota_driver\u0027,"},{"line_number":90,"context_line":"               default\u003d\u0027nova.quota.NestedQuotaDriver\u0027,"},{"line_number":91,"context_line":"               help\u003d\u0027Driver to use for nested quota checks\u0027),"},{"line_number":92,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_aa01a76b","line":89,"updated":"2015-02-04 20:14:00.000000000","message":"I don\u0027t think we need this property, once we won\u0027t use both drivers \nsimultaneously","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"158a827d2b5faef8aa8af74a3e4cd785a10a3ac5","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    cfg.StrOpt(\u0027quota_driver\u0027,"},{"line_number":87,"context_line":"               default\u003d\u0027nova.quota.DbQuotaDriver\u0027,"},{"line_number":88,"context_line":"               help\u003d\u0027Default driver to use for quota checks\u0027),"},{"line_number":89,"context_line":"    cfg.StrOpt(\u0027nested_quota_driver\u0027,"},{"line_number":90,"context_line":"               default\u003d\u0027nova.quota.NestedQuotaDriver\u0027,"},{"line_number":91,"context_line":"               help\u003d\u0027Driver to use for nested quota checks\u0027),"},{"line_number":92,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_cc7188a9","line":89,"in_reply_to":"da86d52c_aa01a76b","updated":"2015-02-05 02:34:56.000000000","message":"Yes ...we don\u0027t use both drivers simultaneously","commit_id":"f1d92996aeaca96bf9a8aad628fe21fcd29cc5e5"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"0c70e953ad12a88087d10e43ebc6abcd97d499ca","unresolved":false,"context_lines":[{"line_number":690,"context_line":"        db.reservation_expire(context)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"class NestedQuotaDriver(object):"},{"line_number":694,"context_line":"    \"\"\"Driver to perform necessary checks to enforce nested quotas and"},{"line_number":695,"context_line":"    obtain quota information for hierarchical project."},{"line_number":696,"context_line":"    The default driver utilizes the local database."}],"source_content_type":"text/x-python","patch_set":15,"id":"7a016987_f26ec3fe","line":693,"updated":"2015-05-29 22:33:57.000000000","message":"Why not inherit from DbQuotaDriver or create a base class which has comman methods following the \"Generalization\" principle? Will help in preventing code duplication. Please let me know if I am missing anything.\n\nSo looks like only \"get_settable_quotas\" have different implementation in DbQuotaDriver and NestedQuotaDriver apart from this other methods like \nget_by_project_and_user\nget_by_project\nget_by_class\nget_defaults\nget_class_quotas\n_process_quotas\nget_user_quotas\nget_project_quotas\n_is_unlimited_value\n_sum_quota_values\n_sub_quota_values\n_get_quotas\nlimit_check\nreserve\n\nshare same code between DbQuotaDriver and NestedQuotaDriver.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"3fc4c6fd753b419da5188519feaaae5441d31550","unresolved":false,"context_lines":[{"line_number":690,"context_line":"        db.reservation_expire(context)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"class NestedQuotaDriver(object):"},{"line_number":694,"context_line":"    \"\"\"Driver to perform necessary checks to enforce nested quotas and"},{"line_number":695,"context_line":"    obtain quota information for hierarchical project."},{"line_number":696,"context_line":"    The default driver utilizes the local database."}],"source_content_type":"text/x-python","patch_set":15,"id":"fa32b979_2aac35ec","line":693,"in_reply_to":"3afb71cf_cd3081a1","updated":"2015-06-16 15:54:09.000000000","message":"vilobh, ++","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"db8686227275be46c42ab4f8c267415a2ab03b12","unresolved":false,"context_lines":[{"line_number":690,"context_line":"        db.reservation_expire(context)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"class NestedQuotaDriver(object):"},{"line_number":694,"context_line":"    \"\"\"Driver to perform necessary checks to enforce nested quotas and"},{"line_number":695,"context_line":"    obtain quota information for hierarchical project."},{"line_number":696,"context_line":"    The default driver utilizes the local database."}],"source_content_type":"text/x-python","patch_set":15,"id":"3afb71cf_cd3081a1","line":693,"in_reply_to":"5afe65bd_794ee1c2","updated":"2015-06-04 20:30:05.000000000","message":"Agreed but IMHO we shouldn\u0027t duplicate code. We can have\n\nA] \n         QuotaDriver (put common things here)\n            /               \\\nDbQuotaDriver    NestedQuotaDriver\n\nSince the common thing is in   QuotaDriver even if we deprecate DbQuotaDriver or add any new one we should be cool to expand on that.\n\nor\n\nB] \nDbQuotaDriver \n    |\n    |\nNestedQuotaDriver\n\nAnd when DbQuotaDriver is removed move the common functionality to NestedQuotaDriver\n\nI feel option A is better. But you know other problems better. So I will trust your judgement but I am just curious to understand the rational behind code duplication and nothing else.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"67012006a9fba1ab8447cb315b85c2ef6cacafa4","unresolved":false,"context_lines":[{"line_number":690,"context_line":"        db.reservation_expire(context)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"class NestedQuotaDriver(object):"},{"line_number":694,"context_line":"    \"\"\"Driver to perform necessary checks to enforce nested quotas and"},{"line_number":695,"context_line":"    obtain quota information for hierarchical project."},{"line_number":696,"context_line":"    The default driver utilizes the local database."}],"source_content_type":"text/x-python","patch_set":15,"id":"5afe65bd_794ee1c2","line":693,"in_reply_to":"7a016987_f26ec3fe","updated":"2015-06-02 00:13:53.000000000","message":"NestedQuotaDriver is supposed to become the default quota driver and finally DbQuotaDriver will be removed.","commit_id":"0dd15df6e8205875591cf57a8436e68a16a51535"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"ba0dcd4be704f8c73f90ba52d94f6de1baf2e32a","unresolved":false,"context_lines":[{"line_number":873,"context_line":"        \"\"\"This function stores the default quota of the root project."},{"line_number":874,"context_line":"        This is necessary because, for nested quota ,default quota of"},{"line_number":875,"context_line":"        the root project needs to be stored in the database,when the"},{"line_number":876,"context_line":"        quota is allocated to any one its subproject for the first"},{"line_number":877,"context_line":"        time."},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"        :param context: The request context, for access checks."}],"source_content_type":"text/x-python","patch_set":36,"id":"3a50d1a3_f01abac5","line":876,"updated":"2015-08-01 01:49:31.000000000","message":"Can you please add an some lines here to explain why do you have to store the default quota values?","commit_id":"9521f33c5e7e89a8750ddcbffafbeaca637290dd"}],"nova/tests/functional/api_samples/os-quota-sets/quotas-show-defaults-get-resp.json.tpl":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"8a42ef965abbabd29331b71ae69705644a907407","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"da86d52c_37185b84","updated":"2015-01-31 13:45:38.000000000","message":"thought this files would be included in previous commit?","commit_id":"d7f5109877e4127119368c053935e28a0099c6a5"},{"author":{"_account_id":11057,"name":"sajeesh cs","email":"sajeesh.cs@cern.ch","username":"sajeeshcs"},"change_message_id":"b79e4efc29bc49abc371c7b5e7b0057a3a65769d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"da86d52c_8b99db70","in_reply_to":"da86d52c_37185b84","updated":"2015-02-01 04:31:56.000000000","message":"You are right .I will change it","commit_id":"d7f5109877e4127119368c053935e28a0099c6a5"}]}
