)]}'
{"cinder/api/contrib/admin_actions.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"dae0b962c0814102fd3fe8504e5bc73c77323a88","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"class GroupAdminController(AdminController):"},{"line_number":335,"context_line":"    \"\"\"AdminController for generic groups.\"\"\""},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    collection \u003d \u0027groups\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_8d409509","line":334,"updated":"2016-12-08 04:27:44.000000000","message":"Hmm, I don\u0027t think we should add any new APIs under contrib.  Now I think what you have before is better.  Let me discuss with someone and get back to you.  Thanks.","commit_id":"f056119ace944673e531e3a003c75ee98de2881e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"371858efb9fac3452e63dd123ab882293f24e706","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"class GroupAdminController(AdminController):"},{"line_number":335,"context_line":"    \"\"\"AdminController for generic groups.\"\"\""},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    collection \u003d \u0027groups\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_f7b36808","line":334,"in_reply_to":"3a71b18c_8d409509","updated":"2016-12-08 22:07:44.000000000","message":"Discussed with Scott about this.  We think it\u0027s better to go back to what you have implemented in patch set 6.  We don\u0027t want to add anything to contrib any more.  Thanks.\n\nhttps://review.openstack.org/#/c/389091/6/cinder/api/v3/groups.py@60","commit_id":"f056119ace944673e531e3a003c75ee98de2881e"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c937ce3d252ce9002c7de42a6698135737fa1654","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.resource_name \u003d self.collection.rstrip(\u0027s\u0027)"},{"line_number":56,"context_line":"        self.volume_api \u003d volume.API()"},{"line_number":57,"context_line":"        self.backup_api \u003d backup.API()"},{"line_number":58,"context_line":"        self.group_api \u003d group.API()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _update(self, *args, **kwargs):"},{"line_number":61,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_44008566","line":58,"updated":"2016-12-12 14:29:35.000000000","message":"We do not want to add new APIs to contrib. This should be deleted.","commit_id":"ac95da29bcc67d0977941e3f64c58370910dddfa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5596169e9fceed425f9ec619cca7e85ea9e5cc18","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.resource_name \u003d self.collection.rstrip(\u0027s\u0027)"},{"line_number":56,"context_line":"        self.volume_api \u003d volume.API()"},{"line_number":57,"context_line":"        self.backup_api \u003d backup.API()"},{"line_number":58,"context_line":"        self.group_api \u003d group.API()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _update(self, *args, **kwargs):"},{"line_number":61,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_445c057d","line":58,"in_reply_to":"3a71b18c_44008566","updated":"2016-12-12 14:31:22.000000000","message":"+1.  This looks like left over from the previous patch.","commit_id":"ac95da29bcc67d0977941e3f64c58370910dddfa"}],"cinder/api/openstack/api_version_request.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6e2934443108cc02b8d82de90c8ba3cc321ad785","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    * 3.15 - Inject the response\u0027s `Etag` header to avoid the lost update"},{"line_number":66,"context_line":"             problem with volume metadata."},{"line_number":67,"context_line":"    * 3.16 - Add API reset status actions \u0027reset_status\u0027 to generic groups and"},{"line_number":68,"context_line":"             group snapshot."},{"line_number":69,"context_line":"\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_7a719875","line":68,"updated":"2016-12-06 05:05:55.000000000","message":"This patch only add it for groups, not group snapshots.","commit_id":"d459938b931764356766ebd23009970e9479f78a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"047407c022fcd149ac29efcf3fb8378c0882dc07","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    * 3.14 - Add group snapshot and create group from src APIs."},{"line_number":65,"context_line":"    * 3.15 - Inject the response\u0027s `Etag` header to avoid the lost update"},{"line_number":66,"context_line":"             problem with volume metadata."},{"line_number":67,"context_line":"    * 3.16 - Add API reset status actions \u0027reset_status\u0027 to generic group."},{"line_number":68,"context_line":"\"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_a858f557","line":67,"updated":"2016-12-12 22:38:32.000000000","message":"generic volume group","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"307a84c5955a933a8d00cd3c391283509073733c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    * 3.14 - Add group snapshot and create group from src APIs."},{"line_number":65,"context_line":"    * 3.15 - Inject the response\u0027s `Etag` header to avoid the lost update"},{"line_number":66,"context_line":"             problem with volume metadata."},{"line_number":67,"context_line":"    * 3.16 - Add API reset status actions \u0027reset_status\u0027 to generic group."},{"line_number":68,"context_line":"\"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_7a41310b","line":67,"in_reply_to":"1a6eadb0_a858f557","updated":"2016-12-13 07:28:56.000000000","message":"Done","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"}],"cinder/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6e2934443108cc02b8d82de90c8ba3cc321ad785","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"3.16"},{"line_number":196,"context_line":"----"},{"line_number":197,"context_line":"  Added status reset actions \u0027reset_status\u0027 to generic group and group snapshot."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a71b18c_ba67b0b5","line":197,"updated":"2016-12-06 05:05:55.000000000","message":"See comments in previous file.","commit_id":"d459938b931764356766ebd23009970e9479f78a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"047407c022fcd149ac29efcf3fb8378c0882dc07","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"3.16"},{"line_number":196,"context_line":"----"},{"line_number":197,"context_line":"  Added reset status actions \u0027reset_status\u0027 to generic group."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_e8302d0a","line":197,"updated":"2016-12-12 22:38:32.000000000","message":"generic volume group","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"307a84c5955a933a8d00cd3c391283509073733c","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"3.16"},{"line_number":196,"context_line":"----"},{"line_number":197,"context_line":"  Added reset status actions \u0027reset_status\u0027 to generic group."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_3a5ed9e9","line":197,"in_reply_to":"1a6eadb0_e8302d0a","updated":"2016-12-13 07:28:56.000000000","message":"Done","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"}],"cinder/api/v3/groups.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6e2934443108cc02b8d82de90c8ba3cc321ad785","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @wsgi.Controller.api_version(\u00273.16\u0027)"},{"line_number":59,"context_line":"    @wsgi.action(\"reset_status\")"},{"line_number":60,"context_line":"    def reset_status(self, req, id, body):"},{"line_number":61,"context_line":"        return self._reset_status(req, id, body)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _reset_status(self, req, id, body):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_1a3fc487","line":60,"updated":"2016-12-06 05:05:55.000000000","message":"I believe in the your spec you were planning to add an admin controller for this action, not adding to the existing controller which is for tenant functions.","commit_id":"d459938b931764356766ebd23009970e9479f78a"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"28b2c0d977ff90bb3f5f14846258476b73397f58","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        update_info \u003d {\u0027id\u0027: id,"},{"line_number":73,"context_line":"                       \u0027update\u0027: status}"},{"line_number":74,"context_line":"        LOG.debug(\"Updating group \u0027%(id)s\u0027 with \u0027%(update)r\u0027\", update_info)"},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            group \u003d self.group_api.get(context, id)"},{"line_number":77,"context_line":"            notifier \u003d rpc.get_notifier(\u0027genericGroupStatusUpdate\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_61d8bdf0","line":74,"updated":"2016-12-12 21:01:08.000000000","message":"This isn\u0027t consistent with the way we normally do LOG entries. It\u0027d be better to put the update info on the log line, i.e.:\nLOG.debug(\"Updating group \u0027%(id)s\u0027 with \u0027%(update)r\u0027\",\n          {\u0027id\u0027: id,\n           \u0027update\u0027: status}","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"307a84c5955a933a8d00cd3c391283509073733c","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        update_info \u003d {\u0027id\u0027: id,"},{"line_number":73,"context_line":"                       \u0027update\u0027: status}"},{"line_number":74,"context_line":"        LOG.debug(\"Updating group \u0027%(id)s\u0027 with \u0027%(update)r\u0027\", update_info)"},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            group \u003d self.group_api.get(context, id)"},{"line_number":77,"context_line":"            notifier \u003d rpc.get_notifier(\u0027genericGroupStatusUpdate\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_1a32fdf1","line":74,"in_reply_to":"1a6eadb0_61d8bdf0","updated":"2016-12-13 07:28:56.000000000","message":"hey scott, the updated_info is seperated as it will be used at different lines.","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"047407c022fcd149ac29efcf3fb8378c0882dc07","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        LOG.debug(\"Updating group \u0027%(id)s\u0027 with \u0027%(update)r\u0027\", update_info)"},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            group \u003d self.group_api.get(context, id)"},{"line_number":77,"context_line":"            notifier \u003d rpc.get_notifier(\u0027genericGroupStatusUpdate\u0027)"},{"line_number":78,"context_line":"            notifier.info(context, \u0027groups.reset_status.start\u0027,"},{"line_number":79,"context_line":"                          update_info)"},{"line_number":80,"context_line":"            self.group_api.reset_status(context, group, status)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_4b175b51","line":77,"updated":"2016-12-12 22:38:32.000000000","message":"groupStatusUpdate","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"307a84c5955a933a8d00cd3c391283509073733c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        LOG.debug(\"Updating group \u0027%(id)s\u0027 with \u0027%(update)r\u0027\", update_info)"},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            group \u003d self.group_api.get(context, id)"},{"line_number":77,"context_line":"            notifier \u003d rpc.get_notifier(\u0027genericGroupStatusUpdate\u0027)"},{"line_number":78,"context_line":"            notifier.info(context, \u0027groups.reset_status.start\u0027,"},{"line_number":79,"context_line":"                          update_info)"},{"line_number":80,"context_line":"            self.group_api.reset_status(context, group, status)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_1a1bdd73","line":77,"in_reply_to":"1a6eadb0_4b175b51","updated":"2016-12-13 07:28:56.000000000","message":"Done","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"047407c022fcd149ac29efcf3fb8378c0882dc07","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            raise"},{"line_number":86,"context_line":"        except exception.InvalidGroupStatus as error:"},{"line_number":87,"context_line":"            notifier.error(context, \u0027groups.reset_status\u0027,"},{"line_number":88,"context_line":"                           {\u0027error_message\u0027: error.message})"},{"line_number":89,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.message)"},{"line_number":90,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_aef1ddcf","line":88,"updated":"2016-12-12 22:38:32.000000000","message":"Please add id:\n\n{\u0027id\u0027: id, \u0027error_message\u0027: error.message}","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"307a84c5955a933a8d00cd3c391283509073733c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            raise"},{"line_number":86,"context_line":"        except exception.InvalidGroupStatus as error:"},{"line_number":87,"context_line":"            notifier.error(context, \u0027groups.reset_status\u0027,"},{"line_number":88,"context_line":"                           {\u0027error_message\u0027: error.message})"},{"line_number":89,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.message)"},{"line_number":90,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_fa1d4167","line":88,"in_reply_to":"1a6eadb0_aef1ddcf","updated":"2016-12-13 07:28:56.000000000","message":"Done","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"b021c36aa34103b822a0e3123c0ebc1d41b19e33","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        except exception.InvalidGroupStatus as error:"},{"line_number":89,"context_line":"            notifier.error(context, \u0027groups.reset_status\u0027,"},{"line_number":90,"context_line":"                           {\u0027error_message\u0027: error.message,"},{"line_number":91,"context_line":"                            \u0027id\u0027: id})"},{"line_number":92,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.message)"},{"line_number":93,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_16f6d6f8","line":91,"updated":"2016-12-15 12:33:45.000000000","message":"Just like group_types does, I think move the notifier to a common function is better. The new common function can be used afterwards.\nhttps://github.com/openstack/cinder/blob/master/cinder/api/v3/group_types.py#L45-L53","commit_id":"ff43b09f9ba0518c94b346a938d70299d6a6c8e7"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"12fd806c548570de2f4a709a01e90f86d126b352","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        except exception.InvalidGroupStatus as error:"},{"line_number":89,"context_line":"            notifier.error(context, \u0027groups.reset_status\u0027,"},{"line_number":90,"context_line":"                           {\u0027error_message\u0027: error.message,"},{"line_number":91,"context_line":"                            \u0027id\u0027: id})"},{"line_number":92,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.message)"},{"line_number":93,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_57b90714","line":91,"in_reply_to":"1a6eadb0_16f6d6f8","updated":"2016-12-16 03:16:56.000000000","message":"The notifier is moved to the individual function as it\u0027s already used in several different places. how do you think of this if we add the common one when the notifier is more used.","commit_id":"ff43b09f9ba0518c94b346a938d70299d6a6c8e7"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"6b4fa9cf072febd60562873dd7ae46fc014043cd","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        except exception.InvalidGroupStatus as error:"},{"line_number":89,"context_line":"            notifier.error(context, \u0027groups.reset_status\u0027,"},{"line_number":90,"context_line":"                           {\u0027error_message\u0027: error.message,"},{"line_number":91,"context_line":"                            \u0027id\u0027: id})"},{"line_number":92,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.message)"},{"line_number":93,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1a6eadb0_b70b3b7c","line":91,"in_reply_to":"1a6eadb0_57b90714","updated":"2016-12-16 03:37:47.000000000","message":"Ok，I get your point here. So maybe a follow patch to clean the duplicate code is cool.","commit_id":"ff43b09f9ba0518c94b346a938d70299d6a6c8e7"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"76b07952535b27504d39b84250cb4d1dee054cb3","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                           \u0027update\u0027: status})"},{"line_number":85,"context_line":"        except exception.GroupNotFound:"},{"line_number":86,"context_line":"            # Not found exception will be handled at the wsgi level"},{"line_number":87,"context_line":"            raise"},{"line_number":88,"context_line":"        except exception.InvalidGroupStatus as error:"},{"line_number":89,"context_line":"            notifier.error(context, \u0027groups.reset_status\u0027,"},{"line_number":90,"context_line":"                           {\u0027error_message\u0027: error.message,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_2525d1ad","line":87,"range":{"start_line":87,"start_character":11,"end_line":87,"end_character":17},"updated":"2016-12-19 16:18:53.000000000","message":"Why there\u0027s no notifier here??","commit_id":"92bbacdcef302b09d85618644e1dfc4511841274"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"cfc1acb4faa6a854034b5f50fe91492f1f105a17","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            notifier.error(context, \u0027groups.reset_status\u0027,"},{"line_number":94,"context_line":"                           {\u0027error_message\u0027: error.message,"},{"line_number":95,"context_line":"                            \u0027id\u0027: id})"},{"line_number":96,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.message)"},{"line_number":97,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @wsgi.Controller.api_version(GROUP_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_8bf3cf09","line":96,"updated":"2016-12-20 20:55:46.000000000","message":"Should change all occurrences of error.message to error.msg.  See my comments in https://review.openstack.org/#/c/389577/","commit_id":"43923c874e2583fe9edee8873e1632eb5b3cc4a9"}],"cinder/group/api.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6e2934443108cc02b8d82de90c8ba3cc321ad785","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        check_policy(context, \u0027reset_status\u0027)"},{"line_number":760,"context_line":"        if status not in c_fields.GroupStatus.ALL:"},{"line_number":761,"context_line":"            msg \u003d _(\"Group status: %s is invalid\") % status"},{"line_number":762,"context_line":"            raise exception.InvalidGroupStatus(reason\u003dmsg)"},{"line_number":763,"context_line":"        field \u003d {\u0027updated_at\u0027: timeutils.utcnow(),"},{"line_number":764,"context_line":"                 \u0027status\u0027: status}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_7adc3873","line":761,"updated":"2016-12-06 05:05:55.000000000","message":"Please print valid statuses in the message.","commit_id":"d459938b931764356766ebd23009970e9479f78a"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"28b2c0d977ff90bb3f5f14846258476b73397f58","unresolved":false,"context_lines":[{"line_number":760,"context_line":"        if status not in c_fields.GroupStatus.ALL:"},{"line_number":761,"context_line":"            msg_status \u003d {\u0027invalid\u0027: status,"},{"line_number":762,"context_line":"                          \u0027valid\u0027: c_fields.GroupStatus.ALL}"},{"line_number":763,"context_line":"            msg \u003d _(\"Group status: %(invalid)s is invalid, \""},{"line_number":764,"context_line":"                    \"valid status are: %(valid)s.\") % msg_status"},{"line_number":765,"context_line":"            raise exception.InvalidGroupStatus(reason\u003dmsg)"},{"line_number":766,"context_line":"        field \u003d {\u0027updated_at\u0027: timeutils.utcnow(),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_e1c04de3","line":763,"updated":"2016-12-12 21:01:08.000000000","message":"It\u0027s a bit weird to set msg_status and then use it in the msg. Probably better to use the same pattern as the rest of the code and put the fields (\u0027invalid\u0027, \u0027valid\u0027) into the msg.","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"307a84c5955a933a8d00cd3c391283509073733c","unresolved":false,"context_lines":[{"line_number":760,"context_line":"        if status not in c_fields.GroupStatus.ALL:"},{"line_number":761,"context_line":"            msg_status \u003d {\u0027invalid\u0027: status,"},{"line_number":762,"context_line":"                          \u0027valid\u0027: c_fields.GroupStatus.ALL}"},{"line_number":763,"context_line":"            msg \u003d _(\"Group status: %(invalid)s is invalid, \""},{"line_number":764,"context_line":"                    \"valid status are: %(valid)s.\") % msg_status"},{"line_number":765,"context_line":"            raise exception.InvalidGroupStatus(reason\u003dmsg)"},{"line_number":766,"context_line":"        field \u003d {\u0027updated_at\u0027: timeutils.utcnow(),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_bac4a992","line":763,"in_reply_to":"1a6eadb0_e1c04de3","updated":"2016-12-13 07:28:56.000000000","message":"Done","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"}],"cinder/tests/functional/test_groups.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6e2934443108cc02b8d82de90c8ba3cc321ad785","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def test_reset_group(self):"},{"line_number":52,"context_line":"        \"\"\"Reset group status\"\"\""},{"line_number":53,"context_line":"        self.api.reset_group(self.group1[\u0027id\u0027],"},{"line_number":54,"context_line":"                             {\"reset_status\": {\"status\": \"error\"}})"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        group \u003d self.api.get_group(self.group1[\u0027id\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(\"error\", group[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_da838c54","line":54,"updated":"2016-12-06 05:05:55.000000000","message":"Please verify the group status is not \u0027error\u0027 before the reset.","commit_id":"d459938b931764356766ebd23009970e9479f78a"}],"cinder/tests/unit/api/v3/test_groups.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6e2934443108cc02b8d82de90c8ba3cc321ad785","unresolved":false,"context_lines":[{"line_number":833,"context_line":"    def test_reset_group_status(self):"},{"line_number":834,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/groups/%s/action\u0027 %"},{"line_number":835,"context_line":"                                      (fake.PROJECT_ID, self.group2.id),"},{"line_number":836,"context_line":"                                      version\u003d\u00273.16\u0027)"},{"line_number":837,"context_line":"        body \u003d {\"reset_status\": {"},{"line_number":838,"context_line":"            \"status\": fields.GroupStatus.AVAILABLE"},{"line_number":839,"context_line":"        }}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_3a71e0a8","line":836,"updated":"2016-12-06 05:05:55.000000000","message":"Can you add a test for version lower than 3.16 and try to use ddt?","commit_id":"d459938b931764356766ebd23009970e9479f78a"}],"releasenotes/notes/add-reset-group-status-sd21a31cde5fa034.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"047407c022fcd149ac29efcf3fb8378c0882dc07","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added reset status API to generic group."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1a6eadb0_eb8e6726","line":3,"updated":"2016-12-12 22:38:32.000000000","message":"generic volume group","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"307a84c5955a933a8d00cd3c391283509073733c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added reset status API to generic group."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1a6eadb0_3a2c194a","line":3,"in_reply_to":"1a6eadb0_eb8e6726","updated":"2016-12-13 07:28:56.000000000","message":"Done","commit_id":"66d6d3f92e76a7120d8d33368455ece38867ff33"}]}
