)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cc4b239d8b250d5a76ce5d5af9beae3bc760693","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add policy granularity to the qos-specs API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add granularity to the volume_extension:qos_specs_manage"},{"line_number":10,"context_line":"policy with the addition of actions for Create/Read/Update/Delete"},{"line_number":11,"context_line":"and add unit tests to cover authorization accordingly."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I1ca996e968a273b989bea0bf3c54b47349ca47fe"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7ffa3b31_0d42d63e","line":10,"range":{"start_line":10,"start_character":47,"end_line":10,"end_character":51},"updated":"2017-04-20 16:22:21.000000000","message":"\"Get\" is more appropriate.","commit_id":"9c31d12cb92a762a1c5108029e2349d2c1b82dd2"}],"cinder/api/contrib/qos_specs_manage.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cc4b239d8b250d5a76ce5d5af9beae3bc760693","unresolved":false,"context_lines":[{"line_number":36,"context_line":"authorize_create \u003d extensions.extension_authorizer(\u0027volume\u0027,"},{"line_number":37,"context_line":"                                                   \u0027qos_specs_manage:create\u0027)"},{"line_number":38,"context_line":"authorize_read \u003d extensions.extension_authorizer(\u0027volume\u0027,"},{"line_number":39,"context_line":"                                                 \u0027qos_specs_manage:read\u0027)"},{"line_number":40,"context_line":"authorize_update \u003d extensions.extension_authorizer(\u0027volume\u0027,"},{"line_number":41,"context_line":"                                                   \u0027qos_specs_manage:update\u0027)"},{"line_number":42,"context_line":"authorize_delete \u003d extensions.extension_authorizer(\u0027volume\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_6d7cba82","line":39,"updated":"2017-04-20 16:22:21.000000000","message":"s/read/get\n\nSuggest have one for \"get\" and one for \"get_all\" to be consistent with other policies.","commit_id":"9c31d12cb92a762a1c5108029e2349d2c1b82dd2"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"e71410f3ab1df5040e0a94d9ccded8e38d782ae2","unresolved":false,"context_lines":[{"line_number":36,"context_line":"authorize_create \u003d extensions.extension_authorizer(\u0027volume\u0027,"},{"line_number":37,"context_line":"                                                   \u0027qos_specs_manage:create\u0027)"},{"line_number":38,"context_line":"authorize_read \u003d extensions.extension_authorizer(\u0027volume\u0027,"},{"line_number":39,"context_line":"                                                 \u0027qos_specs_manage:read\u0027)"},{"line_number":40,"context_line":"authorize_update \u003d extensions.extension_authorizer(\u0027volume\u0027,"},{"line_number":41,"context_line":"                                                   \u0027qos_specs_manage:update\u0027)"},{"line_number":42,"context_line":"authorize_delete \u003d extensions.extension_authorizer(\u0027volume\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_a5e04498","line":39,"in_reply_to":"7ffa3b31_6d7cba82","updated":"2017-05-03 21:15:04.000000000","message":"fixed in next patch for  (read -\u003e get/get_all)","commit_id":"9c31d12cb92a762a1c5108029e2349d2c1b82dd2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cc4b239d8b250d5a76ce5d5af9beae3bc760693","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def index(self, req):"},{"line_number":64,"context_line":"        \"\"\"Returns the list of qos_specs.\"\"\""},{"line_number":65,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":66,"context_line":"        authorize_read(context)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        params \u003d req.params.copy()"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_2d7232ae","line":66,"updated":"2017-04-20 16:22:21.000000000","message":"s/read/get_all","commit_id":"9c31d12cb92a762a1c5108029e2349d2c1b82dd2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cc4b239d8b250d5a76ce5d5af9beae3bc760693","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    def show(self, req, id):"},{"line_number":160,"context_line":"        \"\"\"Return a single qos spec item.\"\"\""},{"line_number":161,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":162,"context_line":"        authorize_read(context)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":165,"context_line":"        spec \u003d qos_specs.get_qos_specs(context, id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_cd606ed2","line":162,"updated":"2017-04-20 16:22:21.000000000","message":"s/read/get","commit_id":"9c31d12cb92a762a1c5108029e2349d2c1b82dd2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cc4b239d8b250d5a76ce5d5af9beae3bc760693","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    def associations(self, req, id):"},{"line_number":234,"context_line":"        \"\"\"List all associations of given qos specs.\"\"\""},{"line_number":235,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":236,"context_line":"        authorize_read(context)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        LOG.debug(\"Get associations for qos_spec id: %s\", id)"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_4da21efe","line":236,"updated":"2017-04-20 16:22:21.000000000","message":"s/read/get_all","commit_id":"9c31d12cb92a762a1c5108029e2349d2c1b82dd2"}],"cinder/tests/unit/policy.json":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1cc4b239d8b250d5a76ce5d5af9beae3bc760693","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"volume_extension:volume_type_encryption\": \"rule:admin_api\","},{"line_number":64,"context_line":"    \"volume_extension:volume_encryption_metadata\": \"rule:admin_or_owner\","},{"line_number":65,"context_line":"    \"volume_extension:qos_specs_manage:create\": \"rule:admin_api\","},{"line_number":66,"context_line":"    \"volume_extension:qos_specs_manage:read\": \"rule:admin_api\","},{"line_number":67,"context_line":"    \"volume_extension:qos_specs_manage:update\": \"rule:admin_api\","},{"line_number":68,"context_line":"    \"volume_extension:qos_specs_manage:delete\": \"rule:admin_api\","},{"line_number":69,"context_line":"    \"volume_extension:extended_snapshot_attributes\": \"\","}],"source_content_type":"application/json","patch_set":3,"id":"7ffa3b31_2da7d20d","line":66,"range":{"start_line":66,"start_character":39,"end_line":66,"end_character":43},"updated":"2017-04-20 16:22:21.000000000","message":"s/read/get\n\nSuggest have one policy for \"get\" and another one for \"get_all\".","commit_id":"9c31d12cb92a762a1c5108029e2349d2c1b82dd2"}]}
