)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":15,"context_line":"* LUN Number Threshold Support"},{"line_number":16,"context_line":"* Initiator Auto Deregistration"},{"line_number":17,"context_line":"* Force Deleting LUN in Storage Groups"},{"line_number":18,"context_line":"* Code refector to enhance the robustness"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Id263a5d0405ba942582ce06beed09b436b80ff3c"},{"line_number":21,"context_line":"Implements: blueprint emc-vnx-direct-driver-kilo-update"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"da86d52c_fdd686c4","line":18,"updated":"2015-02-02 13:46:06.000000000","message":"refactor","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":15,"context_line":"* LUN Number Threshold Support"},{"line_number":16,"context_line":"* Initiator Auto Deregistration"},{"line_number":17,"context_line":"* Force Deleting LUN in Storage Groups"},{"line_number":18,"context_line":"* Code refector to enhance the robustness"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Id263a5d0405ba942582ce06beed09b436b80ff3c"},{"line_number":21,"context_line":"Implements: blueprint emc-vnx-direct-driver-kilo-update"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"da86d52c_b490804f","line":18,"in_reply_to":"da86d52c_fdd686c4","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"}],"cinder/exception.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":834,"context_line":"             \u0027rc\u0027: rc,"},{"line_number":835,"context_line":"             \u0027out\u0027: out.split(\u0027\\n\u0027)}"},{"line_number":836,"context_line":"        kwargs[\"data\"] \u003d msg"},{"line_number":837,"context_line":"        super(EMCVnxCLICmdError, self).__init__(**kwargs)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"# ConsistencyGroup"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c7d7c1bd","line":837,"updated":"2015-01-06 20:04:53.000000000","message":"I recommend that you move the logic in __init__ back to the driver and only keep \"message\u003d_(\"xxxxxx\")\" here, to be consistent with other custom exceptions.","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"9090d6594626b38134c1fa5427f153e1b5eff93a","unresolved":false,"context_lines":[{"line_number":834,"context_line":"             \u0027rc\u0027: rc,"},{"line_number":835,"context_line":"             \u0027out\u0027: out.split(\u0027\\n\u0027)}"},{"line_number":836,"context_line":"        kwargs[\"data\"] \u003d msg"},{"line_number":837,"context_line":"        super(EMCVnxCLICmdError, self).__init__(**kwargs)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"# ConsistencyGroup"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_635e98eb","line":837,"in_reply_to":"3a961159_c7d7c1bd","updated":"2015-01-21 10:18:21.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":834,"context_line":"             \u0027rc\u0027: rc,"},{"line_number":835,"context_line":"             \u0027out\u0027: out.split(\u0027\\n\u0027)}"},{"line_number":836,"context_line":"        kwargs[\"data\"] \u003d msg"},{"line_number":837,"context_line":"        super(EMCVnxCLICmdError, self).__init__(**kwargs)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"# ConsistencyGroup"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_66641de5","line":837,"in_reply_to":"3a961159_c7d7c1bd","updated":"2015-01-08 09:14:34.000000000","message":"It is good to add message\u003d_(\"xxxxxx\") for consistency.\n\nBut our implementation relies on the member variable self.rc and self.out. I don\u0027t find a property way without initializing them in __init__ method.","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5c674f160f2205182b5f55769d0be949f119555f","unresolved":false,"context_lines":[{"line_number":846,"context_line":"class EMCVnxCLICmdError(VolumeBackendAPIException):"},{"line_number":847,"context_line":"    message \u003d _(\"EMC VNX Cinder Driver CLI exception: %(data)s\")"},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"    def __init__(self, cmd\u003dNone, rc\u003dNone, out\u003d\u0027\u0027, **kwargs):"},{"line_number":850,"context_line":"        self.cmd \u003d cmd"},{"line_number":851,"context_line":"        self.rc \u003d rc"},{"line_number":852,"context_line":"        self.out \u003d out"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_edbe17ff","line":849,"updated":"2015-01-17 16:17:37.000000000","message":"Please move __init__ out of exception.py as we discussed.","commit_id":"0ef788b9cfe92b52910edcd0eb360235a2856c3b"}],"cinder/tests/test_emc_vnxdirect.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2000,"context_line":"        self.driver \u003d EMCCLIISCSIDriver(configuration\u003dself.configuration)"},{"line_number":2001,"context_line":"        assert isinstance(self.driver.cli, emc_vnx_cli.EMCVnxCliArray)"},{"line_number":2002,"context_line":""},{"line_number":2003,"context_line":"        #mock the command executor"},{"line_number":2004,"context_line":"        fake_command_execute \u003d self.get_command_execute_simulator("},{"line_number":2005,"context_line":"            commands, results)"},{"line_number":2006,"context_line":"        fake_cli \u003d mock.MagicMock(side_effect\u003dfake_command_execute)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c7fee137","line":2003,"updated":"2015-01-06 20:04:53.000000000","message":"space after #","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2000,"context_line":"        self.driver \u003d EMCCLIISCSIDriver(configuration\u003dself.configuration)"},{"line_number":2001,"context_line":"        assert isinstance(self.driver.cli, emc_vnx_cli.EMCVnxCliArray)"},{"line_number":2002,"context_line":""},{"line_number":2003,"context_line":"        #mock the command executor"},{"line_number":2004,"context_line":"        fake_command_execute \u003d self.get_command_execute_simulator("},{"line_number":2005,"context_line":"            commands, results)"},{"line_number":2006,"context_line":"        fake_cli \u003d mock.MagicMock(side_effect\u003dfake_command_execute)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_8da76c4f","line":2003,"in_reply_to":"3a961159_c7fee137","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":1694,"context_line":"        fake_cli.assert_has_calls(expect_cmd)"},{"line_number":1695,"context_line":""},{"line_number":1696,"context_line":"    def test_create_vol_from_snap_failed_in_migrate_lun(self):"},{"line_number":1697,"context_line":"        \"\"\"Unit test for create volume from snapshot failed in the"},{"line_number":1698,"context_line":"        lun migration step. if this step is failed, according to the"},{"line_number":1699,"context_line":"        logic of the task flow, the other three task before migration"},{"line_number":1700,"context_line":"        should be reverted. The reverted task include deleting the"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_9c1a997b","line":1697,"updated":"2015-02-03 22:13:22.000000000","message":"docstring violation.\n\nhttp://docs.openstack.org/developer/hacking/#docstrings","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":1694,"context_line":"        fake_cli.assert_has_calls(expect_cmd)"},{"line_number":1695,"context_line":""},{"line_number":1696,"context_line":"    def test_create_vol_from_snap_failed_in_migrate_lun(self):"},{"line_number":1697,"context_line":"        \"\"\"Unit test for create volume from snapshot failed in the"},{"line_number":1698,"context_line":"        lun migration step. if this step is failed, according to the"},{"line_number":1699,"context_line":"        logic of the task flow, the other three task before migration"},{"line_number":1700,"context_line":"        should be reverted. The reverted task include deleting the"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_18a94cdf","line":1697,"in_reply_to":"da86d52c_9c1a997b","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":1988,"context_line":"                          invaild_ref)"},{"line_number":1989,"context_line":""},{"line_number":1990,"context_line":"    def test_manage_existing_get_size_array_backend(self):"},{"line_number":1991,"context_line":"        \"\"\"Unit test for the manage_existing_get_size"},{"line_number":1992,"context_line":"        function of driver."},{"line_number":1993,"context_line":"        \"\"\""},{"line_number":1994,"context_line":"        get_lun_cmd \u003d (\u0027lun\u0027, \u0027-list\u0027, \u0027-l\u0027, self.testData.test_lun_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_fc155549","line":1991,"updated":"2015-02-03 22:13:22.000000000","message":"Here too.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":1988,"context_line":"                          invaild_ref)"},{"line_number":1989,"context_line":""},{"line_number":1990,"context_line":"    def test_manage_existing_get_size_array_backend(self):"},{"line_number":1991,"context_line":"        \"\"\"Unit test for the manage_existing_get_size"},{"line_number":1992,"context_line":"        function of driver."},{"line_number":1993,"context_line":"        \"\"\""},{"line_number":1994,"context_line":"        get_lun_cmd \u003d (\u0027lun\u0027, \u0027-list\u0027, \u0027-l\u0027, self.testData.test_lun_id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_58ae64e7","line":1991,"in_reply_to":"da86d52c_fc155549","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2002,"context_line":"        self.driver \u003d EMCCLIISCSIDriver(configuration\u003dself.configuration)"},{"line_number":2003,"context_line":"        assert isinstance(self.driver.cli, emc_vnx_cli.EMCVnxCliArray)"},{"line_number":2004,"context_line":""},{"line_number":2005,"context_line":"        # mock the command executor"},{"line_number":2006,"context_line":"        fake_command_execute \u003d self.get_command_execute_simulator("},{"line_number":2007,"context_line":"            commands, results)"},{"line_number":2008,"context_line":"        fake_cli \u003d mock.MagicMock(side_effect\u003dfake_command_execute)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_5c04a117","line":2005,"updated":"2015-02-03 22:13:22.000000000","message":"Mock","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2002,"context_line":"        self.driver \u003d EMCCLIISCSIDriver(configuration\u003dself.configuration)"},{"line_number":2003,"context_line":"        assert isinstance(self.driver.cli, emc_vnx_cli.EMCVnxCliArray)"},{"line_number":2004,"context_line":""},{"line_number":2005,"context_line":"        # mock the command executor"},{"line_number":2006,"context_line":"        fake_command_execute \u003d self.get_command_execute_simulator("},{"line_number":2007,"context_line":"            commands, results)"},{"line_number":2008,"context_line":"        fake_cli \u003d mock.MagicMock(side_effect\u003dfake_command_execute)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_78b7a83a","line":2005,"in_reply_to":"da86d52c_5c04a117","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"}],"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":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                \u0027By default, the value is False.\u0027),"},{"line_number":114,"context_line":"    cfg.BoolOpt(\u0027force_delete_lun_in_storagegroup\u0027,"},{"line_number":115,"context_line":"                default\u003dFalse,"},{"line_number":116,"context_line":"                help\u003d\u0027Delete a LUN even if it is in Storage Group\u0027)"},{"line_number":117,"context_line":"]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"CONF.register_opts(loc_opts)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0f8f25ce","line":116,"updated":"2015-01-06 20:04:53.000000000","message":"Period","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                \u0027By default, the value is False.\u0027),"},{"line_number":114,"context_line":"    cfg.BoolOpt(\u0027force_delete_lun_in_storagegroup\u0027,"},{"line_number":115,"context_line":"                default\u003dFalse,"},{"line_number":116,"context_line":"                help\u003d\u0027Delete a LUN even if it is in Storage Group\u0027)"},{"line_number":117,"context_line":"]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"CONF.register_opts(loc_opts)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_ed671023","line":116,"in_reply_to":"3a961159_0f8f25ce","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            try:"},{"line_number":396,"context_line":"                data \u003d self.get_lun_by_name(name, self.LUN_ALL, False)"},{"line_number":397,"context_line":"                return data[self.LUN_STATE.key] \u003d\u003d \u0027Ready\u0027 and \\"},{"line_number":398,"context_line":"                    data[self.LUN_STATUS.key] \u003d\u003d \u0027OK(0x0)\u0027 and \\"},{"line_number":399,"context_line":"                    data[self.LUN_OPERATION.key] \u003d\u003d \u0027None\u0027"},{"line_number":400,"context_line":"            except EMCVnxCLICmdError as ex:"},{"line_number":401,"context_line":"                if ex.out.find(\u0027The (pool lun) may not exist\u0027) \u003e\u003d 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_4f63ed19","line":398,"updated":"2015-01-06 20:04:53.000000000","message":"() is recommended to wrap around one statement on multiple lines.","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            try:"},{"line_number":396,"context_line":"                data \u003d self.get_lun_by_name(name, self.LUN_ALL, False)"},{"line_number":397,"context_line":"                return data[self.LUN_STATE.key] \u003d\u003d \u0027Ready\u0027 and \\"},{"line_number":398,"context_line":"                    data[self.LUN_STATUS.key] \u003d\u003d \u0027OK(0x0)\u0027 and \\"},{"line_number":399,"context_line":"                    data[self.LUN_OPERATION.key] \u003d\u003d \u0027None\u0027"},{"line_number":400,"context_line":"            except EMCVnxCLICmdError as ex:"},{"line_number":401,"context_line":"                if ex.out.find(\u0027The (pool lun) may not exist\u0027) \u003e\u003d 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b0eabb9d","line":398,"in_reply_to":"3a961159_4f63ed19","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                    data[self.LUN_STATUS.key] \u003d\u003d \u0027OK(0x0)\u0027 and \\"},{"line_number":399,"context_line":"                    data[self.LUN_OPERATION.key] \u003d\u003d \u0027None\u0027"},{"line_number":400,"context_line":"            except EMCVnxCLICmdError as ex:"},{"line_number":401,"context_line":"                if ex.out.find(\u0027The (pool lun) may not exist\u0027) \u003e\u003d 0:"},{"line_number":402,"context_line":"                    return False"},{"line_number":403,"context_line":"                else:"},{"line_number":404,"context_line":"                    raise ex"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0f2ba595","line":401,"updated":"2015-01-06 20:04:53.000000000","message":"Can you use constant for the text?","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                    data[self.LUN_STATUS.key] \u003d\u003d \u0027OK(0x0)\u0027 and \\"},{"line_number":399,"context_line":"                    data[self.LUN_OPERATION.key] \u003d\u003d \u0027None\u0027"},{"line_number":400,"context_line":"            except EMCVnxCLICmdError as ex:"},{"line_number":401,"context_line":"                if ex.out.find(\u0027The (pool lun) may not exist\u0027) \u003e\u003d 0:"},{"line_number":402,"context_line":"                    return False"},{"line_number":403,"context_line":"                else:"},{"line_number":404,"context_line":"                    raise ex"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f02fe3f3","line":401,"in_reply_to":"3a961159_0f2ba595","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                LOG.debug(\u0027CommandLineHelper.\u0027"},{"line_number":464,"context_line":"                          \u0027_wait_for_condition: %(method_name)s \u0027"},{"line_number":465,"context_line":"                          \u0027execution failed for %(exception)s\u0027"},{"line_number":466,"context_line":"                          % {\u0027method_name\u0027: testmethod.__name__,"},{"line_number":467,"context_line":"                             \u0027exception\u0027: six.text_type(ex)})"},{"line_number":468,"context_line":"            if testValue:"},{"line_number":469,"context_line":"                raise loopingcall.LoopingCallDone()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_fa0ff52b","line":466,"updated":"2015-01-06 20:04:53.000000000","message":"It\u0027s better to use \",\" rather than \"%\" for delayed string interpolation here.","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                LOG.debug(\u0027CommandLineHelper.\u0027"},{"line_number":464,"context_line":"                          \u0027_wait_for_condition: %(method_name)s \u0027"},{"line_number":465,"context_line":"                          \u0027execution failed for %(exception)s\u0027"},{"line_number":466,"context_line":"                          % {\u0027method_name\u0027: testmethod.__name__,"},{"line_number":467,"context_line":"                             \u0027exception\u0027: six.text_type(ex)})"},{"line_number":468,"context_line":"            if testValue:"},{"line_number":469,"context_line":"                raise loopingcall.LoopingCallDone()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_300deb8f","line":466,"in_reply_to":"3a961159_fa0ff52b","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def detach_mount_point(self, smp_name):"},{"line_number":763,"context_line":"        \"\"\"This function would detach the SMP by name."},{"line_number":764,"context_line":"        \"\"\""},{"line_number":765,"context_line":"        command_detach_mount_point \u003d (\u0027lun\u0027, \u0027-detach\u0027,"},{"line_number":766,"context_line":"                                      \u0027-name\u0027, smp_name)"},{"line_number":767,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_fa3615e6","line":764,"updated":"2015-01-06 20:04:53.000000000","message":"Move closing \"\"\" to the above line.\n\nWhat is SMP? snapshot mount point?","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def detach_mount_point(self, smp_name):"},{"line_number":763,"context_line":"        \"\"\"This function would detach the SMP by name."},{"line_number":764,"context_line":"        \"\"\""},{"line_number":765,"context_line":"        command_detach_mount_point \u003d (\u0027lun\u0027, \u0027-detach\u0027,"},{"line_number":766,"context_line":"                                      \u0027-name\u0027, smp_name)"},{"line_number":767,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_d07ae7ef","line":764,"in_reply_to":"3a961159_fa3615e6","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        out, rc \u003d self.command_execute(*command_detach_mount_point)"},{"line_number":769,"context_line":"        if rc !\u003d 0:"},{"line_number":770,"context_line":"            #Ignore the error that due to retry"},{"line_number":771,"context_line":"            if rc \u003d\u003d 162 and out.find(\u0027The specified Snapshot mount point \u0027"},{"line_number":772,"context_line":"                                      \u0027is not currently attached.\u0027) \u003e\u003d 0:"},{"line_number":773,"context_line":"                LOG.warn(_(\"The specified Snapshot mount point %s is not \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_7a794592","line":770,"updated":"2015-01-06 20:04:53.000000000","message":"Space after #","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        out, rc \u003d self.command_execute(*command_detach_mount_point)"},{"line_number":769,"context_line":"        if rc !\u003d 0:"},{"line_number":770,"context_line":"            #Ignore the error that due to retry"},{"line_number":771,"context_line":"            if rc \u003d\u003d 162 and out.find(\u0027The specified Snapshot mount point \u0027"},{"line_number":772,"context_line":"                                      \u0027is not currently attached.\u0027) \u003e\u003d 0:"},{"line_number":773,"context_line":"                LOG.warn(_(\"The specified Snapshot mount point %s is not \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b06f1b27","line":770,"in_reply_to":"3a961159_7a794592","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":769,"context_line":"        if rc !\u003d 0:"},{"line_number":770,"context_line":"            #Ignore the error that due to retry"},{"line_number":771,"context_line":"            if rc \u003d\u003d 162 and out.find(\u0027The specified Snapshot mount point \u0027"},{"line_number":772,"context_line":"                                      \u0027is not currently attached.\u0027) \u003e\u003d 0:"},{"line_number":773,"context_line":"                LOG.warn(_(\"The specified Snapshot mount point %s is not \""},{"line_number":774,"context_line":"                           \"currently attached.\") % smp_name)"},{"line_number":775,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_ba6f2dc3","line":772,"updated":"2015-01-06 20:04:53.000000000","message":"Use constant for the text.","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":769,"context_line":"        if rc !\u003d 0:"},{"line_number":770,"context_line":"            #Ignore the error that due to retry"},{"line_number":771,"context_line":"            if rc \u003d\u003d 162 and out.find(\u0027The specified Snapshot mount point \u0027"},{"line_number":772,"context_line":"                                      \u0027is not currently attached.\u0027) \u003e\u003d 0:"},{"line_number":773,"context_line":"                LOG.warn(_(\"The specified Snapshot mount point %s is not \""},{"line_number":774,"context_line":"                           \"currently attached.\") % smp_name)"},{"line_number":775,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_f0cb631b","line":772,"in_reply_to":"3a961159_ba6f2dc3","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":771,"context_line":"            if rc \u003d\u003d 162 and out.find(\u0027The specified Snapshot mount point \u0027"},{"line_number":772,"context_line":"                                      \u0027is not currently attached.\u0027) \u003e\u003d 0:"},{"line_number":773,"context_line":"                LOG.warn(_(\"The specified Snapshot mount point %s is not \""},{"line_number":774,"context_line":"                           \"currently attached.\") % smp_name)"},{"line_number":775,"context_line":"            else:"},{"line_number":776,"context_line":"                raise EMCVnxCLICmdError(command_detach_mount_point, rc, out)"},{"line_number":777,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_5a9ba9c8","line":774,"updated":"2015-01-06 20:04:53.000000000","message":"_LW\n\n% -\u003e ,","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":771,"context_line":"            if rc \u003d\u003d 162 and out.find(\u0027The specified Snapshot mount point \u0027"},{"line_number":772,"context_line":"                                      \u0027is not currently attached.\u0027) \u003e\u003d 0:"},{"line_number":773,"context_line":"                LOG.warn(_(\"The specified Snapshot mount point %s is not \""},{"line_number":774,"context_line":"                           \"currently attached.\") % smp_name)"},{"line_number":775,"context_line":"            else:"},{"line_number":776,"context_line":"                raise EMCVnxCLICmdError(command_detach_mount_point, rc, out)"},{"line_number":777,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_50dc37e4","line":774,"in_reply_to":"3a961159_5a9ba9c8","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":817,"context_line":"                         ex.out)"},{"line_number":818,"context_line":"                if dst_name is not None:"},{"line_number":819,"context_line":"                    LOG.warn(_LW(\"Delete temp LUN after migration \""},{"line_number":820,"context_line":"                                 \"start failed. LUN: %s\") % dst_name)"},{"line_number":821,"context_line":"                    self.delete_lun(dst_name)"},{"line_number":822,"context_line":"                return False"},{"line_number":823,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_7aa065f4","line":820,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":817,"context_line":"                         ex.out)"},{"line_number":818,"context_line":"                if dst_name is not None:"},{"line_number":819,"context_line":"                    LOG.warn(_LW(\"Delete temp LUN after migration \""},{"line_number":820,"context_line":"                                 \"start failed. LUN: %s\") % dst_name)"},{"line_number":821,"context_line":"                    self.delete_lun(dst_name)"},{"line_number":822,"context_line":"                return False"},{"line_number":823,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_10e62fb0","line":820,"in_reply_to":"3a961159_7aa065f4","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":846,"context_line":"                        {\u0027reason\u0027: reason, \u0027output\u0027: out})"},{"line_number":847,"context_line":"            return mig_ready"},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"        eventlet.sleep(INTERVAL_30_SEC)"},{"line_number":850,"context_line":"        if migration_is_ready(True):"},{"line_number":851,"context_line":"            return True"},{"line_number":852,"context_line":"        self._wait_for_a_condition(migration_is_ready,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_9a78b17f","line":849,"updated":"2015-01-06 20:04:53.000000000","message":"Do you still need to do a sleep here after using the loopingcall?  eventlet.sleep is probably ok.\n\n30 sec is really long. Can you make this configurable?","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":846,"context_line":"                        {\u0027reason\u0027: reason, \u0027output\u0027: out})"},{"line_number":847,"context_line":"            return mig_ready"},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"        eventlet.sleep(INTERVAL_30_SEC)"},{"line_number":850,"context_line":"        if migration_is_ready(True):"},{"line_number":851,"context_line":"            return True"},{"line_number":852,"context_line":"        self._wait_for_a_condition(migration_is_ready,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_30b7ab86","line":849,"in_reply_to":"3a961159_9a78b17f","updated":"2015-01-08 09:14:34.000000000","message":"A migration in production area usually a few minutes.\n\nAnd we try to expose as fewer parameters as possible so that the users can care as fewer things as possible.\n\nSo we think 30s maybe proper here. If I was a customer, I probably cannot figure out other proper value.","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1369,"context_line":"        \"\"\"Execute command on the VNX array, when there is"},{"line_number":1370,"context_line":"        named parameter poll\u003dFalse, the command will be sent"},{"line_number":1371,"context_line":"        alone with option -np"},{"line_number":1372,"context_line":"        \"\"\""},{"line_number":1373,"context_line":"        # NOTE: retry_disable need to be removed from kwargv"},{"line_number":1374,"context_line":"        # before it pass to utils.execute, otherwise exception will thrown"},{"line_number":1375,"context_line":"        retry_disable \u003d kwargv.pop(\u0027retry_disable\u0027, False)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_47d83153","line":1372,"updated":"2015-01-06 20:04:53.000000000","message":"docstring hacking rule violation.\n\nhttp://docs.openstack.org/developer/hacking/#docstrings","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1369,"context_line":"        \"\"\"Execute command on the VNX array, when there is"},{"line_number":1370,"context_line":"        named parameter poll\u003dFalse, the command will be sent"},{"line_number":1371,"context_line":"        alone with option -np"},{"line_number":1372,"context_line":"        \"\"\""},{"line_number":1373,"context_line":"        # NOTE: retry_disable need to be removed from kwargv"},{"line_number":1374,"context_line":"        # before it pass to utils.execute, otherwise exception will thrown"},{"line_number":1375,"context_line":"        retry_disable \u003d kwargv.pop(\u0027retry_disable\u0027, False)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_036c2bcf","line":1372,"in_reply_to":"3a961159_47d83153","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1410,"context_line":"            out \u003d out.replace(\u0027\\n\u0027, \u0027\\\\n\u0027)"},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"        LOG.debug(\u0027EMC: Command: %(command)s. Result: %(result)s.\u0027"},{"line_number":1413,"context_line":"                  % {\u0027command\u0027: self.command + active_ip + command,"},{"line_number":1414,"context_line":"                     \u0027result\u0027: out.replace(\u0027\\n\u0027, \u0027\\\\n\u0027)})"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        return out, rc"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_a7e63514","line":1413,"updated":"2015-01-06 20:04:53.000000000","message":"% -\u003e ,","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1410,"context_line":"            out \u003d out.replace(\u0027\\n\u0027, \u0027\\\\n\u0027)"},{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"        LOG.debug(\u0027EMC: Command: %(command)s. Result: %(result)s.\u0027"},{"line_number":1413,"context_line":"                  % {\u0027command\u0027: self.command + active_ip + command,"},{"line_number":1414,"context_line":"                     \u0027result\u0027: out.replace(\u0027\\n\u0027, \u0027\\\\n\u0027)})"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        return out, rc"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_63924fa0","line":1413,"in_reply_to":"3a961159_a7e63514","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"        self.destroy_empty_sg \u003d self.configuration.destroy_empty_storage_group"},{"line_number":1518,"context_line":"        self.itor_auto_reg \u003d self.configuration.initiator_auto_registration"},{"line_number":1519,"context_line":"        self.itor_auto_dereg \u003d self.configuration.initiator_auto_deregistration"},{"line_number":1520,"context_line":"        self.check_max_pool_luns_threshold \u003d\\"},{"line_number":1521,"context_line":"            self.configuration.check_max_pool_luns_threshold"},{"line_number":1522,"context_line":"        # if zoning_mode is fabric, use lookup service to build itor_tgt_map"},{"line_number":1523,"context_line":"        self.zonemanager_lookup_service \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_47bf51d0","line":1520,"updated":"2015-01-06 20:04:53.000000000","message":"()","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1517,"context_line":"        self.destroy_empty_sg \u003d self.configuration.destroy_empty_storage_group"},{"line_number":1518,"context_line":"        self.itor_auto_reg \u003d self.configuration.initiator_auto_registration"},{"line_number":1519,"context_line":"        self.itor_auto_dereg \u003d self.configuration.initiator_auto_deregistration"},{"line_number":1520,"context_line":"        self.check_max_pool_luns_threshold \u003d\\"},{"line_number":1521,"context_line":"            self.configuration.check_max_pool_luns_threshold"},{"line_number":1522,"context_line":"        # if zoning_mode is fabric, use lookup service to build itor_tgt_map"},{"line_number":1523,"context_line":"        self.zonemanager_lookup_service \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_23f4c7ef","line":1520,"in_reply_to":"3a961159_47bf51d0","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1543,"context_line":"        if self.protocol \u003d\u003d \u0027iSCSI\u0027:"},{"line_number":1544,"context_line":"            self.iscsi_targets \u003d self._client.get_iscsi_targets(poll\u003dTrue)"},{"line_number":1545,"context_line":"        self.hlu_cache \u003d {}"},{"line_number":1546,"context_line":"        self.force_delete_lun_in_sg \u003d \\"},{"line_number":1547,"context_line":"            self.configuration.force_delete_lun_in_storagegroup"},{"line_number":1548,"context_line":"        if self.force_delete_lun_in_sg:"},{"line_number":1549,"context_line":"            LOG.warn(_(\"force_delete_lun_in_storagegroup\u003dTrue\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c7ca616d","line":1546,"updated":"2015-01-06 20:04:53.000000000","message":"()","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1543,"context_line":"        if self.protocol \u003d\u003d \u0027iSCSI\u0027:"},{"line_number":1544,"context_line":"            self.iscsi_targets \u003d self._client.get_iscsi_targets(poll\u003dTrue)"},{"line_number":1545,"context_line":"        self.hlu_cache \u003d {}"},{"line_number":1546,"context_line":"        self.force_delete_lun_in_sg \u003d \\"},{"line_number":1547,"context_line":"            self.configuration.force_delete_lun_in_storagegroup"},{"line_number":1548,"context_line":"        if self.force_delete_lun_in_sg:"},{"line_number":1549,"context_line":"            LOG.warn(_(\"force_delete_lun_in_storagegroup\u003dTrue\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_43de336e","line":1546,"in_reply_to":"3a961159_c7ca616d","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1546,"context_line":"        self.force_delete_lun_in_sg \u003d \\"},{"line_number":1547,"context_line":"            self.configuration.force_delete_lun_in_storagegroup"},{"line_number":1548,"context_line":"        if self.force_delete_lun_in_sg:"},{"line_number":1549,"context_line":"            LOG.warn(_(\"force_delete_lun_in_storagegroup\u003dTrue\"))"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    def get_target_storagepool(self, volume, source_volume_name\u003dNone):"},{"line_number":1552,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_27a165a9","line":1549,"updated":"2015-01-06 20:04:53.000000000","message":"_LW","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1546,"context_line":"        self.force_delete_lun_in_sg \u003d \\"},{"line_number":1547,"context_line":"            self.configuration.force_delete_lun_in_storagegroup"},{"line_number":1548,"context_line":"        if self.force_delete_lun_in_sg:"},{"line_number":1549,"context_line":"            LOG.warn(_(\"force_delete_lun_in_storagegroup\u003dTrue\"))"},{"line_number":1550,"context_line":""},{"line_number":1551,"context_line":"    def get_target_storagepool(self, volume, source_volume_name\u003dNone):"},{"line_number":1552,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_63d96f82","line":1549,"in_reply_to":"3a961159_27a165a9","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"                     \u0027pool: %(pool)s \u0027"},{"line_number":1606,"context_line":"                     \u0027provisioning: %(provisioning)s \u0027"},{"line_number":1607,"context_line":"                     \u0027tiering: %(tiering)s.\u0027)"},{"line_number":1608,"context_line":"                 % {\u0027volume\u0027: volume_name,"},{"line_number":1609,"context_line":"                    \u0027size\u0027: volume_size,"},{"line_number":1610,"context_line":"                    \u0027pool\u0027: pool,"},{"line_number":1611,"context_line":"                    \u0027provisioning\u0027: provisioning,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_87acd9a0","line":1608,"updated":"2015-01-06 20:04:53.000000000","message":"%-\u003e,","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"                     \u0027pool: %(pool)s \u0027"},{"line_number":1606,"context_line":"                     \u0027provisioning: %(provisioning)s \u0027"},{"line_number":1607,"context_line":"                     \u0027tiering: %(tiering)s.\u0027)"},{"line_number":1608,"context_line":"                 % {\u0027volume\u0027: volume_name,"},{"line_number":1609,"context_line":"                    \u0027size\u0027: volume_size,"},{"line_number":1610,"context_line":"                    \u0027pool\u0027: pool,"},{"line_number":1611,"context_line":"                    \u0027provisioning\u0027: provisioning,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_03426b67","line":1608,"in_reply_to":"3a961159_87acd9a0","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1712,"context_line":"            if (self.force_delete_lun_in_sg and"},{"line_number":1713,"context_line":"                    (\u0027contained in a Storage Group\u0027 in ex.out or"},{"line_number":1714,"context_line":"                     \u0027Host LUN/LUN mapping still exists\u0027 in ex.out)):"},{"line_number":1715,"context_line":"                LOG.warn(_(\u0027LUN corresponding to %s is still \u0027"},{"line_number":1716,"context_line":"                           \u0027in some Storage Groups.\u0027"},{"line_number":1717,"context_line":"                           \u0027Try to bring the LUN out of Storage Groups \u0027"},{"line_number":1718,"context_line":"                           \u0027and retry the deletion.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_a7947544","line":1715,"updated":"2015-01-06 20:04:53.000000000","message":"_LW","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1712,"context_line":"            if (self.force_delete_lun_in_sg and"},{"line_number":1713,"context_line":"                    (\u0027contained in a Storage Group\u0027 in ex.out or"},{"line_number":1714,"context_line":"                     \u0027Host LUN/LUN mapping still exists\u0027 in ex.out)):"},{"line_number":1715,"context_line":"                LOG.warn(_(\u0027LUN corresponding to %s is still \u0027"},{"line_number":1716,"context_line":"                           \u0027in some Storage Groups.\u0027"},{"line_number":1717,"context_line":"                           \u0027Try to bring the LUN out of Storage Groups \u0027"},{"line_number":1718,"context_line":"                           \u0027and retry the deletion.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_635a4f51","line":1715,"in_reply_to":"3a961159_a7947544","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1973,"context_line":"        volume_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":1974,"context_line":"        volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":1975,"context_line":"        LOG.info(_LI(\u0027Create snapshot: %(snapshot)s: volume: %(volume)s\u0027)"},{"line_number":1976,"context_line":"                 % {\u0027snapshot\u0027: snapshot_name,"},{"line_number":1977,"context_line":"                    \u0027volume\u0027: volume_name})"},{"line_number":1978,"context_line":"        lun_id \u003d self.get_lun_id(volume)"},{"line_number":1979,"context_line":"        self._client.create_snapshot(lun_id, snapshot_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_27888521","line":1976,"updated":"2015-01-06 20:04:53.000000000","message":"% -\u003e ,","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1973,"context_line":"        volume_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":1974,"context_line":"        volume \u003d snapshot[\u0027volume\u0027]"},{"line_number":1975,"context_line":"        LOG.info(_LI(\u0027Create snapshot: %(snapshot)s: volume: %(volume)s\u0027)"},{"line_number":1976,"context_line":"                 % {\u0027snapshot\u0027: snapshot_name,"},{"line_number":1977,"context_line":"                    \u0027volume\u0027: volume_name})"},{"line_number":1978,"context_line":"        lun_id \u003d self.get_lun_id(volume)"},{"line_number":1979,"context_line":"        self._client.create_snapshot(lun_id, snapshot_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_83bbbb0d","line":1976,"in_reply_to":"3a961159_27888521","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1984,"context_line":"        snapshot_name \u003d snapshot[\u0027name\u0027]"},{"line_number":1985,"context_line":""},{"line_number":1986,"context_line":"        LOG.info(_LI(\u0027Delete Snapshot: %(snapshot)s\u0027)"},{"line_number":1987,"context_line":"                 % {\u0027snapshot\u0027: snapshot_name})"},{"line_number":1988,"context_line":""},{"line_number":1989,"context_line":"        self._client.delete_snapshot(snapshot_name)"},{"line_number":1990,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_8783f901","line":1987,"updated":"2015-01-06 20:04:53.000000000","message":"% -\u003e ,","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1984,"context_line":"        snapshot_name \u003d snapshot[\u0027name\u0027]"},{"line_number":1985,"context_line":""},{"line_number":1986,"context_line":"        LOG.info(_LI(\u0027Delete Snapshot: %(snapshot)s\u0027)"},{"line_number":1987,"context_line":"                 % {\u0027snapshot\u0027: snapshot_name})"},{"line_number":1988,"context_line":""},{"line_number":1989,"context_line":"        self._client.delete_snapshot(snapshot_name)"},{"line_number":1990,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e362bfab","line":1987,"in_reply_to":"3a961159_8783f901","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":1990,"context_line":""},{"line_number":1991,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":1992,"context_line":"        \"\"\"Constructs a work flow to create a volume from"},{"line_number":1993,"context_line":"        snapshot."},{"line_number":1994,"context_line":""},{"line_number":1995,"context_line":"        This flow will do the following:"},{"line_number":1996,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e7711d46","line":1993,"updated":"2015-01-06 20:04:53.000000000","message":"docstring","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":1990,"context_line":""},{"line_number":1991,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":1992,"context_line":"        \"\"\"Constructs a work flow to create a volume from"},{"line_number":1993,"context_line":"        snapshot."},{"line_number":1994,"context_line":""},{"line_number":1995,"context_line":"        This flow will do the following:"},{"line_number":1996,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0356ebcd","line":1993,"in_reply_to":"3a961159_e7711d46","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":2332,"context_line":"            LOG.warn(_LW(\"Failed to extract initiators of %s, so ignore \""},{"line_number":2333,"context_line":"                         \"deregistration operation.\")"},{"line_number":2334,"context_line":"                     % connector[\u0027host\u0027])"},{"line_number":2335,"context_line":"        if initiator_uids:"},{"line_number":2336,"context_line":"            for initiator_uid in initiator_uids:"},{"line_number":2337,"context_line":"                rc, out \u003d self._client.deregister_initiator(initiator_uid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_87b139e2","line":2334,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":2332,"context_line":"            LOG.warn(_LW(\"Failed to extract initiators of %s, so ignore \""},{"line_number":2333,"context_line":"                         \"deregistration operation.\")"},{"line_number":2334,"context_line":"                     % connector[\u0027host\u0027])"},{"line_number":2335,"context_line":"        if initiator_uids:"},{"line_number":2336,"context_line":"            for initiator_uid in initiator_uids:"},{"line_number":2337,"context_line":"                rc, out \u003d self._client.deregister_initiator(initiator_uid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c3d4e321","line":2334,"in_reply_to":"3a961159_87b139e2","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"                if rc !\u003d 0:"},{"line_number":2339,"context_line":"                    LOG.warn(_LW(\"Failed to deregister %(itor)s \""},{"line_number":2340,"context_line":"                                 \"because: %(msg)s.\")"},{"line_number":2341,"context_line":"                             % {\u0027itor\u0027: initiator_uid,"},{"line_number":2342,"context_line":"                                \u0027msg\u0027: out})"},{"line_number":2343,"context_line":""},{"line_number":2344,"context_line":"    def _filter_unregistered_initiators(self, initiator_uids, sgdata):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e7bf5da9","line":2341,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"                if rc !\u003d 0:"},{"line_number":2339,"context_line":"                    LOG.warn(_LW(\"Failed to deregister %(itor)s \""},{"line_number":2340,"context_line":"                                 \"because: %(msg)s.\")"},{"line_number":2341,"context_line":"                             % {\u0027itor\u0027: initiator_uid,"},{"line_number":2342,"context_line":"                                \u0027msg\u0027: out})"},{"line_number":2343,"context_line":""},{"line_number":2344,"context_line":"    def _filter_unregistered_initiators(self, initiator_uids, sgdata):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e3d71f21","line":2341,"in_reply_to":"3a961159_e7bf5da9","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"        return unregistered_initiators"},{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"    def auto_register_initiator(self, connector, sgdata):"},{"line_number":2358,"context_line":"        \"\"\"Automatically register available initiators."},{"line_number":2359,"context_line":"        Return True if has registerred initiator otherwise return False"},{"line_number":2360,"context_line":"        \"\"\""},{"line_number":2361,"context_line":"        initiator_uids \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_67e36dd8","line":2358,"updated":"2015-01-06 20:04:53.000000000","message":"Add an empty line.","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"        return unregistered_initiators"},{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"    def auto_register_initiator(self, connector, sgdata):"},{"line_number":2358,"context_line":"        \"\"\"Automatically register available initiators."},{"line_number":2359,"context_line":"        Return True if has registerred initiator otherwise return False"},{"line_number":2360,"context_line":"        \"\"\""},{"line_number":2361,"context_line":"        initiator_uids \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_83ee5beb","line":2358,"in_reply_to":"3a961159_67e36dd8","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"    def auto_register_initiator(self, connector, sgdata):"},{"line_number":2358,"context_line":"        \"\"\"Automatically register available initiators."},{"line_number":2359,"context_line":"        Return True if has registerred initiator otherwise return False"},{"line_number":2360,"context_line":"        \"\"\""},{"line_number":2361,"context_line":"        initiator_uids \u003d []"},{"line_number":2362,"context_line":"        ip \u003d connector[\u0027ip\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_87e859b4","line":2359,"updated":"2015-01-06 20:04:53.000000000","message":"period","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"    def auto_register_initiator(self, connector, sgdata):"},{"line_number":2358,"context_line":"        \"\"\"Automatically register available initiators."},{"line_number":2359,"context_line":"        Return True if has registerred initiator otherwise return False"},{"line_number":2360,"context_line":"        \"\"\""},{"line_number":2361,"context_line":"        initiator_uids \u003d []"},{"line_number":2362,"context_line":"        ip \u003d connector[\u0027ip\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_a3e997e4","line":2359,"in_reply_to":"3a961159_87e859b4","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2391,"context_line":"            if len(itors_toReg) \u003d\u003d 0:"},{"line_number":2392,"context_line":"                return False"},{"line_number":2393,"context_line":""},{"line_number":2394,"context_line":"            LOG.info(_(\u0027FC Initiators %(in)s of %(ins)s need registration\u0027)"},{"line_number":2395,"context_line":"                     % ({\u0027in\u0027: itors_toReg,"},{"line_number":2396,"context_line":"                         \u0027ins\u0027: initiator_uids}))"},{"line_number":2397,"context_line":"            self._register_fc_initiator(ip, host, itors_toReg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c7cd015f","line":2394,"updated":"2015-01-06 20:04:53.000000000","message":"_LI","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2391,"context_line":"            if len(itors_toReg) \u003d\u003d 0:"},{"line_number":2392,"context_line":"                return False"},{"line_number":2393,"context_line":""},{"line_number":2394,"context_line":"            LOG.info(_(\u0027FC Initiators %(in)s of %(ins)s need registration\u0027)"},{"line_number":2395,"context_line":"                     % ({\u0027in\u0027: itors_toReg,"},{"line_number":2396,"context_line":"                         \u0027ins\u0027: initiator_uids}))"},{"line_number":2397,"context_line":"            self._register_fc_initiator(ip, host, itors_toReg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_83c57b5d","line":2394,"in_reply_to":"3a961159_c7cd015f","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2392,"context_line":"                return False"},{"line_number":2393,"context_line":""},{"line_number":2394,"context_line":"            LOG.info(_(\u0027FC Initiators %(in)s of %(ins)s need registration\u0027)"},{"line_number":2395,"context_line":"                     % ({\u0027in\u0027: itors_toReg,"},{"line_number":2396,"context_line":"                         \u0027ins\u0027: initiator_uids}))"},{"line_number":2397,"context_line":"            self._register_fc_initiator(ip, host, itors_toReg)"},{"line_number":2398,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e7d67df1","line":2395,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2392,"context_line":"                return False"},{"line_number":2393,"context_line":""},{"line_number":2394,"context_line":"            LOG.info(_(\u0027FC Initiators %(in)s of %(ins)s need registration\u0027)"},{"line_number":2395,"context_line":"                     % ({\u0027in\u0027: itors_toReg,"},{"line_number":2396,"context_line":"                         \u0027ins\u0027: initiator_uids}))"},{"line_number":2397,"context_line":"            self._register_fc_initiator(ip, host, itors_toReg)"},{"line_number":2398,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c3a223ad","line":2395,"in_reply_to":"3a961159_e7d67df1","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2595,"context_line":"                else:"},{"line_number":2596,"context_line":"                    LOG.warn(_LW(\"Volume %(vol)s was not in Storage Group\""},{"line_number":2597,"context_line":"                                 \" %(sg)s.\")"},{"line_number":2598,"context_line":"                             % {\u0027vol\u0027: volume_name, \u0027sg\u0027: hostname})"},{"line_number":2599,"context_line":""},{"line_number":2600,"context_line":"            if self.protocol \u003d\u003d \u0027FC\u0027:"},{"line_number":2601,"context_line":"                conn_info \u003d self.adjust_fc_conn_info("}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_47091194","line":2598,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2595,"context_line":"                else:"},{"line_number":2596,"context_line":"                    LOG.warn(_LW(\"Volume %(vol)s was not in Storage Group\""},{"line_number":2597,"context_line":"                                 \" %(sg)s.\")"},{"line_number":2598,"context_line":"                             % {\u0027vol\u0027: volume_name, \u0027sg\u0027: hostname})"},{"line_number":2599,"context_line":""},{"line_number":2600,"context_line":"            if self.protocol \u003d\u003d \u0027FC\u0027:"},{"line_number":2601,"context_line":"                conn_info \u003d self.adjust_fc_conn_info("}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e38c7f37","line":2598,"in_reply_to":"3a961159_47091194","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2660,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":2661,"context_line":"        \"\"\"Rename the backend storage object so that it matches the,"},{"line_number":2662,"context_line":"        volume[\u0027name\u0027] which is how drivers traditionally map between a"},{"line_number":2663,"context_line":"        cinder volume and the associated backend storage object."},{"line_number":2664,"context_line":""},{"line_number":2665,"context_line":"        existing_ref:{"},{"line_number":2666,"context_line":"            \u0027id\u0027:lun_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c7f42189","line":2663,"updated":"2015-01-06 20:04:53.000000000","message":"docstring","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2660,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":2661,"context_line":"        \"\"\"Rename the backend storage object so that it matches the,"},{"line_number":2662,"context_line":"        volume[\u0027name\u0027] which is how drivers traditionally map between a"},{"line_number":2663,"context_line":"        cinder volume and the associated backend storage object."},{"line_number":2664,"context_line":""},{"line_number":2665,"context_line":"        existing_ref:{"},{"line_number":2666,"context_line":"            \u0027id\u0027:lun_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0397cb3a","line":2663,"in_reply_to":"3a961159_c7f42189","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2783,"context_line":""},{"line_number":2784,"context_line":"    def manage_existing_get_size(self, volume, ref):"},{"line_number":2785,"context_line":"        \"\"\"Return size of volume to be managed by manage_existing."},{"line_number":2786,"context_line":"        \"\"\""},{"line_number":2787,"context_line":"        # Check that the reference is valid"},{"line_number":2788,"context_line":"        if \u0027id\u0027 not in ref:"},{"line_number":2789,"context_line":"            reason \u003d _(\u0027Reference must contain lun_id element.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_272b25ec","line":2786,"updated":"2015-01-06 20:04:53.000000000","message":"Move this closing \"\"\" to the above line.","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2783,"context_line":""},{"line_number":2784,"context_line":"    def manage_existing_get_size(self, volume, ref):"},{"line_number":2785,"context_line":"        \"\"\"Return size of volume to be managed by manage_existing."},{"line_number":2786,"context_line":"        \"\"\""},{"line_number":2787,"context_line":"        # Check that the reference is valid"},{"line_number":2788,"context_line":"        if \u0027id\u0027 not in ref:"},{"line_number":2789,"context_line":"            reason \u003d _(\u0027Reference must contain lun_id element.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e3babfbe","line":2786,"in_reply_to":"3a961159_272b25ec","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2873,"context_line":""},{"line_number":2874,"context_line":"class CreateSMPTask(task.Task):"},{"line_number":2875,"context_line":"    \"\"\"Create a snap mount point for the snapshot which"},{"line_number":2876,"context_line":"    would be the source of the new volume."},{"line_number":2877,"context_line":""},{"line_number":2878,"context_line":"    Reversion strategy: Delete the SMP."},{"line_number":2879,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_6731ad58","line":2876,"updated":"2015-01-06 20:04:53.000000000","message":"docstring","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2873,"context_line":""},{"line_number":2874,"context_line":"class CreateSMPTask(task.Task):"},{"line_number":2875,"context_line":"    \"\"\"Create a snap mount point for the snapshot which"},{"line_number":2876,"context_line":"    would be the source of the new volume."},{"line_number":2877,"context_line":""},{"line_number":2878,"context_line":"    Reversion strategy: Delete the SMP."},{"line_number":2879,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_03818bc2","line":2876,"in_reply_to":"3a961159_6731ad58","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2886,"context_line":"        if isinstance(result, misc.Failure):"},{"line_number":2887,"context_line":"            return"},{"line_number":2888,"context_line":"        else:"},{"line_number":2889,"context_line":"            LOG.warn(_LW(\u0027CreateSMPTask.revert: delete mount point %s\u0027) %"},{"line_number":2890,"context_line":"                     volume[\u0027name\u0027])"},{"line_number":2891,"context_line":"            client.delete_lun(volume[\u0027name\u0027])"},{"line_number":2892,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_8736994f","line":2889,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2886,"context_line":"        if isinstance(result, misc.Failure):"},{"line_number":2887,"context_line":"            return"},{"line_number":2888,"context_line":"        else:"},{"line_number":2889,"context_line":"            LOG.warn(_LW(\u0027CreateSMPTask.revert: delete mount point %s\u0027) %"},{"line_number":2890,"context_line":"                     volume[\u0027name\u0027])"},{"line_number":2891,"context_line":"            client.delete_lun(volume[\u0027name\u0027])"},{"line_number":2892,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e37d5fe8","line":2889,"in_reply_to":"3a961159_8736994f","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2905,"context_line":"        if isinstance(result, misc.Failure):"},{"line_number":2906,"context_line":"            return"},{"line_number":2907,"context_line":"        else:"},{"line_number":2908,"context_line":"            LOG.warn(_LW(\u0027AttachSnapTask.revert: detach mount point %s\u0027) %"},{"line_number":2909,"context_line":"                     volume[\u0027name\u0027])"},{"line_number":2910,"context_line":"            client.detach_mount_point(volume[\u0027name\u0027])"},{"line_number":2911,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c73b4136","line":2908,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2905,"context_line":"        if isinstance(result, misc.Failure):"},{"line_number":2906,"context_line":"            return"},{"line_number":2907,"context_line":"        else:"},{"line_number":2908,"context_line":"            LOG.warn(_LW(\u0027AttachSnapTask.revert: detach mount point %s\u0027) %"},{"line_number":2909,"context_line":"                     volume[\u0027name\u0027])"},{"line_number":2910,"context_line":"            client.detach_mount_point(volume[\u0027name\u0027])"},{"line_number":2911,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_63696f24","line":2908,"in_reply_to":"3a961159_c73b4136","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2931,"context_line":"        if isinstance(result, misc.Failure):"},{"line_number":2932,"context_line":"            return"},{"line_number":2933,"context_line":"        else:"},{"line_number":2934,"context_line":"            LOG.warn(_LW(\u0027CreateDestLunTask.revert: delete temp lun %s\u0027) %"},{"line_number":2935,"context_line":"                     dest_vol_name)"},{"line_number":2936,"context_line":"            client.delete_lun(dest_vol_name)"},{"line_number":2937,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0742a9aa","line":2934,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2931,"context_line":"        if isinstance(result, misc.Failure):"},{"line_number":2932,"context_line":"            return"},{"line_number":2933,"context_line":"        else:"},{"line_number":2934,"context_line":"            LOG.warn(_LW(\u0027CreateDestLunTask.revert: delete temp lun %s\u0027) %"},{"line_number":2935,"context_line":"                     dest_vol_name)"},{"line_number":2936,"context_line":"            client.delete_lun(dest_vol_name)"},{"line_number":2937,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c361433a","line":2934,"in_reply_to":"3a961159_0742a9aa","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2952,"context_line":"            new_vol_lun_id \u003d client.get_lun_by_name(new_vol_name)[\u0027lun_id\u0027]"},{"line_number":2953,"context_line":"            dest_vol_lun_id \u003d lun_data[\u0027lun_id\u0027]"},{"line_number":2954,"context_line":""},{"line_number":2955,"context_line":"            LOG.info(_LI(\u0027Migrating Mount Point Volume: %s \u0027) % new_vol_name)"},{"line_number":2956,"context_line":""},{"line_number":2957,"context_line":"            migrated \u003d client.migrate_lun_with_verification(new_vol_lun_id,"},{"line_number":2958,"context_line":"                                                            dest_vol_lun_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_870db991","line":2955,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2952,"context_line":"            new_vol_lun_id \u003d client.get_lun_by_name(new_vol_name)[\u0027lun_id\u0027]"},{"line_number":2953,"context_line":"            dest_vol_lun_id \u003d lun_data[\u0027lun_id\u0027]"},{"line_number":2954,"context_line":""},{"line_number":2955,"context_line":"            LOG.info(_LI(\u0027Migrating Mount Point Volume: %s \u0027) % new_vol_name)"},{"line_number":2956,"context_line":""},{"line_number":2957,"context_line":"            migrated \u003d client.migrate_lun_with_verification(new_vol_lun_id,"},{"line_number":2958,"context_line":"                                                            dest_vol_lun_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_6385efab","line":2955,"in_reply_to":"3a961159_870db991","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2959,"context_line":"                                                            None)"},{"line_number":2960,"context_line":"            if not migrated:"},{"line_number":2961,"context_line":"                msg \u003d _LE(\"Migrate volume failed between source vol %(src)s\""},{"line_number":2962,"context_line":"                          \" and dest vol %(dst)s\") % \\"},{"line_number":2963,"context_line":"                    {\u0027src\u0027: new_vol_name, \u0027dst\u0027: dest_vol_name}"},{"line_number":2964,"context_line":"                LOG.error(msg)"},{"line_number":2965,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_477e71e5","line":2962,"updated":"2015-01-06 20:04:53.000000000","message":"using () instead of \\","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2959,"context_line":"                                                            None)"},{"line_number":2960,"context_line":"            if not migrated:"},{"line_number":2961,"context_line":"                msg \u003d _LE(\"Migrate volume failed between source vol %(src)s\""},{"line_number":2962,"context_line":"                          \" and dest vol %(dst)s\") % \\"},{"line_number":2963,"context_line":"                    {\u0027src\u0027: new_vol_name, \u0027dst\u0027: dest_vol_name}"},{"line_number":2964,"context_line":"                LOG.error(msg)"},{"line_number":2965,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_83901bee","line":2962,"in_reply_to":"3a961159_477e71e5","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2973,"context_line":""},{"line_number":2974,"context_line":""},{"line_number":2975,"context_line":"class CreateSnapshotTask(task.Task):"},{"line_number":2976,"context_line":"    \"\"\"Create a snapshot/cgsnapshot for a volume"},{"line_number":2977,"context_line":"    Reversion Strategy: Delete the snapshot/cgsnapshot created"},{"line_number":2978,"context_line":"    \"\"\""},{"line_number":2979,"context_line":"    def execute(self, client, snapshot, source_lun_id, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_8784d9d3","line":2976,"updated":"2015-01-06 20:04:53.000000000","message":"docstring","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2973,"context_line":""},{"line_number":2974,"context_line":""},{"line_number":2975,"context_line":"class CreateSnapshotTask(task.Task):"},{"line_number":2976,"context_line":"    \"\"\"Create a snapshot/cgsnapshot for a volume"},{"line_number":2977,"context_line":"    Reversion Strategy: Delete the snapshot/cgsnapshot created"},{"line_number":2978,"context_line":"    \"\"\""},{"line_number":2979,"context_line":"    def execute(self, client, snapshot, source_lun_id, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_a38b57be","line":2976,"in_reply_to":"3a961159_8784d9d3","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2985,"context_line":"            snapshot_name \u003d snapshot[\u0027name\u0027]"},{"line_number":2986,"context_line":"            volume_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":2987,"context_line":"            LOG.info(_LI(\u0027Create snapshot: %(snapshot)s: volume: %(volume)s\u0027)"},{"line_number":2988,"context_line":"                     % {\u0027snapshot\u0027: snapshot_name,"},{"line_number":2989,"context_line":"                        \u0027volume\u0027: volume_name})"},{"line_number":2990,"context_line":"            client.create_snapshot(source_lun_id, snapshot_name)"},{"line_number":2991,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e772fd10","line":2988,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2985,"context_line":"            snapshot_name \u003d snapshot[\u0027name\u0027]"},{"line_number":2986,"context_line":"            volume_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":2987,"context_line":"            LOG.info(_LI(\u0027Create snapshot: %(snapshot)s: volume: %(volume)s\u0027)"},{"line_number":2988,"context_line":"                     % {\u0027snapshot\u0027: snapshot_name,"},{"line_number":2989,"context_line":"                        \u0027volume\u0027: volume_name})"},{"line_number":2990,"context_line":"            client.create_snapshot(source_lun_id, snapshot_name)"},{"line_number":2991,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_03b42b80","line":2988,"in_reply_to":"3a961159_e772fd10","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":2997,"context_line":"            if snapshot[\u0027consistencygroup_id\u0027]:"},{"line_number":2998,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"},{"line_number":2999,"context_line":"                             \u0027delete temp cgsnapshot %s\u0027)"},{"line_number":3000,"context_line":"                         % snapshot[\u0027consistencygroup_id\u0027])"},{"line_number":3001,"context_line":"                client.delete_cgsnapshot(snapshot)"},{"line_number":3002,"context_line":"            else:"},{"line_number":3003,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_27608534","line":3000,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":2997,"context_line":"            if snapshot[\u0027consistencygroup_id\u0027]:"},{"line_number":2998,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"},{"line_number":2999,"context_line":"                             \u0027delete temp cgsnapshot %s\u0027)"},{"line_number":3000,"context_line":"                         % snapshot[\u0027consistencygroup_id\u0027])"},{"line_number":3001,"context_line":"                client.delete_cgsnapshot(snapshot)"},{"line_number":3002,"context_line":"            else:"},{"line_number":3003,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_e3c0ffe1","line":3000,"in_reply_to":"3a961159_27608534","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ab20d7ef3274bb7bfef325f7b11913392f92b41d","unresolved":false,"context_lines":[{"line_number":3002,"context_line":"            else:"},{"line_number":3003,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"},{"line_number":3004,"context_line":"                             \u0027delete temp snapshot %s\u0027)"},{"line_number":3005,"context_line":"                         % snapshot[\u0027name\u0027])"},{"line_number":3006,"context_line":"                client.delete_snapshot(snapshot[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_67560d60","line":3005,"updated":"2015-01-06 20:04:53.000000000","message":",","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"e5698d2e02cbf68c256c0aa205f87236025e8321","unresolved":false,"context_lines":[{"line_number":3002,"context_line":"            else:"},{"line_number":3003,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"},{"line_number":3004,"context_line":"                             \u0027delete temp snapshot %s\u0027)"},{"line_number":3005,"context_line":"                         % snapshot[\u0027name\u0027])"},{"line_number":3006,"context_line":"                client.delete_snapshot(snapshot[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c3bdc369","line":3005,"in_reply_to":"3a961159_67560d60","updated":"2015-01-08 09:14:34.000000000","message":"Done","commit_id":"bcc3e2774a020ae8f91f9c91c51885e6c804cac0"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"01b5f4e4588e2758abbb87ae74f2426857738786","unresolved":false,"context_lines":[{"line_number":119,"context_line":"CONF.register_opts(loc_opts)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def decorate_all_methods(decorator):"},{"line_number":123,"context_line":"    if not ENABLE_TRACE:"},{"line_number":124,"context_line":"        return lambda cls: cls"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_97e64749","line":122,"updated":"2015-01-12 12:22:20.000000000","message":"Can a more informative name be used for the decorator?","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"610ff2eee8272c46b02244972b76bb720a45198a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"CONF.register_opts(loc_opts)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def decorate_all_methods(decorator):"},{"line_number":123,"context_line":"    if not ENABLE_TRACE:"},{"line_number":124,"context_line":"        return lambda cls: cls"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a930d6b_2303b0b9","line":122,"in_reply_to":"3a961159_97e64749","updated":"2015-01-21 10:17:58.000000000","message":"Done","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"70b9ff7d93330637010d057b8ed83a1deaa16082","unresolved":false,"context_lines":[{"line_number":119,"context_line":"CONF.register_opts(loc_opts)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def decorate_all_methods(decorator):"},{"line_number":123,"context_line":"    if not ENABLE_TRACE:"},{"line_number":124,"context_line":"        return lambda cls: cls"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_ce7d7c6f","line":122,"in_reply_to":"3a961159_97e64749","updated":"2015-01-13 06:51:08.000000000","message":"What about decorate_all_public_methods?\n\nOr any other recommendation?","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"847a737995714224a8cadb2e9c54d689781cbce1","unresolved":false,"context_lines":[{"line_number":119,"context_line":"CONF.register_opts(loc_opts)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def decorate_all_methods(decorator):"},{"line_number":123,"context_line":"    if not ENABLE_TRACE:"},{"line_number":124,"context_line":"        return lambda cls: cls"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_7af22570","line":122,"in_reply_to":"3a961159_ce7d7c6f","updated":"2015-01-15 10:24:15.000000000","message":"Oh sorry, I completely missed that a decorator is actually passed to this method. \n\nYou can give a name which explains \u0027what\u0027 the decorator does.. Actually, I\u0027m not able to pick up what exactly we\u0027re doing here with a decorator taking another decorator as a param...","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"01b5f4e4588e2758abbb87ae74f2426857738786","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                        {\u0027reason\u0027: reason, \u0027output\u0027: out})"},{"line_number":848,"context_line":"            return mig_ready"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"        eventlet.sleep(INTERVAL_30_SEC)"},{"line_number":851,"context_line":"        if migration_is_ready(True):"},{"line_number":852,"context_line":"            return True"},{"line_number":853,"context_line":"        self._wait_for_a_condition(migration_is_ready,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_d7552fc3","line":850,"updated":"2015-01-12 12:22:20.000000000","message":"I have heard using sleep in this way blocks the thread for that much time. I have heard people prefer to use loopingCall instead.","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"847a737995714224a8cadb2e9c54d689781cbce1","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                        {\u0027reason\u0027: reason, \u0027output\u0027: out})"},{"line_number":848,"context_line":"            return mig_ready"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"        eventlet.sleep(INTERVAL_30_SEC)"},{"line_number":851,"context_line":"        if migration_is_ready(True):"},{"line_number":852,"context_line":"            return True"},{"line_number":853,"context_line":"        self._wait_for_a_condition(migration_is_ready,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_7a16a5a8","line":850,"in_reply_to":"3a961159_ab6bc2ef","updated":"2015-01-15 10:24:15.000000000","message":"okay, thanks for the clarification","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"70b9ff7d93330637010d057b8ed83a1deaa16082","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                        {\u0027reason\u0027: reason, \u0027output\u0027: out})"},{"line_number":848,"context_line":"            return mig_ready"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"        eventlet.sleep(INTERVAL_30_SEC)"},{"line_number":851,"context_line":"        if migration_is_ready(True):"},{"line_number":852,"context_line":"            return True"},{"line_number":853,"context_line":"        self._wait_for_a_condition(migration_is_ready,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_ab6bc2ef","line":850,"in_reply_to":"3a961159_d7552fc3","updated":"2015-01-13 06:51:08.000000000","message":"time.sleep() will block the native thread.\n\nBut eventlet.sleep() will make the green thread release the native thread so that the native thread can work on other green thread.\n\nIn the following self._wait_for_a_condition, loopingCall is used.","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"01b5f4e4588e2758abbb87ae74f2426857738786","unresolved":false,"context_lines":[{"line_number":2972,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2973,"context_line":""},{"line_number":2974,"context_line":"            return new_vol_lun_id"},{"line_number":2975,"context_line":"        except Exception as ex:"},{"line_number":2976,"context_line":"            raise ex"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"    def revert(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_17a09790","line":2975,"updated":"2015-01-12 12:22:20.000000000","message":"The exception is excepted and immediately raised without any further processing, so the try..except block seems unnecessary. Am I missing something?","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"610ff2eee8272c46b02244972b76bb720a45198a","unresolved":false,"context_lines":[{"line_number":2972,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2973,"context_line":""},{"line_number":2974,"context_line":"            return new_vol_lun_id"},{"line_number":2975,"context_line":"        except Exception as ex:"},{"line_number":2976,"context_line":"            raise ex"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"    def revert(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a930d6b_26c81e74","line":2975,"in_reply_to":"3a961159_17a09790","updated":"2015-01-21 10:17:58.000000000","message":"Done","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"70b9ff7d93330637010d057b8ed83a1deaa16082","unresolved":false,"context_lines":[{"line_number":2972,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2973,"context_line":""},{"line_number":2974,"context_line":"            return new_vol_lun_id"},{"line_number":2975,"context_line":"        except Exception as ex:"},{"line_number":2976,"context_line":"            raise ex"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"    def revert(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_2b56f22a","line":2975,"in_reply_to":"3a961159_17a09790","updated":"2015-01-13 06:51:08.000000000","message":"Good catch.\n\nThe try ... catch will be removed.","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"847a737995714224a8cadb2e9c54d689781cbce1","unresolved":false,"context_lines":[{"line_number":2972,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2973,"context_line":""},{"line_number":2974,"context_line":"            return new_vol_lun_id"},{"line_number":2975,"context_line":"        except Exception as ex:"},{"line_number":2976,"context_line":"            raise ex"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"    def revert(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_fa21b5fc","line":2975,"in_reply_to":"3a961159_2b56f22a","updated":"2015-01-15 10:24:15.000000000","message":"Not done yet in the lastest patch set 9","commit_id":"b6a709affce37ad527d41d4bd2ad4bbeb5510c22"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"b5ac33d27d7479f72d8f4b12d6b7d8ff5f48de0d","unresolved":false,"context_lines":[{"line_number":1574,"context_line":"            pool_name \u003d self.get_target_storagepool(volume, source_volume_name)"},{"line_number":1575,"context_line":"            specs \u003d self.get_volumetype_extraspecs(volume)"},{"line_number":1576,"context_line":"            provisioning, tiering \u003d self._get_extra_spec_value(specs)"},{"line_number":1577,"context_line":"            #flow_name \u003d \u0027create_volume_from_snapshot\u0027"},{"line_number":1578,"context_line":"            #work_flow \u003d linear_flow.Flow(flow_name)"},{"line_number":1579,"context_line":"            store_spec \u003d {"},{"line_number":1580,"context_line":"                \u0027source_vol_name\u0027: source_volume_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_c3cfbc55","line":1577,"updated":"2015-01-15 07:56:23.000000000","message":"forget to remove these 2 lines?","commit_id":"0ef788b9cfe92b52910edcd0eb360235a2856c3b"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"74cde37262342d35fd9bf549bd6588da8d02b0e2","unresolved":false,"context_lines":[{"line_number":1574,"context_line":"            pool_name \u003d self.get_target_storagepool(volume, source_volume_name)"},{"line_number":1575,"context_line":"            specs \u003d self.get_volumetype_extraspecs(volume)"},{"line_number":1576,"context_line":"            provisioning, tiering \u003d self._get_extra_spec_value(specs)"},{"line_number":1577,"context_line":"            #flow_name \u003d \u0027create_volume_from_snapshot\u0027"},{"line_number":1578,"context_line":"            #work_flow \u003d linear_flow.Flow(flow_name)"},{"line_number":1579,"context_line":"            store_spec \u003d {"},{"line_number":1580,"context_line":"                \u0027source_vol_name\u0027: source_volume_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a930d6b_864f1292","line":1577,"in_reply_to":"3a961159_c3cfbc55","updated":"2015-01-21 10:33:58.000000000","message":"Done","commit_id":"0ef788b9cfe92b52910edcd0eb360235a2856c3b"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"b5ac33d27d7479f72d8f4b12d6b7d8ff5f48de0d","unresolved":false,"context_lines":[{"line_number":1791,"context_line":"                and self._get_original_status(volume) \u003d\u003d \u0027in-use\u0027:"},{"line_number":1792,"context_line":"            LOG.debug(\u0027Skip storage-assisted migration because \u0027"},{"line_number":1793,"context_line":"                      \u0027in-use volume can not be \u0027"},{"line_number":1794,"context_line":"                      \u0027migrate between diff protocol.\u0027)"},{"line_number":1795,"context_line":"            return false_ret"},{"line_number":1796,"context_line":""},{"line_number":1797,"context_line":"        return (True, target_pool_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_83f93484","line":1794,"updated":"2015-01-15 07:56:23.000000000","message":"\u0027diff protocol\u0027 to \u0027diff protocols\u0027","commit_id":"0ef788b9cfe92b52910edcd0eb360235a2856c3b"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"74cde37262342d35fd9bf549bd6588da8d02b0e2","unresolved":false,"context_lines":[{"line_number":1791,"context_line":"                and self._get_original_status(volume) \u003d\u003d \u0027in-use\u0027:"},{"line_number":1792,"context_line":"            LOG.debug(\u0027Skip storage-assisted migration because \u0027"},{"line_number":1793,"context_line":"                      \u0027in-use volume can not be \u0027"},{"line_number":1794,"context_line":"                      \u0027migrate between diff protocol.\u0027)"},{"line_number":1795,"context_line":"            return false_ret"},{"line_number":1796,"context_line":""},{"line_number":1797,"context_line":"        return (True, target_pool_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a930d6b_46552a1c","line":1794,"in_reply_to":"3a961159_83f93484","updated":"2015-01-21 10:33:58.000000000","message":"Done","commit_id":"0ef788b9cfe92b52910edcd0eb360235a2856c3b"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"b5ac33d27d7479f72d8f4b12d6b7d8ff5f48de0d","unresolved":false,"context_lines":[{"line_number":2955,"context_line":"                *args, **kwargs):"},{"line_number":2956,"context_line":"        LOG.debug(\u0027MigrateLunTask.execute\u0027)"},{"line_number":2957,"context_line":"        new_vol_name \u003d volume[\u0027name\u0027]"},{"line_number":2958,"context_line":"        try:"},{"line_number":2959,"context_line":"            new_vol_lun_id \u003d client.get_lun_by_name(new_vol_name)[\u0027lun_id\u0027]"},{"line_number":2960,"context_line":"            dest_vol_lun_id \u003d lun_data[\u0027lun_id\u0027]"},{"line_number":2961,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_435f4c75","line":2958,"updated":"2015-01-15 07:56:23.000000000","message":"forget to remove try... except?","commit_id":"0ef788b9cfe92b52910edcd0eb360235a2856c3b"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"74cde37262342d35fd9bf549bd6588da8d02b0e2","unresolved":false,"context_lines":[{"line_number":2955,"context_line":"                *args, **kwargs):"},{"line_number":2956,"context_line":"        LOG.debug(\u0027MigrateLunTask.execute\u0027)"},{"line_number":2957,"context_line":"        new_vol_name \u003d volume[\u0027name\u0027]"},{"line_number":2958,"context_line":"        try:"},{"line_number":2959,"context_line":"            new_vol_lun_id \u003d client.get_lun_by_name(new_vol_name)[\u0027lun_id\u0027]"},{"line_number":2960,"context_line":"            dest_vol_lun_id \u003d lun_data[\u0027lun_id\u0027]"},{"line_number":2961,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a930d6b_462c4aac","line":2958,"in_reply_to":"3a961159_435f4c75","updated":"2015-01-21 10:33:58.000000000","message":"Done","commit_id":"0ef788b9cfe92b52910edcd0eb360235a2856c3b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a8f08c4f6b895b5ce0ac671da8ad6fce302de5b2","unresolved":false,"context_lines":[{"line_number":2772,"context_line":"        # Some extra capacity will be used by meta data of pool LUNs."},{"line_number":2773,"context_line":"        # Estimate the percentage and report it as reserved_percentage."},{"line_number":2774,"context_line":"        reserved \u003d (((0.02 * pool[\u0027free_capacity_gb\u0027] + 3) /"},{"line_number":2775,"context_line":"                     (1.02 * pool[\u0027free_capacity_gb\u0027])) * 100)"},{"line_number":2776,"context_line":"        self.stats[\u0027reserved_percentage\u0027] \u003d int(math.ceil(min(reserved, 100)))"},{"line_number":2777,"context_line":"        if self.check_max_pool_luns_threshold:"},{"line_number":2778,"context_line":"            pool_feature \u003d self._client.get_pool_feature_properties(poll\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_6a04987e","line":2775,"updated":"2015-02-02 02:16:27.000000000","message":"During the review of the Over Subscription patch (https://review.openstack.org/#/c/142171/), there were some discussions about the calculation of \u0027reserved\u0027. The conclusion was that \u0027reserved\u0027 was calculated in a wrong way in the scheduler. It should not be measured against the free capacity. In stead, it should be measured against the total capacity. So if the total capacity is 100GB and reserved_percentage is 5, that means 5GB will be \u0027reserved\u0027.\n\nPlease adjust your calculation of reserved accordingly.","commit_id":"d411c5107668bce84509e4807481d9252d8df80f"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"eac10b7354fe86dd3296c2c6af98213c4ecd0ec1","unresolved":false,"context_lines":[{"line_number":2772,"context_line":"        # Some extra capacity will be used by meta data of pool LUNs."},{"line_number":2773,"context_line":"        # Estimate the percentage and report it as reserved_percentage."},{"line_number":2774,"context_line":"        reserved \u003d (((0.02 * pool[\u0027free_capacity_gb\u0027] + 3) /"},{"line_number":2775,"context_line":"                     (1.02 * pool[\u0027free_capacity_gb\u0027])) * 100)"},{"line_number":2776,"context_line":"        self.stats[\u0027reserved_percentage\u0027] \u003d int(math.ceil(min(reserved, 100)))"},{"line_number":2777,"context_line":"        if self.check_max_pool_luns_threshold:"},{"line_number":2778,"context_line":"            pool_feature \u003d self._client.get_pool_feature_properties(poll\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_65376bb1","line":2775,"in_reply_to":"da86d52c_6a04987e","updated":"2015-02-02 03:04:52.000000000","message":"Done","commit_id":"d411c5107668bce84509e4807481d9252d8df80f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"870318c893a2821799d44a44b105f17045172b0c","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                        data[self.LUN_STATUS.key] \u003d\u003d \u0027OK(0x0)\u0027 and"},{"line_number":412,"context_line":"                        data[self.LUN_OPERATION.key] \u003d\u003d \u0027None\u0027)"},{"line_number":413,"context_line":"            except EMCVnxCLICmdError as ex:"},{"line_number":414,"context_line":"                orig_out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":415,"context_line":"                if orig_out.find("},{"line_number":416,"context_line":"                        self.CLI_RESP_PATTERN_LUN_NOT_EXIST) \u003e\u003d 0:"},{"line_number":417,"context_line":"                    return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_cb658546","line":414,"updated":"2015-02-02 07:16:37.000000000","message":"Why do you need a \"join\" here?","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"ef602d67f9b6a139fa1d1e30d93c08ff36836a18","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                        data[self.LUN_STATUS.key] \u003d\u003d \u0027OK(0x0)\u0027 and"},{"line_number":412,"context_line":"                        data[self.LUN_OPERATION.key] \u003d\u003d \u0027None\u0027)"},{"line_number":413,"context_line":"            except EMCVnxCLICmdError as ex:"},{"line_number":414,"context_line":"                orig_out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":415,"context_line":"                if orig_out.find("},{"line_number":416,"context_line":"                        self.CLI_RESP_PATTERN_LUN_NOT_EXIST) \u003e\u003d 0:"},{"line_number":417,"context_line":"                    return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_ceccb338","line":414,"in_reply_to":"da86d52c_cb658546","updated":"2015-02-02 08:54:52.000000000","message":"ex.kwargs[\"out\"] is a list of strings.\nSee line 349. I did that in line 349 because I want to remove \"\\n\" in log. Otherwise, a log entry of a exception may span across multiple lines.\n\nIn Line 415, the code need to search in a string. So I need to covert the list back to a string.","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            if (rc \u003d\u003d 162 and"},{"line_number":786,"context_line":"                    out.find(self.CLI_RESP_PATTERN_SMP_NOT_ATTACHED) \u003e\u003d 0):"},{"line_number":787,"context_line":"                LOG.warn(_LW(\"The specified Snapshot mount point %s is not \""},{"line_number":788,"context_line":"                             \"currently attached.\"), smp_name)"},{"line_number":789,"context_line":"            else:"},{"line_number":790,"context_line":"                self._raise_cli_error(command_detach_mount_point, rc, out)"},{"line_number":791,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_935e5be8","line":788,"updated":"2015-02-02 13:46:06.000000000","message":"Use of warn is not recommend.[1]\n[1] https://docs.python.org/3/library/logging.html#logging.Logger.warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            if (rc \u003d\u003d 162 and"},{"line_number":786,"context_line":"                    out.find(self.CLI_RESP_PATTERN_SMP_NOT_ATTACHED) \u003e\u003d 0):"},{"line_number":787,"context_line":"                LOG.warn(_LW(\"The specified Snapshot mount point %s is not \""},{"line_number":788,"context_line":"                             \"currently attached.\"), smp_name)"},{"line_number":789,"context_line":"            else:"},{"line_number":790,"context_line":"                self._raise_cli_error(command_detach_mount_point, rc, out)"},{"line_number":791,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_3462d0ad","line":788,"in_reply_to":"da86d52c_935e5be8","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                LOG.warn(_LW(\"Start migration failed. Message: %s\"),"},{"line_number":832,"context_line":"                         ex.kwargs[\"out\"])"},{"line_number":833,"context_line":"                if dst_name is not None:"},{"line_number":834,"context_line":"                    LOG.warn(_LW(\"Delete temp LUN after migration \""},{"line_number":835,"context_line":"                                 \"start failed. LUN: %s\") % dst_name)"},{"line_number":836,"context_line":"                    self.delete_lun(dst_name)"},{"line_number":837,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_336f6f94","line":834,"updated":"2015-02-02 13:46:06.000000000","message":"Same here.","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                LOG.warn(_LW(\"Start migration failed. Message: %s\"),"},{"line_number":832,"context_line":"                         ex.kwargs[\"out\"])"},{"line_number":833,"context_line":"                if dst_name is not None:"},{"line_number":834,"context_line":"                    LOG.warn(_LW(\"Delete temp LUN after migration \""},{"line_number":835,"context_line":"                                 \"start failed. LUN: %s\") % dst_name)"},{"line_number":836,"context_line":"                    self.delete_lun(dst_name)"},{"line_number":837,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_3409f0dd","line":834,"in_reply_to":"da86d52c_336f6f94","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                self._raise_cli_error(command_host_disconnect, rc, out)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"    def add_hlu_to_storage_group(self, hlu, alu, sg_name):"},{"line_number":971,"context_line":"        \"\"\"Add a lun into storage group as specified hlu number"},{"line_number":972,"context_line":"        Return True if the hlu is as specified, otherwise False"},{"line_number":973,"context_line":"        \"\"\""},{"line_number":974,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_1320ab48","line":971,"updated":"2015-02-02 13:46:06.000000000","message":"Adds... and others \u0027s/es\u0027 bellow.","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                self._raise_cli_error(command_host_disconnect, rc, out)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"    def add_hlu_to_storage_group(self, hlu, alu, sg_name):"},{"line_number":971,"context_line":"        \"\"\"Add a lun into storage group as specified hlu number"},{"line_number":972,"context_line":"        Return True if the hlu is as specified, otherwise False"},{"line_number":973,"context_line":"        \"\"\""},{"line_number":974,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_7413680d","line":971,"in_reply_to":"da86d52c_1320ab48","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":997,"context_line":"            # Ignore the error that due to retry"},{"line_number":998,"context_line":"            if rc \u003d\u003d 66 and\\"},{"line_number":999,"context_line":"                    out.find(\"No such Host LUN in this Storage Group\") \u003e\u003d 0:"},{"line_number":1000,"context_line":"                LOG.warn(_LW(\"HLU %(hlu)s has already been removed from \""},{"line_number":1001,"context_line":"                             \"%(sgname)s. Message: %(msg)s\") %"},{"line_number":1002,"context_line":"                         {\u0027hlu\u0027: hlu, \u0027sgname\u0027: sg_name, \u0027msg\u0027: out})"},{"line_number":1003,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_b3bb5fc3","line":1000,"updated":"2015-02-02 13:46:06.000000000","message":"Same","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":997,"context_line":"            # Ignore the error that due to retry"},{"line_number":998,"context_line":"            if rc \u003d\u003d 66 and\\"},{"line_number":999,"context_line":"                    out.find(\"No such Host LUN in this Storage Group\") \u003e\u003d 0:"},{"line_number":1000,"context_line":"                LOG.warn(_LW(\"HLU %(hlu)s has already been removed from \""},{"line_number":1001,"context_line":"                             \"%(sgname)s. Message: %(msg)s\") %"},{"line_number":1002,"context_line":"                         {\u0027hlu\u0027: hlu, \u0027sgname\u0027: sg_name, \u0027msg\u0027: out})"},{"line_number":1003,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_94f9bcca","line":1000,"in_reply_to":"da86d52c_b3bb5fc3","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":998,"context_line":"            if rc \u003d\u003d 66 and\\"},{"line_number":999,"context_line":"                    out.find(\"No such Host LUN in this Storage Group\") \u003e\u003d 0:"},{"line_number":1000,"context_line":"                LOG.warn(_LW(\"HLU %(hlu)s has already been removed from \""},{"line_number":1001,"context_line":"                             \"%(sgname)s. Message: %(msg)s\") %"},{"line_number":1002,"context_line":"                         {\u0027hlu\u0027: hlu, \u0027sgname\u0027: sg_name, \u0027msg\u0027: out})"},{"line_number":1003,"context_line":"            else:"},{"line_number":1004,"context_line":"                self._raise_cli_error(command_remove_hlu, rc, out)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_13d18bfb","line":1001,"updated":"2015-02-02 13:46:06.000000000","message":"Also, prefer using \u0027,\u0027 instead of \u0027%\u0027. It defers string interpolation.","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":998,"context_line":"            if rc \u003d\u003d 66 and\\"},{"line_number":999,"context_line":"                    out.find(\"No such Host LUN in this Storage Group\") \u003e\u003d 0:"},{"line_number":1000,"context_line":"                LOG.warn(_LW(\"HLU %(hlu)s has already been removed from \""},{"line_number":1001,"context_line":"                             \"%(sgname)s. Message: %(msg)s\") %"},{"line_number":1002,"context_line":"                         {\u0027hlu\u0027: hlu, \u0027sgname\u0027: sg_name, \u0027msg\u0027: out})"},{"line_number":1003,"context_line":"            else:"},{"line_number":1004,"context_line":"                self._raise_cli_error(command_remove_hlu, rc, out)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_b4f400d0","line":1001,"in_reply_to":"da86d52c_13d18bfb","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"        for prop in adv_properties:"},{"line_number":1090,"context_line":"            data[prop.key] \u003d self._get_property_value(out, prop)"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        LOG.debug(\u0027Return Object properties. Data: %s\u0027 % data)"},{"line_number":1093,"context_line":"        return data"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"    def _get_property_value(self, out, propertyDescriptor):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_f3031771","line":1092,"updated":"2015-02-02 13:46:06.000000000","message":"Prefer using \u0027,\u0027 instead of \u0027%\u0027. It defers string interpolation.","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"        for prop in adv_properties:"},{"line_number":1090,"context_line":"            data[prop.key] \u003d self._get_property_value(out, prop)"},{"line_number":1091,"context_line":""},{"line_number":1092,"context_line":"        LOG.debug(\u0027Return Object properties. Data: %s\u0027 % data)"},{"line_number":1093,"context_line":"        return data"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"    def _get_property_value(self, out, propertyDescriptor):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_d40334b6","line":1092,"in_reply_to":"da86d52c_f3031771","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"                                 \u0027sg\u0027: storage_group_name})"},{"line_number":1189,"context_line":"                    wwns.append(wwn)"},{"line_number":1190,"context_line":"        elif 83 \u003d\u003d rc:"},{"line_number":1191,"context_line":"            LOG.warn(_LW(\"Storage Group %s is not found.\"), storage_group_name)"},{"line_number":1192,"context_line":"        else:"},{"line_number":1193,"context_line":"            self._raise_cli_error(cmd_get_hba, rc, out)"},{"line_number":1194,"context_line":"        return wwns"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_333ccf2f","line":1191,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"                                 \u0027sg\u0027: storage_group_name})"},{"line_number":1189,"context_line":"                    wwns.append(wwn)"},{"line_number":1190,"context_line":"        elif 83 \u003d\u003d rc:"},{"line_number":1191,"context_line":"            LOG.warn(_LW(\"Storage Group %s is not found.\"), storage_group_name)"},{"line_number":1192,"context_line":"        else:"},{"line_number":1193,"context_line":"            self._raise_cli_error(cmd_get_hba, rc, out)"},{"line_number":1194,"context_line":"        return wwns"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_f4fe78ad","line":1191,"in_reply_to":"da86d52c_333ccf2f","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":1499,"context_line":"        return rc, out"},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"    def deregister_initiator(self, initiator_uid):"},{"line_number":1502,"context_line":"        \"\"\"This function trys to deregister initiators on VNX.\"\"\""},{"line_number":1503,"context_line":"        command_deregister \u003d (\u0027port\u0027, \u0027-removeHBA\u0027,"},{"line_number":1504,"context_line":"                              \u0027-hbauid\u0027, initiator_uid,"},{"line_number":1505,"context_line":"                              \u0027-o\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_93c73b12","line":1502,"updated":"2015-02-02 13:46:06.000000000","message":"This function tries to...","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":1499,"context_line":"        return rc, out"},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"    def deregister_initiator(self, initiator_uid):"},{"line_number":1502,"context_line":"        \"\"\"This function trys to deregister initiators on VNX.\"\"\""},{"line_number":1503,"context_line":"        command_deregister \u003d (\u0027port\u0027, \u0027-removeHBA\u0027,"},{"line_number":1504,"context_line":"                              \u0027-hbauid\u0027, initiator_uid,"},{"line_number":1505,"context_line":"                              \u0027-o\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_54274464","line":1502,"in_reply_to":"da86d52c_93c73b12","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":1577,"context_line":"        self.force_delete_lun_in_sg \u003d ("},{"line_number":1578,"context_line":"            self.configuration.force_delete_lun_in_storagegroup)"},{"line_number":1579,"context_line":"        if self.force_delete_lun_in_sg:"},{"line_number":1580,"context_line":"            LOG.warn(_LW(\"force_delete_lun_in_storagegroup\u003dTrue\"))"},{"line_number":1581,"context_line":""},{"line_number":1582,"context_line":"    def get_target_storagepool(self, volume, source_volume_name\u003dNone):"},{"line_number":1583,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_b39a7f12","line":1580,"updated":"2015-02-02 13:46:06.000000000","message":"Warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":1577,"context_line":"        self.force_delete_lun_in_sg \u003d ("},{"line_number":1578,"context_line":"            self.configuration.force_delete_lun_in_storagegroup)"},{"line_number":1579,"context_line":"        if self.force_delete_lun_in_sg:"},{"line_number":1580,"context_line":"            LOG.warn(_LW(\"force_delete_lun_in_storagegroup\u003dTrue\"))"},{"line_number":1581,"context_line":""},{"line_number":1582,"context_line":"    def get_target_storagepool(self, volume, source_volume_name\u003dNone):"},{"line_number":1583,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_742a882d","line":1580,"in_reply_to":"da86d52c_b39a7f12","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":1743,"context_line":"                    (\u0027contained in a Storage Group\u0027 in orig_out or"},{"line_number":1744,"context_line":"                     \u0027Host LUN/LUN mapping still exists\u0027 in orig_out)):"},{"line_number":1745,"context_line":"                LOG.warn(_LW(\u0027LUN corresponding to %s is still \u0027"},{"line_number":1746,"context_line":"                             \u0027in some Storage Groups.\u0027"},{"line_number":1747,"context_line":"                             \u0027Try to bring the LUN out of Storage Groups \u0027"},{"line_number":1748,"context_line":"                             \u0027and retry the deletion.\u0027),"},{"line_number":1749,"context_line":"                         volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_739007ed","line":1746,"updated":"2015-02-02 13:46:06.000000000","message":"warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":1743,"context_line":"                    (\u0027contained in a Storage Group\u0027 in orig_out or"},{"line_number":1744,"context_line":"                     \u0027Host LUN/LUN mapping still exists\u0027 in orig_out)):"},{"line_number":1745,"context_line":"                LOG.warn(_LW(\u0027LUN corresponding to %s is still \u0027"},{"line_number":1746,"context_line":"                             \u0027in some Storage Groups.\u0027"},{"line_number":1747,"context_line":"                             \u0027Try to bring the LUN out of Storage Groups \u0027"},{"line_number":1748,"context_line":"                             \u0027and retry the deletion.\u0027),"},{"line_number":1749,"context_line":"                         volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_9420dc4a","line":1746,"in_reply_to":"da86d52c_739007ed","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2301,"context_line":"                              \u0027-ip\u0027, ip, \u0027-host\u0027, host, \u0027-o\u0027)"},{"line_number":2302,"context_line":"            out, rc \u003d self._client.command_execute(*cmd_fc_setpath)"},{"line_number":2303,"context_line":"        if rc !\u003d 0:"},{"line_number":2304,"context_line":"            LOG.warn(_LW(\"Failed to register %(itor)s to SP%(sp)s \""},{"line_number":2305,"context_line":"                         \"port %(portid)s because: %(msg)s.\")"},{"line_number":2306,"context_line":"                     % {\u0027itor\u0027: initiator_uid,"},{"line_number":2307,"context_line":"                        \u0027sp\u0027: sp,"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_135eeb45","line":2304,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2301,"context_line":"                              \u0027-ip\u0027, ip, \u0027-host\u0027, host, \u0027-o\u0027)"},{"line_number":2302,"context_line":"            out, rc \u003d self._client.command_execute(*cmd_fc_setpath)"},{"line_number":2303,"context_line":"        if rc !\u003d 0:"},{"line_number":2304,"context_line":"            LOG.warn(_LW(\"Failed to register %(itor)s to SP%(sp)s \""},{"line_number":2305,"context_line":"                         \"port %(portid)s because: %(msg)s.\")"},{"line_number":2306,"context_line":"                     % {\u0027itor\u0027: initiator_uid,"},{"line_number":2307,"context_line":"                        \u0027sp\u0027: sp,"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_f41598e5","line":2304,"in_reply_to":"da86d52c_135eeb45","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2304,"context_line":"            LOG.warn(_LW(\"Failed to register %(itor)s to SP%(sp)s \""},{"line_number":2305,"context_line":"                         \"port %(portid)s because: %(msg)s.\")"},{"line_number":2306,"context_line":"                     % {\u0027itor\u0027: initiator_uid,"},{"line_number":2307,"context_line":"                        \u0027sp\u0027: sp,"},{"line_number":2308,"context_line":"                        \u0027portid\u0027: port_id,"},{"line_number":2309,"context_line":"                        \u0027msg\u0027: out})"},{"line_number":2310,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_53586356","line":2307,"updated":"2015-02-02 13:46:06.000000000","message":"% -\u003e ,","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2304,"context_line":"            LOG.warn(_LW(\"Failed to register %(itor)s to SP%(sp)s \""},{"line_number":2305,"context_line":"                         \"port %(portid)s because: %(msg)s.\")"},{"line_number":2306,"context_line":"                     % {\u0027itor\u0027: initiator_uid,"},{"line_number":2307,"context_line":"                        \u0027sp\u0027: sp,"},{"line_number":2308,"context_line":"                        \u0027portid\u0027: port_id,"},{"line_number":2309,"context_line":"                        \u0027msg\u0027: out})"},{"line_number":2310,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_14d4ec1e","line":2307,"in_reply_to":"da86d52c_53586356","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2363,"context_line":"            elif self.protocol \u003d\u003d \u0027FC\u0027:"},{"line_number":2364,"context_line":"                initiator_uids \u003d self._extract_fc_uids(connector)"},{"line_number":2365,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":2366,"context_line":"            LOG.warn(_LW(\"Failed to extract initiators of %s, so ignore \""},{"line_number":2367,"context_line":"                         \"deregistration operation.\"),"},{"line_number":2368,"context_line":"                     connector[\u0027host\u0027])"},{"line_number":2369,"context_line":"        if initiator_uids:"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_732c87ac","line":2366,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2363,"context_line":"            elif self.protocol \u003d\u003d \u0027FC\u0027:"},{"line_number":2364,"context_line":"                initiator_uids \u003d self._extract_fc_uids(connector)"},{"line_number":2365,"context_line":"        except exception.VolumeBackendAPIException:"},{"line_number":2366,"context_line":"            LOG.warn(_LW(\"Failed to extract initiators of %s, so ignore \""},{"line_number":2367,"context_line":"                         \"deregistration operation.\"),"},{"line_number":2368,"context_line":"                     connector[\u0027host\u0027])"},{"line_number":2369,"context_line":"        if initiator_uids:"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_d4f174ce","line":2366,"in_reply_to":"da86d52c_732c87ac","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2370,"context_line":"            for initiator_uid in initiator_uids:"},{"line_number":2371,"context_line":"                rc, out \u003d self._client.deregister_initiator(initiator_uid)"},{"line_number":2372,"context_line":"                if rc !\u003d 0:"},{"line_number":2373,"context_line":"                    LOG.warn(_LW(\"Failed to deregister %(itor)s \""},{"line_number":2374,"context_line":"                                 \"because: %(msg)s.\"),"},{"line_number":2375,"context_line":"                             {\u0027itor\u0027: initiator_uid,"},{"line_number":2376,"context_line":"                              \u0027msg\u0027: out})"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_d3129361","line":2373,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2370,"context_line":"            for initiator_uid in initiator_uids:"},{"line_number":2371,"context_line":"                rc, out \u003d self._client.deregister_initiator(initiator_uid)"},{"line_number":2372,"context_line":"                if rc !\u003d 0:"},{"line_number":2373,"context_line":"                    LOG.warn(_LW(\"Failed to deregister %(itor)s \""},{"line_number":2374,"context_line":"                                 \"because: %(msg)s.\"),"},{"line_number":2375,"context_line":"                             {\u0027itor\u0027: initiator_uid,"},{"line_number":2376,"context_line":"                              \u0027msg\u0027: out})"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_54de6440","line":2373,"in_reply_to":"da86d52c_d3129361","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2391,"context_line":"    def auto_register_initiator(self, connector, sgdata):"},{"line_number":2392,"context_line":"        \"\"\"Automatically register available initiators."},{"line_number":2393,"context_line":""},{"line_number":2394,"context_line":"        Return True if has registerred initiator otherwise return False."},{"line_number":2395,"context_line":"        \"\"\""},{"line_number":2396,"context_line":"        initiator_uids \u003d []"},{"line_number":2397,"context_line":"        ip \u003d connector[\u0027ip\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_13050a11","line":2394,"updated":"2015-02-02 13:46:06.000000000","message":"Returns .. otherwise returns","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2391,"context_line":"    def auto_register_initiator(self, connector, sgdata):"},{"line_number":2392,"context_line":"        \"\"\"Automatically register available initiators."},{"line_number":2393,"context_line":""},{"line_number":2394,"context_line":"        Return True if has registerred initiator otherwise return False."},{"line_number":2395,"context_line":"        \"\"\""},{"line_number":2396,"context_line":"        initiator_uids \u003d []"},{"line_number":2397,"context_line":"        ip \u003d connector[\u0027ip\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_74e1a8fd","line":2394,"in_reply_to":"da86d52c_13050a11","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2690,"context_line":"        return data[\u0027total_capacity_gb\u0027]"},{"line_number":2691,"context_line":""},{"line_number":2692,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":2693,"context_line":"        \"\"\"Import the existing backend storage object as a volume."},{"line_number":2694,"context_line":""},{"line_number":2695,"context_line":"        Rename the backend storage object so that it matches the,"},{"line_number":2696,"context_line":"        volume[\u0027name\u0027] which is how drivers traditionally map between a"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_5326a2b8","line":2693,"updated":"2015-02-02 13:46:06.000000000","message":"Imports","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2690,"context_line":"        return data[\u0027total_capacity_gb\u0027]"},{"line_number":2691,"context_line":""},{"line_number":2692,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":2693,"context_line":"        \"\"\"Import the existing backend storage object as a volume."},{"line_number":2694,"context_line":""},{"line_number":2695,"context_line":"        Rename the backend storage object so that it matches the,"},{"line_number":2696,"context_line":"        volume[\u0027name\u0027] which is how drivers traditionally map between a"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_f4ecb8f5","line":2693,"in_reply_to":"da86d52c_5326a2b8","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2692,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":2693,"context_line":"        \"\"\"Import the existing backend storage object as a volume."},{"line_number":2694,"context_line":""},{"line_number":2695,"context_line":"        Rename the backend storage object so that it matches the,"},{"line_number":2696,"context_line":"        volume[\u0027name\u0027] which is how drivers traditionally map between a"},{"line_number":2697,"context_line":"        cinder volume and the associated backend storage object."},{"line_number":2698,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_733ac6ce","line":2695,"updated":"2015-02-02 13:46:06.000000000","message":"Renames","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2692,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":2693,"context_line":"        \"\"\"Import the existing backend storage object as a volume."},{"line_number":2694,"context_line":""},{"line_number":2695,"context_line":"        Rename the backend storage object so that it matches the,"},{"line_number":2696,"context_line":"        volume[\u0027name\u0027] which is how drivers traditionally map between a"},{"line_number":2697,"context_line":"        cinder volume and the associated backend storage object."},{"line_number":2698,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_34be50d5","line":2695,"in_reply_to":"da86d52c_733ac6ce","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2778,"context_line":"            pool_feature \u003d self._client.get_pool_feature_properties(poll\u003dFalse)"},{"line_number":2779,"context_line":"            if (pool_feature[\u0027max_pool_luns\u0027]"},{"line_number":2780,"context_line":"                    \u003c\u003d pool_feature[\u0027total_pool_luns\u0027]):"},{"line_number":2781,"context_line":"                LOG.warn(_LW(\"Maximum number of Pool LUNs, %s, \""},{"line_number":2782,"context_line":"                             \"have been created. \""},{"line_number":2783,"context_line":"                             \"No more LUN creation can be done.\"),"},{"line_number":2784,"context_line":"                         pool_feature[\u0027max_pool_luns\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_93657ae3","line":2781,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2778,"context_line":"            pool_feature \u003d self._client.get_pool_feature_properties(poll\u003dFalse)"},{"line_number":2779,"context_line":"            if (pool_feature[\u0027max_pool_luns\u0027]"},{"line_number":2780,"context_line":"                    \u003c\u003d pool_feature[\u0027total_pool_luns\u0027]):"},{"line_number":2781,"context_line":"                LOG.warn(_LW(\"Maximum number of Pool LUNs, %s, \""},{"line_number":2782,"context_line":"                             \"have been created. \""},{"line_number":2783,"context_line":"                             \"No more LUN creation can be done.\"),"},{"line_number":2784,"context_line":"                         pool_feature[\u0027max_pool_luns\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_54b584ec","line":2781,"in_reply_to":"da86d52c_93657ae3","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2885,"context_line":""},{"line_number":2886,"context_line":""},{"line_number":2887,"context_line":"class CreateSMPTask(task.Task):"},{"line_number":2888,"context_line":"    \"\"\"Create a snap mount point (SMP) for the source snapshot."},{"line_number":2889,"context_line":""},{"line_number":2890,"context_line":"    Reversion strategy: Delete the SMP."},{"line_number":2891,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_b3b99e30","line":2888,"updated":"2015-02-02 13:46:06.000000000","message":"Creates...","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2885,"context_line":""},{"line_number":2886,"context_line":""},{"line_number":2887,"context_line":"class CreateSMPTask(task.Task):"},{"line_number":2888,"context_line":"    \"\"\"Create a snap mount point (SMP) for the source snapshot."},{"line_number":2889,"context_line":""},{"line_number":2890,"context_line":"    Reversion strategy: Delete the SMP."},{"line_number":2891,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_74b8c8e5","line":2888,"in_reply_to":"da86d52c_b3b99e30","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2898,"context_line":"        if isinstance(result, failure.Failure):"},{"line_number":2899,"context_line":"            return"},{"line_number":2900,"context_line":"        else:"},{"line_number":2901,"context_line":"            LOG.warn(_LW(\u0027CreateSMPTask.revert: delete mount point %s\u0027),"},{"line_number":2902,"context_line":"                     volume[\u0027name\u0027])"},{"line_number":2903,"context_line":"            client.delete_lun(volume[\u0027name\u0027])"},{"line_number":2904,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_b3e7de3f","line":2901,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2898,"context_line":"        if isinstance(result, failure.Failure):"},{"line_number":2899,"context_line":"            return"},{"line_number":2900,"context_line":"        else:"},{"line_number":2901,"context_line":"            LOG.warn(_LW(\u0027CreateSMPTask.revert: delete mount point %s\u0027),"},{"line_number":2902,"context_line":"                     volume[\u0027name\u0027])"},{"line_number":2903,"context_line":"            client.delete_lun(volume[\u0027name\u0027])"},{"line_number":2904,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_94ce1c82","line":2901,"in_reply_to":"da86d52c_b3e7de3f","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2904,"context_line":""},{"line_number":2905,"context_line":""},{"line_number":2906,"context_line":"class AttachSnapTask(task.Task):"},{"line_number":2907,"context_line":"    \"\"\"Attach the snapshot to the SMP created before."},{"line_number":2908,"context_line":""},{"line_number":2909,"context_line":"    Reversion strategy: Detach the SMP."},{"line_number":2910,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_33f4cef1","line":2907,"updated":"2015-02-02 13:46:06.000000000","message":"Attaches","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2904,"context_line":""},{"line_number":2905,"context_line":""},{"line_number":2906,"context_line":"class AttachSnapTask(task.Task):"},{"line_number":2907,"context_line":"    \"\"\"Attach the snapshot to the SMP created before."},{"line_number":2908,"context_line":""},{"line_number":2909,"context_line":"    Reversion strategy: Detach the SMP."},{"line_number":2910,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_d4c89476","line":2907,"in_reply_to":"da86d52c_33f4cef1","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2917,"context_line":"        if isinstance(result, failure.Failure):"},{"line_number":2918,"context_line":"            return"},{"line_number":2919,"context_line":"        else:"},{"line_number":2920,"context_line":"            LOG.warn(_LW(\u0027AttachSnapTask.revert: detach mount point %s\u0027),"},{"line_number":2921,"context_line":"                     volume[\u0027name\u0027])"},{"line_number":2922,"context_line":"            client.detach_mount_point(volume[\u0027name\u0027])"},{"line_number":2923,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_13d6ea4f","line":2920,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2917,"context_line":"        if isinstance(result, failure.Failure):"},{"line_number":2918,"context_line":"            return"},{"line_number":2919,"context_line":"        else:"},{"line_number":2920,"context_line":"            LOG.warn(_LW(\u0027AttachSnapTask.revert: detach mount point %s\u0027),"},{"line_number":2921,"context_line":"                     volume[\u0027name\u0027])"},{"line_number":2922,"context_line":"            client.detach_mount_point(volume[\u0027name\u0027])"},{"line_number":2923,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_f4c3d854","line":2920,"in_reply_to":"da86d52c_13d6ea4f","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"        if isinstance(result, failure.Failure):"},{"line_number":2944,"context_line":"            return"},{"line_number":2945,"context_line":"        else:"},{"line_number":2946,"context_line":"            LOG.warn(_LW(\u0027CreateDestLunTask.revert: delete temp lun %s\u0027),"},{"line_number":2947,"context_line":"                     dest_vol_name)"},{"line_number":2948,"context_line":"            client.delete_lun(dest_vol_name)"},{"line_number":2949,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_b3befefd","line":2946,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"        if isinstance(result, failure.Failure):"},{"line_number":2944,"context_line":"            return"},{"line_number":2945,"context_line":"        else:"},{"line_number":2946,"context_line":"            LOG.warn(_LW(\u0027CreateDestLunTask.revert: delete temp lun %s\u0027),"},{"line_number":2947,"context_line":"                     dest_vol_name)"},{"line_number":2948,"context_line":"            client.delete_lun(dest_vol_name)"},{"line_number":2949,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_14a22cae","line":2946,"in_reply_to":"da86d52c_b3befefd","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2949,"context_line":""},{"line_number":2950,"context_line":""},{"line_number":2951,"context_line":"class MigrateLunTask(task.Task):"},{"line_number":2952,"context_line":"    \"\"\"Start a migration between the SMP and the temp lun."},{"line_number":2953,"context_line":""},{"line_number":2954,"context_line":"    Reversion strategy: None"},{"line_number":2955,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_f33796ae","line":2952,"updated":"2015-02-02 13:46:06.000000000","message":"Starts","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2949,"context_line":""},{"line_number":2950,"context_line":""},{"line_number":2951,"context_line":"class MigrateLunTask(task.Task):"},{"line_number":2952,"context_line":"    \"\"\"Start a migration between the SMP and the temp lun."},{"line_number":2953,"context_line":""},{"line_number":2954,"context_line":"    Reversion strategy: None"},{"line_number":2955,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_34a570b5","line":2952,"in_reply_to":"da86d52c_f33796ae","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":2995,"context_line":"            snapshot_name \u003d snapshot[\u0027name\u0027]"},{"line_number":2996,"context_line":"            volume_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":2997,"context_line":"            LOG.info(_LI(\u0027Create snapshot: %(snapshot)s: volume: %(volume)s\u0027)"},{"line_number":2998,"context_line":"                     % {\u0027snapshot\u0027: snapshot_name,"},{"line_number":2999,"context_line":"                        \u0027volume\u0027: volume_name})"},{"line_number":3000,"context_line":"            client.create_snapshot(source_lun_id, snapshot_name)"},{"line_number":3001,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_734ba62b","line":2998,"updated":"2015-02-02 13:46:06.000000000","message":"% -\u003e \u0027,\u0027","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":2995,"context_line":"            snapshot_name \u003d snapshot[\u0027name\u0027]"},{"line_number":2996,"context_line":"            volume_name \u003d snapshot[\u0027volume_name\u0027]"},{"line_number":2997,"context_line":"            LOG.info(_LI(\u0027Create snapshot: %(snapshot)s: volume: %(volume)s\u0027)"},{"line_number":2998,"context_line":"                     % {\u0027snapshot\u0027: snapshot_name,"},{"line_number":2999,"context_line":"                        \u0027volume\u0027: volume_name})"},{"line_number":3000,"context_line":"            client.create_snapshot(source_lun_id, snapshot_name)"},{"line_number":3001,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_54aca4a0","line":2998,"in_reply_to":"da86d52c_734ba62b","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":3005,"context_line":"            return"},{"line_number":3006,"context_line":"        else:"},{"line_number":3007,"context_line":"            if snapshot[\u0027consistencygroup_id\u0027]:"},{"line_number":3008,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"},{"line_number":3009,"context_line":"                             \u0027delete temp cgsnapshot %s\u0027),"},{"line_number":3010,"context_line":"                         snapshot[\u0027consistencygroup_id\u0027])"},{"line_number":3011,"context_line":"                client.delete_cgsnapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_b3551ec8","line":3008,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":3005,"context_line":"            return"},{"line_number":3006,"context_line":"        else:"},{"line_number":3007,"context_line":"            if snapshot[\u0027consistencygroup_id\u0027]:"},{"line_number":3008,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"},{"line_number":3009,"context_line":"                             \u0027delete temp cgsnapshot %s\u0027),"},{"line_number":3010,"context_line":"                         snapshot[\u0027consistencygroup_id\u0027])"},{"line_number":3011,"context_line":"                client.delete_cgsnapshot(snapshot)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_74afe894","line":3008,"in_reply_to":"da86d52c_b3551ec8","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"dd6c454fd36815a68e706781cde37ae55c1a79c7","unresolved":false,"context_lines":[{"line_number":3010,"context_line":"                         snapshot[\u0027consistencygroup_id\u0027])"},{"line_number":3011,"context_line":"                client.delete_cgsnapshot(snapshot)"},{"line_number":3012,"context_line":"            else:"},{"line_number":3013,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"},{"line_number":3014,"context_line":"                             \u0027delete temp snapshot %s\u0027),"},{"line_number":3015,"context_line":"                         snapshot[\u0027name\u0027])"},{"line_number":3016,"context_line":"                client.delete_snapshot(snapshot[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_13642ab8","line":3013,"updated":"2015-02-02 13:46:06.000000000","message":"warn -\u003e warning","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"dda0ceeb65efc8490366ff8f94ef813e9d8f14eb","unresolved":false,"context_lines":[{"line_number":3010,"context_line":"                         snapshot[\u0027consistencygroup_id\u0027])"},{"line_number":3011,"context_line":"                client.delete_cgsnapshot(snapshot)"},{"line_number":3012,"context_line":"            else:"},{"line_number":3013,"context_line":"                LOG.warn(_LW(\u0027CreateSnapshotTask.revert: \u0027"},{"line_number":3014,"context_line":"                             \u0027delete temp snapshot %s\u0027),"},{"line_number":3015,"context_line":"                         snapshot[\u0027name\u0027])"},{"line_number":3016,"context_line":"                client.delete_snapshot(snapshot[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_94953c42","line":3013,"in_reply_to":"da86d52c_13642ab8","updated":"2015-02-03 05:47:37.000000000","message":"Done","commit_id":"7777ad923e542a8e6cafec3dd0606b7598978400"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    cfg.BoolOpt(\u0027initiator_auto_deregistration\u0027,"},{"line_number":103,"context_line":"                default\u003dFalse,"},{"line_number":104,"context_line":"                help\u003d\u0027Automatically deregister initiators after the related \u0027"},{"line_number":105,"context_line":"                \u0027storage group is destroyed.\u0027"},{"line_number":106,"context_line":"                \u0027By default, the value is False.\u0027),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027check_max_pool_luns_threshold\u0027,"},{"line_number":108,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_d9e503dd","line":105,"updated":"2015-02-03 22:13:22.000000000","message":"Need a space after the period as there will be another sentence after this in the help text.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    cfg.BoolOpt(\u0027initiator_auto_deregistration\u0027,"},{"line_number":103,"context_line":"                default\u003dFalse,"},{"line_number":104,"context_line":"                help\u003d\u0027Automatically deregister initiators after the related \u0027"},{"line_number":105,"context_line":"                \u0027storage group is destroyed.\u0027"},{"line_number":106,"context_line":"                \u0027By default, the value is False.\u0027),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027check_max_pool_luns_threshold\u0027,"},{"line_number":108,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_386a90b3","line":105,"in_reply_to":"da86d52c_d9e503dd","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027check_max_pool_luns_threshold\u0027,"},{"line_number":108,"context_line":"                default\u003dFalse,"},{"line_number":109,"context_line":"                help\u003d\u0027Report free_capacity_gb as 0 when the limit to \u0027"},{"line_number":110,"context_line":"                \u0027maximum number of pool LUNs is reached.\u0027"},{"line_number":111,"context_line":"                \u0027By default, the value is False.\u0027),"},{"line_number":112,"context_line":"    cfg.BoolOpt(\u0027force_delete_lun_in_storagegroup\u0027,"},{"line_number":113,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_19d31b05","line":110,"updated":"2015-02-03 22:13:22.000000000","message":"Space after period.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027check_max_pool_luns_threshold\u0027,"},{"line_number":108,"context_line":"                default\u003dFalse,"},{"line_number":109,"context_line":"                help\u003d\u0027Report free_capacity_gb as 0 when the limit to \u0027"},{"line_number":110,"context_line":"                \u0027maximum number of pool LUNs is reached.\u0027"},{"line_number":111,"context_line":"                \u0027By default, the value is False.\u0027),"},{"line_number":112,"context_line":"    cfg.BoolOpt(\u0027force_delete_lun_in_storagegroup\u0027,"},{"line_number":113,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_f86c78d2","line":110,"in_reply_to":"da86d52c_19d31b05","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            if self._is_sp_unavailable_error(orig_out):"},{"line_number":819,"context_line":"                LOG.warn(_LW(\"Migration command may get network timeout. \""},{"line_number":820,"context_line":"                             \"Double check whether migration in fact \""},{"line_number":821,"context_line":"                             \"started successfully. Message: %(msg)s\") %"},{"line_number":822,"context_line":"                         {\u0027msg\u0027: ex.kwargs[\"out\"]})"},{"line_number":823,"context_line":"                command_migrate_list \u003d (\u0027migrate\u0027, \u0027-list\u0027,"},{"line_number":824,"context_line":"                                        \u0027-source\u0027, src_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_39afff2b","line":821,"updated":"2015-02-03 22:13:22.000000000","message":"% -\u003e ,","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":818,"context_line":"            if self._is_sp_unavailable_error(orig_out):"},{"line_number":819,"context_line":"                LOG.warn(_LW(\"Migration command may get network timeout. \""},{"line_number":820,"context_line":"                             \"Double check whether migration in fact \""},{"line_number":821,"context_line":"                             \"started successfully. Message: %(msg)s\") %"},{"line_number":822,"context_line":"                         {\u0027msg\u0027: ex.kwargs[\"out\"]})"},{"line_number":823,"context_line":"                command_migrate_list \u003d (\u0027migrate\u0027, \u0027-list\u0027,"},{"line_number":824,"context_line":"                                        \u0027-source\u0027, src_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_b8ebe011","line":821,"in_reply_to":"da86d52c_39afff2b","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":828,"context_line":"                    migration_succeed \u003d True"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"            if not migration_succeed:"},{"line_number":831,"context_line":"                LOG.warning(_LW(\"Start migration failed. Message: %s\"),"},{"line_number":832,"context_line":"                            ex.kwargs[\"out\"])"},{"line_number":833,"context_line":"                if dst_name is not None:"},{"line_number":834,"context_line":"                    LOG.warning(_LW(\"Delete temp LUN after migration \""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_19607b00","line":831,"updated":"2015-02-03 22:13:22.000000000","message":"Can you consider a followup patch to change \u0027warn\u0027 to \u0027warning\u0027? Right now it is mixed and \u0027warn\u0027 is deprecated.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":828,"context_line":"                    migration_succeed \u003d True"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"            if not migration_succeed:"},{"line_number":831,"context_line":"                LOG.warning(_LW(\"Start migration failed. Message: %s\"),"},{"line_number":832,"context_line":"                            ex.kwargs[\"out\"])"},{"line_number":833,"context_line":"                if dst_name is not None:"},{"line_number":834,"context_line":"                    LOG.warning(_LW(\"Delete temp LUN after migration \""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_f8db984c","line":831,"in_reply_to":"da86d52c_19607b00","updated":"2015-02-04 08:49:40.000000000","message":"\"warning\" is used when address another reviewer\u0027s comments.\nI will replace all \"warn\" with warning for consistency.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                self._raise_cli_error(command_host_disconnect, rc, out)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"    def add_hlu_to_storage_group(self, hlu, alu, sg_name):"},{"line_number":971,"context_line":"        \"\"\"Adds a lun into storage group as specified hlu number"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"        Return True if the hlu is as specified, otherwise False"},{"line_number":974,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_d910a35b","line":971,"updated":"2015-02-03 22:13:22.000000000","message":"Period.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                self._raise_cli_error(command_host_disconnect, rc, out)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"    def add_hlu_to_storage_group(self, hlu, alu, sg_name):"},{"line_number":971,"context_line":"        \"\"\"Adds a lun into storage group as specified hlu number"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"        Return True if the hlu is as specified, otherwise False"},{"line_number":974,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_3898d0bf","line":971,"in_reply_to":"da86d52c_d910a35b","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":970,"context_line":"    def add_hlu_to_storage_group(self, hlu, alu, sg_name):"},{"line_number":971,"context_line":"        \"\"\"Adds a lun into storage group as specified hlu number"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"        Return True if the hlu is as specified, otherwise False"},{"line_number":974,"context_line":"        \"\"\""},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        command_add_hlu \u003d (\u0027storagegroup\u0027, \u0027-addhlu\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_79017705","line":973,"updated":"2015-02-03 22:13:22.000000000","message":"Period","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":970,"context_line":"    def add_hlu_to_storage_group(self, hlu, alu, sg_name):"},{"line_number":971,"context_line":"        \"\"\"Adds a lun into storage group as specified hlu number"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"        Return True if the hlu is as specified, otherwise False"},{"line_number":974,"context_line":"        \"\"\""},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        command_add_hlu \u003d (\u0027storagegroup\u0027, \u0027-addhlu\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_58958485","line":973,"in_reply_to":"da86d52c_79017705","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":1383,"context_line":"        return pattern.match(out)"},{"line_number":1384,"context_line":""},{"line_number":1385,"context_line":"    def command_execute(self, *command, **kwargv):"},{"line_number":1386,"context_line":"        \"\"\"Executes command against the VNX array"},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"        When there is named parameter poll\u003dFalse, the command will be sent"},{"line_number":1389,"context_line":"        alone with option -np."}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_bc54bdff","line":1386,"updated":"2015-02-03 22:13:22.000000000","message":"Period","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":1383,"context_line":"        return pattern.match(out)"},{"line_number":1384,"context_line":""},{"line_number":1385,"context_line":"    def command_execute(self, *command, **kwargv):"},{"line_number":1386,"context_line":"        \"\"\"Executes command against the VNX array"},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"        When there is named parameter poll\u003dFalse, the command will be sent"},{"line_number":1389,"context_line":"        alone with option -np."}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_f85558fa","line":1386,"in_reply_to":"da86d52c_bc54bdff","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":1531,"context_line":""},{"line_number":1532,"context_line":"    VERSION \u003d \u002705.00.00\u0027"},{"line_number":1533,"context_line":"    stats \u003d {\u0027driver_version\u0027: VERSION,"},{"line_number":1534,"context_line":"             \u0027free_capacity_gb\u0027: \u0027unknown\u0027,"},{"line_number":1535,"context_line":"             \u0027reserved_percentage\u0027: 0,"},{"line_number":1536,"context_line":"             \u0027storage_protocol\u0027: None,"},{"line_number":1537,"context_line":"             \u0027total_capacity_gb\u0027: \u0027unknown\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_1c6a29b3","line":1534,"updated":"2015-02-03 22:13:22.000000000","message":"Default should be 0. \u0027unknown\u0027 is not recommended any more. It is there for driver which doesn\u0027t have a way to find out the capacities at all. In your case, this will be overridden by a real number.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":1531,"context_line":""},{"line_number":1532,"context_line":"    VERSION \u003d \u002705.00.00\u0027"},{"line_number":1533,"context_line":"    stats \u003d {\u0027driver_version\u0027: VERSION,"},{"line_number":1534,"context_line":"             \u0027free_capacity_gb\u0027: \u0027unknown\u0027,"},{"line_number":1535,"context_line":"             \u0027reserved_percentage\u0027: 0,"},{"line_number":1536,"context_line":"             \u0027storage_protocol\u0027: None,"},{"line_number":1537,"context_line":"             \u0027total_capacity_gb\u0027: \u0027unknown\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_783248f3","line":1534,"in_reply_to":"da86d52c_1c6a29b3","updated":"2015-02-04 08:49:40.000000000","message":"For Pool-based configuration (pool name is given in storage_pool_name option), a real number will override the value.\n\nBut for Array-based configuration (no value is given to storage_pool_name option and Pool-aware scheduler is still not supported in this patch), we need unknown instead of 0.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":1534,"context_line":"             \u0027free_capacity_gb\u0027: \u0027unknown\u0027,"},{"line_number":1535,"context_line":"             \u0027reserved_percentage\u0027: 0,"},{"line_number":1536,"context_line":"             \u0027storage_protocol\u0027: None,"},{"line_number":1537,"context_line":"             \u0027total_capacity_gb\u0027: \u0027unknown\u0027,"},{"line_number":1538,"context_line":"             \u0027vendor_name\u0027: \u0027EMC\u0027,"},{"line_number":1539,"context_line":"             \u0027volume_backend_name\u0027: None,"},{"line_number":1540,"context_line":"             \u0027compression_support\u0027: \u0027False\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_bca2fdfa","line":1537,"updated":"2015-02-03 22:13:22.000000000","message":"\u0027unknown\u0027 -\u003e 0","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":1534,"context_line":"             \u0027free_capacity_gb\u0027: \u0027unknown\u0027,"},{"line_number":1535,"context_line":"             \u0027reserved_percentage\u0027: 0,"},{"line_number":1536,"context_line":"             \u0027storage_protocol\u0027: None,"},{"line_number":1537,"context_line":"             \u0027total_capacity_gb\u0027: \u0027unknown\u0027,"},{"line_number":1538,"context_line":"             \u0027vendor_name\u0027: \u0027EMC\u0027,"},{"line_number":1539,"context_line":"             \u0027volume_backend_name\u0027: None,"},{"line_number":1540,"context_line":"             \u0027compression_support\u0027: \u0027False\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_982ffc87","line":1537,"in_reply_to":"da86d52c_bca2fdfa","updated":"2015-02-04 08:49:40.000000000","message":"For Pool-based configuration (pool name is given in storage_pool_name option), a real number will override the value.\n\nBut for Array-based configuration (no value is given to storage_pool_name option and Pool-aware scheduler is still not supported in this patch), we need unknown instead of 0.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":1743,"context_line":"            orig_out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":1744,"context_line":"            if (self.force_delete_lun_in_sg and"},{"line_number":1745,"context_line":"                    (\u0027contained in a Storage Group\u0027 in orig_out or"},{"line_number":1746,"context_line":"                     \u0027Host LUN/LUN mapping still exists\u0027 in orig_out)):"},{"line_number":1747,"context_line":"                LOG.warning(_LW(\u0027LUN corresponding to %s is still \u0027"},{"line_number":1748,"context_line":"                                \u0027in some Storage Groups.\u0027"},{"line_number":1749,"context_line":"                                \u0027Try to bring the LUN out of Storage Groups \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_bcf03dff","line":1746,"updated":"2015-02-03 22:13:22.000000000","message":"Can you make \u0027contained in a Storage Group\u0027 and \u0027Host LUN/LUN mapping still exists\u0027 constant?","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":1743,"context_line":"            orig_out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":1744,"context_line":"            if (self.force_delete_lun_in_sg and"},{"line_number":1745,"context_line":"                    (\u0027contained in a Storage Group\u0027 in orig_out or"},{"line_number":1746,"context_line":"                     \u0027Host LUN/LUN mapping still exists\u0027 in orig_out)):"},{"line_number":1747,"context_line":"                LOG.warning(_LW(\u0027LUN corresponding to %s is still \u0027"},{"line_number":1748,"context_line":"                                \u0027in some Storage Groups.\u0027"},{"line_number":1749,"context_line":"                                \u0027Try to bring the LUN out of Storage Groups \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_b8012007","line":1746,"in_reply_to":"da86d52c_bcf03dff","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":1745,"context_line":"                    (\u0027contained in a Storage Group\u0027 in orig_out or"},{"line_number":1746,"context_line":"                     \u0027Host LUN/LUN mapping still exists\u0027 in orig_out)):"},{"line_number":1747,"context_line":"                LOG.warning(_LW(\u0027LUN corresponding to %s is still \u0027"},{"line_number":1748,"context_line":"                                \u0027in some Storage Groups.\u0027"},{"line_number":1749,"context_line":"                                \u0027Try to bring the LUN out of Storage Groups \u0027"},{"line_number":1750,"context_line":"                                \u0027and retry the deletion.\u0027),"},{"line_number":1751,"context_line":"                            volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_3cdc4d73","line":1748,"updated":"2015-02-03 22:13:22.000000000","message":"Add space after period.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":1745,"context_line":"                    (\u0027contained in a Storage Group\u0027 in orig_out or"},{"line_number":1746,"context_line":"                     \u0027Host LUN/LUN mapping still exists\u0027 in orig_out)):"},{"line_number":1747,"context_line":"                LOG.warning(_LW(\u0027LUN corresponding to %s is still \u0027"},{"line_number":1748,"context_line":"                                \u0027in some Storage Groups.\u0027"},{"line_number":1749,"context_line":"                                \u0027Try to bring the LUN out of Storage Groups \u0027"},{"line_number":1750,"context_line":"                                \u0027and retry the deletion.\u0027),"},{"line_number":1751,"context_line":"                            volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_a501f907","line":1748,"in_reply_to":"da86d52c_3cdc4d73","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2027,"context_line":""},{"line_number":2028,"context_line":"        1. Create a snap mount point (SMP) for the snapshot."},{"line_number":2029,"context_line":"        2. Attach the snapshot to the SMP created in the first step."},{"line_number":2030,"context_line":"        3. Create a temporary lun prepare for migration"},{"line_number":2031,"context_line":"        4. Start a migration between the SMP and the temp lun."},{"line_number":2032,"context_line":"        \"\"\""},{"line_number":2033,"context_line":"        self._volume_creation_check(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_bcd75d4a","line":2030,"updated":"2015-02-03 22:13:22.000000000","message":"Period at the end.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2027,"context_line":""},{"line_number":2028,"context_line":"        1. Create a snap mount point (SMP) for the snapshot."},{"line_number":2029,"context_line":"        2. Attach the snapshot to the SMP created in the first step."},{"line_number":2030,"context_line":"        3. Create a temporary lun prepare for migration"},{"line_number":2031,"context_line":"        4. Start a migration between the SMP and the temp lun."},{"line_number":2032,"context_line":"        \"\"\""},{"line_number":2033,"context_line":"        self._volume_creation_check(volume)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_650b812a","line":2030,"in_reply_to":"da86d52c_bcd75d4a","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2227,"context_line":"        except EMCVnxCLICmdError as ex:"},{"line_number":2228,"context_line":"            orig_out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":2229,"context_line":"            if orig_out.find("},{"line_number":2230,"context_line":"                    \"Storage Group name already in use\") \u003d\u003d -1:"},{"line_number":2231,"context_line":"                raise ex"},{"line_number":2232,"context_line":""},{"line_number":2233,"context_line":"    def assure_host_in_storage_group(self, hostname, storage_group):"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_fccd55b8","line":2230,"updated":"2015-02-03 22:13:22.000000000","message":"Can you put \"Storage Group name already in use\" in a constant?","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2227,"context_line":"        except EMCVnxCLICmdError as ex:"},{"line_number":2228,"context_line":"            orig_out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":2229,"context_line":"            if orig_out.find("},{"line_number":2230,"context_line":"                    \"Storage Group name already in use\") \u003d\u003d -1:"},{"line_number":2231,"context_line":"                raise ex"},{"line_number":2232,"context_line":""},{"line_number":2233,"context_line":"    def assure_host_in_storage_group(self, hostname, storage_group):"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_0511e55c","line":2230,"in_reply_to":"da86d52c_fccd55b8","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2393,"context_line":"    def auto_register_initiator(self, connector, sgdata):"},{"line_number":2394,"context_line":"        \"\"\"Automatically registers available initiators."},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"        Returns True if has registerred initiator otherwise returns False."},{"line_number":2397,"context_line":"        \"\"\""},{"line_number":2398,"context_line":"        initiator_uids \u003d []"},{"line_number":2399,"context_line":"        ip \u003d connector[\u0027ip\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_9c60d9a6","line":2396,"updated":"2015-02-03 22:13:22.000000000","message":"typo: should be \"registered\"","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2393,"context_line":"    def auto_register_initiator(self, connector, sgdata):"},{"line_number":2394,"context_line":"        \"\"\"Automatically registers available initiators."},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"        Returns True if has registerred initiator otherwise returns False."},{"line_number":2397,"context_line":"        \"\"\""},{"line_number":2398,"context_line":"        initiator_uids \u003d []"},{"line_number":2399,"context_line":"        ip \u003d connector[\u0027ip\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_e51f716a","line":2396,"in_reply_to":"da86d52c_9c60d9a6","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2485,"context_line":"                    self.hlu_cache[hostname][lun_id] \u003d hlu"},{"line_number":2486,"context_line":"                    return hlu, sgdata"},{"line_number":2487,"context_line":"                except EMCVnxCLICmdError as ex:"},{"line_number":2488,"context_line":"                    LOG.debug(\"Add HLU to storagegroup failed, retry %s\" %"},{"line_number":2489,"context_line":"                              tried)"},{"line_number":2490,"context_line":"            elif tried \u003d\u003d 1:"},{"line_number":2491,"context_line":"                # The first try didn\u0027t get the in time data,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_dc241162","line":2488,"updated":"2015-02-03 22:13:22.000000000","message":"% -\u003e ,","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2485,"context_line":"                    self.hlu_cache[hostname][lun_id] \u003d hlu"},{"line_number":2486,"context_line":"                    return hlu, sgdata"},{"line_number":2487,"context_line":"                except EMCVnxCLICmdError as ex:"},{"line_number":2488,"context_line":"                    LOG.debug(\"Add HLU to storagegroup failed, retry %s\" %"},{"line_number":2489,"context_line":"                              tried)"},{"line_number":2490,"context_line":"            elif tried \u003d\u003d 1:"},{"line_number":2491,"context_line":"                # The first try didn\u0027t get the in time data,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_c51a6d7c","line":2488,"in_reply_to":"da86d52c_dc241162","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2486,"context_line":"                    return hlu, sgdata"},{"line_number":2487,"context_line":"                except EMCVnxCLICmdError as ex:"},{"line_number":2488,"context_line":"                    LOG.debug(\"Add HLU to storagegroup failed, retry %s\" %"},{"line_number":2489,"context_line":"                              tried)"},{"line_number":2490,"context_line":"            elif tried \u003d\u003d 1:"},{"line_number":2491,"context_line":"                # The first try didn\u0027t get the in time data,"},{"line_number":2492,"context_line":"                # so we need a retry"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_3cf7ed8c","line":2489,"updated":"2015-02-03 22:13:22.000000000","message":"The reason for the failure seems not logged any where.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2486,"context_line":"                    return hlu, sgdata"},{"line_number":2487,"context_line":"                except EMCVnxCLICmdError as ex:"},{"line_number":2488,"context_line":"                    LOG.debug(\"Add HLU to storagegroup failed, retry %s\" %"},{"line_number":2489,"context_line":"                              tried)"},{"line_number":2490,"context_line":"            elif tried \u003d\u003d 1:"},{"line_number":2491,"context_line":"                # The first try didn\u0027t get the in time data,"},{"line_number":2492,"context_line":"                # so we need a retry"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_253fc9d7","line":2489,"in_reply_to":"da86d52c_3cf7ed8c","updated":"2015-02-04 08:49:40.000000000","message":"When debug mode is enabled the CLI output will be in log file as well, which will explain why the failure happens.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2490,"context_line":"            elif tried \u003d\u003d 1:"},{"line_number":2491,"context_line":"                # The first try didn\u0027t get the in time data,"},{"line_number":2492,"context_line":"                # so we need a retry"},{"line_number":2493,"context_line":"                LOG.debug(\"Add HLU to storagegroup failed, retry %s\" %"},{"line_number":2494,"context_line":"                          tried)"},{"line_number":2495,"context_line":"            else:"},{"line_number":2496,"context_line":"                msg \u003d (_(\u0027Reach limitation set by configuration \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_fc29d537","line":2493,"updated":"2015-02-03 22:13:22.000000000","message":"% -\u003e ,","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2490,"context_line":"            elif tried \u003d\u003d 1:"},{"line_number":2491,"context_line":"                # The first try didn\u0027t get the in time data,"},{"line_number":2492,"context_line":"                # so we need a retry"},{"line_number":2493,"context_line":"                LOG.debug(\"Add HLU to storagegroup failed, retry %s\" %"},{"line_number":2494,"context_line":"                          tried)"},{"line_number":2495,"context_line":"            else:"},{"line_number":2496,"context_line":"                msg \u003d (_(\u0027Reach limitation set by configuration \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_25ba696e","line":2493,"in_reply_to":"da86d52c_fc29d537","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2502,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2503,"context_line":""},{"line_number":2504,"context_line":"            # Query storage group with poll for retry"},{"line_number":2505,"context_line":"            # we need a full poll to get the real in time data"},{"line_number":2506,"context_line":"            sgdata \u003d self._client.get_storage_group(hostname, poll\u003dTrue)"},{"line_number":2507,"context_line":"            self.hlu_cache[hostname] \u003d sgdata[\u0027lunmap\u0027]"},{"line_number":2508,"context_line":"            if lun_id in sgdata[\u0027lunmap\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_fce0f5fb","line":2505,"updated":"2015-02-03 22:13:22.000000000","message":"Capital first letter: \"We need ......\"","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2502,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2503,"context_line":""},{"line_number":2504,"context_line":"            # Query storage group with poll for retry"},{"line_number":2505,"context_line":"            # we need a full poll to get the real in time data"},{"line_number":2506,"context_line":"            sgdata \u003d self._client.get_storage_group(hostname, poll\u003dTrue)"},{"line_number":2507,"context_line":"            self.hlu_cache[hostname] \u003d sgdata[\u0027lunmap\u0027]"},{"line_number":2508,"context_line":"            if lun_id in sgdata[\u0027lunmap\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_05b5657d","line":2505,"in_reply_to":"da86d52c_fce0f5fb","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2669,"context_line":"                            hostname, hostname)"},{"line_number":2670,"context_line":"                    except Exception:"},{"line_number":2671,"context_line":"                        LOG.warning(_LW(\"Connect host back to storage group \""},{"line_number":2672,"context_line":"                                        \"failed %s.\"),"},{"line_number":2673,"context_line":"                                    hostname)"},{"line_number":2674,"context_line":"            return conn_info"},{"line_number":2675,"context_line":"        return do_terminate_connection()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_5c4741bc","line":2672,"updated":"2015-02-03 22:13:22.000000000","message":"Can you log both host and storage group name? I know they are the same here, but it is more clear this way.\n\nLOG.warning(_LW(\"Connect host %(host)s back to storage group %(group)s failed.\"","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2669,"context_line":"                            hostname, hostname)"},{"line_number":2670,"context_line":"                    except Exception:"},{"line_number":2671,"context_line":"                        LOG.warning(_LW(\"Connect host back to storage group \""},{"line_number":2672,"context_line":"                                        \"failed %s.\"),"},{"line_number":2673,"context_line":"                                    hostname)"},{"line_number":2674,"context_line":"            return conn_info"},{"line_number":2675,"context_line":"        return do_terminate_connection()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_c5beed64","line":2672,"in_reply_to":"da86d52c_5c4741bc","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2775,"context_line":"        # Some extra capacity will be used by meta data of pool LUNs."},{"line_number":2776,"context_line":"        # Estimate the percentage and report it as reserved_percentage."},{"line_number":2777,"context_line":"        reserved \u003d (((0.02 * pool[\u0027free_capacity_gb\u0027] + 3) /"},{"line_number":2778,"context_line":"                     (1.02 * pool[\u0027total_capacity_gb\u0027])) * 100)"},{"line_number":2779,"context_line":"        self.stats[\u0027reserved_percentage\u0027] \u003d int(math.ceil(min(reserved, 100)))"},{"line_number":2780,"context_line":"        if self.check_max_pool_luns_threshold:"},{"line_number":2781,"context_line":"            pool_feature \u003d self._client.get_pool_feature_properties(poll\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_d3832502","line":2778,"updated":"2015-02-03 22:13:22.000000000","message":"Can you please add some explanation on this formula for maintance purpose?","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2775,"context_line":"        # Some extra capacity will be used by meta data of pool LUNs."},{"line_number":2776,"context_line":"        # Estimate the percentage and report it as reserved_percentage."},{"line_number":2777,"context_line":"        reserved \u003d (((0.02 * pool[\u0027free_capacity_gb\u0027] + 3) /"},{"line_number":2778,"context_line":"                     (1.02 * pool[\u0027total_capacity_gb\u0027])) * 100)"},{"line_number":2779,"context_line":"        self.stats[\u0027reserved_percentage\u0027] \u003d int(math.ceil(min(reserved, 100)))"},{"line_number":2780,"context_line":"        if self.check_max_pool_luns_threshold:"},{"line_number":2781,"context_line":"            pool_feature \u003d self._client.get_pool_feature_properties(poll\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_a58e59ce","line":2778,"in_reply_to":"da86d52c_d3832502","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2807,"context_line":"                existing_ref\u003dref,"},{"line_number":2808,"context_line":"                reason\u003dreason)"},{"line_number":2809,"context_line":""},{"line_number":2810,"context_line":"        # Check for existence of the lun"},{"line_number":2811,"context_line":"        data \u003d self._client.get_lun_by_id("},{"line_number":2812,"context_line":"            ref[\u0027id\u0027],"},{"line_number":2813,"context_line":"            properties\u003dself._client.LUN_WITH_POOL)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_1cddc9e0","line":2810,"updated":"2015-02-03 22:13:22.000000000","message":"Please remove the empty line.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2807,"context_line":"                existing_ref\u003dref,"},{"line_number":2808,"context_line":"                reason\u003dreason)"},{"line_number":2809,"context_line":""},{"line_number":2810,"context_line":"        # Check for existence of the lun"},{"line_number":2811,"context_line":"        data \u003d self._client.get_lun_by_id("},{"line_number":2812,"context_line":"            ref[\u0027id\u0027],"},{"line_number":2813,"context_line":"            properties\u003dself._client.LUN_WITH_POOL)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_859155f3","line":2810,"in_reply_to":"da86d52c_1cddc9e0","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"9d08269857ef5b07608e4a9eddd7008b73c37b35","unresolved":false,"context_lines":[{"line_number":2811,"context_line":"        data \u003d self._client.get_lun_by_id("},{"line_number":2812,"context_line":"            ref[\u0027id\u0027],"},{"line_number":2813,"context_line":"            properties\u003dself._client.LUN_WITH_POOL)"},{"line_number":2814,"context_line":"        if data is None:"},{"line_number":2815,"context_line":"            reason \u003d _(\u0027Find no lun with the specified lun_id.\u0027)"},{"line_number":2816,"context_line":"            raise exception.ManageExistingInvalidReference(existing_ref\u003dref,"},{"line_number":2817,"context_line":"                                                           reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_bcf59d58","line":2814,"updated":"2015-02-03 22:13:22.000000000","message":"Please add lun_id to reason.","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"2e1cf042b4c22bc8bffb36a302df4e1f0227353a","unresolved":false,"context_lines":[{"line_number":2811,"context_line":"        data \u003d self._client.get_lun_by_id("},{"line_number":2812,"context_line":"            ref[\u0027id\u0027],"},{"line_number":2813,"context_line":"            properties\u003dself._client.LUN_WITH_POOL)"},{"line_number":2814,"context_line":"        if data is None:"},{"line_number":2815,"context_line":"            reason \u003d _(\u0027Find no lun with the specified lun_id.\u0027)"},{"line_number":2816,"context_line":"            raise exception.ManageExistingInvalidReference(existing_ref\u003dref,"},{"line_number":2817,"context_line":"                                                           reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_6588e1c5","line":2814,"in_reply_to":"da86d52c_bcf59d58","updated":"2015-02-04 08:49:40.000000000","message":"Done","commit_id":"4e8ff49f44b05c89c943121cfc72f9f3f10d3754"}]}
