)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"17dcdb1eeeee4b72f22c30e67b13e8ad960a0833","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Storwize: add CG capability to generic groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds consistency group capability to generic group"},{"line_number":10,"context_line":"in Storwize driver. Re-use the CG implementations if it is a CG"},{"line_number":11,"context_line":"type group. And if the group being created isn\u0027t a CG then we"},{"line_number":12,"context_line":"bail out and the generic group will take care of it."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"dfeb2761_ac3b6fcf","line":9,"range":{"start_line":9,"start_character":48,"end_line":9,"end_character":61},"updated":"2017-03-31 14:44:39.000000000","message":"generic volume groups","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"66e88ffbfb428390f564d0e0021bed6863451156","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Storwize: add CG capability to generic groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds consistency group capability to generic group"},{"line_number":10,"context_line":"in Storwize driver. Re-use the CG implementations if it is a CG"},{"line_number":11,"context_line":"type group. And if the group being created isn\u0027t a CG then we"},{"line_number":12,"context_line":"bail out and the generic group will take care of it."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"dfeb2761_77725d4b","line":9,"range":{"start_line":9,"start_character":48,"end_line":9,"end_character":61},"in_reply_to":"dfeb2761_ac3b6fcf","updated":"2017-04-05 03:03:10.000000000","message":"Hi Xing, thanks a lot for your comments. It\u0027s addressed in new patch.","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"17dcdb1eeeee4b72f22c30e67b13e8ad960a0833","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds consistency group capability to generic group"},{"line_number":10,"context_line":"in Storwize driver. Re-use the CG implementations if it is a CG"},{"line_number":11,"context_line":"type group. And if the group being created isn\u0027t a CG then we"},{"line_number":12,"context_line":"bail out and the generic group will take care of it."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint storwize-generic-group"},{"line_number":15,"context_line":"Change-Id: I64a7a29fd6620c3c8ea848c84bd564c9a632d307"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"dfeb2761_cc74739c","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":30},"updated":"2017-03-31 14:44:39.000000000","message":"generic volume groups default implementation","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"66e88ffbfb428390f564d0e0021bed6863451156","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds consistency group capability to generic group"},{"line_number":10,"context_line":"in Storwize driver. Re-use the CG implementations if it is a CG"},{"line_number":11,"context_line":"type group. And if the group being created isn\u0027t a CG then we"},{"line_number":12,"context_line":"bail out and the generic group will take care of it."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint storwize-generic-group"},{"line_number":15,"context_line":"Change-Id: I64a7a29fd6620c3c8ea848c84bd564c9a632d307"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"dfeb2761_57919946","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":30},"in_reply_to":"dfeb2761_cc74739c","updated":"2017-04-05 03:03:10.000000000","message":"Done","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"11c91d6c478f3e2c6fba3d5837b005d37a4ae402","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds consistency group capability to generic volume"},{"line_number":10,"context_line":"groups in Storwize driver. Re-use the CG implementations if it"},{"line_number":11,"context_line":"is a CG type group. And if the group being created isn\u0027t a CG"},{"line_number":12,"context_line":"then we bail out and the generic volume groups will take care of it."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint storwize-generic-group"},{"line_number":15,"context_line":"Change-Id: I64a7a29fd6620c3c8ea848c84bd564c9a632d307"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"dfeb2761_0d33fe63","line":12,"range":{"start_line":12,"start_character":61,"end_line":12,"end_character":68},"updated":"2017-04-05 05:11:45.000000000","message":"nit: should be limited to 72 characters","commit_id":"103870f40d8a65892dab1edc69413c3e16321edd"}],"cinder/tests/unit/volume/drivers/ibm/test_storwize_svc.py":[{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7741c17517e8f1a82122e1146647d5f58d7f1e47","unresolved":false,"context_lines":[{"line_number":4971,"context_line":"        self.assertEqual(fields.GroupStatus.ERROR,"},{"line_number":4972,"context_line":"                         model_update[\u0027status\u0027])"},{"line_number":4973,"context_line":""},{"line_number":4974,"context_line":"        self.assertFalse(is_grp_a_cg_snapshot_type.called)"},{"line_number":4975,"context_line":""},{"line_number":4976,"context_line":"    @mock.patch(\u0027cinder.volume.utils.is_group_a_cg_snapshot_type\u0027)"},{"line_number":4977,"context_line":"    def test_storwize_group_create(self, is_grp_a_cg_snapshot_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_f97cffb6","line":4974,"range":{"start_line":4974,"start_character":25,"end_line":4974,"end_character":50},"updated":"2017-03-21 08:28:37.000000000","message":"you mock it, but it is not called?","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"55cfd85773903e38a9580fed037ffb232ac6a580","unresolved":false,"context_lines":[{"line_number":4971,"context_line":"        self.assertEqual(fields.GroupStatus.ERROR,"},{"line_number":4972,"context_line":"                         model_update[\u0027status\u0027])"},{"line_number":4973,"context_line":""},{"line_number":4974,"context_line":"        self.assertFalse(is_grp_a_cg_snapshot_type.called)"},{"line_number":4975,"context_line":""},{"line_number":4976,"context_line":"    @mock.patch(\u0027cinder.volume.utils.is_group_a_cg_snapshot_type\u0027)"},{"line_number":4977,"context_line":"    def test_storwize_group_create(self, is_grp_a_cg_snapshot_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_28071fcb","line":4974,"range":{"start_line":4974,"start_character":25,"end_line":4974,"end_character":50},"in_reply_to":"1a1ced50_f97cffb6","updated":"2017-03-21 10:50:26.000000000","message":"Hi Jiamin, yes, the is_grp_a_cg_snapshot_type should not be called if it is group withe replication volume type.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7741c17517e8f1a82122e1146647d5f58d7f1e47","unresolved":false,"context_lines":[{"line_number":5018,"context_line":"        self.assertRaises(NotImplementedError, self.driver.update_group,"},{"line_number":5019,"context_line":"                          self.ctxt, group, None, None)"},{"line_number":5020,"context_line":""},{"line_number":5021,"context_line":"        model_update \u003d self.driver.update_group(self.ctxt, group)"},{"line_number":5022,"context_line":"        self.assertEqual((None, None, None), model_update)"},{"line_number":5023,"context_line":""},{"line_number":5024,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_fcb94d16","line":5021,"range":{"start_line":5021,"start_character":8,"end_line":5021,"end_character":20},"updated":"2017-03-21 08:28:37.000000000","message":"using model_update, add_volumes_update, remove_volumes_update \u003d self.driver.update_group... maybe much more easier to understand.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"55cfd85773903e38a9580fed037ffb232ac6a580","unresolved":false,"context_lines":[{"line_number":5018,"context_line":"        self.assertRaises(NotImplementedError, self.driver.update_group,"},{"line_number":5019,"context_line":"                          self.ctxt, group, None, None)"},{"line_number":5020,"context_line":""},{"line_number":5021,"context_line":"        model_update \u003d self.driver.update_group(self.ctxt, group)"},{"line_number":5022,"context_line":"        self.assertEqual((None, None, None), model_update)"},{"line_number":5023,"context_line":""},{"line_number":5024,"context_line":"    @mock.patch(\u0027oslo_service.loopingcall.FixedIntervalLoopingCall\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_8812d307","line":5021,"range":{"start_line":5021,"start_character":8,"end_line":5021,"end_character":20},"in_reply_to":"1a1ced50_fcb94d16","updated":"2017-03-21 10:50:26.000000000","message":"Hi Jiamin, thanks a lot for your comments. It is addressed in new patch.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7741c17517e8f1a82122e1146647d5f58d7f1e47","unresolved":false,"context_lines":[{"line_number":5039,"context_line":"                          self.driver.create_group_snapshot,"},{"line_number":5040,"context_line":"                          self.ctxt, group_snapshot, snapshots)"},{"line_number":5041,"context_line":""},{"line_number":5042,"context_line":"        model_update \u003d self.driver.create_group_snapshot(self.ctxt,"},{"line_number":5043,"context_line":"                                                         group_snapshot,"},{"line_number":5044,"context_line":"                                                         snapshots)"},{"line_number":5045,"context_line":"        self.assertEqual(\u0027available\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_7c239da7","line":5042,"range":{"start_line":5042,"start_character":28,"end_line":5042,"end_character":34},"updated":"2017-03-21 08:28:37.000000000","message":"same","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"55cfd85773903e38a9580fed037ffb232ac6a580","unresolved":false,"context_lines":[{"line_number":5039,"context_line":"                          self.driver.create_group_snapshot,"},{"line_number":5040,"context_line":"                          self.ctxt, group_snapshot, snapshots)"},{"line_number":5041,"context_line":""},{"line_number":5042,"context_line":"        model_update \u003d self.driver.create_group_snapshot(self.ctxt,"},{"line_number":5043,"context_line":"                                                         group_snapshot,"},{"line_number":5044,"context_line":"                                                         snapshots)"},{"line_number":5045,"context_line":"        self.assertEqual(\u0027available\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_6824b75f","line":5042,"range":{"start_line":5042,"start_character":28,"end_line":5042,"end_character":34},"in_reply_to":"1a1ced50_7c239da7","updated":"2017-03-21 10:50:26.000000000","message":"Hi Jiamin, thanks a lot for your comments. It is addressed in new patch.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7741c17517e8f1a82122e1146647d5f58d7f1e47","unresolved":false,"context_lines":[{"line_number":5042,"context_line":"        model_update \u003d self.driver.create_group_snapshot(self.ctxt,"},{"line_number":5043,"context_line":"                                                         group_snapshot,"},{"line_number":5044,"context_line":"                                                         snapshots)"},{"line_number":5045,"context_line":"        self.assertEqual(\u0027available\u0027,"},{"line_number":5046,"context_line":"                         model_update[0][\u0027status\u0027],"},{"line_number":5047,"context_line":"                         \"CGSnapshot created failed\")"},{"line_number":5048,"context_line":"        for snapshot in model_update[1]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_f9015f07","line":5045,"range":{"start_line":5045,"start_character":26,"end_line":5045,"end_character":35},"updated":"2017-03-21 08:28:37.000000000","message":"fields.SnapshotStatus.AVAILABLE?","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"55cfd85773903e38a9580fed037ffb232ac6a580","unresolved":false,"context_lines":[{"line_number":5042,"context_line":"        model_update \u003d self.driver.create_group_snapshot(self.ctxt,"},{"line_number":5043,"context_line":"                                                         group_snapshot,"},{"line_number":5044,"context_line":"                                                         snapshots)"},{"line_number":5045,"context_line":"        self.assertEqual(\u0027available\u0027,"},{"line_number":5046,"context_line":"                         model_update[0][\u0027status\u0027],"},{"line_number":5047,"context_line":"                         \"CGSnapshot created failed\")"},{"line_number":5048,"context_line":"        for snapshot in model_update[1]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_8829f339","line":5045,"range":{"start_line":5045,"start_character":26,"end_line":5045,"end_character":35},"in_reply_to":"1a1ced50_f9015f07","updated":"2017-03-21 10:50:26.000000000","message":"Done","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef43df5fb68383911e434dea7956b4b1fafea41a","unresolved":false,"context_lines":[{"line_number":3608,"context_line":"        \"\"\""},{"line_number":3609,"context_line":""},{"line_number":3610,"context_line":"        LOG.debug(\"Creating group.\")"},{"line_number":3611,"context_line":"        model_update \u003d {\u0027status\u0027: fields.ConsistencyGroupStatus.AVAILABLE}"},{"line_number":3612,"context_line":""},{"line_number":3613,"context_line":"        for vol_type_id in group.volume_type_ids:"},{"line_number":3614,"context_line":"            replication_type \u003d self._get_volume_replicated_type("}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_0511f303","line":3611,"range":{"start_line":3611,"start_character":34,"end_line":3611,"end_character":73},"updated":"2017-03-13 17:28:07.000000000","message":"Please use fields.GroupStatus instead.","commit_id":"229d1fbf7343b34d0df7f49b948e2e52143bce12"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"a41787c3445bc8822655df0bec046931fb6453e7","unresolved":false,"context_lines":[{"line_number":3608,"context_line":"        \"\"\""},{"line_number":3609,"context_line":""},{"line_number":3610,"context_line":"        LOG.debug(\"Creating group.\")"},{"line_number":3611,"context_line":"        model_update \u003d {\u0027status\u0027: fields.ConsistencyGroupStatus.AVAILABLE}"},{"line_number":3612,"context_line":""},{"line_number":3613,"context_line":"        for vol_type_id in group.volume_type_ids:"},{"line_number":3614,"context_line":"            replication_type \u003d self._get_volume_replicated_type("}],"source_content_type":"text/x-python","patch_set":1,"id":"5a22e58a_6bb6f53e","line":3611,"range":{"start_line":3611,"start_character":34,"end_line":3611,"end_character":73},"in_reply_to":"9a30ddce_0511f303","updated":"2017-03-14 06:50:24.000000000","message":"Hi Xing, thanks a lot for your comments. It\u0027s addressed in new patch","commit_id":"229d1fbf7343b34d0df7f49b948e2e52143bce12"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ef43df5fb68383911e434dea7956b4b1fafea41a","unresolved":false,"context_lines":[{"line_number":3621,"context_line":"                return model_update"},{"line_number":3622,"context_line":""},{"line_number":3623,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3624,"context_line":"            return self.create_consistencygroup(context, group)"},{"line_number":3625,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3626,"context_line":"        # consistency group request."},{"line_number":3627,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_858de3d4","line":3624,"range":{"start_line":3624,"start_character":24,"end_line":3624,"end_character":48},"updated":"2017-03-13 17:28:07.000000000","message":"Please do not share code between create_consistencygroup and create_group.\n\ncreate_group takes an Group object while create_consistencygroup takes an ConsistencyGroup object.  Although most of  the fields are the same, there are differences.  Sharing them could lead to errors.\n\nFor driver changes submitted before Pike, we have allowed the sharing of the code because both could be used.  In Pike, users are forced to migrate everything to the new groups tables.  There\u0027s no need for the consistency group interfaces any more.\n\nPlease remove consistency group interfaces such as create_consistencygroup, but create new functions for groups such as create_group.","commit_id":"229d1fbf7343b34d0df7f49b948e2e52143bce12"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"a41787c3445bc8822655df0bec046931fb6453e7","unresolved":false,"context_lines":[{"line_number":3621,"context_line":"                return model_update"},{"line_number":3622,"context_line":""},{"line_number":3623,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3624,"context_line":"            return self.create_consistencygroup(context, group)"},{"line_number":3625,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3626,"context_line":"        # consistency group request."},{"line_number":3627,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a22e58a_ae2abb7c","line":3624,"range":{"start_line":3624,"start_character":24,"end_line":3624,"end_character":48},"in_reply_to":"9a30ddce_858de3d4","updated":"2017-03-14 06:50:24.000000000","message":"Hi Xing, thanks a lot for your comments. It\u0027s addressed in new patch. Yes, the CG interfaces use ConsistencyGroup object and group interfaces use Group object. I change this patch to not share code only between create_consistencygroup and create_group. The other code is kept and also ensure that the code works for Group object.","commit_id":"229d1fbf7343b34d0df7f49b948e2e52143bce12"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"            return mapping_ready"},{"line_number":1424,"context_line":"        self._wait_for_a_condition(prepare_fc_consistgrp_success, timeout)"},{"line_number":1425,"context_line":""},{"line_number":1426,"context_line":"    def create_cg_from_source(self, group, fc_consistgrp,"},{"line_number":1427,"context_line":"                              sources, targets, state,"},{"line_number":1428,"context_line":"                              config, timeout):"},{"line_number":1429,"context_line":"        \"\"\"Create consistence group from source\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_7c378fe3","line":1426,"range":{"start_line":1426,"start_character":15,"end_line":1426,"end_character":17},"updated":"2017-03-14 13:12:44.000000000","message":"group","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"            return mapping_ready"},{"line_number":1424,"context_line":"        self._wait_for_a_condition(prepare_fc_consistgrp_success, timeout)"},{"line_number":1425,"context_line":""},{"line_number":1426,"context_line":"    def create_cg_from_source(self, group, fc_consistgrp,"},{"line_number":1427,"context_line":"                              sources, targets, state,"},{"line_number":1428,"context_line":"                              config, timeout):"},{"line_number":1429,"context_line":"        \"\"\"Create consistence group from source\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_be637419","line":1426,"range":{"start_line":1426,"start_character":15,"end_line":1426,"end_character":17},"in_reply_to":"5a22e58a_7c378fe3","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, it is really CG operation here. It is called by create_group_from_src with a consistent_group_snapshot_enabled group","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3484,"context_line":""},{"line_number":3485,"context_line":"        return self._stats"},{"line_number":3486,"context_line":""},{"line_number":3487,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":3488,"context_line":"        \"\"\"Create a consistency group."},{"line_number":3489,"context_line":""},{"line_number":3490,"context_line":"        IBM Storwize will create CG until cg-snapshot creation,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_d9625516","line":3487,"range":{"start_line":3487,"start_character":8,"end_line":3487,"end_character":31},"updated":"2017-03-14 13:12:44.000000000","message":"Please remove this function.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3484,"context_line":""},{"line_number":3485,"context_line":"        return self._stats"},{"line_number":3486,"context_line":""},{"line_number":3487,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":3488,"context_line":"        \"\"\"Create a consistency group."},{"line_number":3489,"context_line":""},{"line_number":3490,"context_line":"        IBM Storwize will create CG until cg-snapshot creation,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_1e480887","line":3487,"range":{"start_line":3487,"start_character":8,"end_line":3487,"end_character":31},"in_reply_to":"5a22e58a_d9625516","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. It is removed in new patch.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3494,"context_line":"        model_update \u003d {\u0027status\u0027: fields.ConsistencyGroupStatus.AVAILABLE}"},{"line_number":3495,"context_line":"        return model_update"},{"line_number":3496,"context_line":""},{"line_number":3497,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":3498,"context_line":"        \"\"\"Deletes a consistency group."},{"line_number":3499,"context_line":""},{"line_number":3500,"context_line":"        IBM Storwize will delete the volumes of the CG."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_397289e6","line":3497,"range":{"start_line":3497,"start_character":8,"end_line":3497,"end_character":31},"updated":"2017-03-14 13:12:44.000000000","message":"Remove this.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3494,"context_line":"        model_update \u003d {\u0027status\u0027: fields.ConsistencyGroupStatus.AVAILABLE}"},{"line_number":3495,"context_line":"        return model_update"},{"line_number":3496,"context_line":""},{"line_number":3497,"context_line":"    def delete_consistencygroup(self, context, group, volumes):"},{"line_number":3498,"context_line":"        \"\"\"Deletes a consistency group."},{"line_number":3499,"context_line":""},{"line_number":3500,"context_line":"        IBM Storwize will delete the volumes of the CG."}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_3e5f8442","line":3497,"range":{"start_line":3497,"start_character":8,"end_line":3497,"end_character":31},"in_reply_to":"5a22e58a_397289e6","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. It is removed in new patch.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3519,"context_line":""},{"line_number":3520,"context_line":"        return model_update, volumes_model_update"},{"line_number":3521,"context_line":""},{"line_number":3522,"context_line":"    def update_consistencygroup(self, ctxt, group, add_volumes,"},{"line_number":3523,"context_line":"                                remove_volumes):"},{"line_number":3524,"context_line":"        \"\"\"Adds or removes volume(s) to/from an existing consistency group.\"\"\""},{"line_number":3525,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_d9497590","line":3522,"range":{"start_line":3522,"start_character":8,"end_line":3522,"end_character":31},"updated":"2017-03-14 13:12:44.000000000","message":"Remove this.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3519,"context_line":""},{"line_number":3520,"context_line":"        return model_update, volumes_model_update"},{"line_number":3521,"context_line":""},{"line_number":3522,"context_line":"    def update_consistencygroup(self, ctxt, group, add_volumes,"},{"line_number":3523,"context_line":"                                remove_volumes):"},{"line_number":3524,"context_line":"        \"\"\"Adds or removes volume(s) to/from an existing consistency group.\"\"\""},{"line_number":3525,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_7e59fc59","line":3522,"range":{"start_line":3522,"start_character":8,"end_line":3522,"end_character":31},"in_reply_to":"5a22e58a_d9497590","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. It is removed in new patch","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3526,"context_line":"        LOG.debug(\"Updating consistency group.\")"},{"line_number":3527,"context_line":"        return None, None, None"},{"line_number":3528,"context_line":""},{"line_number":3529,"context_line":"    def create_consistencygroup_from_src(self, context, group, volumes,"},{"line_number":3530,"context_line":"                                         cgsnapshot\u003dNone, snapshots\u003dNone,"},{"line_number":3531,"context_line":"                                         source_cg\u003dNone, source_vols\u003dNone):"},{"line_number":3532,"context_line":"        \"\"\"Creates a consistencygroup from source."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_f94e3195","line":3529,"range":{"start_line":3529,"start_character":8,"end_line":3529,"end_character":40},"updated":"2017-03-14 13:12:44.000000000","message":"Remove this.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3526,"context_line":"        LOG.debug(\"Updating consistency group.\")"},{"line_number":3527,"context_line":"        return None, None, None"},{"line_number":3528,"context_line":""},{"line_number":3529,"context_line":"    def create_consistencygroup_from_src(self, context, group, volumes,"},{"line_number":3530,"context_line":"                                         cgsnapshot\u003dNone, snapshots\u003dNone,"},{"line_number":3531,"context_line":"                                         source_cg\u003dNone, source_vols\u003dNone):"},{"line_number":3532,"context_line":"        \"\"\"Creates a consistencygroup from source."}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_be31b40d","line":3529,"range":{"start_line":3529,"start_character":8,"end_line":3529,"end_character":40},"in_reply_to":"5a22e58a_f94e3195","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. It is removed in new patch","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3569,"context_line":"        LOG.debug(\"Leave: create_consistencygroup_from_src.\")"},{"line_number":3570,"context_line":"        return model_update, snapshots_model"},{"line_number":3571,"context_line":""},{"line_number":3572,"context_line":"    def create_cgsnapshot(self, ctxt, cgsnapshot, snapshots):"},{"line_number":3573,"context_line":"        \"\"\"Creates a cgsnapshot.\"\"\""},{"line_number":3574,"context_line":"        # Use cgsnapshot id as cg name"},{"line_number":3575,"context_line":"        cg_name \u003d \u0027cg_snap-\u0027 + cgsnapshot.id"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_795b2155","line":3572,"range":{"start_line":3572,"start_character":8,"end_line":3572,"end_character":25},"updated":"2017-03-14 13:12:44.000000000","message":"Remove this.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3569,"context_line":"        LOG.debug(\"Leave: create_consistencygroup_from_src.\")"},{"line_number":3570,"context_line":"        return model_update, snapshots_model"},{"line_number":3571,"context_line":""},{"line_number":3572,"context_line":"    def create_cgsnapshot(self, ctxt, cgsnapshot, snapshots):"},{"line_number":3573,"context_line":"        \"\"\"Creates a cgsnapshot.\"\"\""},{"line_number":3574,"context_line":"        # Use cgsnapshot id as cg name"},{"line_number":3575,"context_line":"        cg_name \u003d \u0027cg_snap-\u0027 + cgsnapshot.id"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_fe3b2ce9","line":3572,"range":{"start_line":3572,"start_character":8,"end_line":3572,"end_character":25},"in_reply_to":"5a22e58a_795b2155","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. It is removed in new patch.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3587,"context_line":""},{"line_number":3588,"context_line":"        return model_update, snapshots_model"},{"line_number":3589,"context_line":""},{"line_number":3590,"context_line":"    def delete_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":3591,"context_line":"        \"\"\"Deletes a cgsnapshot.\"\"\""},{"line_number":3592,"context_line":"        cgsnapshot_id \u003d cgsnapshot[\u0027id\u0027]"},{"line_number":3593,"context_line":"        cg_name \u003d \u0027cg_snap-\u0027 + cgsnapshot_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_f93551f7","line":3590,"range":{"start_line":3590,"start_character":8,"end_line":3590,"end_character":25},"updated":"2017-03-14 13:12:44.000000000","message":"Remove this.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3587,"context_line":""},{"line_number":3588,"context_line":"        return model_update, snapshots_model"},{"line_number":3589,"context_line":""},{"line_number":3590,"context_line":"    def delete_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":3591,"context_line":"        \"\"\"Deletes a cgsnapshot.\"\"\""},{"line_number":3592,"context_line":"        cgsnapshot_id \u003d cgsnapshot[\u0027id\u0027]"},{"line_number":3593,"context_line":"        cg_name \u003d \u0027cg_snap-\u0027 + cgsnapshot_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_7e073c1c","line":3590,"range":{"start_line":3590,"start_character":8,"end_line":3590,"end_character":25},"in_reply_to":"5a22e58a_f93551f7","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. It is removed in new patch.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3636,"context_line":"        \"\"\""},{"line_number":3637,"context_line":""},{"line_number":3638,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3639,"context_line":"            return self.delete_consistencygroup(context, group, volumes)"},{"line_number":3640,"context_line":""},{"line_number":3641,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3642,"context_line":"        # consistency group request."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_19d14dce","line":3639,"range":{"start_line":3639,"start_character":24,"end_line":3639,"end_character":47},"updated":"2017-03-14 13:12:44.000000000","message":"Should not share code.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3636,"context_line":"        \"\"\""},{"line_number":3637,"context_line":""},{"line_number":3638,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3639,"context_line":"            return self.delete_consistencygroup(context, group, volumes)"},{"line_number":3640,"context_line":""},{"line_number":3641,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3642,"context_line":"        # consistency group request."}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_59645ae4","line":3639,"range":{"start_line":3639,"start_character":24,"end_line":3639,"end_character":47},"in_reply_to":"5a22e58a_19d14dce","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. Just remove delete_consistencygroup in new patch","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3654,"context_line":"        \"\"\""},{"line_number":3655,"context_line":""},{"line_number":3656,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3657,"context_line":"            return self.update_consistencygroup(context,"},{"line_number":3658,"context_line":"                                                group,"},{"line_number":3659,"context_line":"                                                add_volumes,"},{"line_number":3660,"context_line":"                                                remove_volumes)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_39d609c6","line":3657,"range":{"start_line":3657,"start_character":24,"end_line":3657,"end_character":47},"updated":"2017-03-14 13:12:44.000000000","message":"Same","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3654,"context_line":"        \"\"\""},{"line_number":3655,"context_line":""},{"line_number":3656,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3657,"context_line":"            return self.update_consistencygroup(context,"},{"line_number":3658,"context_line":"                                                group,"},{"line_number":3659,"context_line":"                                                add_volumes,"},{"line_number":3660,"context_line":"                                                remove_volumes)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_995ed210","line":3657,"range":{"start_line":3657,"start_character":24,"end_line":3657,"end_character":47},"in_reply_to":"5a22e58a_39d609c6","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. Just remove update_consistencygroup in new patch.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3679,"context_line":"        \"\"\""},{"line_number":3680,"context_line":""},{"line_number":3681,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3682,"context_line":"            return self.create_consistencygroup_from_src(context,"},{"line_number":3683,"context_line":"                                                         group,"},{"line_number":3684,"context_line":"                                                         volumes,"},{"line_number":3685,"context_line":"                                                         group_snapshot,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_f9f2b16e","line":3682,"range":{"start_line":3682,"start_character":24,"end_line":3682,"end_character":56},"updated":"2017-03-14 13:12:44.000000000","message":"Should not share code.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3679,"context_line":"        \"\"\""},{"line_number":3680,"context_line":""},{"line_number":3681,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3682,"context_line":"            return self.create_consistencygroup_from_src(context,"},{"line_number":3683,"context_line":"                                                         group,"},{"line_number":3684,"context_line":"                                                         volumes,"},{"line_number":3685,"context_line":"                                                         group_snapshot,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_99b5f232","line":3682,"range":{"start_line":3682,"start_character":24,"end_line":3682,"end_character":56},"in_reply_to":"5a22e58a_f9f2b16e","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. Just remove create_consistencygroup_from_src in new patch.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3701,"context_line":"        \"\"\""},{"line_number":3702,"context_line":""},{"line_number":3703,"context_line":"        if utils.is_group_a_cg_snapshot_type(group_snapshot):"},{"line_number":3704,"context_line":"            return self.create_cgsnapshot(context, group_snapshot, snapshots)"},{"line_number":3705,"context_line":""},{"line_number":3706,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3707,"context_line":"        # consistency group request."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_99fc5d40","line":3704,"range":{"start_line":3704,"start_character":24,"end_line":3704,"end_character":41},"updated":"2017-03-14 13:12:44.000000000","message":"Same","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3701,"context_line":"        \"\"\""},{"line_number":3702,"context_line":""},{"line_number":3703,"context_line":"        if utils.is_group_a_cg_snapshot_type(group_snapshot):"},{"line_number":3704,"context_line":"            return self.create_cgsnapshot(context, group_snapshot, snapshots)"},{"line_number":3705,"context_line":""},{"line_number":3706,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3707,"context_line":"        # consistency group request."}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_59929aa0","line":3704,"range":{"start_line":3704,"start_character":24,"end_line":3704,"end_character":41},"in_reply_to":"5a22e58a_99fc5d40","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. Just remove create_cgsnapshot in new patch.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ff1fd3cc767e9cb0ba28e07482cee3984493732","unresolved":false,"context_lines":[{"line_number":3717,"context_line":"        \"\"\""},{"line_number":3718,"context_line":""},{"line_number":3719,"context_line":"        if utils.is_group_a_cg_snapshot_type(group_snapshot):"},{"line_number":3720,"context_line":"            return self.delete_cgsnapshot(context, group_snapshot, snapshots)"},{"line_number":3721,"context_line":""},{"line_number":3722,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3723,"context_line":"        # consistency group request."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a22e58a_f999d120","line":3720,"range":{"start_line":3720,"start_character":24,"end_line":3720,"end_character":41},"updated":"2017-03-14 13:12:44.000000000","message":"Same","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"07bf59591fcfd87bde9e04ac3c0e23b1eb747844","unresolved":false,"context_lines":[{"line_number":3717,"context_line":"        \"\"\""},{"line_number":3718,"context_line":""},{"line_number":3719,"context_line":"        if utils.is_group_a_cg_snapshot_type(group_snapshot):"},{"line_number":3720,"context_line":"            return self.delete_cgsnapshot(context, group_snapshot, snapshots)"},{"line_number":3721,"context_line":""},{"line_number":3722,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3723,"context_line":"        # consistency group request."}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_d9ecca2b","line":3720,"range":{"start_line":3720,"start_character":24,"end_line":3720,"end_character":41},"in_reply_to":"5a22e58a_f999d120","updated":"2017-03-16 10:45:25.000000000","message":"Hi Xing, thanks a lot for your comments. Just remove delete_cgsnapshot in new patch.","commit_id":"af4d843b2736024cbf7c2dea2dd3339cf01bd822"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7741c17517e8f1a82122e1146647d5f58d7f1e47","unresolved":false,"context_lines":[{"line_number":1343,"context_line":""},{"line_number":1344,"context_line":"    def run_consistgrp_snapshots(self, fc_consistgrp, snapshots, state,"},{"line_number":1345,"context_line":"                                 config, timeout):"},{"line_number":1346,"context_line":"        model_update \u003d {\u0027status\u0027: fields.GroupStatus.AVAILABLE}"},{"line_number":1347,"context_line":"        snapshots_model_update \u003d []"},{"line_number":1348,"context_line":"        try:"},{"line_number":1349,"context_line":"            for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_d98e6378","line":1346,"range":{"start_line":1346,"start_character":52,"end_line":1346,"end_character":53},"updated":"2017-03-21 08:28:37.000000000","message":"Maybe fields.GroupSnapshotStatus.AVAILABLE is better here.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"55cfd85773903e38a9580fed037ffb232ac6a580","unresolved":false,"context_lines":[{"line_number":1343,"context_line":""},{"line_number":1344,"context_line":"    def run_consistgrp_snapshots(self, fc_consistgrp, snapshots, state,"},{"line_number":1345,"context_line":"                                 config, timeout):"},{"line_number":1346,"context_line":"        model_update \u003d {\u0027status\u0027: fields.GroupStatus.AVAILABLE}"},{"line_number":1347,"context_line":"        snapshots_model_update \u003d []"},{"line_number":1348,"context_line":"        try:"},{"line_number":1349,"context_line":"            for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_e8bc2708","line":1346,"range":{"start_line":1346,"start_character":52,"end_line":1346,"end_character":53},"in_reply_to":"1a1ced50_d98e6378","updated":"2017-03-21 10:50:26.000000000","message":"Hi Jiamin thanks a lot for your comments. It is addressed in new patch.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7741c17517e8f1a82122e1146647d5f58d7f1e47","unresolved":false,"context_lines":[{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"    def delete_consistgrp_snapshots(self, fc_consistgrp, snapshots):"},{"line_number":1379,"context_line":"        \"\"\"Delete flashcopy maps and consistent group.\"\"\""},{"line_number":1380,"context_line":"        model_update \u003d {\u0027status\u0027: fields.GroupStatus.DELETED}"},{"line_number":1381,"context_line":"        snapshots_model_update \u003d []"},{"line_number":1382,"context_line":""},{"line_number":1383,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_1939dba4","line":1380,"range":{"start_line":1380,"start_character":41,"end_line":1380,"end_character":52},"updated":"2017-03-21 08:28:37.000000000","message":"same","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"55cfd85773903e38a9580fed037ffb232ac6a580","unresolved":false,"context_lines":[{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"    def delete_consistgrp_snapshots(self, fc_consistgrp, snapshots):"},{"line_number":1379,"context_line":"        \"\"\"Delete flashcopy maps and consistent group.\"\"\""},{"line_number":1380,"context_line":"        model_update \u003d {\u0027status\u0027: fields.GroupStatus.DELETED}"},{"line_number":1381,"context_line":"        snapshots_model_update \u003d []"},{"line_number":1382,"context_line":""},{"line_number":1383,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_48d7fb4a","line":1380,"range":{"start_line":1380,"start_character":41,"end_line":1380,"end_character":52},"in_reply_to":"1a1ced50_1939dba4","updated":"2017-03-21 10:50:26.000000000","message":"Hi Jiamin thanks a lot for your comments. It is addressed in new patch.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7741c17517e8f1a82122e1146647d5f58d7f1e47","unresolved":false,"context_lines":[{"line_number":3065,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":3066,"context_line":"        return replication_type"},{"line_number":3067,"context_line":""},{"line_number":3068,"context_line":"    def _get_volume_replicated_type(self, ctxt, volume, vol_type_id\u003dNone):"},{"line_number":3069,"context_line":"        replication_type \u003d None"},{"line_number":3070,"context_line":"        volume_type_id \u003d vol_type_id if vol_type_id else volume.get("},{"line_number":3071,"context_line":"            \"volume_type_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_99978b47","line":3068,"range":{"start_line":3068,"start_character":8,"end_line":3068,"end_character":35},"updated":"2017-03-21 08:28:37.000000000","message":"maybe def _get_volume_replicated_type(self, ctxt, vol_type_id) is enough here, and when you call _get_volume_replicated_type like self._get_volume_replicated_type(ctxt, volume.volume_type_id) or self._get_volume_replicated_type(ctxt, volume_type_id)","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"55cfd85773903e38a9580fed037ffb232ac6a580","unresolved":false,"context_lines":[{"line_number":3065,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":3066,"context_line":"        return replication_type"},{"line_number":3067,"context_line":""},{"line_number":3068,"context_line":"    def _get_volume_replicated_type(self, ctxt, volume, vol_type_id\u003dNone):"},{"line_number":3069,"context_line":"        replication_type \u003d None"},{"line_number":3070,"context_line":"        volume_type_id \u003d vol_type_id if vol_type_id else volume.get("},{"line_number":3071,"context_line":"            \"volume_type_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_cd0bfd28","line":3068,"range":{"start_line":3068,"start_character":8,"end_line":3068,"end_character":35},"in_reply_to":"1a1ced50_99978b47","updated":"2017-03-21 10:50:26.000000000","message":"Hi jiamin, thanks a lot for your comments. I have thought about changing it this way. But there is more than ten places call _get_volume_replicated_type. To keep the minor change, only a default parameter was added here.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7741c17517e8f1a82122e1146647d5f58d7f1e47","unresolved":false,"context_lines":[{"line_number":3503,"context_line":"                model_update \u003d {\u0027status\u0027: fields.GroupStatus.ERROR}"},{"line_number":3504,"context_line":"                return model_update"},{"line_number":3505,"context_line":""},{"line_number":3506,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3507,"context_line":"            return {\u0027status\u0027: fields.GroupStatus.AVAILABLE}"},{"line_number":3508,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3509,"context_line":"        # consistency group request."}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_b953676a","line":3506,"range":{"start_line":3506,"start_character":17,"end_line":3506,"end_character":44},"updated":"2017-03-21 08:28:37.000000000","message":"judge it at the begin of create_group is better? and put L3510 in else block of \"if\" in L3506?","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"55cfd85773903e38a9580fed037ffb232ac6a580","unresolved":false,"context_lines":[{"line_number":3503,"context_line":"                model_update \u003d {\u0027status\u0027: fields.GroupStatus.ERROR}"},{"line_number":3504,"context_line":"                return model_update"},{"line_number":3505,"context_line":""},{"line_number":3506,"context_line":"        if utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3507,"context_line":"            return {\u0027status\u0027: fields.GroupStatus.AVAILABLE}"},{"line_number":3508,"context_line":"        # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3509,"context_line":"        # consistency group request."}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_48a29bfe","line":3506,"range":{"start_line":3506,"start_character":17,"end_line":3506,"end_character":44},"in_reply_to":"1a1ced50_b953676a","updated":"2017-03-21 10:50:26.000000000","message":"Hi jiamin, no, we can not put this judgement in the begin of create_group since we do not support create replication group at present regardless it is a generic group or consistent group. So this judgement  happens after the replication judgement.","commit_id":"a33034b114bb20c0796cedbe82cc31a667211668"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b17ab0f171ab80494c213fc355ecc121be500e11","unresolved":false,"context_lines":[{"line_number":3067,"context_line":""},{"line_number":3068,"context_line":"    def _get_volume_replicated_type(self, ctxt, volume, vol_type_id\u003dNone):"},{"line_number":3069,"context_line":"        replication_type \u003d None"},{"line_number":3070,"context_line":"        volume_type_id \u003d vol_type_id if vol_type_id else volume.get("},{"line_number":3071,"context_line":"            \"volume_type_id\")"},{"line_number":3072,"context_line":"        if volume_type_id:"},{"line_number":3073,"context_line":"            volume_type \u003d volume_types.get_volume_type(ctxt, volume_type_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_0fb4a8cf","line":3070,"range":{"start_line":3070,"start_character":57,"end_line":3070,"end_character":63},"updated":"2017-03-23 18:30:43.000000000","message":"Should\u0027t this volume be an object?  For object, you should do volume.volume_type_id.","commit_id":"8bc3b987a7d5f7234754706e9df1eb910e775af2"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"f4de898e7b7731e762f454cdf2a1094ab2e67efc","unresolved":false,"context_lines":[{"line_number":3067,"context_line":""},{"line_number":3068,"context_line":"    def _get_volume_replicated_type(self, ctxt, volume, vol_type_id\u003dNone):"},{"line_number":3069,"context_line":"        replication_type \u003d None"},{"line_number":3070,"context_line":"        volume_type_id \u003d vol_type_id if vol_type_id else volume.get("},{"line_number":3071,"context_line":"            \"volume_type_id\")"},{"line_number":3072,"context_line":"        if volume_type_id:"},{"line_number":3073,"context_line":"            volume_type \u003d volume_types.get_volume_type(ctxt, volume_type_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_84d90223","line":3070,"range":{"start_line":3070,"start_character":57,"end_line":3070,"end_character":63},"in_reply_to":"1a1ced50_0fb4a8cf","updated":"2017-03-29 05:51:17.000000000","message":"Thanks, yes. It\u0027s addressed in new patch.","commit_id":"8bc3b987a7d5f7234754706e9df1eb910e775af2"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"f39c6c06b4e763d8b060139384d535f4df6d9d4c","unresolved":false,"context_lines":[{"line_number":3538,"context_line":"                          \"Exception: %(exception)s.\","},{"line_number":3539,"context_line":"                          {\u0027vol\u0027: volume[\u0027name\u0027], \u0027exception\u0027: err})"},{"line_number":3540,"context_line":"                volumes_model_update.append("},{"line_number":3541,"context_line":"                    {\u0027id\u0027: volume[\u0027id\u0027], \u0027status\u0027: \u0027error_deleting\u0027})"},{"line_number":3542,"context_line":""},{"line_number":3543,"context_line":"        return model_update, volumes_model_update"},{"line_number":3544,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_eba136ab","line":3541,"range":{"start_line":3541,"start_character":51,"end_line":3541,"end_character":67},"updated":"2017-03-26 15:51:06.000000000","message":"To be consistent with rest of the code, this should be:\nmodel_update[\u0027status\u0027]","commit_id":"8bc3b987a7d5f7234754706e9df1eb910e775af2"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"f4de898e7b7731e762f454cdf2a1094ab2e67efc","unresolved":false,"context_lines":[{"line_number":3538,"context_line":"                          \"Exception: %(exception)s.\","},{"line_number":3539,"context_line":"                          {\u0027vol\u0027: volume[\u0027name\u0027], \u0027exception\u0027: err})"},{"line_number":3540,"context_line":"                volumes_model_update.append("},{"line_number":3541,"context_line":"                    {\u0027id\u0027: volume[\u0027id\u0027], \u0027status\u0027: \u0027error_deleting\u0027})"},{"line_number":3542,"context_line":""},{"line_number":3543,"context_line":"        return model_update, volumes_model_update"},{"line_number":3544,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_4409ba93","line":3541,"range":{"start_line":3541,"start_character":51,"end_line":3541,"end_character":67},"in_reply_to":"ffe62b97_eba136ab","updated":"2017-03-29 05:51:17.000000000","message":"Thanks, it\u0027s addressed in new patch.","commit_id":"8bc3b987a7d5f7234754706e9df1eb910e775af2"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"f39c6c06b4e763d8b060139384d535f4df6d9d4c","unresolved":false,"context_lines":[{"line_number":3542,"context_line":""},{"line_number":3543,"context_line":"        return model_update, volumes_model_update"},{"line_number":3544,"context_line":""},{"line_number":3545,"context_line":"    def update_group(self, context, group, add_volumes\u003dNone,"},{"line_number":3546,"context_line":"                     remove_volumes\u003dNone):"},{"line_number":3547,"context_line":"        \"\"\"Updates a group."},{"line_number":3548,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_6b952640","line":3545,"range":{"start_line":3545,"start_character":43,"end_line":3545,"end_character":54},"updated":"2017-03-26 15:51:06.000000000","message":"What if one of the volumes to be added has replication_enabled in it\u0027s specs?","commit_id":"8bc3b987a7d5f7234754706e9df1eb910e775af2"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"f4de898e7b7731e762f454cdf2a1094ab2e67efc","unresolved":false,"context_lines":[{"line_number":3542,"context_line":""},{"line_number":3543,"context_line":"        return model_update, volumes_model_update"},{"line_number":3544,"context_line":""},{"line_number":3545,"context_line":"    def update_group(self, context, group, add_volumes\u003dNone,"},{"line_number":3546,"context_line":"                     remove_volumes\u003dNone):"},{"line_number":3547,"context_line":"        \"\"\"Updates a group."},{"line_number":3548,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_c4794ac8","line":3545,"range":{"start_line":3545,"start_character":43,"end_line":3545,"end_character":54},"in_reply_to":"ffe62b97_6b952640","updated":"2017-03-29 05:51:17.000000000","message":"The common part will verify whether the volume type is supported by the group or not. You can not add a volume to a group if the volume type is not contained in the group. And the group with replication volume type can not be created, so you can not add replication volumes to the group.","commit_id":"8bc3b987a7d5f7234754706e9df1eb910e775af2"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d65a2cb0e7c2aa8dc43d33b4f2291c82721b5d9d","unresolved":false,"context_lines":[{"line_number":3068,"context_line":"    def _get_volume_replicated_type(self, ctxt, volume, vol_type_id\u003dNone):"},{"line_number":3069,"context_line":"        replication_type \u003d None"},{"line_number":3070,"context_line":"        volume_type_id \u003d vol_type_id if vol_type_id else volume.volume_type_id"},{"line_number":3071,"context_line":"        if volume_type_id:"},{"line_number":3072,"context_line":"            volume_type \u003d volume_types.get_volume_type(ctxt, volume_type_id)"},{"line_number":3073,"context_line":"            if volume_type:"},{"line_number":3074,"context_line":"                replication_type \u003d self._get_specs_replicated_type("},{"line_number":3075,"context_line":"                    volume_type)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_bb48765b","line":3072,"range":{"start_line":3071,"start_character":0,"end_line":3072,"end_character":76},"updated":"2017-03-30 03:01:56.000000000","message":"If you get it from volume, you can do volume.volume_type.  that will give you an volume_type object and save this call.","commit_id":"bdbad6db2a13dc9361553b0d21f66f68611d0b06"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"157cc4fb2b0fc6e78991d46cccbeb17feeb9757e","unresolved":false,"context_lines":[{"line_number":3068,"context_line":"    def _get_volume_replicated_type(self, ctxt, volume, vol_type_id\u003dNone):"},{"line_number":3069,"context_line":"        replication_type \u003d None"},{"line_number":3070,"context_line":"        volume_type_id \u003d vol_type_id if vol_type_id else volume.volume_type_id"},{"line_number":3071,"context_line":"        if volume_type_id:"},{"line_number":3072,"context_line":"            volume_type \u003d volume_types.get_volume_type(ctxt, volume_type_id)"},{"line_number":3073,"context_line":"            if volume_type:"},{"line_number":3074,"context_line":"                replication_type \u003d self._get_specs_replicated_type("},{"line_number":3075,"context_line":"                    volume_type)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_229c2e5c","line":3072,"range":{"start_line":3071,"start_character":0,"end_line":3072,"end_character":76},"in_reply_to":"ffe62b97_bb48765b","updated":"2017-03-30 08:29:22.000000000","message":"Thanks a lot for your comments. It\u0027s addressed in new patch.","commit_id":"bdbad6db2a13dc9361553b0d21f66f68611d0b06"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c42873e4836c5c2c66839bfafbb59c0042142d6e","unresolved":false,"context_lines":[{"line_number":3070,"context_line":"        volume_type \u003d (volume.volume_type if volume else"},{"line_number":3071,"context_line":"                       volume_types.get_volume_type(ctxt, vol_type_id))"},{"line_number":3072,"context_line":"        if volume_type:"},{"line_number":3073,"context_line":"            replication_type \u003d self._get_specs_replicated_type(volume_type)"},{"line_number":3074,"context_line":"        return replication_type"},{"line_number":3075,"context_line":""},{"line_number":3076,"context_line":"    def _get_storwize_config(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffe62b97_17183573","line":3073,"updated":"2017-03-30 16:48:47.000000000","message":"volume_types.get_volume_type will give you a dict of volume_type but volume.volume_type is an object.  I think you should get a volume_type object from vol_type_id and change your implementation of _get_specs_replicated_type to use an object.","commit_id":"877f58a469eca6d31d99d155580d9ecb99c9b5ab"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"4bb2f044b9d62701a29ac08e1f81bf9411acf239","unresolved":false,"context_lines":[{"line_number":3070,"context_line":"        volume_type \u003d (volume.volume_type if volume else"},{"line_number":3071,"context_line":"                       volume_types.get_volume_type(ctxt, vol_type_id))"},{"line_number":3072,"context_line":"        if volume_type:"},{"line_number":3073,"context_line":"            replication_type \u003d self._get_specs_replicated_type(volume_type)"},{"line_number":3074,"context_line":"        return replication_type"},{"line_number":3075,"context_line":""},{"line_number":3076,"context_line":"    def _get_storwize_config(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfeb2761_29919f53","line":3073,"in_reply_to":"ffe62b97_17183573","updated":"2017-03-31 07:45:03.000000000","message":"Hi Xing, thanks a lot for your comments. It is addressed in new patch. To keep consistent, _get_specs_replicated_type still uses get method, since it is also called by retype function and the new_type given by common driver is a dict.","commit_id":"877f58a469eca6d31d99d155580d9ecb99c9b5ab"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"17dcdb1eeeee4b72f22c30e67b13e8ad960a0833","unresolved":false,"context_lines":[{"line_number":3479,"context_line":""},{"line_number":3480,"context_line":"        return self._stats"},{"line_number":3481,"context_line":""},{"line_number":3482,"context_line":"    # Add CG capability to generic groups"},{"line_number":3483,"context_line":"    def create_group(self, context, group):"},{"line_number":3484,"context_line":"        \"\"\"Creates a group."},{"line_number":3485,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfeb2761_918568b0","line":3482,"range":{"start_line":3482,"start_character":27,"end_line":3482,"end_character":41},"updated":"2017-03-31 14:44:39.000000000","message":"generic volume groups","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"66e88ffbfb428390f564d0e0021bed6863451156","unresolved":false,"context_lines":[{"line_number":3479,"context_line":""},{"line_number":3480,"context_line":"        return self._stats"},{"line_number":3481,"context_line":""},{"line_number":3482,"context_line":"    # Add CG capability to generic groups"},{"line_number":3483,"context_line":"    def create_group(self, context, group):"},{"line_number":3484,"context_line":"        \"\"\"Creates a group."},{"line_number":3485,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfeb2761_37961541","line":3482,"range":{"start_line":3482,"start_character":27,"end_line":3482,"end_character":41},"in_reply_to":"dfeb2761_918568b0","updated":"2017-04-05 03:03:10.000000000","message":"Done","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"17dcdb1eeeee4b72f22c30e67b13e8ad960a0833","unresolved":false,"context_lines":[{"line_number":3576,"context_line":"        \"\"\""},{"line_number":3577,"context_line":"        LOG.debug(\u0027Enter: create_group_from_src.\u0027)"},{"line_number":3578,"context_line":"        if not utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3579,"context_line":"            # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3580,"context_line":"            # consistency group request."},{"line_number":3581,"context_line":"            raise NotImplementedError()"},{"line_number":3582,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfeb2761_f145d471","line":3579,"range":{"start_line":3579,"start_character":32,"end_line":3579,"end_character":45},"updated":"2017-03-31 14:44:39.000000000","message":"generic volume groups","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"66e88ffbfb428390f564d0e0021bed6863451156","unresolved":false,"context_lines":[{"line_number":3576,"context_line":"        \"\"\""},{"line_number":3577,"context_line":"        LOG.debug(\u0027Enter: create_group_from_src.\u0027)"},{"line_number":3578,"context_line":"        if not utils.is_group_a_cg_snapshot_type(group):"},{"line_number":3579,"context_line":"            # we\u0027ll rely on the generic group implementation if it is not a"},{"line_number":3580,"context_line":"            # consistency group request."},{"line_number":3581,"context_line":"            raise NotImplementedError()"},{"line_number":3582,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfeb2761_f79b0d63","line":3579,"range":{"start_line":3579,"start_character":32,"end_line":3579,"end_character":45},"in_reply_to":"dfeb2761_f145d471","updated":"2017-04-05 03:03:10.000000000","message":"Done","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"17dcdb1eeeee4b72f22c30e67b13e8ad960a0833","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        2.1 - Added replication V2 support to the global/metro mirror"},{"line_number":89,"context_line":"              mode"},{"line_number":90,"context_line":"        2.1.1 - Update replication to version 2.1"},{"line_number":91,"context_line":"        2.2 - Add CG capability to generic groups"},{"line_number":92,"context_line":"    \"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    VERSION \u003d \"2.2\""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfeb2761_71e424ad","line":91,"range":{"start_line":91,"start_character":35,"end_line":91,"end_character":49},"updated":"2017-03-31 14:44:39.000000000","message":"generic volume groups","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"66e88ffbfb428390f564d0e0021bed6863451156","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        2.1 - Added replication V2 support to the global/metro mirror"},{"line_number":89,"context_line":"              mode"},{"line_number":90,"context_line":"        2.1.1 - Update replication to version 2.1"},{"line_number":91,"context_line":"        2.2 - Add CG capability to generic groups"},{"line_number":92,"context_line":"    \"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    VERSION \u003d \"2.2\""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfeb2761_d7a489a8","line":91,"range":{"start_line":91,"start_character":35,"end_line":91,"end_character":49},"in_reply_to":"dfeb2761_71e424ad","updated":"2017-04-05 03:03:10.000000000","message":"Done","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"17dcdb1eeeee4b72f22c30e67b13e8ad960a0833","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        2.1 - Added replication V2 support to the global/metro mirror"},{"line_number":89,"context_line":"              mode"},{"line_number":90,"context_line":"        2.1.1 - Update replication to version 2.1"},{"line_number":91,"context_line":"        2.2 - Add CG capability to generic groups"},{"line_number":92,"context_line":"    \"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    VERSION \u003d \"2.2\""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfeb2761_91520867","line":91,"range":{"start_line":91,"start_character":35,"end_line":91,"end_character":49},"updated":"2017-03-31 14:44:39.000000000","message":"generic volume groups","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"66e88ffbfb428390f564d0e0021bed6863451156","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        2.1 - Added replication V2 support to the global/metro mirror"},{"line_number":89,"context_line":"              mode"},{"line_number":90,"context_line":"        2.1.1 - Update replication to version 2.1"},{"line_number":91,"context_line":"        2.2 - Add CG capability to generic groups"},{"line_number":92,"context_line":"    \"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    VERSION \u003d \"2.2\""}],"source_content_type":"text/x-python","patch_set":8,"id":"dfeb2761_b7a10597","line":91,"range":{"start_line":91,"start_character":35,"end_line":91,"end_character":49},"in_reply_to":"dfeb2761_91520867","updated":"2017-04-05 03:03:10.000000000","message":"Done","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"}],"releasenotes/notes/storwize-generic-volume-group-74495fa23e059bf9.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"17dcdb1eeeee4b72f22c30e67b13e8ad960a0833","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add consistent group capability to generic volume groups in Storwize"},{"line_number":4,"context_line":"    drivers."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dfeb2761_f1d034cc","line":3,"range":{"start_line":3,"start_character":8,"end_line":3,"end_character":18},"updated":"2017-03-31 14:44:39.000000000","message":"consistency","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"66e88ffbfb428390f564d0e0021bed6863451156","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add consistent group capability to generic volume groups in Storwize"},{"line_number":4,"context_line":"    drivers."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dfeb2761_77a7fda8","line":3,"range":{"start_line":3,"start_character":8,"end_line":3,"end_character":18},"in_reply_to":"dfeb2761_f1d034cc","updated":"2017-04-05 03:03:10.000000000","message":"Done","commit_id":"3af4c393ff6fb4a4f7d8fce631dab47d25f3f48e"}]}
