)]}'
{"nova/api/openstack/compute/volumes.py":[{"author":{"_account_id":13637,"name":"Divya K Konoor","email":"dikonoor@in.ibm.com","username":"dikonoor"},"change_message_id":"450a76b8e147993b3e6f1765c6570686bf5f8e02","unresolved":false,"context_lines":[{"line_number":265,"context_line":"    def index(self, req, server_id):"},{"line_number":266,"context_line":"        \"\"\"Returns the list of volume attachments for a given instance.\"\"\""},{"line_number":267,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":268,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":269,"context_line":"        return self._items(req, server_id,"},{"line_number":270,"context_line":"                           entity_maker\u003d_translate_attachment_summary_view)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_1107251d","side":"PARENT","line":268,"updated":"2016-10-23 18:21:12.000000000","message":"This should remain and should not be removed. This corresponds to the new rule.","commit_id":"d049be9dcda30378b31c723897d7d71c08f8fea6"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"371d80258c1faa145d28a5da52c25b43d71ba430","unresolved":false,"context_lines":[{"line_number":265,"context_line":"    def index(self, req, server_id):"},{"line_number":266,"context_line":"        \"\"\"Returns the list of volume attachments for a given instance.\"\"\""},{"line_number":267,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":268,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":269,"context_line":"        return self._items(req, server_id,"},{"line_number":270,"context_line":"                           entity_maker\u003d_translate_attachment_summary_view)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_6f8788d7","side":"PARENT","line":268,"in_reply_to":"da6895a0_1107251d","updated":"2016-10-24 12:58:50.000000000","message":"I didn\u0027t remove this, I just moved it into _items() to be more consistent with the other classes in this file and so that it\u0027s in a common place if that method ever gets called from another path.","commit_id":"d049be9dcda30378b31c723897d7d71c08f8fea6"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"62c0586f5ee04b04c7fefef6a2afabb741432294","unresolved":false,"context_lines":[{"line_number":265,"context_line":"    def index(self, req, server_id):"},{"line_number":266,"context_line":"        \"\"\"Returns the list of volume attachments for a given instance.\"\"\""},{"line_number":267,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":268,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":269,"context_line":"        return self._items(req, server_id,"},{"line_number":270,"context_line":"                           entity_maker\u003d_translate_attachment_summary_view)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da6895a0_988c2381","side":"PARENT","line":268,"in_reply_to":"da6895a0_6f8788d7","updated":"2016-10-24 14:50:49.000000000","message":"actually I was wrong, you were right... the check I\u0027d made in _items was different (and doesn\u0027t actually work).","commit_id":"d049be9dcda30378b31c723897d7d71c08f8fea6"},{"author":{"_account_id":13637,"name":"Divya K Konoor","email":"dikonoor@in.ibm.com","username":"dikonoor"},"change_message_id":"d80ccf2c463a0c4bfe6497cc3e1b373e358f4a08","unresolved":false,"context_lines":[{"line_number":470,"context_line":"    def _items(self, req, server_id, entity_maker):"},{"line_number":471,"context_line":"        \"\"\"Returns a list of attachments, transformed through entity_maker.\"\"\""},{"line_number":472,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":473,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_66131bb9","line":473,"updated":"2016-10-31 16:23:31.000000000","message":"I think it\u0027s better to put this rule directly into the index method for better readability. It\u0027s easier for the eye to figure out the rule by putting it there. This helper method is anyway used only by the index method.","commit_id":"1e5b338b12bacb0bc8a9ea7c8ace3df1cdff9dbd"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"0ea9b51f3972d626f02f8e18678c90b34615dbcf","unresolved":false,"context_lines":[{"line_number":470,"context_line":"    def _items(self, req, server_id, entity_maker):"},{"line_number":471,"context_line":"        \"\"\"Returns a list of attachments, transformed through entity_maker.\"\"\""},{"line_number":472,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":473,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_dc42f63d","line":473,"in_reply_to":"ba5da102_66131bb9","updated":"2016-10-31 17:06:01.000000000","message":"that\u0027s not how the rest of the file works. This is one of 3 _items methods for different classes, and they each do it this way, so I have as well for consistency. Also, doing it elsewhere would require changing the _items method signature to take a context since that would still be necessary for the following call. I think this could use some refactoring, but I didn\u0027t want to take that on under this commit.","commit_id":"1e5b338b12bacb0bc8a9ea7c8ace3df1cdff9dbd"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a9692d2c7c12d3e0acad83ec9281e983f6a365af","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    @extensions.expected_errors(404)"},{"line_number":265,"context_line":"    def index(self, req, server_id):"},{"line_number":266,"context_line":"        \"\"\"Returns the list of volume attachments for a given instance.\"\"\""},{"line_number":267,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":268,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":269,"context_line":"        return self._items(req, server_id,"},{"line_number":270,"context_line":"                           entity_maker\u003d_translate_attachment_summary_view)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba2be162_292ca6aa","side":"PARENT","line":268,"range":{"start_line":267,"start_character":0,"end_line":268,"end_character":54},"updated":"2017-03-02 11:35:19.000000000","message":"Can\u0027t we just leave this here?","commit_id":"53b46aa7942652a6674b90f8cbd3851c97ce8b54"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"af0ab838e0ac27d81a1dbe04c7ae171361765bce","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    @extensions.expected_errors(404)"},{"line_number":265,"context_line":"    def index(self, req, server_id):"},{"line_number":266,"context_line":"        \"\"\"Returns the list of volume attachments for a given instance.\"\"\""},{"line_number":267,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":268,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":269,"context_line":"        return self._items(req, server_id,"},{"line_number":270,"context_line":"                           entity_maker\u003d_translate_attachment_summary_view)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_bb7296ab","side":"PARENT","line":268,"range":{"start_line":267,"start_character":0,"end_line":268,"end_character":54},"in_reply_to":"1a1ced50_82b686da","updated":"2017-03-20 17:34:36.000000000","message":"In my view those others are incorrect. We want the policy check at the top level of the API, whenever that is possible.","commit_id":"53b46aa7942652a6674b90f8cbd3851c97ce8b54"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"cb4e5cddfdac1bbef2d598894bddfa6d23101340","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    @extensions.expected_errors(404)"},{"line_number":265,"context_line":"    def index(self, req, server_id):"},{"line_number":266,"context_line":"        \"\"\"Returns the list of volume attachments for a given instance.\"\"\""},{"line_number":267,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":268,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":269,"context_line":"        return self._items(req, server_id,"},{"line_number":270,"context_line":"                           entity_maker\u003d_translate_attachment_summary_view)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_82b686da","side":"PARENT","line":268,"range":{"start_line":267,"start_character":0,"end_line":268,"end_character":54},"in_reply_to":"ba2be162_292ca6aa","updated":"2017-03-17 20:57:13.000000000","message":"This was removed for consistency with the methods of the same name in VolumeController, and because the _items method needs context as well so why setup that var twice. But I can just get rid of the _items method and move it\u0027s logic up here since it\u0027s not really needed (only called in this one place, and it\u0027s silly to have a one line method to call a different method that is never called anywhere else).","commit_id":"53b46aa7942652a6674b90f8cbd3851c97ce8b54"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a9692d2c7c12d3e0acad83ec9281e983f6a365af","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    def show(self, req, server_id, id):"},{"line_number":274,"context_line":"        \"\"\"Return data about the given volume attachment.\"\"\""},{"line_number":275,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":276,"context_line":"        context.can(vol_policies.BASE_POLICY_NAME)"},{"line_number":277,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027show\u0027)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        volume_id \u003d id"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba2be162_cc14f845","side":"PARENT","line":276,"updated":"2017-03-02 11:35:19.000000000","message":"I need to go dig and workout what this means.\n\nI am tempted by what alex is saying, but maybe that doesn\u0027t apply here.","commit_id":"53b46aa7942652a6674b90f8cbd3851c97ce8b54"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"af0ab838e0ac27d81a1dbe04c7ae171361765bce","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    def show(self, req, server_id, id):"},{"line_number":274,"context_line":"        \"\"\"Return data about the given volume attachment.\"\"\""},{"line_number":275,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":276,"context_line":"        context.can(vol_policies.BASE_POLICY_NAME)"},{"line_number":277,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027show\u0027)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        volume_id \u003d id"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_7bbe5ed5","side":"PARENT","line":276,"in_reply_to":"1a1ced50_ad0ff3df","updated":"2017-03-20 17:34:36.000000000","message":"I am really proposing we do this for one cycle, to help across the upgrade. Agreed thats a bad default long term.\n\nYeah, I guess we are broken both ways. We need better ways to deal with this longer term.","commit_id":"53b46aa7942652a6674b90f8cbd3851c97ce8b54"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"cb4e5cddfdac1bbef2d598894bddfa6d23101340","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    def show(self, req, server_id, id):"},{"line_number":274,"context_line":"        \"\"\"Return data about the given volume attachment.\"\"\""},{"line_number":275,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":276,"context_line":"        context.can(vol_policies.BASE_POLICY_NAME)"},{"line_number":277,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027show\u0027)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        volume_id \u003d id"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_ad0ff3df","side":"PARENT","line":276,"in_reply_to":"ba2be162_8c9a0062","updated":"2017-03-17 20:57:13.000000000","message":"One problem with that is that vol_policies.BASE_POLICY_NAME isn\u0027t necessarily what we want the default to be for va_policies.POLICY_ROOT % \u0027show\u0027 going forward.\n\nKeep in mind that the vol_policies API is deprecated. Non-deprecated code shouldn\u0027t be referring to something that\u0027s deprecated. That\u0027s bound to lead to problems in the future.\n\nAnd the only case where changing the default like that would help is if someone was using the default for va_policies.POLICY_ROOT % \u0027show\u0027 but had customized vol_policies.BASE_POLICY_NAME to block someone that the default for va_policies.POLICY_ROOT % \u0027show\u0027 would have allowed. That seems like an extremely unlikely case. Folks will likely have customized both or neither.\n\nAnd there would still be an (unlikely) possible upgrade impact if someone has customized va_policies.POLICY_ROOT % \u0027show\u0027 (so the default is irrelevant) but was still relying on differently-customized vol_policies.BASE_POLICY_NAME to block things.","commit_id":"53b46aa7942652a6674b90f8cbd3851c97ce8b54"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f0cdee692adf735a50e525602d3f5ca007e0eede","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    def show(self, req, server_id, id):"},{"line_number":274,"context_line":"        \"\"\"Return data about the given volume attachment.\"\"\""},{"line_number":275,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":276,"context_line":"        context.can(vol_policies.BASE_POLICY_NAME)"},{"line_number":277,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027show\u0027)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        volume_id \u003d id"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba2be162_8c9a0062","side":"PARENT","line":276,"in_reply_to":"ba2be162_cc14f845","updated":"2017-03-02 11:39:31.000000000","message":"So a possible idea...\n\nCan we make (va_policies.POLICY_ROOT % \u0027show\u0027) default to vol_policies.BASE_POLICY_NAME?\n\nThat could stop some of the upgrade worries here.\n\nWould that break anything?","commit_id":"53b46aa7942652a6674b90f8cbd3851c97ce8b54"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a9692d2c7c12d3e0acad83ec9281e983f6a365af","unresolved":false,"context_lines":[{"line_number":471,"context_line":"    def _items(self, req, server_id, entity_maker):"},{"line_number":472,"context_line":"        \"\"\"Returns a list of attachments, transformed through entity_maker.\"\"\""},{"line_number":473,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":474,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":477,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba2be162_4c5f28e5","line":474,"updated":"2017-03-02 11:35:19.000000000","message":"Why is this check here? This seems really strange.\n\nI want to see all policy checks as almost the first thing we call at the API entry points.\n\nReally this policy should be around the API call, not this _items function.\n\nAm I missing something here? I could well be.","commit_id":"1fe615458474a657e02083352a24f406b3352943"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"cb4e5cddfdac1bbef2d598894bddfa6d23101340","unresolved":false,"context_lines":[{"line_number":471,"context_line":"    def _items(self, req, server_id, entity_maker):"},{"line_number":472,"context_line":"        \"\"\"Returns a list of attachments, transformed through entity_maker.\"\"\""},{"line_number":473,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":474,"context_line":"        context.can(va_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":477,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_42772e3a","line":474,"in_reply_to":"ba2be162_4c5f28e5","updated":"2017-03-17 20:57:13.000000000","message":"in general I agree. I was just trying to make this a smaller and simpler change in an effort to get it in.\n\nThe VolumeController class at the top of the file created the _items method because it wanted to share that logic between both index and detail methods. They use the same policy check there, so the context stuff was all done in the _items method. It\u0027s really not needed here in VolumeAttachmentController, but someone had followed the same pattern here. I could move the logic from _items up into index and get rid of _items altogether... then these would more obviously be the first 2 lines. Or start passing context to _items, but I think getting rid of _items makes more sense.","commit_id":"1fe615458474a657e02083352a24f406b3352943"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0ae59bc0abbdde470ee363efa2e343ff79fdd0bb","unresolved":false,"context_lines":[{"line_number":474,"context_line":"            msg \u003d _(\"volume_id not found: %s\") % volume_id"},{"line_number":475,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def _items(self, req, server_id, entity_maker):"},{"line_number":478,"context_line":"        \"\"\"Returns a list of attachments, transformed through entity_maker.\"\"\""},{"line_number":479,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":480,"context_line":"        context.can(vol_policies.BASE_POLICY_NAME)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1ced50_3baa2671","side":"PARENT","line":477,"updated":"2017-03-20 17:44:18.000000000","message":"Nit: I would rather we didn\u0027t remove _items, as thats an unrelated change really. Not going to block on that though.","commit_id":"b672f35de6547b6a1856bc79b45140b0f34bf041"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a781e476fd50ef6b59e6b4d5a64d44ca7eb0f258","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def _items(self, req, server_id, entity_maker):"},{"line_number":478,"context_line":"        \"\"\"Returns a list of attachments, transformed through entity_maker.\"\"\""},{"line_number":479,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":480,"context_line":"        context.can(vol_policies.BASE_POLICY_NAME)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":483,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a1ced50_51750396","side":"PARENT","line":480,"range":{"start_line":479,"start_character":8,"end_line":480,"end_character":50},"updated":"2017-03-20 18:10:16.000000000","message":"Nit: as I said, it would make it much easier to review if you only removed these two lines here, and did the refactor as a follow up, but I am not going to block on that at this point.","commit_id":"b672f35de6547b6a1856bc79b45140b0f34bf041"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1868f042f2f89813365c6737ddff201b5a126f6a","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def _items(self, req, server_id, entity_maker):"},{"line_number":478,"context_line":"        \"\"\"Returns a list of attachments, transformed through entity_maker.\"\"\""},{"line_number":479,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":480,"context_line":"        context.can(vol_policies.BASE_POLICY_NAME)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":483,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a1ced50_51ea6310","side":"PARENT","line":480,"range":{"start_line":479,"start_character":8,"end_line":480,"end_character":50},"in_reply_to":"1a1ced50_51750396","updated":"2017-03-20 18:11:09.000000000","message":"oops, just remove the one line.","commit_id":"b672f35de6547b6a1856bc79b45140b0f34bf041"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"4b6abfd94cd36537a101f77e4b77bded69943ab0","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            msg \u003d _(\"volume_id not found: %s\") % volume_id"},{"line_number":485,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"def _translate_snapshot_detail_view(context, vol):"},{"line_number":489,"context_line":"    \"\"\"Maps keys for snapshots details view.\"\"\""},{"line_number":490,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a1ced50_c1de806c","line":487,"updated":"2017-03-20 20:08:28.000000000","message":"remove extra line here","commit_id":"4aa55f3edf453b3baba4efef4cca054f490f2d69"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"12f73d3d29ee4f8afadd8674d9c5d075189a58d2","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            msg \u003d _(\"volume_id not found: %s\") % volume_id"},{"line_number":485,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"def _translate_snapshot_detail_view(context, vol):"},{"line_number":489,"context_line":"    \"\"\"Maps keys for snapshots details view.\"\"\""},{"line_number":490,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a1ced50_c4212e4f","line":487,"in_reply_to":"1a1ced50_c1de806c","updated":"2017-03-20 20:36:58.000000000","message":"this actually isn\u0027t extra... pep8 requires an extra line here (and it\u0027s not new to this changeset).","commit_id":"4aa55f3edf453b3baba4efef4cca054f490f2d69"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1b3d3a893e4ecebb9022ae7613ff884acd43aacb","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            msg \u003d _(\"volume_id not found: %s\") % volume_id"},{"line_number":485,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"def _translate_snapshot_detail_view(context, vol):"},{"line_number":489,"context_line":"    \"\"\"Maps keys for snapshots details view.\"\"\""},{"line_number":490,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a1ced50_96af6493","line":487,"in_reply_to":"1a1ced50_c4212e4f","updated":"2017-03-21 00:11:32.000000000","message":"yeah, that is right. We need to put 2 brank lines here.","commit_id":"4aa55f3edf453b3baba4efef4cca054f490f2d69"}],"releasenotes/notes/bug-volume-attach-policy-1635358-671ce4d4ee8c211b.yaml":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0ae59bc0abbdde470ee363efa2e343ff79fdd0bb","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The os-volume_attachments APIs no longer check os-volume policy."},{"line_number":5,"context_line":"    They do still check os-volume_attachments policy. Deployers who"},{"line_number":6,"context_line":"    have customized policy should confirm that their settings for"},{"line_number":7,"context_line":"    os-volume_attachments policy checks are sufficient."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1a1ced50_5b9602f1","line":7,"updated":"2017-03-20 17:44:18.000000000","message":"Nit: its really tempting to use ``code`` statements to specify the exact names of the policy rules we are changing here.\n\nI guess its just we no longer use ``os_compute_api:os-volumes``?","commit_id":"4836688bcb7c6b3c6f5ec3404fe91cb8ca7a3e50"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a781e476fd50ef6b59e6b4d5a64d44ca7eb0f258","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    ``os_compute_api:os-volumes`` policy. They do still check"},{"line_number":6,"context_line":"    ``os_compute_api:os-volumes-attachments`` policy rules. Deployers"},{"line_number":7,"context_line":"    who have customized policy should confirm that their settings for"},{"line_number":8,"context_line":"    os-volume_attachments policy checks are sufficient."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1a1ced50_519c23c0","line":8,"updated":"2017-03-20 18:10:16.000000000","message":"Thanks, that looks better to me now.\n\nDocumenting this problem seems the best approach here, given all the options we have available right now.","commit_id":"4aa55f3edf453b3baba4efef4cca054f490f2d69"}]}
