)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"436106289d2bec1aad5913fda8a70b1ec885a337","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Add Cinder driver for TOYOU ACS5000"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Supported Protocol"},{"line_number":10,"context_line":" - iSCSI"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"* Supported Feature"},{"line_number":13,"context_line":" - Volume Create/Delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"6c5b6602_249f2ca0","line":10,"updated":"2021-01-06 14:21:36.000000000","message":"There is FC code present here?","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"9e6a71d38fdc47b6bc03ded5d841e4ea284ac14a","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Add Cinder driver for TOYOU ACS5000"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Supported Protocol"},{"line_number":10,"context_line":" - iSCSI"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"* Supported Feature"},{"line_number":13,"context_line":" - Volume Create/Delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"76ecc7c3_d269c474","line":10,"in_reply_to":"6c5b6602_249f2ca0","updated":"2021-01-07 06:14:56.000000000","message":"FC compatibility is still under development. I will don\u0027t submit the file \"cinder/volume/drivers/toyou/acs5000/Acs5000_fc.py\" in next patch.","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"fbdbe8860b8c033273e793e3f266332bb46070a6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add Cinder driver for TOYOU ACS5000"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Supported Protocol"},{"line_number":10,"context_line":" - iSCSI"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"* Supported Feature"},{"line_number":13,"context_line":" - Volume Create/Delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"70afb300_00b5d827","line":10,"in_reply_to":"76ecc7c3_d269c474","updated":"2021-01-19 06:21:58.000000000","message":"Done","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0963145d1e831841cfb32452b516492c550ed01","unresolved":true,"context_lines":[{"line_number":19,"context_line":" - Copy Volume to Image"},{"line_number":20,"context_line":" - Clone Volume"},{"line_number":21,"context_line":" - Extend Volume"},{"line_number":22,"context_line":" - Volume Migration (host assisted)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"ThirdPartySystems: TOYOU ACS5000 CI"},{"line_number":25,"context_line":"Change-Id: Ia7d2056e0a49032654812da74dac514dfac83529"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"879af78e_7bdf66f1","line":22,"range":{"start_line":22,"start_character":21,"end_line":22,"end_character":34},"updated":"2021-01-18 23:55:35.000000000","message":"do you mean \"storage assisted\" here?","commit_id":"725e1118b0fda5baecfd62153dd52c62c53596cd"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":19,"context_line":" - Copy Volume to Image"},{"line_number":20,"context_line":" - Clone Volume"},{"line_number":21,"context_line":" - Extend Volume"},{"line_number":22,"context_line":" - Volume Migration (host assisted)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"ThirdPartySystems: TOYOU ACS5000 CI"},{"line_number":25,"context_line":"Change-Id: Ia7d2056e0a49032654812da74dac514dfac83529"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"270f1b21_dc55ea9c","line":22,"range":{"start_line":22,"start_character":21,"end_line":22,"end_character":34},"in_reply_to":"879af78e_7bdf66f1","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"725e1118b0fda5baecfd62153dd52c62c53596cd"}],"cinder/volume/drivers/toyou/acs5000/Acs5000_common.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"436106289d2bec1aad5913fda8a70b1ec885a337","unresolved":true,"context_lines":[{"line_number":2075,"context_line":"        return ret"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"class NovaClient(nova.API):"},{"line_number":2079,"context_line":""},{"line_number":2080,"context_line":"    def create_server_volume(self, context, server_id, volume_id, device\u003dNone):"},{"line_number":2081,"context_line":"        \"\"\"Call nova client to attach volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"81da2b42_46900ff5","line":2078,"range":{"start_line":2078,"start_character":0,"end_line":2078,"end_character":26},"updated":"2021-01-06 14:21:36.000000000","message":"Your driver should not extend our novaclient -- add the needed functionality to cinder/compute/nova.py.  (I\u0027m not yet sure why this driver needs more Nova functionality.)","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"fbdbe8860b8c033273e793e3f266332bb46070a6","unresolved":false,"context_lines":[{"line_number":2075,"context_line":"        return ret"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"class NovaClient(nova.API):"},{"line_number":2079,"context_line":""},{"line_number":2080,"context_line":"    def create_server_volume(self, context, server_id, volume_id, device\u003dNone):"},{"line_number":2081,"context_line":"        \"\"\"Call nova client to attach volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"7e6cb104_1c230279","line":2078,"range":{"start_line":2078,"start_character":0,"end_line":2078,"end_character":26},"in_reply_to":"1515947f_c55b6a65","updated":"2021-01-19 06:21:58.000000000","message":"Done","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"b82336e30c14fdf221b22fadf96e58aa4c1bd798","unresolved":true,"context_lines":[{"line_number":2075,"context_line":"        return ret"},{"line_number":2076,"context_line":""},{"line_number":2077,"context_line":""},{"line_number":2078,"context_line":"class NovaClient(nova.API):"},{"line_number":2079,"context_line":""},{"line_number":2080,"context_line":"    def create_server_volume(self, context, server_id, volume_id, device\u003dNone):"},{"line_number":2081,"context_line":"        \"\"\"Call nova client to attach volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"1515947f_c55b6a65","line":2078,"range":{"start_line":2078,"start_character":0,"end_line":2078,"end_character":26},"in_reply_to":"81da2b42_46900ff5","updated":"2021-01-07 16:33:10.000000000","message":"We are trying to adapt the replication function extend novaclient. Our storage system needs to  uninstall and mount again when failover, it used novaclient. The first driver version is not ready to adapt replication. We will delete these content in the next patch.","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"}],"cinder/volume/drivers/toyou/acs5000/Acs5000_fc.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"436106289d2bec1aad5913fda8a70b1ec885a337","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"190e0c0d_430605d2","updated":"2021-01-06 14:21:36.000000000","message":"Most driver stick to lowercase file names (acs5000_fc.py instead of Acs5000_fc.py) which make them easier to configure in cinder.conf.  Any particular reason to use \"A\" here?","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"d6034cc14fb31bc3a6e0e5b88e5ac14870996d88","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8a6f93a1_fe9b2a46","in_reply_to":"190e0c0d_430605d2","updated":"2021-01-07 06:24:05.000000000","message":"I\u0027m sorry to use an unproper file naming method. I will change it in next patch.","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"fbdbe8860b8c033273e793e3f266332bb46070a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"99f71efb_741820ad","in_reply_to":"8a6f93a1_fe9b2a46","updated":"2021-01-19 06:21:58.000000000","message":"Done","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"}],"cinder/volume/drivers/toyou/acs5000/Acs5000_iscsi.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"436106289d2bec1aad5913fda8a70b1ec885a337","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    cfg.BoolOpt(\u0027acs5000_iscsi_chap_enabled\u0027,"},{"line_number":28,"context_line":"                default\u003dTrue,"},{"line_number":29,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"},{"line_number":30,"context_line":"                     \u0027(Default: Enabled)\u0027),"},{"line_number":31,"context_line":"]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"5298d010_3facb731","line":30,"updated":"2021-01-06 14:21:36.000000000","message":"Is there a reason to support usage of this driver with CHAP auth disabled?  Why not always have it on?","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"b82336e30c14fdf221b22fadf96e58aa4c1bd798","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    cfg.BoolOpt(\u0027acs5000_iscsi_chap_enabled\u0027,"},{"line_number":28,"context_line":"                default\u003dTrue,"},{"line_number":29,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"},{"line_number":30,"context_line":"                     \u0027(Default: Enabled)\u0027),"},{"line_number":31,"context_line":"]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"75cb0a1d_9cffa145","line":30,"in_reply_to":"5298d010_3facb731","updated":"2021-01-07 16:33:10.000000000","message":"Our storage not support CHAP auth yet. Due to the deadline of the new cinder driver code merging. We plan to support the minimum required features. And we will finish CHAP auth at later development.","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"fbdbe8860b8c033273e793e3f266332bb46070a6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    cfg.BoolOpt(\u0027acs5000_iscsi_chap_enabled\u0027,"},{"line_number":28,"context_line":"                default\u003dTrue,"},{"line_number":29,"context_line":"                help\u003d\u0027Configure CHAP authentication for iSCSI connections \u0027"},{"line_number":30,"context_line":"                     \u0027(Default: Enabled)\u0027),"},{"line_number":31,"context_line":"]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"298697b7_de916130","line":30,"in_reply_to":"75cb0a1d_9cffa145","updated":"2021-01-19 06:21:58.000000000","message":"Done","commit_id":"08918ef6626c623fa8384a0a0fb655a242d6a5fc"}],"cinder/volume/drivers/toyou/acs5000/acs5000_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":324,"context_line":"                          driver.MigrateVD,"},{"line_number":325,"context_line":"                          driver.CloneableImageVD):"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":328,"context_line":"        super(Acs5000CommonDriver, self).__init__(*args, **kwargs)"},{"line_number":329,"context_line":"        self.configuration.append_config_values(acs5000c_opts)"},{"line_number":330,"context_line":"        self._backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bd2e2100_49e28ef7","line":327,"updated":"2021-01-15 21:06:49.000000000","message":"Need to implement static get_driver_options call.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                          driver.MigrateVD,"},{"line_number":325,"context_line":"                          driver.CloneableImageVD):"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":328,"context_line":"        super(Acs5000CommonDriver, self).__init__(*args, **kwargs)"},{"line_number":329,"context_line":"        self.configuration.append_config_values(acs5000c_opts)"},{"line_number":330,"context_line":"        self._backend_name \u003d self.configuration.safe_get(\u0027volume_backend_name\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"2b66c75a_b595b370","line":327,"in_reply_to":"bd2e2100_49e28ef7","updated":"2021-01-19 05:41:39.000000000","message":"We have already implemented this with iscsi driver on patch12.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def do_setup(self, ctxt):"},{"line_number":342,"context_line":"        \"\"\"Check that we have all configuration details from the storage.\"\"\""},{"line_number":343,"context_line":"        LOG.debug(\u0027enter: do_setup\u0027)"},{"line_number":344,"context_line":"        self._validate_pools_exist()"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        self._state.update(self._cmd.get_system())"}],"source_content_type":"text/x-python","patch_set":10,"id":"fbebbcf5_f95f845c","line":343,"updated":"2021-01-15 21:06:49.000000000","message":"Suggestion - These enter/exit debug logs should be removed and the methods decorated with @utils.trace_method instead.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def do_setup(self, ctxt):"},{"line_number":342,"context_line":"        \"\"\"Check that we have all configuration details from the storage.\"\"\""},{"line_number":343,"context_line":"        LOG.debug(\u0027enter: do_setup\u0027)"},{"line_number":344,"context_line":"        self._validate_pools_exist()"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        self._state.update(self._cmd.get_system())"}],"source_content_type":"text/x-python","patch_set":10,"id":"0955ffa6_952774c7","line":343,"in_reply_to":"6ca0baf4_151aabe3","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"df00b438051ed7a55e0b59231ae4924c7269d1f6","unresolved":true,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def do_setup(self, ctxt):"},{"line_number":342,"context_line":"        \"\"\"Check that we have all configuration details from the storage.\"\"\""},{"line_number":343,"context_line":"        LOG.debug(\u0027enter: do_setup\u0027)"},{"line_number":344,"context_line":"        self._validate_pools_exist()"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        self._state.update(self._cmd.get_system())"}],"source_content_type":"text/x-python","patch_set":10,"id":"6ca0baf4_151aabe3","line":343,"in_reply_to":"fbebbcf5_f95f845c","updated":"2021-01-16 03:16:26.000000000","message":"Thanks for your review. I\u0027m sorry to use unproper debug log method. I\u0027m fixing it as well as the followings which don\u0027t meet the requirements.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":388,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":389,"context_line":"        if self.protocol not in self._state[\u0027enabled_protocols\u0027]:"},{"line_number":390,"context_line":"            raise exception.InvalidInput("},{"line_number":391,"context_line":"                reason\u003d(_(\u0027The storage device does not support %(prot)s.\u0027"},{"line_number":392,"context_line":"                          \u0027Please configure the device to support %(prot)s \u0027"},{"line_number":393,"context_line":"                          \u0027or switch to a driver using a different \u0027"},{"line_number":394,"context_line":"                          \u0027protocol.\u0027) % {\u0027prot\u0027: self.protocol}))"}],"source_content_type":"text/x-python","patch_set":10,"id":"0726a688_14c7a48d","line":391,"range":{"start_line":391,"start_character":71,"end_line":391,"end_character":72},"updated":"2021-01-15 20:41:56.000000000","message":"Missing space at EOL.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":388,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":389,"context_line":"        if self.protocol not in self._state[\u0027enabled_protocols\u0027]:"},{"line_number":390,"context_line":"            raise exception.InvalidInput("},{"line_number":391,"context_line":"                reason\u003d(_(\u0027The storage device does not support %(prot)s.\u0027"},{"line_number":392,"context_line":"                          \u0027Please configure the device to support %(prot)s \u0027"},{"line_number":393,"context_line":"                          \u0027or switch to a driver using a different \u0027"},{"line_number":394,"context_line":"                          \u0027protocol.\u0027) % {\u0027prot\u0027: self.protocol}))"}],"source_content_type":"text/x-python","patch_set":10,"id":"488ea0b1_f7ba5224","line":391,"range":{"start_line":391,"start_character":71,"end_line":391,"end_character":72},"in_reply_to":"0726a688_14c7a48d","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":699,"context_line":"                    if vol[\u0027type\u0027] \u003d\u003d \u0027BACKUP\u0027:"},{"line_number":700,"context_line":"                        if vol[\u0027health\u0027] \u003d\u003d \u0027Optimal\u0027 and ("},{"line_number":701,"context_line":"                                vol[\u0027status\u0027] in wait_status):"},{"line_number":702,"context_line":"                            LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":703,"context_line":"                                     \u0027rescan %(scan)s times,clone %(clone)s  \u0027"},{"line_number":704,"context_line":"                                     \u0027need wait,status is %(status)s,\u0027"},{"line_number":705,"context_line":"                                     \u0027health is %(health)s,\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff8eb705_ece046b0","line":702,"range":{"start_line":702,"start_character":66,"end_line":702,"end_character":68},"updated":"2021-01-15 20:41:56.000000000","message":"Should have a space after all of the \u0027:\u0027","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":699,"context_line":"                    if vol[\u0027type\u0027] \u003d\u003d \u0027BACKUP\u0027:"},{"line_number":700,"context_line":"                        if vol[\u0027health\u0027] \u003d\u003d \u0027Optimal\u0027 and ("},{"line_number":701,"context_line":"                                vol[\u0027status\u0027] in wait_status):"},{"line_number":702,"context_line":"                            LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":703,"context_line":"                                     \u0027rescan %(scan)s times,clone %(clone)s  \u0027"},{"line_number":704,"context_line":"                                     \u0027need wait,status is %(status)s,\u0027"},{"line_number":705,"context_line":"                                     \u0027health is %(health)s,\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"404ccd09_aeda9936","line":702,"range":{"start_line":702,"start_character":66,"end_line":702,"end_character":68},"in_reply_to":"ff8eb705_ece046b0","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":712,"context_line":"                                      \u0027health\u0027: vol[\u0027health\u0027],"},{"line_number":713,"context_line":"                                      \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":714,"context_line":"                    elif vol[\u0027status\u0027] \u003d\u003d \u0027Cloning\u0027:"},{"line_number":715,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":716,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":717,"context_line":"                                 \u0027copy process %(process)s%%.\u0027,"},{"line_number":718,"context_line":"                                 {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf237300_445f219d","line":715,"range":{"start_line":715,"start_character":63,"end_line":715,"end_character":64},"updated":"2021-01-15 21:06:49.000000000","message":"Missing trailing space.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":712,"context_line":"                                      \u0027health\u0027: vol[\u0027health\u0027],"},{"line_number":713,"context_line":"                                      \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":714,"context_line":"                    elif vol[\u0027status\u0027] \u003d\u003d \u0027Cloning\u0027:"},{"line_number":715,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":716,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":717,"context_line":"                                 \u0027copy process %(process)s%%.\u0027,"},{"line_number":718,"context_line":"                                 {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"613c1127_d01d8b8c","line":715,"range":{"start_line":715,"start_character":63,"end_line":715,"end_character":64},"in_reply_to":"bf237300_445f219d","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":721,"context_line":"                                  \u0027volume\u0027: vol[\u0027name\u0027],"},{"line_number":722,"context_line":"                                  \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":723,"context_line":"                    elif vol[\u0027status\u0027] \u003d\u003d \u0027Queued\u0027:"},{"line_number":724,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":725,"context_line":"                                 \u0027rescan %(scan)s times,\u0027"},{"line_number":726,"context_line":"                                 \u0027volume %(volume)s is in the queue.\u0027,"},{"line_number":727,"context_line":"                                 {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"96a55190_5893ceb3","line":724,"range":{"start_line":724,"start_character":63,"end_line":724,"end_character":64},"updated":"2021-01-15 21:06:49.000000000","message":"Missing trailing space.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                                  \u0027volume\u0027: vol[\u0027name\u0027],"},{"line_number":722,"context_line":"                                  \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":723,"context_line":"                    elif vol[\u0027status\u0027] \u003d\u003d \u0027Queued\u0027:"},{"line_number":724,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":725,"context_line":"                                 \u0027rescan %(scan)s times,\u0027"},{"line_number":726,"context_line":"                                 \u0027volume %(volume)s is in the queue.\u0027,"},{"line_number":727,"context_line":"                                 {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"b3739903_250fa3ae","line":724,"range":{"start_line":724,"start_character":63,"end_line":724,"end_character":64},"in_reply_to":"96a55190_5893ceb3","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":722,"context_line":"                                  \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":723,"context_line":"                    elif vol[\u0027status\u0027] \u003d\u003d \u0027Queued\u0027:"},{"line_number":724,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":725,"context_line":"                                 \u0027rescan %(scan)s times,\u0027"},{"line_number":726,"context_line":"                                 \u0027volume %(volume)s is in the queue.\u0027,"},{"line_number":727,"context_line":"                                 {\u0027function\u0027: function,"},{"line_number":728,"context_line":"                                  \u0027action\u0027: action, \u0027scan\u0027: rescan,"}],"source_content_type":"text/x-python","patch_set":10,"id":"0bee2de6_d90ab1b3","line":725,"range":{"start_line":725,"start_character":56,"end_line":725,"end_character":57},"updated":"2021-01-15 21:06:49.000000000","message":"Same.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                                  \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":723,"context_line":"                    elif vol[\u0027status\u0027] \u003d\u003d \u0027Queued\u0027:"},{"line_number":724,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":725,"context_line":"                                 \u0027rescan %(scan)s times,\u0027"},{"line_number":726,"context_line":"                                 \u0027volume %(volume)s is in the queue.\u0027,"},{"line_number":727,"context_line":"                                 {\u0027function\u0027: function,"},{"line_number":728,"context_line":"                                  \u0027action\u0027: action, \u0027scan\u0027: rescan,"}],"source_content_type":"text/x-python","patch_set":10,"id":"42a2b88a_37d61e97","line":725,"range":{"start_line":725,"start_character":56,"end_line":725,"end_character":57},"in_reply_to":"0bee2de6_d90ab1b3","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":731,"context_line":"                          and vol[\u0027status\u0027] \u003d\u003d \u0027Online\u0027):"},{"line_number":732,"context_line":"                        ret \u003d True"},{"line_number":733,"context_line":"                        while_exit \u003d True"},{"line_number":734,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":735,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":736,"context_line":"                                 \u0027copy task completed,status is Online.\u0027,"},{"line_number":737,"context_line":"                                 {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ec57db87_7059fd97","line":734,"range":{"start_line":734,"start_character":63,"end_line":734,"end_character":64},"updated":"2021-01-15 21:06:49.000000000","message":"same","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                          and vol[\u0027status\u0027] \u003d\u003d \u0027Online\u0027):"},{"line_number":732,"context_line":"                        ret \u003d True"},{"line_number":733,"context_line":"                        while_exit \u003d True"},{"line_number":734,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":735,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":736,"context_line":"                                 \u0027copy task completed,status is Online.\u0027,"},{"line_number":737,"context_line":"                                 {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa8133d4_75739b44","line":734,"range":{"start_line":734,"start_character":63,"end_line":734,"end_character":64},"in_reply_to":"ec57db87_7059fd97","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":740,"context_line":"                                  \u0027volume\u0027: vol[\u0027name\u0027]})"},{"line_number":741,"context_line":"                    elif (vol[\u0027health\u0027] \u003d\u003d \u0027Optimal\u0027"},{"line_number":742,"context_line":"                          and (vol[\u0027status\u0027] in wait_status)):"},{"line_number":743,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":744,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":745,"context_line":"                                 \u0027need wait,\u0027"},{"line_number":746,"context_line":"                                 \u0027status is %(status)s,health is %(health)s,\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"52d9ea3d_d4679f1a","line":743,"range":{"start_line":743,"start_character":63,"end_line":743,"end_character":64},"updated":"2021-01-15 21:06:49.000000000","message":"same","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                                  \u0027volume\u0027: vol[\u0027name\u0027]})"},{"line_number":741,"context_line":"                    elif (vol[\u0027health\u0027] \u003d\u003d \u0027Optimal\u0027"},{"line_number":742,"context_line":"                          and (vol[\u0027status\u0027] in wait_status)):"},{"line_number":743,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":744,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":745,"context_line":"                                 \u0027need wait,\u0027"},{"line_number":746,"context_line":"                                 \u0027status is %(status)s,health is %(health)s,\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"7c221b45_8971795a","line":743,"range":{"start_line":743,"start_character":63,"end_line":743,"end_character":64},"in_reply_to":"52d9ea3d_d4679f1a","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":742,"context_line":"                          and (vol[\u0027status\u0027] in wait_status)):"},{"line_number":743,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":744,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":745,"context_line":"                                 \u0027need wait,\u0027"},{"line_number":746,"context_line":"                                 \u0027status is %(status)s,health is %(health)s,\u0027"},{"line_number":747,"context_line":"                                 \u0027process is %(process)s%%.\u0027,"},{"line_number":748,"context_line":"                                 {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da37d440_8b74e705","line":745,"range":{"start_line":745,"start_character":44,"end_line":745,"end_character":45},"updated":"2021-01-15 21:06:49.000000000","message":"same","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":742,"context_line":"                          and (vol[\u0027status\u0027] in wait_status)):"},{"line_number":743,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":744,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":745,"context_line":"                                 \u0027need wait,\u0027"},{"line_number":746,"context_line":"                                 \u0027status is %(status)s,health is %(health)s,\u0027"},{"line_number":747,"context_line":"                                 \u0027process is %(process)s%%.\u0027,"},{"line_number":748,"context_line":"                                 {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"50bcdbb4_0cba1c54","line":745,"range":{"start_line":745,"start_character":44,"end_line":745,"end_character":45},"in_reply_to":"da37d440_8b74e705","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":743,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":744,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":745,"context_line":"                                 \u0027need wait,\u0027"},{"line_number":746,"context_line":"                                 \u0027status is %(status)s,health is %(health)s,\u0027"},{"line_number":747,"context_line":"                                 \u0027process is %(process)s%%.\u0027,"},{"line_number":748,"context_line":"                                 {\u0027function\u0027: function,"},{"line_number":749,"context_line":"                                  \u0027action\u0027: action,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ccd2ee7_6a85b243","line":746,"range":{"start_line":746,"start_character":76,"end_line":746,"end_character":77},"updated":"2021-01-15 21:06:49.000000000","message":"same","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":743,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":744,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":745,"context_line":"                                 \u0027need wait,\u0027"},{"line_number":746,"context_line":"                                 \u0027status is %(status)s,health is %(health)s,\u0027"},{"line_number":747,"context_line":"                                 \u0027process is %(process)s%%.\u0027,"},{"line_number":748,"context_line":"                                 {\u0027function\u0027: function,"},{"line_number":749,"context_line":"                                  \u0027action\u0027: action,"}],"source_content_type":"text/x-python","patch_set":10,"id":"f3199c82_c506e83b","line":746,"range":{"start_line":746,"start_character":76,"end_line":746,"end_character":77},"in_reply_to":"7ccd2ee7_6a85b243","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":753,"context_line":"                                  \u0027health\u0027: vol[\u0027health\u0027],"},{"line_number":754,"context_line":"                                  \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":755,"context_line":"                    else:"},{"line_number":756,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":757,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":758,"context_line":"                                 \u0027is not normal,\u0027"},{"line_number":759,"context_line":"                                 \u0027status %(status)s,health is %(health)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1e4786d8_8814c536","line":756,"range":{"start_line":756,"start_character":63,"end_line":756,"end_character":64},"updated":"2021-01-15 21:06:49.000000000","message":"same","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":753,"context_line":"                                  \u0027health\u0027: vol[\u0027health\u0027],"},{"line_number":754,"context_line":"                                  \u0027process\u0027: vol[\u0027r\u0027]})"},{"line_number":755,"context_line":"                    else:"},{"line_number":756,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":757,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":758,"context_line":"                                 \u0027is not normal,\u0027"},{"line_number":759,"context_line":"                                 \u0027status %(status)s,health is %(health)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"beddf678_ca134c7d","line":756,"range":{"start_line":756,"start_character":63,"end_line":756,"end_character":64},"in_reply_to":"1e4786d8_8814c536","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":755,"context_line":"                    else:"},{"line_number":756,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":757,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":758,"context_line":"                                 \u0027is not normal,\u0027"},{"line_number":759,"context_line":"                                 \u0027status %(status)s,health is %(health)s.\u0027,"},{"line_number":760,"context_line":"                                 {\u0027function\u0027: function,"},{"line_number":761,"context_line":"                                  \u0027action\u0027: action,"}],"source_content_type":"text/x-python","patch_set":10,"id":"664a0e72_e4e20cc4","line":758,"range":{"start_line":758,"start_character":48,"end_line":758,"end_character":49},"updated":"2021-01-15 21:06:49.000000000","message":"same","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                    else:"},{"line_number":756,"context_line":"                        LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":757,"context_line":"                                 \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":758,"context_line":"                                 \u0027is not normal,\u0027"},{"line_number":759,"context_line":"                                 \u0027status %(status)s,health is %(health)s.\u0027,"},{"line_number":760,"context_line":"                                 {\u0027function\u0027: function,"},{"line_number":761,"context_line":"                                  \u0027action\u0027: action,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa02c669_a746a44e","line":758,"range":{"start_line":758,"start_character":48,"end_line":758,"end_character":49},"in_reply_to":"664a0e72_e4e20cc4","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":768,"context_line":"            elif len(volume_info) \u003d\u003d 1:"},{"line_number":769,"context_line":"                while_exit \u003d True"},{"line_number":770,"context_line":"                if volume_info[0][\u0027name\u0027] \u003d\u003d volume:"},{"line_number":771,"context_line":"                    LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":772,"context_line":"                             \u0027rescan %(scan)s times,clone %(clone)s \u0027"},{"line_number":773,"context_line":"                             \u0027is not exist!\u0027,"},{"line_number":774,"context_line":"                             {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"24c33067_6f6ea7a1","line":771,"range":{"start_line":771,"start_character":59,"end_line":771,"end_character":60},"updated":"2021-01-15 21:06:49.000000000","message":"Missing trailing space.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":768,"context_line":"            elif len(volume_info) \u003d\u003d 1:"},{"line_number":769,"context_line":"                while_exit \u003d True"},{"line_number":770,"context_line":"                if volume_info[0][\u0027name\u0027] \u003d\u003d volume:"},{"line_number":771,"context_line":"                    LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":772,"context_line":"                             \u0027rescan %(scan)s times,clone %(clone)s \u0027"},{"line_number":773,"context_line":"                             \u0027is not exist!\u0027,"},{"line_number":774,"context_line":"                             {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"f0a0a65b_25076046","line":771,"range":{"start_line":771,"start_character":59,"end_line":771,"end_character":60},"in_reply_to":"24c33067_6f6ea7a1","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":770,"context_line":"                if volume_info[0][\u0027name\u0027] \u003d\u003d volume:"},{"line_number":771,"context_line":"                    LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":772,"context_line":"                             \u0027rescan %(scan)s times,clone %(clone)s \u0027"},{"line_number":773,"context_line":"                             \u0027is not exist!\u0027,"},{"line_number":774,"context_line":"                             {\u0027function\u0027: function,"},{"line_number":775,"context_line":"                              \u0027action\u0027: action,"},{"line_number":776,"context_line":"                              \u0027scan\u0027: rescan,"}],"source_content_type":"text/x-python","patch_set":10,"id":"6a15dec0_feebb4f4","line":773,"range":{"start_line":773,"start_character":30,"end_line":773,"end_character":42},"updated":"2021-01-15 20:41:56.000000000","message":"does not exist","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":770,"context_line":"                if volume_info[0][\u0027name\u0027] \u003d\u003d volume:"},{"line_number":771,"context_line":"                    LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":772,"context_line":"                             \u0027rescan %(scan)s times,clone %(clone)s \u0027"},{"line_number":773,"context_line":"                             \u0027is not exist!\u0027,"},{"line_number":774,"context_line":"                             {\u0027function\u0027: function,"},{"line_number":775,"context_line":"                              \u0027action\u0027: action,"},{"line_number":776,"context_line":"                              \u0027scan\u0027: rescan,"}],"source_content_type":"text/x-python","patch_set":10,"id":"165c47bb_9b3d1553","line":773,"range":{"start_line":773,"start_character":30,"end_line":773,"end_character":42},"in_reply_to":"6a15dec0_feebb4f4","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":776,"context_line":"                              \u0027scan\u0027: rescan,"},{"line_number":777,"context_line":"                              \u0027clone\u0027: clone})"},{"line_number":778,"context_line":"                else:"},{"line_number":779,"context_line":"                    LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":780,"context_line":"                             \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":781,"context_line":"                             \u0027is not exist!\u0027,"},{"line_number":782,"context_line":"                             {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"167d34de_aeb2b735","line":779,"range":{"start_line":779,"start_character":59,"end_line":779,"end_character":60},"updated":"2021-01-15 21:06:49.000000000","message":"Missing trailing space.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":776,"context_line":"                              \u0027scan\u0027: rescan,"},{"line_number":777,"context_line":"                              \u0027clone\u0027: clone})"},{"line_number":778,"context_line":"                else:"},{"line_number":779,"context_line":"                    LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":780,"context_line":"                             \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":781,"context_line":"                             \u0027is not exist!\u0027,"},{"line_number":782,"context_line":"                             {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"e22df447_5f1aeb05","line":779,"range":{"start_line":779,"start_character":59,"end_line":779,"end_character":60},"in_reply_to":"167d34de_aeb2b735","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":778,"context_line":"                else:"},{"line_number":779,"context_line":"                    LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":780,"context_line":"                             \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":781,"context_line":"                             \u0027is not exist!\u0027,"},{"line_number":782,"context_line":"                             {\u0027function\u0027: function,"},{"line_number":783,"context_line":"                              \u0027action\u0027: action,"},{"line_number":784,"context_line":"                              \u0027scan\u0027: rescan,"}],"source_content_type":"text/x-python","patch_set":10,"id":"b176b9aa_ccac006f","line":781,"range":{"start_line":781,"start_character":30,"end_line":781,"end_character":42},"updated":"2021-01-15 20:41:56.000000000","message":"Same here.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":778,"context_line":"                else:"},{"line_number":779,"context_line":"                    LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":780,"context_line":"                             \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":781,"context_line":"                             \u0027is not exist!\u0027,"},{"line_number":782,"context_line":"                             {\u0027function\u0027: function,"},{"line_number":783,"context_line":"                              \u0027action\u0027: action,"},{"line_number":784,"context_line":"                              \u0027scan\u0027: rescan,"}],"source_content_type":"text/x-python","patch_set":10,"id":"a49b21fb_791d4a40","line":781,"range":{"start_line":781,"start_character":30,"end_line":781,"end_character":42},"in_reply_to":"b176b9aa_ccac006f","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":785,"context_line":"                              \u0027volume\u0027: volume})"},{"line_number":786,"context_line":"            else:"},{"line_number":787,"context_line":"                while_exit \u003d True"},{"line_number":788,"context_line":"                LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":789,"context_line":"                         \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":790,"context_line":"                         \u0027clone %(clone)s is not exist!\u0027,"},{"line_number":791,"context_line":"                         {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad85f4d_c078192c","line":788,"range":{"start_line":788,"start_character":55,"end_line":788,"end_character":56},"updated":"2021-01-15 21:06:49.000000000","message":"Missing trailing space.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":785,"context_line":"                              \u0027volume\u0027: volume})"},{"line_number":786,"context_line":"            else:"},{"line_number":787,"context_line":"                while_exit \u003d True"},{"line_number":788,"context_line":"                LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":789,"context_line":"                         \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":790,"context_line":"                         \u0027clone %(clone)s is not exist!\u0027,"},{"line_number":791,"context_line":"                         {\u0027function\u0027: function,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5e5ae15d_92fdab93","line":788,"range":{"start_line":788,"start_character":55,"end_line":788,"end_character":56},"in_reply_to":"9ad85f4d_c078192c","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":787,"context_line":"                while_exit \u003d True"},{"line_number":788,"context_line":"                LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":789,"context_line":"                         \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":790,"context_line":"                         \u0027clone %(clone)s is not exist!\u0027,"},{"line_number":791,"context_line":"                         {\u0027function\u0027: function,"},{"line_number":792,"context_line":"                          \u0027action\u0027: action,"},{"line_number":793,"context_line":"                          \u0027scan\u0027: rescan,"}],"source_content_type":"text/x-python","patch_set":10,"id":"92c491fc_6c619387","line":790,"range":{"start_line":790,"start_character":41,"end_line":790,"end_character":54},"updated":"2021-01-15 20:41:56.000000000","message":"and here.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":787,"context_line":"                while_exit \u003d True"},{"line_number":788,"context_line":"                LOG.info(\u0027%(function)s %(action)s task:\u0027"},{"line_number":789,"context_line":"                         \u0027rescan %(scan)s times,volume %(volume)s \u0027"},{"line_number":790,"context_line":"                         \u0027clone %(clone)s is not exist!\u0027,"},{"line_number":791,"context_line":"                         {\u0027function\u0027: function,"},{"line_number":792,"context_line":"                          \u0027action\u0027: action,"},{"line_number":793,"context_line":"                          \u0027scan\u0027: rescan,"}],"source_content_type":"text/x-python","patch_set":10,"id":"df9f1544_5e7ae0d9","line":790,"range":{"start_line":790,"start_character":41,"end_line":790,"end_character":54},"in_reply_to":"92c491fc_6c619387","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":796,"context_line":""},{"line_number":797,"context_line":"            if while_exit:"},{"line_number":798,"context_line":"                break"},{"line_number":799,"context_line":"            greenthread.sleep(interval)"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"        LOG.debug(\u0027leave: wait_volume_copy.\u0027)"},{"line_number":802,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":10,"id":"eb1d0b67_8a02cbac","line":799,"range":{"start_line":799,"start_character":11,"end_line":799,"end_character":39},"updated":"2021-01-15 20:41:56.000000000","message":"This isn\u0027t the best way to handle this.  A fixed interval looping call might be safer.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":796,"context_line":""},{"line_number":797,"context_line":"            if while_exit:"},{"line_number":798,"context_line":"                break"},{"line_number":799,"context_line":"            greenthread.sleep(interval)"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"        LOG.debug(\u0027leave: wait_volume_copy.\u0027)"},{"line_number":802,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":10,"id":"1d667ff8_08d77f5e","line":799,"range":{"start_line":799,"start_character":11,"end_line":799,"end_character":39},"in_reply_to":"eb1d0b67_8a02cbac","updated":"2021-01-19 05:41:39.000000000","message":"The loop interval is configured in cinder.conf, and the interval is fixed when the volume service is started. Is that OK.\nThe interval is set by acs5000_copy_interval,support 3 to 100, default value is 5.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0963145d1e831841cfb32452b516492c550ed01","unresolved":true,"context_lines":[{"line_number":594,"context_line":"                  {\u0027id\u0027: volume[\u0027id\u0027], \u0027host\u0027: host[\u0027host\u0027]})"},{"line_number":595,"context_line":"        pool \u003d self._get_host_pool(volume[\u0027host\u0027])"},{"line_number":596,"context_line":"        if \u0027system_id\u0027 not in host[\u0027capabilities\u0027]:"},{"line_number":597,"context_line":"            LOG.error(\u0027Target host hava no system_id\u0027)"},{"line_number":598,"context_line":"            return (False, None)"},{"line_number":599,"context_line":"        if host[\u0027capabilities\u0027][\u0027system_id\u0027] !\u003d self._state[\u0027system_id\u0027]:"},{"line_number":600,"context_line":"            LOG.info(\u0027Target host system_id is not same as current\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"aa82d03b_806fcebe","line":597,"range":{"start_line":597,"start_character":35,"end_line":597,"end_character":39},"updated":"2021-01-18 23:55:35.000000000","message":"has","commit_id":"725e1118b0fda5baecfd62153dd52c62c53596cd"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"84319e55c3f288327562bd877997f839f21d423c","unresolved":false,"context_lines":[{"line_number":594,"context_line":"                  {\u0027id\u0027: volume[\u0027id\u0027], \u0027host\u0027: host[\u0027host\u0027]})"},{"line_number":595,"context_line":"        pool \u003d self._get_host_pool(volume[\u0027host\u0027])"},{"line_number":596,"context_line":"        if \u0027system_id\u0027 not in host[\u0027capabilities\u0027]:"},{"line_number":597,"context_line":"            LOG.error(\u0027Target host hava no system_id\u0027)"},{"line_number":598,"context_line":"            return (False, None)"},{"line_number":599,"context_line":"        if host[\u0027capabilities\u0027][\u0027system_id\u0027] !\u003d self._state[\u0027system_id\u0027]:"},{"line_number":600,"context_line":"            LOG.info(\u0027Target host system_id is not same as current\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"81d98fdd_e7b40c4f","line":597,"range":{"start_line":597,"start_character":35,"end_line":597,"end_character":39},"in_reply_to":"aa82d03b_806fcebe","updated":"2021-01-19 02:51:41.000000000","message":"Thanks","commit_id":"725e1118b0fda5baecfd62153dd52c62c53596cd"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b0963145d1e831841cfb32452b516492c550ed01","unresolved":true,"context_lines":[{"line_number":602,"context_line":"        if host[\u0027capabilities\u0027][\u0027pool_name\u0027] \u003d\u003d pool:"},{"line_number":603,"context_line":"            LOG.info(\u0027system_id and pool is same,return directly.\u0027)"},{"line_number":604,"context_line":"            return (True, None)"},{"line_number":605,"context_line":"        LOG.info(\u0027system_id is same, but pool is not same.use clone\u0027)"},{"line_number":606,"context_line":"        volume_name \u003d VOLUME_PREFIX + volume[\u0027id\u0027][-12:]"},{"line_number":607,"context_line":"        tmp_name \u003d VOLUME_PREFIX + \u0027tmp\u0027"},{"line_number":608,"context_line":"        tmp_name +\u003d str(random.randint(0, 999999)).zfill(8)"}],"source_content_type":"text/x-python","patch_set":11,"id":"b4201cbc_ef87eeca","line":605,"range":{"start_line":605,"start_character":53,"end_line":605,"end_character":61},"updated":"2021-01-18 23:55:35.000000000","message":"how about: \u0027system_id is same, but pool is not same, using clone\u0027","commit_id":"725e1118b0fda5baecfd62153dd52c62c53596cd"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"84319e55c3f288327562bd877997f839f21d423c","unresolved":false,"context_lines":[{"line_number":602,"context_line":"        if host[\u0027capabilities\u0027][\u0027pool_name\u0027] \u003d\u003d pool:"},{"line_number":603,"context_line":"            LOG.info(\u0027system_id and pool is same,return directly.\u0027)"},{"line_number":604,"context_line":"            return (True, None)"},{"line_number":605,"context_line":"        LOG.info(\u0027system_id is same, but pool is not same.use clone\u0027)"},{"line_number":606,"context_line":"        volume_name \u003d VOLUME_PREFIX + volume[\u0027id\u0027][-12:]"},{"line_number":607,"context_line":"        tmp_name \u003d VOLUME_PREFIX + \u0027tmp\u0027"},{"line_number":608,"context_line":"        tmp_name +\u003d str(random.randint(0, 999999)).zfill(8)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9c5c622c_e6fb3c33","line":605,"range":{"start_line":605,"start_character":53,"end_line":605,"end_character":61},"in_reply_to":"b4201cbc_ef87eeca","updated":"2021-01-19 02:51:41.000000000","message":"The system_id field is used to mark the storage system.\nIt will be assigned to self._state when run do_setup.\nIn _build_pool_stats method,It will be recorded by the pools information.\n\nVolume migrate to host.The host may be another cinder volume node.\nThese hosts may be operating on the same storage system.\nAccording to \u0027cinder help migrate\u0027.It tells me host@backend-name#pool can be host\u0027s parameter.\nIf the volume and the new host belong to the same storage system and pool,return directly and the storage system does not do anything.\nIf they belong to a different pool on the same system,the storage system will clone the volume into the new pool and return.\nIf they belong to different systems,We don\u0027t support this migration yet.\n\nEven so, we will improve log readability","commit_id":"725e1118b0fda5baecfd62153dd52c62c53596cd"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c9301249145527342e92b722f193728ad8cfcaa1","unresolved":true,"context_lines":[{"line_number":85,"context_line":"                     \u0027out:%(out)s,\u0027"},{"line_number":86,"context_line":"                     \u0027err:%(err)s.\u0027) %"},{"line_number":87,"context_line":"                   {\u0027cmd\u0027: \u0027 \u0027.join(ssh_cmd),"},{"line_number":88,"context_line":"                    \u0027out\u0027: six.text_type(out),"},{"line_number":89,"context_line":"                    \u0027err\u0027: six.text_type(err)})"},{"line_number":90,"context_line":"            LOG.error(msg)"},{"line_number":91,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":92,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"d79ec5a8_8c83fcaf","line":89,"range":{"start_line":88,"start_character":26,"end_line":89,"end_character":46},"updated":"2021-01-19 19:58:47.000000000","message":"We have moved to py3 so we should no longer use six.text_type","commit_id":"79adcaa4fcdf22e725032032ae859af9e00c35fc"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"f0e6f81a6e0992f13d3175d5ab83fa502fbbeac3","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                     \u0027out:%(out)s,\u0027"},{"line_number":86,"context_line":"                     \u0027err:%(err)s.\u0027) %"},{"line_number":87,"context_line":"                   {\u0027cmd\u0027: \u0027 \u0027.join(ssh_cmd),"},{"line_number":88,"context_line":"                    \u0027out\u0027: six.text_type(out),"},{"line_number":89,"context_line":"                    \u0027err\u0027: six.text_type(err)})"},{"line_number":90,"context_line":"            LOG.error(msg)"},{"line_number":91,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":92,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"90f245bb_2ade29f4","line":89,"range":{"start_line":88,"start_character":26,"end_line":89,"end_character":46},"in_reply_to":"d79ec5a8_8c83fcaf","updated":"2021-01-20 01:27:24.000000000","message":"Done","commit_id":"79adcaa4fcdf22e725032032ae859af9e00c35fc"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c9301249145527342e92b722f193728ad8cfcaa1","unresolved":true,"context_lines":[{"line_number":833,"context_line":"                break"},{"line_number":834,"context_line":"            greenthread.sleep(interval)"},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"        LOG.debug(\u0027leave: _wait_volume_copy.\u0027)"},{"line_number":837,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":13,"id":"ac64671b_4c51b293","line":836,"range":{"start_line":836,"start_character":7,"end_line":836,"end_character":46},"updated":"2021-01-19 19:58:47.000000000","message":"This should be removed.","commit_id":"79adcaa4fcdf22e725032032ae859af9e00c35fc"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"f0e6f81a6e0992f13d3175d5ab83fa502fbbeac3","unresolved":false,"context_lines":[{"line_number":833,"context_line":"                break"},{"line_number":834,"context_line":"            greenthread.sleep(interval)"},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"        LOG.debug(\u0027leave: _wait_volume_copy.\u0027)"},{"line_number":837,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":13,"id":"d64d9b55_1d2dc035","line":836,"range":{"start_line":836,"start_character":7,"end_line":836,"end_character":46},"in_reply_to":"ac64671b_4c51b293","updated":"2021-01-20 01:27:24.000000000","message":"Done","commit_id":"79adcaa4fcdf22e725032032ae859af9e00c35fc"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6e8d0c406cdc0b40df3afb3264edfe1fac9cbe6","unresolved":true,"context_lines":[{"line_number":210,"context_line":"                   \u0027sshDeleteVolume\u0027,"},{"line_number":211,"context_line":"                   \u0027--cinderVolume\u0027,"},{"line_number":212,"context_line":"                   volume]"},{"line_number":213,"context_line":"        return self.run_ssh_info(ssh_cmd, key\u003dTrue)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def extend_volume(self, volume, size):"},{"line_number":216,"context_line":"        ssh_cmd \u003d [\u0027cinder\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"2cfd1f65_5c1f95ed","line":213,"range":{"start_line":213,"start_character":8,"end_line":213,"end_character":51},"updated":"2021-01-20 15:48:27.000000000","message":"Does this properly handle if the volume is not found on the system? The call should return successfully if the requested volume has already been deleted.","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"6a23a3bbb0eaeb55085d8b4281482908f1896cfd","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                   \u0027sshDeleteVolume\u0027,"},{"line_number":211,"context_line":"                   \u0027--cinderVolume\u0027,"},{"line_number":212,"context_line":"                   volume]"},{"line_number":213,"context_line":"        return self.run_ssh_info(ssh_cmd, key\u003dTrue)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def extend_volume(self, volume, size):"},{"line_number":216,"context_line":"        ssh_cmd \u003d [\u0027cinder\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"28eac2ef_3b87f727","line":213,"range":{"start_line":213,"start_character":8,"end_line":213,"end_character":51},"in_reply_to":"2cfd1f65_5c1f95ed","updated":"2021-01-20 18:33:08.000000000","message":"I agree.\nI will correct it in the next patch.","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6e8d0c406cdc0b40df3afb3264edfe1fac9cbe6","unresolved":true,"context_lines":[{"line_number":500,"context_line":"        volume_name \u003d VOLUME_PREFIX + volume[\u0027id\u0027][-12:]"},{"line_number":501,"context_line":"        ret \u003d self._cmd.delete_volume(volume_name, False)"},{"line_number":502,"context_line":"        if ret[\u0027key\u0027] \u003d\u003d 303:"},{"line_number":503,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dvolume_name)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":506,"context_line":"        volume_name \u003d VOLUME_PREFIX + snapshot[\u0027volume_name\u0027][-12:]"}],"source_content_type":"text/x-python","patch_set":16,"id":"6d347c27_a8665a92","line":503,"range":{"start_line":503,"start_character":12,"end_line":503,"end_character":65},"updated":"2021-01-20 15:48:27.000000000","message":"This would seem to answer my other question that the driver is not handling this correctly. If the volume is not found, it should return successful.","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"6a23a3bbb0eaeb55085d8b4281482908f1896cfd","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        volume_name \u003d VOLUME_PREFIX + volume[\u0027id\u0027][-12:]"},{"line_number":501,"context_line":"        ret \u003d self._cmd.delete_volume(volume_name, False)"},{"line_number":502,"context_line":"        if ret[\u0027key\u0027] \u003d\u003d 303:"},{"line_number":503,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dvolume_name)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":506,"context_line":"        volume_name \u003d VOLUME_PREFIX + snapshot[\u0027volume_name\u0027][-12:]"}],"source_content_type":"text/x-python","patch_set":16,"id":"c657fd07_e20e34c8","line":503,"range":{"start_line":503,"start_character":12,"end_line":503,"end_character":65},"in_reply_to":"6d347c27_a8665a92","updated":"2021-01-20 18:33:08.000000000","message":"I agree.\nI will correct it in the next patch.","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6e8d0c406cdc0b40df3afb3264edfe1fac9cbe6","unresolved":true,"context_lines":[{"line_number":528,"context_line":"        self._cmd.create_volume(volume_name,"},{"line_number":529,"context_line":"                                str(volume[\u0027size\u0027]),"},{"line_number":530,"context_line":"                                pool, \u002710\u0027)"},{"line_number":531,"context_line":"        self._local_clone_copy(source_volume,"},{"line_number":532,"context_line":"                               volume_name,"},{"line_number":533,"context_line":"                               \u0027create_volume_from_snapshot\u0027,"},{"line_number":534,"context_line":"                               snapshot_name)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    def create_cloned_volume(self, tgt_volume, src_volume):"},{"line_number":537,"context_line":"        clone_name \u003d VOLUME_PREFIX + tgt_volume[\u0027id\u0027][-12:]"}],"source_content_type":"text/x-python","patch_set":16,"id":"418cb1ca_8396c411","line":534,"range":{"start_line":531,"start_character":8,"end_line":534,"end_character":45},"updated":"2021-01-20 15:48:27.000000000","message":"Snapshot volumes should not be independent clones. Does the storage not support creating volumes directly from snapshots?","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"6a23a3bbb0eaeb55085d8b4281482908f1896cfd","unresolved":false,"context_lines":[{"line_number":528,"context_line":"        self._cmd.create_volume(volume_name,"},{"line_number":529,"context_line":"                                str(volume[\u0027size\u0027]),"},{"line_number":530,"context_line":"                                pool, \u002710\u0027)"},{"line_number":531,"context_line":"        self._local_clone_copy(source_volume,"},{"line_number":532,"context_line":"                               volume_name,"},{"line_number":533,"context_line":"                               \u0027create_volume_from_snapshot\u0027,"},{"line_number":534,"context_line":"                               snapshot_name)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    def create_cloned_volume(self, tgt_volume, src_volume):"},{"line_number":537,"context_line":"        clone_name \u003d VOLUME_PREFIX + tgt_volume[\u0027id\u0027][-12:]"}],"source_content_type":"text/x-python","patch_set":16,"id":"6d07e4e4_55e65a87","line":534,"range":{"start_line":531,"start_character":8,"end_line":534,"end_character":45},"in_reply_to":"418cb1ca_8396c411","updated":"2021-01-20 18:33:08.000000000","message":"We are very sorry that our storage does not support creating volumes directly from a snapshot, because our snapshot is an incremental snapshot.\nAll snapshots in a volume share predefined space, and old snapshots depend on new snapshots.\n\nSo in our driver, I used the clone method for both cloning volumes and creating volumes from snapshots. The difference is that create volume from snapshot speacifies a snapshot clone, whereas a cloned volume is cloned using a temporarily allocated snapshot.\n\nI know that some storage vendors use full-volume snapshots and can support the creation of volumes directly from the snapshot.However, both approaches are not usually supported.","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7058f6f2fca09c3179aaecf3664bfb7da953f328","unresolved":true,"context_lines":[{"line_number":402,"context_line":"                          \u0027Please configure the device to support %(prot)s \u0027"},{"line_number":403,"context_line":"                          \u0027or switch to a driver using a different \u0027"},{"line_number":404,"context_line":"                          \u0027protocol.\u0027) % {\u0027prot\u0027: self.protocol}))"},{"line_number":405,"context_line":"        required \u003d [\u0027san_ip\u0027,"},{"line_number":406,"context_line":"                    \u0027san_ssh_port\u0027,"},{"line_number":407,"context_line":"                    \u0027san_login\u0027,"},{"line_number":408,"context_line":"                    \u0027acs5000_volpool_name\u0027]"},{"line_number":409,"context_line":"        for param in required:"},{"line_number":410,"context_line":"            if not self.configuration.safe_get(param):"}],"source_content_type":"text/x-python","patch_set":17,"id":"82242d5e_5de914fd","line":407,"range":{"start_line":405,"start_character":19,"end_line":407,"end_character":32},"updated":"2021-01-21 22:28:12.000000000","message":"Your get_driver_options method in the Acs5000ISCSIDriver class isn\u0027t reporting these (or the options on lines 436-438) as options for the driver.  It will affect cinderlib/emberCSI use of your driver.  See https://review.opendev.org/c/openstack/cinder/+/770807 for an example of how to fix this.\n\nSince you are already planning to do a followup patch to address Sean\u0027s comment about the \u0027acs5000_target\u0027 option, you can also fix the get_driver_options issue on that patch.","commit_id":"fe0822b1bcd42d3d77e06b3e383d5ee6b22f25e9"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"db06a293eef13cf094b9c0c4615f9ffb5e0ef346","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                          \u0027Please configure the device to support %(prot)s \u0027"},{"line_number":403,"context_line":"                          \u0027or switch to a driver using a different \u0027"},{"line_number":404,"context_line":"                          \u0027protocol.\u0027) % {\u0027prot\u0027: self.protocol}))"},{"line_number":405,"context_line":"        required \u003d [\u0027san_ip\u0027,"},{"line_number":406,"context_line":"                    \u0027san_ssh_port\u0027,"},{"line_number":407,"context_line":"                    \u0027san_login\u0027,"},{"line_number":408,"context_line":"                    \u0027acs5000_volpool_name\u0027]"},{"line_number":409,"context_line":"        for param in required:"},{"line_number":410,"context_line":"            if not self.configuration.safe_get(param):"}],"source_content_type":"text/x-python","patch_set":17,"id":"d5b580e6_53b82f71","line":407,"range":{"start_line":405,"start_character":19,"end_line":407,"end_character":32},"in_reply_to":"82242d5e_5de914fd","updated":"2021-01-22 02:17:05.000000000","message":"Thanks for your reviewing. I have already fixed the get_driver_options issue and will adress it together with Sean\u0027s commentin a future separate patch.","commit_id":"fe0822b1bcd42d3d77e06b3e383d5ee6b22f25e9"}],"cinder/volume/drivers/toyou/acs5000/acs5000_iscsi.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":29,"context_line":"        default\u003d0,"},{"line_number":30,"context_line":"        min\u003d0,"},{"line_number":31,"context_line":"        max\u003d127,"},{"line_number":32,"context_line":"        help\u003d\u0027Storage system target iSCSI support 0 - 127\u0027"},{"line_number":33,"context_line":"             \u0027FC protocol only support the one\u0027),"},{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"6c2ca251_624d0a4f","line":32,"range":{"start_line":32,"start_character":54,"end_line":32,"end_character":58},"updated":"2021-01-15 20:41:56.000000000","message":"should have space at EOL.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        default\u003d0,"},{"line_number":30,"context_line":"        min\u003d0,"},{"line_number":31,"context_line":"        max\u003d127,"},{"line_number":32,"context_line":"        help\u003d\u0027Storage system target iSCSI support 0 - 127\u0027"},{"line_number":33,"context_line":"             \u0027FC protocol only support the one\u0027),"},{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"8fd292d8_fadefcb1","line":32,"range":{"start_line":32,"start_character":54,"end_line":32,"end_character":58},"in_reply_to":"6c2ca251_624d0a4f","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":30,"context_line":"        min\u003d0,"},{"line_number":31,"context_line":"        max\u003d127,"},{"line_number":32,"context_line":"        help\u003d\u0027Storage system target iSCSI support 0 - 127\u0027"},{"line_number":33,"context_line":"             \u0027FC protocol only support the one\u0027),"},{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":10,"id":"47027556_1e4166df","line":33,"range":{"start_line":33,"start_character":14,"end_line":33,"end_character":46},"updated":"2021-01-15 20:41:56.000000000","message":"This isn\u0027t clear.  What do you mean it only support \u0027the one\u0027?","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        min\u003d0,"},{"line_number":31,"context_line":"        max\u003d127,"},{"line_number":32,"context_line":"        help\u003d\u0027Storage system target iSCSI support 0 - 127\u0027"},{"line_number":33,"context_line":"             \u0027FC protocol only support the one\u0027),"},{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":10,"id":"5b159ad5_3fbaec08","line":33,"range":{"start_line":33,"start_character":14,"end_line":33,"end_character":46},"in_reply_to":"441ac2f4_fd7dac27","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":30,"context_line":"        min\u003d0,"},{"line_number":31,"context_line":"        max\u003d127,"},{"line_number":32,"context_line":"        help\u003d\u0027Storage system target iSCSI support 0 - 127\u0027"},{"line_number":33,"context_line":"             \u0027FC protocol only support the one\u0027),"},{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":10,"id":"441ac2f4_fd7dac27","line":33,"range":{"start_line":33,"start_character":14,"end_line":33,"end_character":46},"in_reply_to":"47027556_1e4166df","updated":"2021-01-15 21:06:49.000000000","message":"Yeah, this whole sentence isn\u0027t very clear. I would suggest rewording it.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":37,"context_line":"CONF.register_opts(acs5000_iscsi_opts)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class Acs5000ISCSIDriver(acs5000_common.Acs5000CommonDriver):"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":43,"context_line":"        super(Acs5000ISCSIDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"95c1bd98_e4451a63","line":40,"updated":"2021-01-15 21:06:49.000000000","message":"Need @interface.volumedriver decorator.\n\nAlso need DRIVER_NAME, VERSION, and CI_WIKINAME constants.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":37,"context_line":"CONF.register_opts(acs5000_iscsi_opts)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class Acs5000ISCSIDriver(acs5000_common.Acs5000CommonDriver):"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":43,"context_line":"        super(Acs5000ISCSIDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"2d88fd50_cb8c4e07","line":40,"in_reply_to":"95c1bd98_e4451a63","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":59,"context_line":"                  \u0027 %(conn)s\u0027, {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":60,"context_line":"        volume_name \u003d acs5000_common.VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":61,"context_line":"        target \u003d self.configuration.acs5000_target"},{"line_number":62,"context_line":"        lun_info \u003d self._cmd.create_lun_map(volume_name,"},{"line_number":63,"context_line":"                                            \u0027WITH_ISCSI\u0027,"},{"line_number":64,"context_line":"                                            connector[\u0027initiator\u0027],"},{"line_number":65,"context_line":"                                            str(target))"}],"source_content_type":"text/x-python","patch_set":10,"id":"31bf05f0_45f5367e","line":62,"range":{"start_line":62,"start_character":29,"end_line":62,"end_character":43},"updated":"2021-01-15 21:06:49.000000000","message":"Does this handle subsequent calls? If the connection has already been initialized, then the driver needs to return the existing information. Make sure this can handle multiple calls.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                  \u0027 %(conn)s\u0027, {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":60,"context_line":"        volume_name \u003d acs5000_common.VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":61,"context_line":"        target \u003d self.configuration.acs5000_target"},{"line_number":62,"context_line":"        lun_info \u003d self._cmd.create_lun_map(volume_name,"},{"line_number":63,"context_line":"                                            \u0027WITH_ISCSI\u0027,"},{"line_number":64,"context_line":"                                            connector[\u0027initiator\u0027],"},{"line_number":65,"context_line":"                                            str(target))"}],"source_content_type":"text/x-python","patch_set":10,"id":"74ffd7bb_a7f26e06","line":62,"range":{"start_line":62,"start_character":29,"end_line":62,"end_character":43},"in_reply_to":"31bf05f0_45f5367e","updated":"2021-01-19 05:41:39.000000000","message":"Thanks,We have already considered the connection being initialized in the storage systems api.\nThe connector[\u0027initiator\u0027] will be taken as initiator.\n\nIf the create_lun_map method is called repeatedly,or initiator is a list.\nThe storage systems api will check for existing mappings.\nIf the volume has been mapped to a initiator.the storage systems will return LUN number and no longer map to the initiator.\n\nOf course, the same volume can map to different initiator at the same time.\nThe storage system will try to use the same LUN number mapping.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6e8d0c406cdc0b40df3afb3264edfe1fac9cbe6","unresolved":true,"context_lines":[{"line_number":32,"context_line":"        default\u003d0,"},{"line_number":33,"context_line":"        min\u003d0,"},{"line_number":34,"context_line":"        max\u003d127,"},{"line_number":35,"context_line":"        help\u003d\u0027A storage system iSCSI support 0 - 127 targets.\u0027)"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":16,"id":"a4926062_658cd3b4","line":35,"updated":"2021-01-20 15:48:27.000000000","message":"I still don\u0027t think this is worded well. Just reading this, I\u0027m really not sure what this config option does. Might be worth coming up with a better description.","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"6a23a3bbb0eaeb55085d8b4281482908f1896cfd","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        default\u003d0,"},{"line_number":33,"context_line":"        min\u003d0,"},{"line_number":34,"context_line":"        max\u003d127,"},{"line_number":35,"context_line":"        help\u003d\u0027A storage system iSCSI support 0 - 127 targets.\u0027)"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":16,"id":"ed96afeb_260dd66f","line":35,"in_reply_to":"a4926062_658cd3b4","updated":"2021-01-20 18:33:08.000000000","message":"Devices connected to the SCSI bus are usually described by the target ID(also known as the SCSI ID). Multiple LUN numbers can be supported under a target. A single device is usually identified by the target and the LUN.\n\nI\u0027m going to explain it this way, okay","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6e8d0c406cdc0b40df3afb3264edfe1fac9cbe6","unresolved":true,"context_lines":[{"line_number":39,"context_line":"CONF.register_opts(acs5000_iscsi_opts)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class Acs5000ISCSIDriver(acs5000_common.Acs5000CommonDriver):"},{"line_number":43,"context_line":"    \"\"\"TOYOU ACS5000 storage iSCSI volume driver."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    .. code-block:: none"}],"source_content_type":"text/x-python","patch_set":16,"id":"a78ae6f5_6bb2d7d2","line":42,"updated":"2021-01-20 15:48:27.000000000","message":"Still needs @interface.volumedriver decorator.","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"6a23a3bbb0eaeb55085d8b4281482908f1896cfd","unresolved":false,"context_lines":[{"line_number":39,"context_line":"CONF.register_opts(acs5000_iscsi_opts)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class Acs5000ISCSIDriver(acs5000_common.Acs5000CommonDriver):"},{"line_number":43,"context_line":"    \"\"\"TOYOU ACS5000 storage iSCSI volume driver."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    .. code-block:: none"}],"source_content_type":"text/x-python","patch_set":16,"id":"56ecdcc1_753eba61","line":42,"in_reply_to":"a78ae6f5_6bb2d7d2","updated":"2021-01-20 18:33:08.000000000","message":"Done","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6e8d0c406cdc0b40df3afb3264edfe1fac9cbe6","unresolved":true,"context_lines":[{"line_number":113,"context_line":"        LOG.debug(\u0027terminate_connection: volume %(vol)s with connector \u0027"},{"line_number":114,"context_line":"                  \u0027%(conn)s\u0027, {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":115,"context_line":"        info \u003d {\u0027driver_volume_type\u0027: \u0027iscsi\u0027, \u0027data\u0027: {}}"},{"line_number":116,"context_line":"        if connector and connector[\u0027initiator\u0027]:"},{"line_number":117,"context_line":"            name \u003d acs5000_common.VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":118,"context_line":"            target \u003d self.configuration.acs5000_target"},{"line_number":119,"context_line":"            self._cmd.delete_lun_map(name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"2710c23d_eab92fd4","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":48},"updated":"2021-01-20 15:48:27.000000000","message":"There is no else block here to handle when a connector is not provided. The driver needs to remove all export/mapping of the volume if a specific connection is not supplied.","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"6a23a3bbb0eaeb55085d8b4281482908f1896cfd","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        LOG.debug(\u0027terminate_connection: volume %(vol)s with connector \u0027"},{"line_number":114,"context_line":"                  \u0027%(conn)s\u0027, {\u0027vol\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":115,"context_line":"        info \u003d {\u0027driver_volume_type\u0027: \u0027iscsi\u0027, \u0027data\u0027: {}}"},{"line_number":116,"context_line":"        if connector and connector[\u0027initiator\u0027]:"},{"line_number":117,"context_line":"            name \u003d acs5000_common.VOLUME_PREFIX + volume[\u0027name\u0027][-12:]"},{"line_number":118,"context_line":"            target \u003d self.configuration.acs5000_target"},{"line_number":119,"context_line":"            self._cmd.delete_lun_map(name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"04efaf19_eb981b7c","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":48},"in_reply_to":"2710c23d_eab92fd4","updated":"2021-01-20 18:33:08.000000000","message":"Done","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"24e87bb47baf298dca70959c0414473beb1cf169","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        min\u003d0,"},{"line_number":35,"context_line":"        max\u003d127,"},{"line_number":36,"context_line":"        help\u003d\u0027A storage system iSCSI support 0 - 127 targets. \u0027"},{"line_number":37,"context_line":"             \u0027Devices connected to the SCSI bus are usually \u0027"},{"line_number":38,"context_line":"             \u0027described by the target ID(also known as the SCSI ID). \u0027"},{"line_number":39,"context_line":"             \u0027Multiple LUN numbers can be supported under a target. \u0027"},{"line_number":40,"context_line":"             \u0027A single device is usually identified \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4f62fe_56d9a7a3","line":37,"updated":"2021-01-20 20:21:19.000000000","message":"So what does this config option do? Limit the number of SCSI targets the storage is able to expose? Why would an administrator want to do so? What happens if they set it to 0?\n\nStill not clear what this config option is for, but I think that could be addressed in a future patch to improve it.","commit_id":"fe0822b1bcd42d3d77e06b3e383d5ee6b22f25e9"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"fd488062bcb8188f8dc97f774133235a888eea91","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        min\u003d0,"},{"line_number":35,"context_line":"        max\u003d127,"},{"line_number":36,"context_line":"        help\u003d\u0027A storage system iSCSI support 0 - 127 targets. \u0027"},{"line_number":37,"context_line":"             \u0027Devices connected to the SCSI bus are usually \u0027"},{"line_number":38,"context_line":"             \u0027described by the target ID(also known as the SCSI ID). \u0027"},{"line_number":39,"context_line":"             \u0027Multiple LUN numbers can be supported under a target. \u0027"},{"line_number":40,"context_line":"             \u0027A single device is usually identified \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"40cbbf71_7e74e8f0","line":37,"in_reply_to":"3f4f62fe_56d9a7a3","updated":"2021-01-21 01:19:27.000000000","message":"OK,we will improve it in future patch.","commit_id":"fe0822b1bcd42d3d77e06b3e383d5ee6b22f25e9"}],"doc/source/configuration/block-storage/drivers/toyou-acs5000-driver.rst":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11a44f7272423fa1cf568d9a4a372cf58ebf34cc","unresolved":true,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"TOYOU ACS5000 iSCSI driver"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1f085676_a70b6726","line":1,"range":{"start_line":1,"start_character":26,"end_line":1,"end_character":27},"updated":"2021-01-15 21:06:49.000000000","message":"nit: Header lines are a character too long.","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"TOYOU ACS5000 iSCSI driver"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"4feb25a4_242be4d5","line":1,"range":{"start_line":1,"start_character":26,"end_line":1,"end_character":27},"in_reply_to":"1f085676_a70b6726","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"TOYOU ACS5000 series volume driver provides OpenStack Compute instances"},{"line_number":6,"context_line":"with access to TOYOU ACS5000 series storage system."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"TOYOU ACS5000 storage can be used with iSCSI connection."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"a3780fc4_c67e8db9","line":6,"range":{"start_line":6,"start_character":44,"end_line":6,"end_character":51},"updated":"2021-01-15 20:41:56.000000000","message":"systems","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"TOYOU ACS5000 series volume driver provides OpenStack Compute instances"},{"line_number":6,"context_line":"with access to TOYOU ACS5000 series storage system."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"TOYOU ACS5000 storage can be used with iSCSI connection."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"df4a5d28_1726cf54","line":6,"range":{"start_line":6,"start_character":44,"end_line":6,"end_character":51},"in_reply_to":"a3780fc4_c67e8db9","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a35d7b7a6eda20413bd39d526c56048e51844145","unresolved":true,"context_lines":[{"line_number":48,"context_line":"       enabled_backends \u003d ACS5000-1"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"#. Add a backend group section for backend group specified"},{"line_number":52,"context_line":"   in the enabled_backends parameter."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"#. In the newly created backend group section, set the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"cf9519ef_4eaf04e1","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":42},"updated":"2021-01-15 20:41:56.000000000","message":"for the backend","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"2f8f680b8454cf8f12461d7d785f3a64a59a4248","unresolved":false,"context_lines":[{"line_number":48,"context_line":"       enabled_backends \u003d ACS5000-1"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"#. Add a backend group section for backend group specified"},{"line_number":52,"context_line":"   in the enabled_backends parameter."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"#. In the newly created backend group section, set the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"b10088b8_336b8c1e","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":42},"in_reply_to":"cf9519ef_4eaf04e1","updated":"2021-01-19 05:41:39.000000000","message":"Done","commit_id":"e85567e3227487106dcb92beeb7ccdc0950b9bf3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b6e8d0c406cdc0b40df3afb3264edfe1fac9cbe6","unresolved":true,"context_lines":[{"line_number":19,"context_line":".. config-table::"},{"line_number":20,"context_line":"   :config-target: TOYOU ACS5000"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"   cinder.volume.drivers.toyou.acs5000.acs5000_iscsi"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Supported operations"},{"line_number":25,"context_line":"~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":16,"id":"d70a04b8_00e7d0d4","line":22,"updated":"2021-01-20 15:48:27.000000000","message":"I think you also need to add:\n\ncinder.volume.drivers.toyou.acs5000.acs5000_common","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"},{"author":{"_account_id":32833,"name":"yangheng","email":"yangheng@toyou.com.cn","username":"yangheng"},"change_message_id":"6a23a3bbb0eaeb55085d8b4281482908f1896cfd","unresolved":false,"context_lines":[{"line_number":19,"context_line":".. config-table::"},{"line_number":20,"context_line":"   :config-target: TOYOU ACS5000"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"   cinder.volume.drivers.toyou.acs5000.acs5000_iscsi"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Supported operations"},{"line_number":25,"context_line":"~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":16,"id":"d9e774c0_c9b60f81","line":22,"in_reply_to":"d70a04b8_00e7d0d4","updated":"2021-01-20 18:33:08.000000000","message":"Done","commit_id":"430242c354c5ab31025feef6ba285fbe9967fc78"}]}
