)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"7019943b0ddbb722fa6979d63617e3e939a2846c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Right now qos_specs_id is only shown to an admin user"},{"line_number":10,"context_line":"when showing a volume type. This patch changes that to"},{"line_number":11,"context_line":"be based on policy to allow for more flexibility."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I4e6e99b8992b6941ba247bee90493cc2adba7f0b"},{"line_number":14,"context_line":"Closes-bug: #1512876"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa80f949_4eb439d0","line":12,"updated":"2015-11-05 17:53:26.000000000","message":"Pretty sure this needs an API Impact since it\u0027s modifying files in /cinder/api/.","commit_id":"f9217e607fde7a81e92febeb779c3def53b87b8a"}],"cinder/api/v2/types.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b9edca45c9ad5cdbba1b3ac25ac2d9e0e90dd042","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    _view_builder_class \u003d views_types.ViewBuilder"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _validate_policy(self, context, action):"},{"line_number":64,"context_line":"        target \u003d {"},{"line_number":65,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":66,"context_line":"            \u0027user_id\u0027: context.user_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_2d9fb1b5","line":63,"updated":"2015-11-04 16:06:44.000000000","message":"you are passing in action, but overwriting it in the try catch.","commit_id":"fb5e780a1b02ad59948dcfedd403bee5f980cf05"},{"author":{"_account_id":4159,"name":"Cory Stone","email":"corystone@gmail.com","username":"corystone"},"change_message_id":"39058b97bff8e4c8bf1874ae231d91336913cade","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            \u0027user_id\u0027: context.user_id,"},{"line_number":67,"context_line":"        }"},{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            action \u003d \u0027volume_extension:access_types_extra_specs\u0027"},{"line_number":70,"context_line":"            cinder.policy.enforce(context, action, target)"},{"line_number":71,"context_line":"            return True"},{"line_number":72,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_2acb1720","line":69,"updated":"2015-11-04 16:01:57.000000000","message":"This is supposed to be passed in.","commit_id":"fb5e780a1b02ad59948dcfedd403bee5f980cf05"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"15bfa61980bfc412c70195eeefd4b9dc6118b45c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            \u0027user_id\u0027: context.user_id,"},{"line_number":67,"context_line":"        }"},{"line_number":68,"context_line":"        try:"},{"line_number":69,"context_line":"            action \u003d \u0027volume_extension:access_types_extra_specs\u0027"},{"line_number":70,"context_line":"            cinder.policy.enforce(context, action, target)"},{"line_number":71,"context_line":"            return True"},{"line_number":72,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_0d898d26","line":69,"in_reply_to":"fa80f949_2acb1720","updated":"2015-11-04 16:13:27.000000000","message":"Oh dang sorry, I missed that going through it.","commit_id":"fb5e780a1b02ad59948dcfedd403bee5f980cf05"},{"author":{"_account_id":4159,"name":"Cory Stone","email":"corystone@gmail.com","username":"corystone"},"change_message_id":"39058b97bff8e4c8bf1874ae231d91336913cade","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            (self._validate_policy(context,"},{"line_number":89,"context_line":"             \u0027volume_extension:access_types_extra_specs\u0027) or"},{"line_number":90,"context_line":"             self._validate_policy(context,"},{"line_number":91,"context_line":"             \u0027volume_extension:access_types_qos_specs_id\u0027))):"},{"line_number":92,"context_line":"            context \u003d ctx.get_admin_context()"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        # get default volume type"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_aafe2736","line":91,"updated":"2015-11-04 16:01:57.000000000","message":"This patch just makes these two policy checks behave the same. I\u0027m not sure that\u0027s what you were after.","commit_id":"fb5e780a1b02ad59948dcfedd403bee5f980cf05"},{"author":{"_account_id":4159,"name":"Cory Stone","email":"corystone@gmail.com","username":"corystone"},"change_message_id":"39058b97bff8e4c8bf1874ae231d91336913cade","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            (self._validate_policy(context,"},{"line_number":136,"context_line":"             \u0027volume_extension:access_types_extra_specs\u0027) or"},{"line_number":137,"context_line":"             self._validate_policy(context,"},{"line_number":138,"context_line":"             \u0027volume_extension:access_types_qos_specs_id\u0027))):"},{"line_number":139,"context_line":"            context \u003d ctx.get_admin_context()"},{"line_number":140,"context_line":"        if context.is_admin:"},{"line_number":141,"context_line":"            # Only admin has query access to all volume types"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_0a641320","line":138,"updated":"2015-11-04 16:01:57.000000000","message":"Same as above. It\u0027s just adding another policy that behaves exactly like admin.","commit_id":"fb5e780a1b02ad59948dcfedd403bee5f980cf05"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"4c65e68e757c2701bc4231d5bd2403c30b68fc30","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        \"\"\"Helper function that returns a list of type dicts.\"\"\""},{"line_number":128,"context_line":"        filters \u003d {}"},{"line_number":129,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":130,"context_line":"        if not context.is_admin and self._validate_policy(context):"},{"line_number":131,"context_line":"            context \u003d ctx.get_admin_context()"},{"line_number":132,"context_line":"        if context.is_admin:"},{"line_number":133,"context_line":"            # Only admin has query access to all volume types"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_02deefdc","side":"PARENT","line":130,"updated":"2015-11-06 07:14:39.000000000","message":"Why do you remove this policy validation? Does that mean if the policy is right, i can not access all volume types?\nSeems you have changed the behaviour what it is before.","commit_id":"321c9c901d3b456c188a5e76f4dd102bdde2c0d8"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"8e431530c973c72cdbd1a850929f913f325c7c1e","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        \"\"\"Helper function that returns a list of type dicts.\"\"\""},{"line_number":128,"context_line":"        filters \u003d {}"},{"line_number":129,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":130,"context_line":"        if not context.is_admin and self._validate_policy(context):"},{"line_number":131,"context_line":"            context \u003d ctx.get_admin_context()"},{"line_number":132,"context_line":"        if context.is_admin:"},{"line_number":133,"context_line":"            # Only admin has query access to all volume types"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_dee991b8","side":"PARENT","line":130,"in_reply_to":"fa80f949_02deefdc","updated":"2015-11-06 14:54:30.000000000","message":"I moved all policy validation to cinder/api/v2/views/types.py. This way, instead of just giving the user the admin context if one of the policys is validated, I can check the policy for extra_specs and qos_specs_id separately. If I left it here, if the user was supposed to be validated for one instead of the other, they would still pass and get admin context, granting them the ability to see both. Viewing all volume types is not something that is granted  by policy here, it\u0027s actually only something the admin user gets, so it\u0027s okay to remove these lines of code.","commit_id":"321c9c901d3b456c188a5e76f4dd102bdde2c0d8"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"533255e58923d28cd72f2bc4d5d3c8e3d3103ee8","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        \"\"\"Helper function that returns a list of type dicts.\"\"\""},{"line_number":128,"context_line":"        filters \u003d {}"},{"line_number":129,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":130,"context_line":"        if not context.is_admin and self._validate_policy(context):"},{"line_number":131,"context_line":"            context \u003d ctx.get_admin_context()"},{"line_number":132,"context_line":"        if context.is_admin:"},{"line_number":133,"context_line":"            # Only admin has query access to all volume types"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_ddd5aeb9","side":"PARENT","line":130,"in_reply_to":"fa80f949_dee991b8","updated":"2015-11-07 07:04:41.000000000","message":"Thanks for the details. Got you.","commit_id":"321c9c901d3b456c188a5e76f4dd102bdde2c0d8"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"cb596b047f91d50286a86a0982801e55fb76b9c6","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            req.cache_resource(vol_type, name\u003d\u0027types\u0027)"},{"line_number":81,"context_line":"        else:"},{"line_number":82,"context_line":"            try:"},{"line_number":83,"context_line":"                vol_type \u003d volume_types.get_volume_type(context, id)"},{"line_number":84,"context_line":"                req.cache_resource(vol_type, name\u003d\u0027types\u0027)"},{"line_number":85,"context_line":"            except exception.VolumeTypeNotFound as error:"},{"line_number":86,"context_line":"                raise exc.HTTPNotFound(explanation\u003derror.msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_d55dd547","line":83,"updated":"2015-11-19 08:45:32.000000000","message":"Do we still need to elevate `context \u003d ctx.get_admin_context()` here if `self._validate_policy(context) \u003d\u003d True`?","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"dd2626ca3092aa8ac4ce786d4d42344e1125a96f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            req.cache_resource(vol_type, name\u003d\u0027types\u0027)"},{"line_number":81,"context_line":"        else:"},{"line_number":82,"context_line":"            try:"},{"line_number":83,"context_line":"                vol_type \u003d volume_types.get_volume_type(context, id)"},{"line_number":84,"context_line":"                req.cache_resource(vol_type, name\u003d\u0027types\u0027)"},{"line_number":85,"context_line":"            except exception.VolumeTypeNotFound as error:"},{"line_number":86,"context_line":"                raise exc.HTTPNotFound(explanation\u003derror.msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_d0a4ea4b","line":83,"in_reply_to":"ba8a016a_d55dd547","updated":"2015-11-19 16:46:01.000000000","message":"No, that logic was actually added by me in this recent patch - https://review.openstack.org/#/c/237075/6/cinder/api/v2/types.py - but in making it correctly handle qos-specs-id as well I moved all of this logic into cinder.api.v2.views.types.","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"}],"cinder/api/v2/views/types.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"cb596b047f91d50286a86a0982801e55fb76b9c6","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ViewBuilder(common.ViewBuilder):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def _validate_policy(self, context, action):"},{"line_number":24,"context_line":"        target \u003d {"},{"line_number":25,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":26,"context_line":"            \u0027user_id\u0027: context.user_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_55c325ed","line":23,"updated":"2015-11-19 08:45:32.000000000","message":"_validate_policy seems to be a common method. Would you put it into the place for common utils?","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"04317bff35d6a68a5f9f821bf0cef21af1139d7c","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ViewBuilder(common.ViewBuilder):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def _validate_policy(self, context, action):"},{"line_number":24,"context_line":"        target \u003d {"},{"line_number":25,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":26,"context_line":"            \u0027user_id\u0027: context.user_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_e3cdb531","line":23,"in_reply_to":"ba8a016a_53432413","updated":"2015-12-16 06:26:42.000000000","message":"I think that\u0027s OK.","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"dd2626ca3092aa8ac4ce786d4d42344e1125a96f","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ViewBuilder(common.ViewBuilder):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def _validate_policy(self, context, action):"},{"line_number":24,"context_line":"        target \u003d {"},{"line_number":25,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":26,"context_line":"            \u0027user_id\u0027: context.user_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_53432413","line":23,"in_reply_to":"ba8a016a_55c325ed","updated":"2015-11-19 16:46:01.000000000","message":"Do you mean I should move this function to cinder.api.common?","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"cb596b047f91d50286a86a0982801e55fb76b9c6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        try:"},{"line_number":29,"context_line":"            cinder.policy.enforce(context, action, target)"},{"line_number":30,"context_line":"            return True"},{"line_number":31,"context_line":"        except Exception:"},{"line_number":32,"context_line":"            return False"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def show(self, request, volume_type, context, brief\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_15b91d79","line":31,"updated":"2015-11-19 08:45:32.000000000","message":"Exception is a bit broad, can we just catch PolicyNotAuthorized?","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"dd2626ca3092aa8ac4ce786d4d42344e1125a96f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        try:"},{"line_number":29,"context_line":"            cinder.policy.enforce(context, action, target)"},{"line_number":30,"context_line":"            return True"},{"line_number":31,"context_line":"        except Exception:"},{"line_number":32,"context_line":"            return False"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def show(self, request, volume_type, context, brief\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_11dfd1d9","line":31,"in_reply_to":"ba8a016a_15b91d79","updated":"2015-11-19 16:46:01.000000000","message":"Done","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"cb596b047f91d50286a86a0982801e55fb76b9c6","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def show(self, request, volume_type, context, brief\u003dFalse):"},{"line_number":35,"context_line":"        \"\"\"Trim away extraneous volume type attributes.\"\"\""},{"line_number":36,"context_line":"        context \u003d request.environ[\u0027cinder.context\u0027]"},{"line_number":37,"context_line":"        trimmed \u003d dict(id\u003dvolume_type.get(\u0027id\u0027),"},{"line_number":38,"context_line":"                       name\u003dvolume_type.get(\u0027name\u0027),"},{"line_number":39,"context_line":"                       is_public\u003dvolume_type.get(\u0027is_public\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_e324e6c5","line":36,"updated":"2015-11-19 08:45:32.000000000","message":"It looks like the parameter `context` passed in is never used.","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"dd2626ca3092aa8ac4ce786d4d42344e1125a96f","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def show(self, request, volume_type, context, brief\u003dFalse):"},{"line_number":35,"context_line":"        \"\"\"Trim away extraneous volume type attributes.\"\"\""},{"line_number":36,"context_line":"        context \u003d request.environ[\u0027cinder.context\u0027]"},{"line_number":37,"context_line":"        trimmed \u003d dict(id\u003dvolume_type.get(\u0027id\u0027),"},{"line_number":38,"context_line":"                       name\u003dvolume_type.get(\u0027name\u0027),"},{"line_number":39,"context_line":"                       is_public\u003dvolume_type.get(\u0027is_public\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_31da15e9","line":36,"in_reply_to":"ba8a016a_e324e6c5","updated":"2015-11-19 16:46:01.000000000","message":"Done","commit_id":"e3b0a2c1234695551323d1bfc1470298e6b95e8e"},{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"e66a60ad95934ee6d4c9468d83e87d504cc3e2a8","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def index(self, request, volume_types):"},{"line_number":55,"context_line":"        \"\"\"Index over trimmed volume types.\"\"\""},{"line_number":56,"context_line":"        context \u003d request.environ[\u0027cinder.context\u0027]"},{"line_number":57,"context_line":"        volume_types_list \u003d [self.show(request, volume_type, True)"},{"line_number":58,"context_line":"                             for volume_type in volume_types]"},{"line_number":59,"context_line":"        return dict(volume_types\u003dvolume_types_list)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_0f9b1a67","line":56,"updated":"2015-11-19 23:49:17.000000000","message":"\u0027context\u0027 is assigned a value here but it is not used anywhere in this function.\n\nIs there a reason it is being set here?","commit_id":"73a5f86160199229d7249da5ffafea766bf5ec56"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"a437a327737e991efac3533f6cd9d8e95cbd7813","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def index(self, request, volume_types):"},{"line_number":55,"context_line":"        \"\"\"Index over trimmed volume types.\"\"\""},{"line_number":56,"context_line":"        context \u003d request.environ[\u0027cinder.context\u0027]"},{"line_number":57,"context_line":"        volume_types_list \u003d [self.show(request, volume_type, True)"},{"line_number":58,"context_line":"                             for volume_type in volume_types]"},{"line_number":59,"context_line":"        return dict(volume_types\u003dvolume_types_list)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_4ac03050","line":56,"in_reply_to":"ba8a016a_0f9b1a67","updated":"2015-11-20 00:17:39.000000000","message":"Sorry, took it out - it used to be passed in to self.show later on and when I took that out I missed removing this as well.","commit_id":"73a5f86160199229d7249da5ffafea766bf5ec56"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"f88f13e681618244c82cb7e6a17a4b3ad8a3b0f4","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ViewBuilder(common.ViewBuilder):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def _validate_policy(self, context, action):"},{"line_number":25,"context_line":"        target \u003d {"},{"line_number":26,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":27,"context_line":"            \u0027user_id\u0027: context.user_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a8ffd7b_03e559a6","line":24,"updated":"2015-11-27 16:08:47.000000000","message":"validate_policy seems to be a common method. Would you put it into  somewhere such as cinder.api.common?","commit_id":"4daf6ad9c369b82664082f35c167f250309f0222"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"caefe44ad085ecfe4aefcc9cd1fce99b5b54ab46","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ViewBuilder(common.ViewBuilder):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def _validate_policy(self, context, action):"},{"line_number":25,"context_line":"        target \u003d {"},{"line_number":26,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":27,"context_line":"            \u0027user_id\u0027: context.user_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_b89e9d61","line":24,"in_reply_to":"9a8ffd7b_03e559a6","updated":"2015-12-09 22:13:24.000000000","message":"sure that makes sense I\u0027ll make that change","commit_id":"4daf6ad9c369b82664082f35c167f250309f0222"}],"etc/cinder/policy.json":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"bb7ff0c901394d7907f95f37533073808215a273","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \"volume_extension:types_manage\": \"rule:admin_api\","},{"line_number":27,"context_line":"    \"volume_extension:types_extra_specs\": \"rule:admin_api\","},{"line_number":28,"context_line":"    \"volume_extension:access_type_qos_specs_id\": \"rule:admin_api\","},{"line_number":29,"context_line":"    \"volume_extension:access_type_extra_specs\": \"rule:admin_api\","},{"line_number":30,"context_line":"    \"volume_extension:volume_type_access\": \"rule:admin_or_owner\","},{"line_number":31,"context_line":"    \"volume_extension:volume_type_access:addProjectAccess\": \"rule:admin_api\","},{"line_number":32,"context_line":"    \"volume_extension:volume_type_access:removeProjectAccess\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":4,"id":"ba8a016a_333735b2","line":29,"updated":"2015-11-16 18:14:57.000000000","message":"isn\u0027t changing the name of this a break with backwards compatibility?","commit_id":"696b9a102aee07a754fd6133240bb828d3f5b2b0"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"527c07eb7e29efa0c504933fc0a4e1d9b37bdd41","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \"volume_extension:types_manage\": \"rule:admin_api\","},{"line_number":27,"context_line":"    \"volume_extension:types_extra_specs\": \"rule:admin_api\","},{"line_number":28,"context_line":"    \"volume_extension:access_type_qos_specs_id\": \"rule:admin_api\","},{"line_number":29,"context_line":"    \"volume_extension:access_type_extra_specs\": \"rule:admin_api\","},{"line_number":30,"context_line":"    \"volume_extension:volume_type_access\": \"rule:admin_or_owner\","},{"line_number":31,"context_line":"    \"volume_extension:volume_type_access:addProjectAccess\": \"rule:admin_api\","},{"line_number":32,"context_line":"    \"volume_extension:volume_type_access:removeProjectAccess\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":4,"id":"ba8a016a_6edb961c","line":29,"in_reply_to":"ba8a016a_333735b2","updated":"2015-11-16 18:58:23.000000000","message":"Yes sorry, I just added it a week ago so I doubt it\u0027s being used yet but I\u0027ll change that back.","commit_id":"696b9a102aee07a754fd6133240bb828d3f5b2b0"}]}
