)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"d57f4d38a1f06b42e07b55350d90f2ed84620caf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add policy check for complete attachment API action"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Re-use same policy rule as the attachment update action to"},{"line_number":10,"context_line":"prevent anyone who can read the attachment from the database"},{"line_number":11,"context_line":"to complete it (mark it as in-use)"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7f96bb07_10225b02","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":55},"updated":"2018-01-23 13:08:02.000000000","message":"I\u0027d prefer adding a new policy rule which is better for granularity and documentation.","commit_id":"08f3a03ea795c196f6da44f1323f1b347424627e"},{"author":{"_account_id":26907,"name":"Aseel Awwad","email":"aseel.awwad.ext@nokia.com","username":"aseelawwad"},"change_message_id":"cb50de8fbce7d79a5c6bfaa285f546b657d2bf7b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add policy check for complete attachment API action"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Re-use same policy rule as the attachment update action to"},{"line_number":10,"context_line":"prevent anyone who can read the attachment from the database"},{"line_number":11,"context_line":"to complete it (mark it as in-use)"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7f96bb07_3dbe4f65","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":55},"in_reply_to":"7f96bb07_10225b02","updated":"2018-01-23 14:17:35.000000000","message":"Done","commit_id":"08f3a03ea795c196f6da44f1323f1b347424627e"}],"cinder/api/v3/attachments.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"73bf6242d0822851217900e8b176124d64567afc","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        volume_ref \u003d objects.Volume.get_by_id("},{"line_number":270,"context_line":"            context,"},{"line_number":271,"context_line":"            attachment_ref.volume_id)"},{"line_number":272,"context_line":"        try:"},{"line_number":273,"context_line":"            context.authorize(attachment_policy.UPDATE_POLICY,"},{"line_number":274,"context_line":"                              target_obj\u003dattachment_ref)"},{"line_number":275,"context_line":"            attachment_ref.update({\u0027attach_status\u0027: \u0027attached\u0027})"},{"line_number":276,"context_line":"            attachment_ref.save()"},{"line_number":277,"context_line":"            volume_ref.update({\u0027status\u0027: \u0027in-use\u0027,"},{"line_number":278,"context_line":"                               \u0027attach_status\u0027: \u0027attached\u0027})"},{"line_number":279,"context_line":"            volume_ref.save()"},{"line_number":280,"context_line":"        except exception.NotAuthorized:"},{"line_number":281,"context_line":"            raise"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"def create_resource(ext_mgr):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_498e36d1","line":281,"range":{"start_line":272,"start_character":5,"end_line":281,"end_character":17},"updated":"2018-01-22 01:41:11.000000000","message":"What\u0027s the point to catch the exception and then reraise?","commit_id":"2d08de53d291b814f7b68088688446368457fe53"},{"author":{"_account_id":26907,"name":"Aseel Awwad","email":"aseel.awwad.ext@nokia.com","username":"aseelawwad"},"change_message_id":"54aa4e3866b5915f78a3a5b4da3887079e2b1719","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        volume_ref \u003d objects.Volume.get_by_id("},{"line_number":270,"context_line":"            context,"},{"line_number":271,"context_line":"            attachment_ref.volume_id)"},{"line_number":272,"context_line":"        try:"},{"line_number":273,"context_line":"            context.authorize(attachment_policy.UPDATE_POLICY,"},{"line_number":274,"context_line":"                              target_obj\u003dattachment_ref)"},{"line_number":275,"context_line":"            attachment_ref.update({\u0027attach_status\u0027: \u0027attached\u0027})"},{"line_number":276,"context_line":"            attachment_ref.save()"},{"line_number":277,"context_line":"            volume_ref.update({\u0027status\u0027: \u0027in-use\u0027,"},{"line_number":278,"context_line":"                               \u0027attach_status\u0027: \u0027attached\u0027})"},{"line_number":279,"context_line":"            volume_ref.save()"},{"line_number":280,"context_line":"        except exception.NotAuthorized:"},{"line_number":281,"context_line":"            raise"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"def create_resource(ext_mgr):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_582a7e90","line":281,"range":{"start_line":272,"start_character":5,"end_line":281,"end_character":17},"in_reply_to":"7f96bb07_498e36d1","updated":"2018-01-22 06:43:26.000000000","message":"The same logic is used in update method.","commit_id":"2d08de53d291b814f7b68088688446368457fe53"},{"author":{"_account_id":26907,"name":"Aseel Awwad","email":"aseel.awwad.ext@nokia.com","username":"aseelawwad"},"change_message_id":"74fdcae878d4c4e8a6b47e61d27f3fce875e0b84","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        volume_ref \u003d objects.Volume.get_by_id("},{"line_number":270,"context_line":"            context,"},{"line_number":271,"context_line":"            attachment_ref.volume_id)"},{"line_number":272,"context_line":"        try:"},{"line_number":273,"context_line":"            context.authorize(attachment_policy.UPDATE_POLICY,"},{"line_number":274,"context_line":"                              target_obj\u003dattachment_ref)"},{"line_number":275,"context_line":"            attachment_ref.update({\u0027attach_status\u0027: \u0027attached\u0027})"},{"line_number":276,"context_line":"            attachment_ref.save()"},{"line_number":277,"context_line":"            volume_ref.update({\u0027status\u0027: \u0027in-use\u0027,"},{"line_number":278,"context_line":"                               \u0027attach_status\u0027: \u0027attached\u0027})"},{"line_number":279,"context_line":"            volume_ref.save()"},{"line_number":280,"context_line":"        except exception.NotAuthorized:"},{"line_number":281,"context_line":"            raise"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"def create_resource(ext_mgr):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_10e1fbfc","line":281,"range":{"start_line":272,"start_character":5,"end_line":281,"end_character":17},"in_reply_to":"7f96bb07_51e6bb18","updated":"2018-01-23 13:00:44.000000000","message":"If no other exceptions will be raised and there is no need to notify that this exception may raise here, then yes there is no need to capture it. I modified the code. Thanks.","commit_id":"2d08de53d291b814f7b68088688446368457fe53"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"0fc4b4cbc0ac80fb355cc8a08b3ada1ecf971369","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        volume_ref \u003d objects.Volume.get_by_id("},{"line_number":270,"context_line":"            context,"},{"line_number":271,"context_line":"            attachment_ref.volume_id)"},{"line_number":272,"context_line":"        try:"},{"line_number":273,"context_line":"            context.authorize(attachment_policy.UPDATE_POLICY,"},{"line_number":274,"context_line":"                              target_obj\u003dattachment_ref)"},{"line_number":275,"context_line":"            attachment_ref.update({\u0027attach_status\u0027: \u0027attached\u0027})"},{"line_number":276,"context_line":"            attachment_ref.save()"},{"line_number":277,"context_line":"            volume_ref.update({\u0027status\u0027: \u0027in-use\u0027,"},{"line_number":278,"context_line":"                               \u0027attach_status\u0027: \u0027attached\u0027})"},{"line_number":279,"context_line":"            volume_ref.save()"},{"line_number":280,"context_line":"        except exception.NotAuthorized:"},{"line_number":281,"context_line":"            raise"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"def create_resource(ext_mgr):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_51e6bb18","line":281,"range":{"start_line":272,"start_character":5,"end_line":281,"end_character":17},"in_reply_to":"7f96bb07_582a7e90","updated":"2018-01-23 01:03:05.000000000","message":"No, it\u0027s not the same. The NotAuthorized is captured there because the logic can differentiate the NotAuthorized with other exceptions, but you don\u0027t need it here.","commit_id":"2d08de53d291b814f7b68088688446368457fe53"}],"cinder/policies/attachments.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"adc000d86e84d2bfd2b6b0d1c81a46151441dbb7","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":59,"context_line":"        name\u003dCOMPLETE_POLICY,"},{"line_number":60,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":61,"context_line":"        description\u003d\"Complete attachment.\","},{"line_number":62,"context_line":"        operations\u003d["},{"line_number":63,"context_line":"            {"},{"line_number":64,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_20038275","line":61,"range":{"start_line":61,"start_character":21,"end_line":61,"end_character":41},"updated":"2018-01-23 14:41:43.000000000","message":"This could be more detailed, to make it simple, we can just copy the comment of the api function here.","commit_id":"574026411f01abde27a4c70f46b75d54397e7e67"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"adc000d86e84d2bfd2b6b0d1c81a46151441dbb7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        description\u003d\"Complete attachment.\","},{"line_number":62,"context_line":"        operations\u003d["},{"line_number":63,"context_line":"            {"},{"line_number":64,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"},{"line_number":65,"context_line":"                \u0027path\u0027: \u0027/attachments/{attachment_id}\u0027"},{"line_number":66,"context_line":"            }"},{"line_number":67,"context_line":"        ]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_00abe688","line":64,"range":{"start_line":64,"start_character":27,"end_line":64,"end_character":30},"updated":"2018-01-23 14:41:43.000000000","message":"POST","commit_id":"574026411f01abde27a4c70f46b75d54397e7e67"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"adc000d86e84d2bfd2b6b0d1c81a46151441dbb7","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        operations\u003d["},{"line_number":63,"context_line":"            {"},{"line_number":64,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"},{"line_number":65,"context_line":"                \u0027path\u0027: \u0027/attachments/{attachment_id}\u0027"},{"line_number":66,"context_line":"            }"},{"line_number":67,"context_line":"        ]),"},{"line_number":68,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_0084460b","line":65,"range":{"start_line":65,"start_character":25,"end_line":65,"end_character":53},"updated":"2018-01-23 14:41:43.000000000","message":"/attachments/{attachment_id}/action (os-complete)","commit_id":"574026411f01abde27a4c70f46b75d54397e7e67"},{"author":{"_account_id":26907,"name":"Aseel Awwad","email":"aseel.awwad.ext@nokia.com","username":"aseelawwad"},"change_message_id":"46adcb045cf3bdcd47826b48676ade849b81a8e2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        operations\u003d["},{"line_number":63,"context_line":"            {"},{"line_number":64,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"},{"line_number":65,"context_line":"                \u0027path\u0027: \u0027/attachments/{attachment_id}\u0027"},{"line_number":66,"context_line":"            }"},{"line_number":67,"context_line":"        ]),"},{"line_number":68,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_ce0d2f3f","line":65,"range":{"start_line":65,"start_character":25,"end_line":65,"end_character":53},"in_reply_to":"7f96bb07_0084460b","updated":"2018-01-23 15:40:16.000000000","message":"Thanks. Can you please check it now","commit_id":"574026411f01abde27a4c70f46b75d54397e7e67"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"35d89729f51d01190fe0f3623bd3fd08665592dc","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        operations\u003d["},{"line_number":63,"context_line":"            {"},{"line_number":64,"context_line":"                \u0027method\u0027: \u0027POST\u0027,"},{"line_number":65,"context_line":"                \u0027path\u0027: \u0027/attachments/{attachment_id}/os-complete\u0027"},{"line_number":66,"context_line":"            }"},{"line_number":67,"context_line":"        ]),"},{"line_number":68,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_ab58ae89","line":65,"range":{"start_line":65,"start_character":26,"end_line":65,"end_character":65},"updated":"2018-01-24 14:55:39.000000000","message":"Sorry for not make it more clear. The previous comment is literal, That means:\n\u0027/attachments/{attachment_id}/action (os-complete)\u0027\n\nPlease refer to:\nhttps://developer.openstack.org/api-ref/block-storage/v3/#complete-attachment","commit_id":"141b7021967d286999cfc80f65ae0eb9b66b4596"},{"author":{"_account_id":26907,"name":"Aseel Awwad","email":"aseel.awwad.ext@nokia.com","username":"aseelawwad"},"change_message_id":"72f13b3a8a54f0a75467756561cb8767cc8fd9e8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        operations\u003d["},{"line_number":63,"context_line":"            {"},{"line_number":64,"context_line":"                \u0027method\u0027: \u0027POST\u0027,"},{"line_number":65,"context_line":"                \u0027path\u0027: \u0027/attachments/{attachment_id}/os-complete\u0027"},{"line_number":66,"context_line":"            }"},{"line_number":67,"context_line":"        ]),"},{"line_number":68,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f93b717_9d582357","line":65,"range":{"start_line":65,"start_character":26,"end_line":65,"end_character":65},"in_reply_to":"7f96bb07_ab58ae89","updated":"2018-01-24 15:56:26.000000000","message":"Thanks. Done","commit_id":"141b7021967d286999cfc80f65ae0eb9b66b4596"}]}
