)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"352abe89acd466b71cacb475121653f637689570","unresolved":false,"context_lines":[{"line_number":11,"context_line":"in volume metadata that can be used to tell driver to wait for"},{"line_number":12,"context_line":"flashcopy completed or not."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"Implements: blueprint ds8k-async-clone"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I51829e7667d3ac148978e1799cecfea1920f838f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1f1a1f67_e554f823","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":9},"updated":"2017-07-20 13:19:50.000000000","message":"Since docs are now included in the Cinder repo, this patch should now include the necessary updates to the documentation.\n\nIs there really a documentation impact though? I don\u0027t see what would need to be updated with this.","commit_id":"dbd8a9e9da48f6d5900ceed309144cc6673fc5fa"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"e34c9e1b6d6abdf3a8f5ace22443cd450fb033ee","unresolved":false,"context_lines":[{"line_number":11,"context_line":"in volume metadata that can be used to tell driver to wait for"},{"line_number":12,"context_line":"flashcopy completed or not."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"Implements: blueprint ds8k-async-clone"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I51829e7667d3ac148978e1799cecfea1920f838f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1f1a1f67_b66bbdef","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":9},"in_reply_to":"1f1a1f67_e554f823","updated":"2017-07-21 03:11:20.000000000","message":"Thanks Seam for your review, I have fixed it in the new path set.","commit_id":"dbd8a9e9da48f6d5900ceed309144cc6673fc5fa"}],"cinder/tests/unit/volume/drivers/ibm/test_ds8k_proxy.py":[{"author":{"_account_id":22255,"name":"Tuan","email":"tuanla@vn.fujitsu.com","username":"Tuan"},"change_message_id":"1abd57c083eff68d5df15a695541f3065677e8e3","unresolved":false,"context_lines":[{"line_number":1884,"context_line":"                                      provider_location\u003dlocation)"},{"line_number":1885,"context_line":"        location \u003d six.text_type({\u0027vol_hex_id\u0027: TEST_VOLUME_ID_2})"},{"line_number":1886,"context_line":"        metadata \u003d [{\u0027key\u0027: \u0027flashcopy\u0027, \u0027value\u0027: \u0027started\u0027}]"},{"line_number":1887,"context_line":"        self._create_volume(volume_type_id\u003dvol_type.id,"},{"line_number":1888,"context_line":"                          source_volid\u003dsrc_vol.id,"},{"line_number":1889,"context_line":"                          provider_location\u003dlocation,"},{"line_number":1890,"context_line":"                          volume_metadata\u003dmetadata)"},{"line_number":1891,"context_line":"        self.mock_object(eventlet, \u0027spawn\u0027)"},{"line_number":1892,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":1893,"context_line":"                                    self.exception, self)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_a9124557","line":1890,"range":{"start_line":1887,"start_character":8,"end_line":1890,"end_character":51},"updated":"2017-06-12 09:16:57.000000000","message":"s         self._create_volume(volume_type_id\u003dvol_type.id,\n                              source_volid\u003dsrc_vol.id,\n                              provider_location\u003dlocation,\n                              volume_metadata\u003dmetadata)","commit_id":"73f7c19a9d0f15d98b048af8c5bd937b0ae27557"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7f00d83e7f65df11d76019f5392c55f25b9237a8","unresolved":false,"context_lines":[{"line_number":1884,"context_line":"                                      provider_location\u003dlocation)"},{"line_number":1885,"context_line":"        location \u003d six.text_type({\u0027vol_hex_id\u0027: TEST_VOLUME_ID_2})"},{"line_number":1886,"context_line":"        metadata \u003d [{\u0027key\u0027: \u0027flashcopy\u0027, \u0027value\u0027: \u0027started\u0027}]"},{"line_number":1887,"context_line":"        self._create_volume(volume_type_id\u003dvol_type.id,"},{"line_number":1888,"context_line":"                          source_volid\u003dsrc_vol.id,"},{"line_number":1889,"context_line":"                          provider_location\u003dlocation,"},{"line_number":1890,"context_line":"                          volume_metadata\u003dmetadata)"},{"line_number":1891,"context_line":"        self.mock_object(eventlet, \u0027spawn\u0027)"},{"line_number":1892,"context_line":"        self.driver \u003d FakeDS8KProxy(self.storage_info, self.logger,"},{"line_number":1893,"context_line":"                                    self.exception, self)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_f4dc9447","line":1890,"range":{"start_line":1887,"start_character":8,"end_line":1890,"end_character":51},"in_reply_to":"7f231b9d_a9124557","updated":"2017-06-12 09:34:03.000000000","message":"thanks Tuan, I fix it in the new patch.","commit_id":"73f7c19a9d0f15d98b048af8c5bd937b0ae27557"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_helper.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"76f2f9457d819785211e175f00bdf9beff97e068","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                            tgt_lun.status \u003d \u0027error\u0027"},{"line_number":502,"context_line":"                    except restclient.APIException:"},{"line_number":503,"context_line":"                        LOG.error(\u0027Can not get flashcopy relationship \u0027"},{"line_number":504,"context_line":"                                  \u0027%s\u0027, \u0027%s:%s\u0027 % (src_lun.ds_id,"},{"line_number":505,"context_line":"                                                   tgt_lun.ds_id))"},{"line_number":506,"context_line":"                        tgt_lun.status \u003d \u0027error\u0027"},{"line_number":507,"context_line":"            if not [lun for lun in tgt_luns if lun.status \u003d\u003d \u0027checking\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf3e73b7_13a9677a","line":504,"range":{"start_line":504,"start_character":35,"end_line":504,"end_character":49},"updated":"2017-08-07 16:52:15.000000000","message":"This should be updated to just format into the log string rather than formatting a string to be formatted into the log string.","commit_id":"bb5c37098ffc6e080e6869b130d18ff5dfe669f1"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"0e9a33d1a559e310b7b65ebf89c7fe39035e8928","unresolved":false,"context_lines":[{"line_number":501,"context_line":"                            tgt_lun.status \u003d \u0027error\u0027"},{"line_number":502,"context_line":"                    except restclient.APIException:"},{"line_number":503,"context_line":"                        LOG.error(\u0027Can not get flashcopy relationship \u0027"},{"line_number":504,"context_line":"                                  \u0027%s\u0027, \u0027%s:%s\u0027 % (src_lun.ds_id,"},{"line_number":505,"context_line":"                                                   tgt_lun.ds_id))"},{"line_number":506,"context_line":"                        tgt_lun.status \u003d \u0027error\u0027"},{"line_number":507,"context_line":"            if not [lun for lun in tgt_luns if lun.status \u003d\u003d \u0027checking\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f436f4f_15ba94dd","line":504,"range":{"start_line":504,"start_character":35,"end_line":504,"end_character":49},"in_reply_to":"bf3e73b7_13a9677a","updated":"2017-08-08 02:35:15.000000000","message":"Thanks Sean for your suggestion, it is addressed in the new patch.","commit_id":"bb5c37098ffc6e080e6869b130d18ff5dfe669f1"}],"cinder/volume/drivers/ibm/ibm_storage/ds8k_proxy.py":[{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"9ac2e5060f99fe75748381a99dc20dae40b5fe44","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                gt.link(self._update_target_lun, src_lun, tgt_lun)"},{"line_number":610,"context_line":"            finished \u003d True"},{"line_number":611,"context_line":"        finally:"},{"line_number":612,"context_line":"            if not finished:"},{"line_number":613,"context_line":"                self._helper.delete_lun(tgt_lun)"},{"line_number":614,"context_line":"        return tgt_lun"},{"line_number":615,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_8a93f7a3","line":612,"range":{"start_line":612,"start_character":12,"end_line":612,"end_character":28},"updated":"2017-05-26 14:45:53.000000000","message":"why you need this?\nfinally will be executed only if no exception was raised.\nThis means that you always get to finally with finished\u003dFalse","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f6a42512bb340bdeab1fb4a2c4aa5bcac7513da6","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                gt.link(self._update_target_lun, src_lun, tgt_lun)"},{"line_number":610,"context_line":"            finished \u003d True"},{"line_number":611,"context_line":"        finally:"},{"line_number":612,"context_line":"            if not finished:"},{"line_number":613,"context_line":"                self._helper.delete_lun(tgt_lun)"},{"line_number":614,"context_line":"        return tgt_lun"},{"line_number":615,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_d014e2a2","line":612,"range":{"start_line":612,"start_character":12,"end_line":612,"end_character":28},"in_reply_to":"ff0f0b1f_8a93f7a3","updated":"2017-05-31 05:00:58.000000000","message":"\"finally\" always be executed no matter exception happens or not.","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"9ac2e5060f99fe75748381a99dc20dae40b5fe44","unresolved":false,"context_lines":[{"line_number":618,"context_line":"            return self._helper.wait_flashcopy_finished("},{"line_number":619,"context_line":"                [src_lun], [tgt_lun])"},{"line_number":620,"context_line":"        except restclient.APIException as e:"},{"line_number":621,"context_line":"            LOG.error(\u0027FlashCopy fails: exception %s\u0027, e)"},{"line_number":622,"context_line":"            return False"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _update_target_lun(self, gt, src_lun, tgt_lun):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_9f021b3e","line":621,"range":{"start_line":621,"start_character":33,"end_line":621,"end_character":38},"updated":"2017-05-26 14:45:53.000000000","message":"failed","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f6a42512bb340bdeab1fb4a2c4aa5bcac7513da6","unresolved":false,"context_lines":[{"line_number":618,"context_line":"            return self._helper.wait_flashcopy_finished("},{"line_number":619,"context_line":"                [src_lun], [tgt_lun])"},{"line_number":620,"context_line":"        except restclient.APIException as e:"},{"line_number":621,"context_line":"            LOG.error(\u0027FlashCopy fails: exception %s\u0027, e)"},{"line_number":622,"context_line":"            return False"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _update_target_lun(self, gt, src_lun, tgt_lun):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_f01c86c2","line":621,"range":{"start_line":621,"start_character":33,"end_line":621,"end_character":38},"in_reply_to":"ff0f0b1f_9f021b3e","updated":"2017-05-31 05:00:58.000000000","message":"fails should be fine, thanks.","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"9ac2e5060f99fe75748381a99dc20dae40b5fe44","unresolved":false,"context_lines":[{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _update_target_lun(self, gt, src_lun, tgt_lun):"},{"line_number":625,"context_line":"        result \u003d gt.wait()"},{"line_number":626,"context_line":"        LOG.info(\"FlashCopy is finished on target voulume %(id)s \""},{"line_number":627,"context_line":"                 \"with result %(result)s.\","},{"line_number":628,"context_line":"                 {\u0027id\u0027: tgt_lun.ds_id, \u0027result\u0027: result})"},{"line_number":629,"context_line":"        if not result:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_df5ad381","line":626,"range":{"start_line":626,"start_character":18,"end_line":626,"end_character":64},"updated":"2017-05-26 14:45:53.000000000","message":"Remove \"is\" and fix typo in volume","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f6a42512bb340bdeab1fb4a2c4aa5bcac7513da6","unresolved":false,"context_lines":[{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _update_target_lun(self, gt, src_lun, tgt_lun):"},{"line_number":625,"context_line":"        result \u003d gt.wait()"},{"line_number":626,"context_line":"        LOG.info(\"FlashCopy is finished on target voulume %(id)s \""},{"line_number":627,"context_line":"                 \"with result %(result)s.\","},{"line_number":628,"context_line":"                 {\u0027id\u0027: tgt_lun.ds_id, \u0027result\u0027: result})"},{"line_number":629,"context_line":"        if not result:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_701196ac","line":626,"range":{"start_line":626,"start_character":18,"end_line":626,"end_character":64},"in_reply_to":"ff0f0b1f_df5ad381","updated":"2017-05-31 05:00:58.000000000","message":"thanks. i will fix it.","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"9ac2e5060f99fe75748381a99dc20dae40b5fe44","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            tgt_lun.volume.metadata[\u0027flashcopy\u0027] \u003d \"error\""},{"line_number":631,"context_line":"            tgt_lun.volume.metadata[\u0027error_msg\u0027] \u003d ("},{"line_number":632,"context_line":"                \"FlashCopy from source volume %(src)s to target volume \""},{"line_number":633,"context_line":"                \"%(tgt)s fails, the state of target volume is set to \""},{"line_number":634,"context_line":"                \"error.\" % {\u0027src\u0027: src_lun.ds_id, \u0027tgt\u0027: tgt_lun.ds_id})"},{"line_number":635,"context_line":"            tgt_lun.volume.status \u003d \u0027error\u0027"},{"line_number":636,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_dfcf7327","line":633,"range":{"start_line":633,"start_character":25,"end_line":633,"end_character":30},"updated":"2017-05-26 14:45:53.000000000","message":"failed","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"9ac2e5060f99fe75748381a99dc20dae40b5fe44","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            tgt_lun.volume.metadata[\u0027flashcopy\u0027] \u003d \"error\""},{"line_number":631,"context_line":"            tgt_lun.volume.metadata[\u0027error_msg\u0027] \u003d ("},{"line_number":632,"context_line":"                \"FlashCopy from source volume %(src)s to target volume \""},{"line_number":633,"context_line":"                \"%(tgt)s fails, the state of target volume is set to \""},{"line_number":634,"context_line":"                \"error.\" % {\u0027src\u0027: src_lun.ds_id, \u0027tgt\u0027: tgt_lun.ds_id})"},{"line_number":635,"context_line":"            tgt_lun.volume.status \u003d \u0027error\u0027"},{"line_number":636,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_1fef2b88","line":633,"range":{"start_line":633,"start_character":62,"end_line":633,"end_character":68},"updated":"2017-05-26 14:45:53.000000000","message":"remove \"set to\"","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f6a42512bb340bdeab1fb4a2c4aa5bcac7513da6","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            tgt_lun.volume.metadata[\u0027flashcopy\u0027] \u003d \"error\""},{"line_number":631,"context_line":"            tgt_lun.volume.metadata[\u0027error_msg\u0027] \u003d ("},{"line_number":632,"context_line":"                \"FlashCopy from source volume %(src)s to target volume \""},{"line_number":633,"context_line":"                \"%(tgt)s fails, the state of target volume is set to \""},{"line_number":634,"context_line":"                \"error.\" % {\u0027src\u0027: src_lun.ds_id, \u0027tgt\u0027: tgt_lun.ds_id})"},{"line_number":635,"context_line":"            tgt_lun.volume.status \u003d \u0027error\u0027"},{"line_number":636,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_f04a46aa","line":633,"range":{"start_line":633,"start_character":62,"end_line":633,"end_character":68},"in_reply_to":"ff0f0b1f_1fef2b88","updated":"2017-05-31 05:00:58.000000000","message":"here it means the state of volume in cinder should be set to error, the state of the volume in ds8k may be not error, it may be something like \u0027invaild\u0027 or \u0027valid_requirement\u0027 and so on. so \u0027set to\u0027 should not be removed here.","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f6a42512bb340bdeab1fb4a2c4aa5bcac7513da6","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            tgt_lun.volume.metadata[\u0027flashcopy\u0027] \u003d \"error\""},{"line_number":631,"context_line":"            tgt_lun.volume.metadata[\u0027error_msg\u0027] \u003d ("},{"line_number":632,"context_line":"                \"FlashCopy from source volume %(src)s to target volume \""},{"line_number":633,"context_line":"                \"%(tgt)s fails, the state of target volume is set to \""},{"line_number":634,"context_line":"                \"error.\" % {\u0027src\u0027: src_lun.ds_id, \u0027tgt\u0027: tgt_lun.ds_id})"},{"line_number":635,"context_line":"            tgt_lun.volume.status \u003d \u0027error\u0027"},{"line_number":636,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_d0c74212","line":633,"range":{"start_line":633,"start_character":25,"end_line":633,"end_character":30},"in_reply_to":"ff0f0b1f_dfcf7327","updated":"2017-05-31 05:00:58.000000000","message":"fails should be fine. thanks.","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":13047,"name":"Isaac Beckman","email":"beckmani@gmail.com","username":"isaacb"},"change_message_id":"9ac2e5060f99fe75748381a99dc20dae40b5fe44","unresolved":false,"context_lines":[{"line_number":633,"context_line":"                \"%(tgt)s fails, the state of target volume is set to \""},{"line_number":634,"context_line":"                \"error.\" % {\u0027src\u0027: src_lun.ds_id, \u0027tgt\u0027: tgt_lun.ds_id})"},{"line_number":635,"context_line":"            tgt_lun.volume.status \u003d \u0027error\u0027"},{"line_number":636,"context_line":"        else:"},{"line_number":637,"context_line":"            tgt_lun.volume.metadata[\u0027flashcopy\u0027] \u003d \u0027success\u0027"},{"line_number":638,"context_line":"        tgt_lun.volume.save()"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"    def _ensure_vol_not_fc_target(self, vol_hex_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_5f580355","line":637,"range":{"start_line":636,"start_character":0,"end_line":637,"end_character":60},"updated":"2017-05-26 14:45:53.000000000","message":"The \"else\" here is not needed.\nSimply initialize it to \u0027success\u0027 at the beginning and change the value to error, if needed","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"f6a42512bb340bdeab1fb4a2c4aa5bcac7513da6","unresolved":false,"context_lines":[{"line_number":633,"context_line":"                \"%(tgt)s fails, the state of target volume is set to \""},{"line_number":634,"context_line":"                \"error.\" % {\u0027src\u0027: src_lun.ds_id, \u0027tgt\u0027: tgt_lun.ds_id})"},{"line_number":635,"context_line":"            tgt_lun.volume.status \u003d \u0027error\u0027"},{"line_number":636,"context_line":"        else:"},{"line_number":637,"context_line":"            tgt_lun.volume.metadata[\u0027flashcopy\u0027] \u003d \u0027success\u0027"},{"line_number":638,"context_line":"        tgt_lun.volume.save()"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"    def _ensure_vol_not_fc_target(self, vol_hex_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df140735_f0dfe6d3","line":637,"range":{"start_line":636,"start_character":0,"end_line":637,"end_character":60},"in_reply_to":"ff0f0b1f_5f580355","updated":"2017-05-31 05:00:58.000000000","message":":-), this is personal taste, right?","commit_id":"25cb48c43a0dbda4f01065d98fe3128693bc74a9"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"768316d3a0bb4edd47839de3301713a9dc4f2072","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                LOG.info(\"Clone volume %(tgt)s from volume %(src)s \""},{"line_number":605,"context_line":"                         \"in the background.\","},{"line_number":606,"context_line":"                         {\u0027src\u0027: src_lun.ds_id, \u0027tgt\u0027: tgt_lun.ds_id})"},{"line_number":607,"context_line":"                tgt_lun.metadata[\u0027flashcopy\u0027] \u003d \"started\""},{"line_number":608,"context_line":"                gt \u003d eventlet.spawn(self._wait_flashcopy, src_lun, tgt_lun)"},{"line_number":609,"context_line":"                gt.link(self._update_target_lun, src_lun, tgt_lun)"},{"line_number":610,"context_line":"            finished \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_def6f163","line":607,"updated":"2017-06-01 22:20:40.000000000","message":"Do we need to start a new thread if cinder is restarted to complete waiting for the flashcopy to complete?","commit_id":"d0bfb601950e488e65d06fea1f15c703fcf0238f"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"6de97be9e56805bde299a54c789753348c2908f0","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                LOG.info(\"Clone volume %(tgt)s from volume %(src)s \""},{"line_number":605,"context_line":"                         \"in the background.\","},{"line_number":606,"context_line":"                         {\u0027src\u0027: src_lun.ds_id, \u0027tgt\u0027: tgt_lun.ds_id})"},{"line_number":607,"context_line":"                tgt_lun.metadata[\u0027flashcopy\u0027] \u003d \"started\""},{"line_number":608,"context_line":"                gt \u003d eventlet.spawn(self._wait_flashcopy, src_lun, tgt_lun)"},{"line_number":609,"context_line":"                gt.link(self._update_target_lun, src_lun, tgt_lun)"},{"line_number":610,"context_line":"            finished \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_a6756f66","line":607,"in_reply_to":"df140735_def6f163","updated":"2017-06-02 01:53:06.000000000","message":"oh, thank you very much for your reminder.","commit_id":"d0bfb601950e488e65d06fea1f15c703fcf0238f"},{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"768316d3a0bb4edd47839de3301713a9dc4f2072","unresolved":false,"context_lines":[{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _update_target_lun(self, gt, src_lun, tgt_lun):"},{"line_number":625,"context_line":"        result \u003d gt.wait()"},{"line_number":626,"context_line":"        LOG.info(\"FlashCopy finished on target volume %(id)s \""},{"line_number":627,"context_line":"                 \"with result %(result)s.\","},{"line_number":628,"context_line":"                 {\u0027id\u0027: tgt_lun.ds_id, \u0027result\u0027: result})"},{"line_number":629,"context_line":"        if not result:"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_beb57d80","line":626,"updated":"2017-06-01 22:20:40.000000000","message":"I think it would be a good id to include the volume_id along with the ds_id so we know the relationship from the logs.","commit_id":"d0bfb601950e488e65d06fea1f15c703fcf0238f"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"6de97be9e56805bde299a54c789753348c2908f0","unresolved":false,"context_lines":[{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def _update_target_lun(self, gt, src_lun, tgt_lun):"},{"line_number":625,"context_line":"        result \u003d gt.wait()"},{"line_number":626,"context_line":"        LOG.info(\"FlashCopy finished on target volume %(id)s \""},{"line_number":627,"context_line":"                 \"with result %(result)s.\","},{"line_number":628,"context_line":"                 {\u0027id\u0027: tgt_lun.ds_id, \u0027result\u0027: result})"},{"line_number":629,"context_line":"        if not result:"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_86726b7a","line":626,"in_reply_to":"df140735_beb57d80","updated":"2017-06-02 01:53:06.000000000","message":"thanks, I will change it in next patch.","commit_id":"d0bfb601950e488e65d06fea1f15c703fcf0238f"},{"author":{"_account_id":22255,"name":"Tuan","email":"tuanla@vn.fujitsu.com","username":"Tuan"},"change_message_id":"1abd57c083eff68d5df15a695541f3065677e8e3","unresolved":false,"context_lines":[{"line_number":64,"context_line":"from oslo_config import cfg"},{"line_number":65,"context_line":"from oslo_log import log as logging"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"import eventlet"},{"line_number":68,"context_line":"from cinder import context"},{"line_number":69,"context_line":"from cinder import coordination"},{"line_number":70,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_297635a6","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":15},"updated":"2017-06-12 09:16:57.000000000","message":"H306  imports not in alphabetical order (eventlet, cinder.context). Please read https://docs.openstack.org/developer/hacking/ for more detail","commit_id":"73f7c19a9d0f15d98b048af8c5bd937b0ae27557"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"7f00d83e7f65df11d76019f5392c55f25b9237a8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"from oslo_config import cfg"},{"line_number":65,"context_line":"from oslo_log import log as logging"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"import eventlet"},{"line_number":68,"context_line":"from cinder import context"},{"line_number":69,"context_line":"from cinder import coordination"},{"line_number":70,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_b4cf3c7e","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":15},"in_reply_to":"7f231b9d_297635a6","updated":"2017-06-12 09:34:03.000000000","message":"Thanks Tuan, I fix it in the new patch.","commit_id":"73f7c19a9d0f15d98b048af8c5bd937b0ae27557"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"76f2f9457d819785211e175f00bdf9beff97e068","unresolved":false,"context_lines":[{"line_number":750,"context_line":"            else:"},{"line_number":751,"context_line":"                self._helper.delete_lun(tgt_lun)"},{"line_number":752,"context_line":"                raise exception.VolumeDriverException("},{"line_number":753,"context_line":"                    message\u003d_(\"Volume %(id) is in unexcepted state \""},{"line_number":754,"context_line":"                              \"%(state)s.\") % {\u0027id\u0027: tgt_lun.ds_id,"},{"line_number":755,"context_line":"                                               \u0027state\u0027: tgt_lun.status})"},{"line_number":756,"context_line":"            tgt_lun.volume.save()"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf3e73b7_13d727f0","line":753,"range":{"start_line":753,"start_character":50,"end_line":753,"end_character":60},"updated":"2017-08-07 16:52:15.000000000","message":"unexpected","commit_id":"bb5c37098ffc6e080e6869b130d18ff5dfe669f1"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"0e9a33d1a559e310b7b65ebf89c7fe39035e8928","unresolved":false,"context_lines":[{"line_number":750,"context_line":"            else:"},{"line_number":751,"context_line":"                self._helper.delete_lun(tgt_lun)"},{"line_number":752,"context_line":"                raise exception.VolumeDriverException("},{"line_number":753,"context_line":"                    message\u003d_(\"Volume %(id) is in unexcepted state \""},{"line_number":754,"context_line":"                              \"%(state)s.\") % {\u0027id\u0027: tgt_lun.ds_id,"},{"line_number":755,"context_line":"                                               \u0027state\u0027: tgt_lun.status})"},{"line_number":756,"context_line":"            tgt_lun.volume.save()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f436f4f_f5cef081","line":753,"range":{"start_line":753,"start_character":50,"end_line":753,"end_character":60},"in_reply_to":"bf3e73b7_13d727f0","updated":"2017-08-08 02:35:15.000000000","message":"Thanks Sean for your catch, it is addressed in the new patch.","commit_id":"bb5c37098ffc6e080e6869b130d18ff5dfe669f1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"971ff96905c2cc34b5fcd0bfd5f69fbbbcca01b7","unresolved":false,"context_lines":[{"line_number":750,"context_line":"            else:"},{"line_number":751,"context_line":"                self._helper.delete_lun(tgt_lun)"},{"line_number":752,"context_line":"                raise exception.VolumeDriverException("},{"line_number":753,"context_line":"                    message\u003d_(\"Volume %(id) is in unexpected state \""},{"line_number":754,"context_line":"                              \"%(state)s.\") % {\u0027id\u0027: tgt_lun.ds_id,"},{"line_number":755,"context_line":"                                               \u0027state\u0027: tgt_lun.status})"},{"line_number":756,"context_line":"            tgt_lun.volume.save()"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f436f4f_41cbb452","line":753,"range":{"start_line":753,"start_character":38,"end_line":753,"end_character":43},"updated":"2017-08-08 13:20:47.000000000","message":"Missing \"s\".  Should be %(id)s","commit_id":"97f3380d99cc4f26a73d17e4e689a9ff2ef6960a"},{"author":{"_account_id":17564,"name":"jiamin","email":"shljia@cn.ibm.com","username":"jiamin"},"change_message_id":"a77460192cb9f16162546736260f5496e3dfbfe3","unresolved":false,"context_lines":[{"line_number":750,"context_line":"            else:"},{"line_number":751,"context_line":"                self._helper.delete_lun(tgt_lun)"},{"line_number":752,"context_line":"                raise exception.VolumeDriverException("},{"line_number":753,"context_line":"                    message\u003d_(\"Volume %(id) is in unexpected state \""},{"line_number":754,"context_line":"                              \"%(state)s.\") % {\u0027id\u0027: tgt_lun.ds_id,"},{"line_number":755,"context_line":"                                               \u0027state\u0027: tgt_lun.status})"},{"line_number":756,"context_line":"            tgt_lun.volume.save()"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f436f4f_510250b6","line":753,"range":{"start_line":753,"start_character":38,"end_line":753,"end_character":43},"in_reply_to":"9f436f4f_41cbb452","updated":"2017-08-09 01:23:10.000000000","message":"thanks xyang for your catch, it is addressed in the new patch.","commit_id":"97f3380d99cc4f26a73d17e4e689a9ff2ef6960a"}]}
