)]}'
{"cinder/tests/test_emc_vnxdirect.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2823,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2824,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2825,"context_line":""},{"line_number":2826,"context_line":"        model_update, add_vols, remove_vols \u003d \\"},{"line_number":2827,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2828,"context_line":"                                                self.testData."},{"line_number":2829,"context_line":"                                                VOLUMES_NOT_IN_CG(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_5a595d5a","line":2826,"updated":"2015-02-14 04:50:39.000000000","message":"()","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2823,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2824,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2825,"context_line":""},{"line_number":2826,"context_line":"        model_update, add_vols, remove_vols \u003d \\"},{"line_number":2827,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2828,"context_line":"                                                self.testData."},{"line_number":2829,"context_line":"                                                VOLUMES_NOT_IN_CG(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_3d61e2d3","line":2826,"in_reply_to":"da86d52c_5a595d5a","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2840,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2841,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2842,"context_line":""},{"line_number":2843,"context_line":"        model_update, add_vols, remove_vols \u003d \\"},{"line_number":2844,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2845,"context_line":"                                                None,"},{"line_number":2846,"context_line":"                                                self.testData.VOLUMES_IN_CG()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_3a23c9bf","line":2843,"updated":"2015-02-14 04:50:39.000000000","message":"()","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2840,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2841,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2842,"context_line":""},{"line_number":2843,"context_line":"        model_update, add_vols, remove_vols \u003d \\"},{"line_number":2844,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2845,"context_line":"                                                None,"},{"line_number":2846,"context_line":"                                                self.testData.VOLUMES_IN_CG()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_bd7b127a","line":2843,"in_reply_to":"da86d52c_3a23c9bf","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2849,"context_line":"            mock.call(*self.testData.REMOVE_LUNS_FROM_CG_CMD("},{"line_number":2850,"context_line":"                cg_name, [\u00271\u0027, \u00273\u0027]), poll\u003dFalse)]"},{"line_number":2851,"context_line":"        fake_cli.assert_has_calls(expect_cmd)"},{"line_number":2852,"context_line":"        self.assertEqual(model_update[\u0027status\u0027], \u0027available\u0027)"},{"line_number":2853,"context_line":""},{"line_number":2854,"context_line":"    def test_update_consitencygroup_remove_not_in_cg(self):"},{"line_number":2855,"context_line":"        cg_name \u003d self.testData.test_cg[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_1a160556","line":2852,"updated":"2015-02-14 04:50:39.000000000","message":"The order of the parameters should be expected, actual.\n\nself.assertEqual(\u0027available\u0027, model_update[\u0027status\u0027])","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2849,"context_line":"            mock.call(*self.testData.REMOVE_LUNS_FROM_CG_CMD("},{"line_number":2850,"context_line":"                cg_name, [\u00271\u0027, \u00273\u0027]), poll\u003dFalse)]"},{"line_number":2851,"context_line":"        fake_cli.assert_has_calls(expect_cmd)"},{"line_number":2852,"context_line":"        self.assertEqual(model_update[\u0027status\u0027], \u0027available\u0027)"},{"line_number":2853,"context_line":""},{"line_number":2854,"context_line":"    def test_update_consitencygroup_remove_not_in_cg(self):"},{"line_number":2855,"context_line":"        cg_name \u003d self.testData.test_cg[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_ddf526ee","line":2852,"in_reply_to":"da86d52c_1a160556","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2857,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2858,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2859,"context_line":""},{"line_number":2860,"context_line":"        model_update, add_vols, remove_vols \u003d \\"},{"line_number":2861,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2862,"context_line":"                                                None,"},{"line_number":2863,"context_line":"                                                self.testData."}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_3a0ae927","line":2860,"updated":"2015-02-14 04:50:39.000000000","message":"()","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2857,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2858,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2859,"context_line":""},{"line_number":2860,"context_line":"        model_update, add_vols, remove_vols \u003d \\"},{"line_number":2861,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2862,"context_line":"                                                None,"},{"line_number":2863,"context_line":"                                                self.testData."}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_bd0eb2e3","line":2860,"in_reply_to":"da86d52c_3a0ae927","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2867,"context_line":"            mock.call(*self.testData.REPLACE_LUNS_IN_CG_CMD("},{"line_number":2868,"context_line":"                cg_name, [\u00271\u0027, \u00273\u0027]), poll\u003dFalse)]"},{"line_number":2869,"context_line":"        fake_cli.assert_has_calls(expect_cmd)"},{"line_number":2870,"context_line":"        self.assertEqual(model_update[\u0027status\u0027], \u0027available\u0027)"},{"line_number":2871,"context_line":""},{"line_number":2872,"context_line":"    def test_deregister_initiator(self):"},{"line_number":2873,"context_line":"        fake_cli \u003d self.driverSetup()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_7a046118","line":2870,"updated":"2015-02-14 04:50:39.000000000","message":"same","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2867,"context_line":"            mock.call(*self.testData.REPLACE_LUNS_IN_CG_CMD("},{"line_number":2868,"context_line":"                cg_name, [\u00271\u0027, \u00273\u0027]), poll\u003dFalse)]"},{"line_number":2869,"context_line":"        fake_cli.assert_has_calls(expect_cmd)"},{"line_number":2870,"context_line":"        self.assertEqual(model_update[\u0027status\u0027], \u0027available\u0027)"},{"line_number":2871,"context_line":""},{"line_number":2872,"context_line":"    def test_deregister_initiator(self):"},{"line_number":2873,"context_line":"        fake_cli \u003d self.driverSetup()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_9d072ec9","line":2870,"in_reply_to":"da86d52c_7a046118","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2868,"context_line":"                cg_name, [\u00271\u0027, \u00273\u0027]), poll\u003dFalse)]"},{"line_number":2869,"context_line":"        fake_cli.assert_has_calls(expect_cmd)"},{"line_number":2870,"context_line":"        self.assertEqual(model_update[\u0027status\u0027], \u0027available\u0027)"},{"line_number":2871,"context_line":""},{"line_number":2872,"context_line":"    def test_deregister_initiator(self):"},{"line_number":2873,"context_line":"        fake_cli \u003d self.driverSetup()"},{"line_number":2874,"context_line":"        self.driver.cli.destroy_empty_sg \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_ce074e17","line":2871,"updated":"2015-02-14 04:50:39.000000000","message":"Please add test for assertRaises.","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2868,"context_line":"                cg_name, [\u00271\u0027, \u00273\u0027]), poll\u003dFalse)]"},{"line_number":2869,"context_line":"        fake_cli.assert_has_calls(expect_cmd)"},{"line_number":2870,"context_line":"        self.assertEqual(model_update[\u0027status\u0027], \u0027available\u0027)"},{"line_number":2871,"context_line":""},{"line_number":2872,"context_line":"    def test_deregister_initiator(self):"},{"line_number":2873,"context_line":"        fake_cli \u003d self.driverSetup()"},{"line_number":2874,"context_line":"        self.driver.cli.destroy_empty_sg \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_7d2b5a33","line":2871,"in_reply_to":"da86d52c_ce074e17","updated":"2015-02-16 14:28:14.000000000","message":"will do","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"64562c1c95fa188059d8211f0a44f15f6eb2d6ae","unresolved":false,"context_lines":[{"line_number":2903,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2904,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2905,"context_line":""},{"line_number":2906,"context_line":"        (model_update, add_vols, remove_vols) \u003d \\"},{"line_number":2907,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2908,"context_line":"                                                self.testData."},{"line_number":2909,"context_line":"                                                VOLUMES_NOT_IN_CG(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_4dccdbbb","line":2906,"updated":"2015-02-18 03:49:35.000000000","message":"Can you use () instead of \\?","commit_id":"7c0d1dba7daec455b1ff8fe00179720ea1ea16e3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"64562c1c95fa188059d8211f0a44f15f6eb2d6ae","unresolved":false,"context_lines":[{"line_number":2920,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2921,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2922,"context_line":""},{"line_number":2923,"context_line":"        (model_update, add_vols, remove_vols) \u003d \\"},{"line_number":2924,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2925,"context_line":"                                                None,"},{"line_number":2926,"context_line":"                                                self.testData.VOLUMES_IN_CG()"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_6dc43f92","line":2923,"updated":"2015-02-18 03:49:35.000000000","message":"Same","commit_id":"7c0d1dba7daec455b1ff8fe00179720ea1ea16e3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"64562c1c95fa188059d8211f0a44f15f6eb2d6ae","unresolved":false,"context_lines":[{"line_number":2937,"context_line":"        results \u003d [self.testData.CG_PROPERTY(cg_name)]"},{"line_number":2938,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2939,"context_line":""},{"line_number":2940,"context_line":"        model_update, add_vols, remove_vols \u003d \\"},{"line_number":2941,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2942,"context_line":"                                                None,"},{"line_number":2943,"context_line":"                                                self.testData."}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_adbab708","line":2940,"updated":"2015-02-18 03:49:35.000000000","message":"Same","commit_id":"7c0d1dba7daec455b1ff8fe00179720ea1ea16e3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"64562c1c95fa188059d8211f0a44f15f6eb2d6ae","unresolved":false,"context_lines":[{"line_number":2958,"context_line":"                   self.testData.CG_REPL_ERROR()]"},{"line_number":2959,"context_line":"        fake_cli \u003d self.driverSetup(commands, results)"},{"line_number":2960,"context_line":""},{"line_number":2961,"context_line":"        (model_update, add_vols, remove_vols) \u003d \\"},{"line_number":2962,"context_line":"            self.driver.update_consistencygroup(None, self.testData.test_cg,"},{"line_number":2963,"context_line":"                                                [],"},{"line_number":2964,"context_line":"                                                self.testData."}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_cdb7eb1f","line":2961,"updated":"2015-02-18 03:49:35.000000000","message":"Same","commit_id":"7c0d1dba7daec455b1ff8fe00179720ea1ea16e3"}],"cinder/volume/drivers/emc/emc_cli_fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":238,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":239,"context_line":"                                add_volumes,"},{"line_number":240,"context_line":"                                remove_volumes):"},{"line_number":241,"context_line":"        \"\"\"Updates LUNs in consistencygroup\"\"\""},{"line_number":242,"context_line":"        return self.cli.update_consistencygroup(context, group,"},{"line_number":243,"context_line":"                                                add_volumes,"},{"line_number":244,"context_line":"                                                remove_volumes)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_9a7cb5b7","line":241,"updated":"2015-02-14 04:50:39.000000000","message":"period","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":238,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":239,"context_line":"                                add_volumes,"},{"line_number":240,"context_line":"                                remove_volumes):"},{"line_number":241,"context_line":"        \"\"\"Updates LUNs in consistencygroup\"\"\""},{"line_number":242,"context_line":"        return self.cli.update_consistencygroup(context, group,"},{"line_number":243,"context_line":"                                                add_volumes,"},{"line_number":244,"context_line":"                                                remove_volumes)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_1dcb3e4b","line":241,"in_reply_to":"da86d52c_9a7cb5b7","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"}],"cinder/volume/drivers/emc/emc_cli_iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":203,"context_line":"                                add_volumes,"},{"line_number":204,"context_line":"                                remove_volumes):"},{"line_number":205,"context_line":"        \"\"\"Updates LUNs in consistencygroup\"\"\""},{"line_number":206,"context_line":"        return self.cli.update_consistencygroup(context, group,"},{"line_number":207,"context_line":"                                                add_volumes,"},{"line_number":208,"context_line":"                                                remove_volumes)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_3a7589cc","line":205,"updated":"2015-02-14 04:50:39.000000000","message":"period","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":203,"context_line":"                                add_volumes,"},{"line_number":204,"context_line":"                                remove_volumes):"},{"line_number":205,"context_line":"        \"\"\"Updates LUNs in consistencygroup\"\"\""},{"line_number":206,"context_line":"        return self.cli.update_consistencygroup(context, group,"},{"line_number":207,"context_line":"                                                add_volumes,"},{"line_number":208,"context_line":"                                                remove_volumes)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_bdfdd270","line":205,"in_reply_to":"da86d52c_3a7589cc","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3e74cc939eb3586d7bc145ed206e627589371ac4","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":223,"context_line":"                                add_volumes,"},{"line_number":224,"context_line":"                                remove_volumes):"},{"line_number":225,"context_line":"        \"\"\"Updates LUNs in consistencygroup.\"\"\""},{"line_number":226,"context_line":"        return self.cli.update_consistencygroup(context, group,"},{"line_number":227,"context_line":"                                                add_volumes,"},{"line_number":228,"context_line":"                                                remove_volumes)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_38f8317c","line":225,"updated":"2015-03-04 21:43:55.000000000","message":"consistency group, needs a space but only if you need to put a new patch up for other reasons","commit_id":"f353361d9a2585b9e71401c6b65349e68c55ba4b"}],"cinder/volume/drivers/emc/emc_vnx_cli.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                # Handle case when no lun in cg Member LUN ID(s):  None"},{"line_number":589,"context_line":"                luns_of_cg \u003d m.groups()[3].replace(\u0027None\u0027, \u0027\u0027).strip()"},{"line_number":590,"context_line":"                data[\u0027Luns\u0027] \u003d \\"},{"line_number":591,"context_line":"                    [lun.strip() for lun in luns_of_cg.split(\u0027,\u0027)]\\"},{"line_number":592,"context_line":"                    if luns_of_cg else []"},{"line_number":593,"context_line":"                LOG.debug(\"Found consistent group %s.\", data[\u0027Name\u0027])"},{"line_number":594,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_9af75559","line":591,"updated":"2015-02-14 04:50:39.000000000","message":"Use ()","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                # Handle case when no lun in cg Member LUN ID(s):  None"},{"line_number":589,"context_line":"                luns_of_cg \u003d m.groups()[3].replace(\u0027None\u0027, \u0027\u0027).strip()"},{"line_number":590,"context_line":"                data[\u0027Luns\u0027] \u003d \\"},{"line_number":591,"context_line":"                    [lun.strip() for lun in luns_of_cg.split(\u0027,\u0027)]\\"},{"line_number":592,"context_line":"                    if luns_of_cg else []"},{"line_number":593,"context_line":"                LOG.debug(\"Found consistent group %s.\", data[\u0027Name\u0027])"},{"line_number":594,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_f0f771d2","line":591,"in_reply_to":"da86d52c_9af75559","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2181,"context_line":"        \"\"\"Adds or removes LUN(s) to/from an existing consistency group\"\"\""},{"line_number":2182,"context_line":"        model_update \u003d {\u0027status\u0027: group[\u0027status\u0027]}"},{"line_number":2183,"context_line":"        cg_name \u003d group[\u0027id\u0027]"},{"line_number":2184,"context_line":"        add_ids \u003d [str(self.get_lun_id(vol))"},{"line_number":2185,"context_line":"                   for vol in add_volumes] if add_volumes else []"},{"line_number":2186,"context_line":"        remove_ids \u003d [str(self.get_lun_id(vol))"},{"line_number":2187,"context_line":"                      for vol in remove_volumes] if remove_volumes else []"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_fa8131c4","line":2184,"updated":"2015-02-14 04:50:39.000000000","message":"Use six.text_type() instead of str().","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2181,"context_line":"        \"\"\"Adds or removes LUN(s) to/from an existing consistency group\"\"\""},{"line_number":2182,"context_line":"        model_update \u003d {\u0027status\u0027: group[\u0027status\u0027]}"},{"line_number":2183,"context_line":"        cg_name \u003d group[\u0027id\u0027]"},{"line_number":2184,"context_line":"        add_ids \u003d [str(self.get_lun_id(vol))"},{"line_number":2185,"context_line":"                   for vol in add_volumes] if add_volumes else []"},{"line_number":2186,"context_line":"        remove_ids \u003d [str(self.get_lun_id(vol))"},{"line_number":2187,"context_line":"                      for vol in remove_volumes] if remove_volumes else []"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_b0dc1948","line":2184,"in_reply_to":"da86d52c_fa8131c4","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2183,"context_line":"        cg_name \u003d group[\u0027id\u0027]"},{"line_number":2184,"context_line":"        add_ids \u003d [str(self.get_lun_id(vol))"},{"line_number":2185,"context_line":"                   for vol in add_volumes] if add_volumes else []"},{"line_number":2186,"context_line":"        remove_ids \u003d [str(self.get_lun_id(vol))"},{"line_number":2187,"context_line":"                      for vol in remove_volumes] if remove_volumes else []"},{"line_number":2188,"context_line":""},{"line_number":2189,"context_line":"        data \u003d self._client.get_consistency_group_by_name(cg_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_3a6bc920","line":2186,"updated":"2015-02-14 04:50:39.000000000","message":"same","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2183,"context_line":"        cg_name \u003d group[\u0027id\u0027]"},{"line_number":2184,"context_line":"        add_ids \u003d [str(self.get_lun_id(vol))"},{"line_number":2185,"context_line":"                   for vol in add_volumes] if add_volumes else []"},{"line_number":2186,"context_line":"        remove_ids \u003d [str(self.get_lun_id(vol))"},{"line_number":2187,"context_line":"                      for vol in remove_volumes] if remove_volumes else []"},{"line_number":2188,"context_line":""},{"line_number":2189,"context_line":"        data \u003d self._client.get_consistency_group_by_name(cg_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_f0e5b10a","line":2186,"in_reply_to":"da86d52c_3a6bc920","updated":"2015-02-16 14:28:14.000000000","message":"Done","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2202,"context_line":"                            {\u0027remove_id\u0027: remove_id, \u0027cg_name\u0027: cg_name})"},{"line_number":2203,"context_line":"        # Remove all from cg"},{"line_number":2204,"context_line":"        if not ids_later:"},{"line_number":2205,"context_line":"            self._client.remove_luns_from_consistencygroup(cg_name, ids_curr)"},{"line_number":2206,"context_line":"        else:"},{"line_number":2207,"context_line":"            self._client.replace_luns_in_consistencygroup(cg_name, ids_later)"},{"line_number":2208,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_da638d3f","line":2205,"updated":"2015-02-14 04:50:39.000000000","message":"Should catch the exception raised in this routine and set \u0027status\u0027 of volume dicts in add_volumes and remove_volumes to \u0027error\u0027.","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"cbfb38717974f46d4b2bc6814e0133325f770e00","unresolved":false,"context_lines":[{"line_number":2202,"context_line":"                            {\u0027remove_id\u0027: remove_id, \u0027cg_name\u0027: cg_name})"},{"line_number":2203,"context_line":"        # Remove all from cg"},{"line_number":2204,"context_line":"        if not ids_later:"},{"line_number":2205,"context_line":"            self._client.remove_luns_from_consistencygroup(cg_name, ids_curr)"},{"line_number":2206,"context_line":"        else:"},{"line_number":2207,"context_line":"            self._client.replace_luns_in_consistencygroup(cg_name, ids_later)"},{"line_number":2208,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_8d925355","line":2205,"in_reply_to":"da86d52c_d36fd7fa","updated":"2015-02-18 03:54:55.000000000","message":"Yes.  The manager is expecting status from volumes as well.  See docstring here:\nhttps://review.openstack.org/#/c/144561/16/cinder/volume/driver.py","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2202,"context_line":"                            {\u0027remove_id\u0027: remove_id, \u0027cg_name\u0027: cg_name})"},{"line_number":2203,"context_line":"        # Remove all from cg"},{"line_number":2204,"context_line":"        if not ids_later:"},{"line_number":2205,"context_line":"            self._client.remove_luns_from_consistencygroup(cg_name, ids_curr)"},{"line_number":2206,"context_line":"        else:"},{"line_number":2207,"context_line":"            self._client.replace_luns_in_consistencygroup(cg_name, ids_later)"},{"line_number":2208,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_d36fd7fa","line":2205,"in_reply_to":"da86d52c_da638d3f","updated":"2015-02-16 14:28:14.000000000","message":"Hi Xing\ndo you mean catch the exception and then\nset the status of volumes and cg to \u0027error\u0027\n\nfinally return model_update, add_volumes, remove_volumes\n?","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2204,"context_line":"        if not ids_later:"},{"line_number":2205,"context_line":"            self._client.remove_luns_from_consistencygroup(cg_name, ids_curr)"},{"line_number":2206,"context_line":"        else:"},{"line_number":2207,"context_line":"            self._client.replace_luns_in_consistencygroup(cg_name, ids_later)"},{"line_number":2208,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":2209,"context_line":"        return model_update, add_volumes, remove_volumes"},{"line_number":2210,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_fa58518c","line":2207,"updated":"2015-02-14 04:50:39.000000000","message":"Same here.","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2204,"context_line":"        if not ids_later:"},{"line_number":2205,"context_line":"            self._client.remove_luns_from_consistencygroup(cg_name, ids_curr)"},{"line_number":2206,"context_line":"        else:"},{"line_number":2207,"context_line":"            self._client.replace_luns_in_consistencygroup(cg_name, ids_later)"},{"line_number":2208,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":2209,"context_line":"        return model_update, add_volumes, remove_volumes"},{"line_number":2210,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_b343436b","line":2207,"in_reply_to":"da86d52c_fa58518c","updated":"2015-02-16 14:28:14.000000000","message":"same above","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eecfa0a29ce97df3fe6b70a844ff8c7ab9759089","unresolved":false,"context_lines":[{"line_number":2205,"context_line":"            self._client.remove_luns_from_consistencygroup(cg_name, ids_curr)"},{"line_number":2206,"context_line":"        else:"},{"line_number":2207,"context_line":"            self._client.replace_luns_in_consistencygroup(cg_name, ids_later)"},{"line_number":2208,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":2209,"context_line":"        return model_update, add_volumes, remove_volumes"},{"line_number":2210,"context_line":""},{"line_number":2211,"context_line":"    def create_cgsnapshot(self, driver, context, cgsnapshot):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_fa6bf1ee","line":2208,"updated":"2015-02-14 04:50:39.000000000","message":"\u0027status\u0027 should be set to \u0027error\u0027 if error happened in above routines.","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"d90f999996a75a2956d51ffa2cc9ba9a5d181925","unresolved":false,"context_lines":[{"line_number":2205,"context_line":"            self._client.remove_luns_from_consistencygroup(cg_name, ids_curr)"},{"line_number":2206,"context_line":"        else:"},{"line_number":2207,"context_line":"            self._client.replace_luns_in_consistencygroup(cg_name, ids_later)"},{"line_number":2208,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":2209,"context_line":"        return model_update, add_volumes, remove_volumes"},{"line_number":2210,"context_line":""},{"line_number":2211,"context_line":"    def create_cgsnapshot(self, driver, context, cgsnapshot):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_f35cdb4e","line":2208,"in_reply_to":"da86d52c_fa6bf1ee","updated":"2015-02-16 14:28:14.000000000","message":"same above","commit_id":"263695356db44fad772546198297fea2b7eadb02"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"64562c1c95fa188059d8211f0a44f15f6eb2d6ae","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                data[\u0027State\u0027] \u003d m.groups()[4].strip()"},{"line_number":588,"context_line":"                # Handle case when no lun in cg Member LUN ID(s):  None"},{"line_number":589,"context_line":"                luns_of_cg \u003d m.groups()[3].replace(\u0027None\u0027, \u0027\u0027).strip()"},{"line_number":590,"context_line":"                data[\u0027Luns\u0027] \u003d \\"},{"line_number":591,"context_line":"                    ([lun.strip() for lun in luns_of_cg.split(\u0027,\u0027)]"},{"line_number":592,"context_line":"                        if luns_of_cg else [])"},{"line_number":593,"context_line":"                LOG.debug(\"Found consistent group %s.\", data[\u0027Name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_cd4e0b38","line":590,"updated":"2015-02-18 03:49:35.000000000","message":"Can you use () instead of \\?","commit_id":"7c0d1dba7daec455b1ff8fe00179720ea1ea16e3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7ed0b4df9cbb7186feaaa7bab5192445e79db038","unresolved":false,"context_lines":[{"line_number":2274,"context_line":"                add_vol[\u0027status\u0027] \u003d \u0027error\u0027"},{"line_number":2275,"context_line":"            for remove_vol in remove_volumes:"},{"line_number":2276,"context_line":"                remove_vol[\u0027status\u0027] \u003d \u0027error\u0027"},{"line_number":2277,"context_line":"        return model_update, add_volumes, remove_volumes"},{"line_number":2278,"context_line":""},{"line_number":2279,"context_line":"    def create_cgsnapshot(self, driver, context, cgsnapshot):"},{"line_number":2280,"context_line":"        \"\"\"Creates a cgsnapshot (snap group).\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_d3530c37","line":2277,"updated":"2015-02-24 18:28:51.000000000","message":"There were changes made to the dependent patch to be more consistent with other volume operations..\n\nIf an error occurs, throw an exception here. I know it goes back to what you have before.\n\nIf successful, return the 3 items. You can\u0027t directly modify add_volumes and remove_volumes and return them back. You have two choices:\n1. Build your own list of dicts. Each entry has to have {\u0027id\u0027, xxx}.\n2. You can just return None for add_volumes and remove_volumes and manager will do the update.\n\nSo you can just return model_update, None, None.","commit_id":"0c36719191186b8c8003d9a8116a70a5163c8350"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"56a3d165d507f465bb702f822e11648c286ae4aa","unresolved":false,"context_lines":[{"line_number":2274,"context_line":"                add_vol[\u0027status\u0027] \u003d \u0027error\u0027"},{"line_number":2275,"context_line":"            for remove_vol in remove_volumes:"},{"line_number":2276,"context_line":"                remove_vol[\u0027status\u0027] \u003d \u0027error\u0027"},{"line_number":2277,"context_line":"        return model_update, add_volumes, remove_volumes"},{"line_number":2278,"context_line":""},{"line_number":2279,"context_line":"    def create_cgsnapshot(self, driver, context, cgsnapshot):"},{"line_number":2280,"context_line":"        \"\"\"Creates a cgsnapshot (snap group).\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_9e034641","line":2277,"in_reply_to":"ba7be1f8_d3530c37","updated":"2015-02-25 06:09:16.000000000","message":"Done","commit_id":"0c36719191186b8c8003d9a8116a70a5163c8350"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"3f41f4f056e7557b97c4f6cb706985ba07fd3139","unresolved":false,"context_lines":[{"line_number":2274,"context_line":"                add_vol[\u0027status\u0027] \u003d \u0027error\u0027"},{"line_number":2275,"context_line":"            for remove_vol in remove_volumes:"},{"line_number":2276,"context_line":"                remove_vol[\u0027status\u0027] \u003d \u0027error\u0027"},{"line_number":2277,"context_line":"        return model_update, add_volumes, remove_volumes"},{"line_number":2278,"context_line":""},{"line_number":2279,"context_line":"    def create_cgsnapshot(self, driver, context, cgsnapshot):"},{"line_number":2280,"context_line":"        \"\"\"Creates a cgsnapshot (snap group).\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_49d2fd5c","line":2277,"in_reply_to":"ba7be1f8_d3530c37","updated":"2015-02-25 04:15:59.000000000","message":"Hi Xing\nI trend to use the second solution\nwill rebase and address your comment","commit_id":"0c36719191186b8c8003d9a8116a70a5163c8350"}]}
