)]}'
{"cinder/volume/drivers/dell_emc/vmax/common.py":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe7f1ddd0de2b903efd57c7d53337a3825e71c24","unresolved":false,"context_lines":[{"line_number":4083,"context_line":"        return kwargs"},{"line_number":4084,"context_line":""},{"line_number":4085,"context_line":"    def revert_to_snapshot(self, volume, snapshot):"},{"line_number":4086,"context_line":"        \"\"\"Revert to volume snapshot"},{"line_number":4087,"context_line":""},{"line_number":4088,"context_line":"        :param volume: the volume object"},{"line_number":4089,"context_line":"        :param snapshot: the snapshot object"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_a8e3bcd8","line":4086,"range":{"start_line":4086,"start_character":5,"end_line":4086,"end_character":36},"updated":"2017-11-17 08:31:14.000000000","message":"Change to: Revert volume to snapshot","commit_id":"440121e74e3a6fdcfbdb819e74c27b661bd7aa3f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe7f1ddd0de2b903efd57c7d53337a3825e71c24","unresolved":false,"context_lines":[{"line_number":4097,"context_line":"                \"Failed to revert the volume to the snapshot\"))"},{"line_number":4098,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":4099,"context_line":"                data\u003dexception_message)"},{"line_number":4100,"context_line":"        else:"},{"line_number":4101,"context_line":"            self._sync_check(extra_specs[utils.ARRAY],"},{"line_number":4102,"context_line":"                             sourcedevice_id, volume.name, extra_specs)"},{"line_number":4103,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_283d8c2a","line":4100,"range":{"start_line":4100,"start_character":0,"end_line":4100,"end_character":13},"updated":"2017-11-17 08:31:14.000000000","message":"else is unnecessary here.","commit_id":"440121e74e3a6fdcfbdb819e74c27b661bd7aa3f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0ca63c942b67500634707cd972a0b08036e0d725","unresolved":false,"context_lines":[{"line_number":4094,"context_line":"            LOG.error(\"No snapshot found on the array\")"},{"line_number":4095,"context_line":"            exception_message \u003d (_("},{"line_number":4096,"context_line":"                \"Failed to revert the volume to the snapshot\"))"},{"line_number":4097,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":4098,"context_line":"                data\u003dexception_message)"},{"line_number":4099,"context_line":"        self._sync_check(array, sourcedevice_id, volume.name, extra_specs)"},{"line_number":4100,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_9994c138","line":4097,"updated":"2017-12-12 09:31:51.000000000","message":"It should be a VolumeDriverException","commit_id":"764b42c41045c99c83b158fb14f1e77c323c370c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"36232e8d7a7ca05c32991bf6660664111c4eb76b","unresolved":false,"context_lines":[{"line_number":4094,"context_line":"            LOG.error(\"No snapshot found on the array\")"},{"line_number":4095,"context_line":"            exception_message \u003d (_("},{"line_number":4096,"context_line":"                \"Failed to revert the volume to the snapshot\"))"},{"line_number":4097,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":4098,"context_line":"                data\u003dexception_message)"},{"line_number":4099,"context_line":"        self._sync_check(array, sourcedevice_id, volume.name, extra_specs)"},{"line_number":4100,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_8268c6f4","line":4097,"in_reply_to":"df87a7cf_9994c138","updated":"2017-12-12 12:20:02.000000000","message":"Thanks Ivan, I will change this.","commit_id":"764b42c41045c99c83b158fb14f1e77c323c370c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0ca63c942b67500634707cd972a0b08036e0d725","unresolved":false,"context_lines":[{"line_number":4113,"context_line":"            self.provision.delete_volume_snap("},{"line_number":4114,"context_line":"                array, snap_name, sourcedevice_id, restored\u003dTrue)"},{"line_number":4115,"context_line":"            LOG.debug(\"Restored session was terminated\")"},{"line_number":4116,"context_line":"            LOG.info(\"Reverted the volume to snapshot successfully\")"},{"line_number":4117,"context_line":"        except Exception as e:"},{"line_number":4118,"context_line":"            exception_message \u003d (_("},{"line_number":4119,"context_line":"                \"Failed to revert the volume to the snapshot\""}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_599ab961","line":4116,"updated":"2017-12-12 09:31:51.000000000","message":"It\u0027s a bit confusing if is_restored\u003dFalse","commit_id":"764b42c41045c99c83b158fb14f1e77c323c370c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"36232e8d7a7ca05c32991bf6660664111c4eb76b","unresolved":false,"context_lines":[{"line_number":4113,"context_line":"            self.provision.delete_volume_snap("},{"line_number":4114,"context_line":"                array, snap_name, sourcedevice_id, restored\u003dTrue)"},{"line_number":4115,"context_line":"            LOG.debug(\"Restored session was terminated\")"},{"line_number":4116,"context_line":"            LOG.info(\"Reverted the volume to snapshot successfully\")"},{"line_number":4117,"context_line":"        except Exception as e:"},{"line_number":4118,"context_line":"            exception_message \u003d (_("},{"line_number":4119,"context_line":"                \"Failed to revert the volume to the snapshot\""}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_c279eec4","line":4116,"in_reply_to":"df87a7cf_599ab961","updated":"2017-12-12 12:20:02.000000000","message":"Sure.  We will clarify.","commit_id":"764b42c41045c99c83b158fb14f1e77c323c370c"}],"cinder/volume/drivers/dell_emc/vmax/provision.py":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe7f1ddd0de2b903efd57c7d53337a3825e71c24","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        restored \u003d False"},{"line_number":285,"context_line":"        snap_details \u003d self.rest.get_volume_snap("},{"line_number":286,"context_line":"            array, source_device_id, snap_name)"},{"line_number":287,"context_line":"        if snap_details:"},{"line_number":288,"context_line":"            linked_devices \u003d snap_details.get(\"linkedDevices\", [])"},{"line_number":289,"context_line":"            if linked_devices:"},{"line_number":290,"context_line":"                for linked_device in linked_devices:"},{"line_number":291,"context_line":"                    if \u0027targetDevice\u0027 in linked_device:"},{"line_number":292,"context_line":"                        target_device_id \u003d linked_device[\u0027targetDevice\u0027]"},{"line_number":293,"context_line":"                        if source_device_id \u003d\u003d target_device_id:"},{"line_number":294,"context_line":"                            if \u0027state\u0027 in linked_device:"},{"line_number":295,"context_line":"                                state \u003d linked_device[\u0027state\u0027]"},{"line_number":296,"context_line":"                                if state \u003d\u003d \"Restored\":"},{"line_number":297,"context_line":"                                    restored \u003d True"},{"line_number":298,"context_line":"        return restored"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def delete_temp_volume_snap(self, array, snap_name, source_device_id):"},{"line_number":301,"context_line":"        \"\"\"Delete the temporary snapshot created for clone operations."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_c69ca9c1","line":298,"range":{"start_line":287,"start_character":0,"end_line":298,"end_character":23},"updated":"2017-11-17 08:31:14.000000000","message":"It should be simplified here. For example:\nif \u0027targetDevice\u0027 in linked_device and \u0027state\u0027 in linked_device:\n   if source_device_id \u003d\u003d linked_device[\u0027targetDevice\u0027] and  \"Restored\" \u003d\u003d linked_device[\u0027state\u0027]:\n        restored \u003d True","commit_id":"440121e74e3a6fdcfbdb819e74c27b661bd7aa3f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0ca63c942b67500634707cd972a0b08036e0d725","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        kwargs \u003d {\u0027retries\u0027: 0,"},{"line_number":271,"context_line":"                  \u0027wait_for_restore_called\u0027: False}"},{"line_number":272,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(_wait_for_restore)"},{"line_number":273,"context_line":"        rc \u003d timer.start(interval\u003dint(extra_specs[utils.INTERVAL])).wait()"},{"line_number":274,"context_line":"        return rc"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_f9cdcd65","line":272,"updated":"2017-12-12 09:31:51.000000000","message":"I didn\u0027t find a looping call mock in the unit tests. Do we miss log or this method is not tested?","commit_id":"764b42c41045c99c83b158fb14f1e77c323c370c"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"36232e8d7a7ca05c32991bf6660664111c4eb76b","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        kwargs \u003d {\u0027retries\u0027: 0,"},{"line_number":271,"context_line":"                  \u0027wait_for_restore_called\u0027: False}"},{"line_number":272,"context_line":"        timer \u003d loopingcall.FixedIntervalLoopingCall(_wait_for_restore)"},{"line_number":273,"context_line":"        rc \u003d timer.start(interval\u003dint(extra_specs[utils.INTERVAL])).wait()"},{"line_number":274,"context_line":"        return rc"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_ed142346","line":272,"in_reply_to":"df87a7cf_f9cdcd65","updated":"2017-12-12 12:20:02.000000000","message":"You are correct, we do not have a mock for this call. We will look into this.  Thanks for the feedback.","commit_id":"764b42c41045c99c83b158fb14f1e77c323c370c"}],"releasenotes/notes/vmax-revert-volume-to-snapshot-b4a837d84a8b2a85.yaml":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"fe7f1ddd0de2b903efd57c7d53337a3825e71c24","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support for reverting a volume to a previous snapshot in VMAX cinder"},{"line_number":4,"context_line":"    driver."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"1f485f77_5b5d2b13","line":4,"range":{"start_line":4,"start_character":3,"end_line":4,"end_character":11},"updated":"2017-11-17 08:31:14.000000000","message":"duplicate driver","commit_id":"440121e74e3a6fdcfbdb819e74c27b661bd7aa3f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"3040d72309cdd2194ff9b0a1f67127b23e523db8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support for reverting a volume to a previous snapshot in VMAX cinder"},{"line_number":4,"context_line":"    driver."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"ff82abbf_5dcc97bb","line":4,"range":{"start_line":4,"start_character":3,"end_line":4,"end_character":11},"in_reply_to":"1f485f77_5b5d2b13","updated":"2017-11-22 03:01:36.000000000","message":"Sorry. It\u0027s correct. I am mistaken about it:)","commit_id":"440121e74e3a6fdcfbdb819e74c27b661bd7aa3f"}]}
