)]}'
{"cinder/volume/drivers/ibm/storwize_svc/__init__.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"7d314654c6e6727e453a24d7c9716238685e8837","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                    \u0027Example: \"pool2\"\u0027),"},{"line_number":123,"context_line":"]"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"storwize_svc_replica_opts \u003d ["},{"line_number":126,"context_line":"    cfg.StrOpt(\u0027replica_san_ip\u0027,"},{"line_number":127,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":128,"context_line":"               help\u003d\u0027IP address of replica SAN controller\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_62490932","line":125,"updated":"2014-12-30 11:40:04.000000000","message":"These options are generic and should not be defined in the driver","commit_id":"6aa1f77d6dc6c1ed241f58735abaf734b0433f1f"},{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"988d321e472310a3358b676ac9a8f27aa8af7e35","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                    \u0027Example: \"pool2\"\u0027),"},{"line_number":123,"context_line":"]"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"storwize_svc_replica_opts \u003d ["},{"line_number":126,"context_line":"    cfg.StrOpt(\u0027replica_san_ip\u0027,"},{"line_number":127,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":128,"context_line":"               help\u003d\u0027IP address of replica SAN controller\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_d50b4322","line":125,"in_reply_to":"3a961159_62490932","updated":"2014-12-31 07:21:06.000000000","message":"Hi Avishay\nThese configurations are for stowize remote backend login information.\n\nI think Limin should change these name as storwize_svc_XXXXX\n\nsuch like storwize_svc_replica_san_ip.\n\nIs this you want ?","commit_id":"6aa1f77d6dc6c1ed241f58735abaf734b0433f1f"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"82e3731c3077cdedb66de2ea9e873970d97e391b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                    \u0027Example: \"pool2\"\u0027),"},{"line_number":123,"context_line":"]"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"storwize_svc_replica_opts \u003d ["},{"line_number":126,"context_line":"    cfg.StrOpt(\u0027replica_san_ip\u0027,"},{"line_number":127,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":128,"context_line":"               help\u003d\u0027IP address of replica SAN controller\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_850251b2","line":125,"in_reply_to":"3a961159_9257f525","updated":"2015-01-04 08:57:07.000000000","message":"hi, Avishay and tao:\n\nThanks for your comments, the main point is how to address \"run_ssh\" for the replica backend. It\u0027s nice to remain it generic, but as tao\u0027s misgiving, that may be not the expectation of the other storage. I think it\u0027s a good way to talk about this item on Cinder IRC.\n\nthanks again.","commit_id":"6aa1f77d6dc6c1ed241f58735abaf734b0433f1f"},{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"bb50a79b716e1986ed74497eae2f2af3da7d6b64","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                    \u0027Example: \"pool2\"\u0027),"},{"line_number":123,"context_line":"]"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"storwize_svc_replica_opts \u003d ["},{"line_number":126,"context_line":"    cfg.StrOpt(\u0027replica_san_ip\u0027,"},{"line_number":127,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":128,"context_line":"               help\u003d\u0027IP address of replica SAN controller\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_9257f525","line":125,"in_reply_to":"3a961159_b511575f","updated":"2015-01-04 08:02:22.000000000","message":"Hi Avishay\n\nIt\u0027s a good idea, but I am not sure what\u0027s other company\u0027s expactation.How do you think make a discussion on Cinder IRC meeting about this?  And I think only the 4 config items are needed for general.Do you agree?\n\nreplica_san_ip, \nreplica_san_login, \nreplica_san_password, \nreplica_san_private_key","commit_id":"6aa1f77d6dc6c1ed241f58735abaf734b0433f1f"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"e947f157e3b1e8a9c0bce6bc54e3799ecf36d9f5","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                    \u0027Example: \"pool2\"\u0027),"},{"line_number":123,"context_line":"]"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"storwize_svc_replica_opts \u003d ["},{"line_number":126,"context_line":"    cfg.StrOpt(\u0027replica_san_ip\u0027,"},{"line_number":127,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":128,"context_line":"               help\u003d\u0027IP address of replica SAN controller\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b511575f","line":125,"in_reply_to":"3a961159_d50b4322","updated":"2014-12-31 08:43:56.000000000","message":"No, I want them to remain generic so that every SAN that implements replication doesn\u0027t add its own options, but I want them to be in a generic place like san.py","commit_id":"6aa1f77d6dc6c1ed241f58735abaf734b0433f1f"},{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"bb50a79b716e1986ed74497eae2f2af3da7d6b64","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirror_partner\u0027,"},{"line_number":143,"context_line":"               default\u003dNone,"},{"line_number":144,"context_line":"               help\u003d\u0027replication supported, if set True, should set the \u0027"},{"line_number":145,"context_line":"                    \u0027replica SAN controller\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027replica_backend\u0027,"},{"line_number":147,"context_line":"               default\u003dNone,"},{"line_number":148,"context_line":"               help\u003d\u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_453949d7","line":145,"updated":"2015-01-04 08:02:22.000000000","message":"Hi Limin\n\nJust have a question.\nIs this item necessary?  How do you think just check replica_san_ip, replica_XX  as replacement?","commit_id":"6aa1f77d6dc6c1ed241f58735abaf734b0433f1f"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"82e3731c3077cdedb66de2ea9e873970d97e391b","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    cfg.StrOpt(\u0027storwize_svc_mirror_partner\u0027,"},{"line_number":143,"context_line":"               default\u003dNone,"},{"line_number":144,"context_line":"               help\u003d\u0027replication supported, if set True, should set the \u0027"},{"line_number":145,"context_line":"                    \u0027replica SAN controller\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027replica_backend\u0027,"},{"line_number":147,"context_line":"               default\u003dNone,"},{"line_number":148,"context_line":"               help\u003d\u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_855411cb","line":145,"in_reply_to":"3a961159_453949d7","updated":"2015-01-04 08:57:07.000000000","message":"I think it\u0027s OK.","commit_id":"6aa1f77d6dc6c1ed241f58735abaf734b0433f1f"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"14828216d929124ab2c3776e571a17bf65c12eb7","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        except Exception:"},{"line_number":247,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":248,"context_line":"                LOG.error(_(\"Error running SSH command: %s\") % command)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def do_setup(self, ctxt):"},{"line_number":251,"context_line":"        \"\"\"Check that we have all configuration details from the storage.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_b79db1bd","line":248,"updated":"2015-01-05 14:44:02.000000000","message":"As per below document please use _LE for LOG.error\n[1] http://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"fc5622b275d8adcd2a6362411537bd62734fa8af","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        except Exception:"},{"line_number":247,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":248,"context_line":"                LOG.error(_(\"Error running SSH command: %s\") % command)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def do_setup(self, ctxt):"},{"line_number":251,"context_line":"        \"\"\"Check that we have all configuration details from the storage.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_8d8c1682","line":248,"in_reply_to":"3a961159_b79db1bd","updated":"2015-01-06 01:50:11.000000000","message":"Thanks, will update next patch.","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                            ssh,"},{"line_number":227,"context_line":"                            command,"},{"line_number":228,"context_line":"                            check_exit_code\u003dcheck_exit_code)"},{"line_number":229,"context_line":"                    except Exception as e:"},{"line_number":230,"context_line":"                        LOG.error(e)"},{"line_number":231,"context_line":"                        last_exception \u003d e"},{"line_number":232,"context_line":"                        greenthread.sleep(random.randint(20, 500) / 100.0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_572606cf","line":229,"updated":"2015-01-07 15:03:40.000000000","message":"Could you, please, catch more specific exception here?","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"deff5a71e7609860d1bdd203ac5768ae9d57d681","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                            ssh,"},{"line_number":227,"context_line":"                            command,"},{"line_number":228,"context_line":"                            check_exit_code\u003dcheck_exit_code)"},{"line_number":229,"context_line":"                    except Exception as e:"},{"line_number":230,"context_line":"                        LOG.error(e)"},{"line_number":231,"context_line":"                        last_exception \u003d e"},{"line_number":232,"context_line":"                        greenthread.sleep(random.randint(20, 500) / 100.0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_4f91ff50","line":229,"in_reply_to":"3a961159_572606cf","updated":"2015-01-08 01:25:38.000000000","message":"Thanks Ivan?\nthis will put to general part later, see https://review.openstack.org/#/c/145113/","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                    except Exception as e:"},{"line_number":230,"context_line":"                        LOG.error(e)"},{"line_number":231,"context_line":"                        last_exception \u003d e"},{"line_number":232,"context_line":"                        greenthread.sleep(random.randint(20, 500) / 100.0)"},{"line_number":233,"context_line":"                try:"},{"line_number":234,"context_line":"                    raise processutils.ProcessExecutionError("},{"line_number":235,"context_line":"                        exit_code\u003dlast_exception.exit_code,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_fa03590a","line":232,"updated":"2015-01-07 15:03:40.000000000","message":"Not sure that it\u0027s a right place for sleep. Why did we need it with default params (attempts\u003d1)?","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"41b3f070b80fae6f212385a17d7cc2307c706a2d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"               help\u003d\u0027Storage system storage pool for volumes\u0027),"},{"line_number":125,"context_line":"    cfg.StrOpt(\u0027replica_backend_name\u0027,"},{"line_number":126,"context_line":"               default\u003dNone,"},{"line_number":127,"context_line":"               help\u003d\u0027\u0027),"},{"line_number":128,"context_line":"]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_6995a231","line":127,"updated":"2015-01-19 15:03:03.000000000","message":"Please, add help message to make it more user-friendly","commit_id":"b565f6753d74bac076686ee3bb1317a20ce83542"}],"cinder/volume/drivers/ibm/storwize_svc/helpers.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3579128877b78e8860897430c63a7d0e37a96142","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        \"\"\"Create Metro/Globle Mirror"},{"line_number":977,"context_line":"        Return random name with 15 chars."},{"line_number":978,"context_line":"        \"\"\""},{"line_number":979,"context_line":"        while True:"},{"line_number":980,"context_line":"            name \u003d \u0027rcrel\u0027 + \u0027\u0027.join(random.sample(string.digits, 10))"},{"line_number":981,"context_line":"            try:"},{"line_number":982,"context_line":"                rc_id \u003d self.ssh.mkrcrelationship(master, aux, system, name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_6ee45dac","line":979,"updated":"2015-01-05 10:47:45.000000000","message":"Please, add comment for this loop and error-handling","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"fc5622b275d8adcd2a6362411537bd62734fa8af","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        \"\"\"Create Metro/Globle Mirror"},{"line_number":977,"context_line":"        Return random name with 15 chars."},{"line_number":978,"context_line":"        \"\"\""},{"line_number":979,"context_line":"        while True:"},{"line_number":980,"context_line":"            name \u003d \u0027rcrel\u0027 + \u0027\u0027.join(random.sample(string.digits, 10))"},{"line_number":981,"context_line":"            try:"},{"line_number":982,"context_line":"                rc_id \u003d self.ssh.mkrcrelationship(master, aux, system, name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_cdd0de55","line":979,"in_reply_to":"3a961159_6ee45dac","updated":"2015-01-06 01:50:11.000000000","message":"thanks, will update next patch.","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"14828216d929124ab2c3776e571a17bf65c12eb7","unresolved":false,"context_lines":[{"line_number":1002,"context_line":"        vol_attrs \u003d self.get_vdisk_attributes(volume[\u0027name\u0027])"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"        if not vol_attrs or not vol_attrs[\u0027RC_name\u0027]:"},{"line_number":1005,"context_line":"            LOG.info(\"Couldnot get remote copy information for volume %s\""},{"line_number":1006,"context_line":"                     % volume[\u0027name\u0027])"},{"line_number":1007,"context_line":"            return"},{"line_number":1008,"context_line":"        return self.ssh.lsrcrelationship(vol_attrs[\u0027RC_name\u0027])[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_17dcc573","line":1005,"updated":"2015-01-05 14:44:02.000000000","message":"Please use _LI for LOG.info\n\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"fc5622b275d8adcd2a6362411537bd62734fa8af","unresolved":false,"context_lines":[{"line_number":1002,"context_line":"        vol_attrs \u003d self.get_vdisk_attributes(volume[\u0027name\u0027])"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"        if not vol_attrs or not vol_attrs[\u0027RC_name\u0027]:"},{"line_number":1005,"context_line":"            LOG.info(\"Couldnot get remote copy information for volume %s\""},{"line_number":1006,"context_line":"                     % volume[\u0027name\u0027])"},{"line_number":1007,"context_line":"            return"},{"line_number":1008,"context_line":"        return self.ssh.lsrcrelationship(vol_attrs[\u0027RC_name\u0027])[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_cdd37e36","line":1005,"in_reply_to":"3a961159_17dcc573","updated":"2015-01-06 01:50:11.000000000","message":"will update next patch.","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"41b3f070b80fae6f212385a17d7cc2307c706a2d","unresolved":false,"context_lines":[{"line_number":1004,"context_line":""},{"line_number":1005,"context_line":"        if not vol_attrs or not vol_attrs[\u0027RC_name\u0027]:"},{"line_number":1006,"context_line":"            LOG.info(_LI(\"Couldnot get remote copy information for volume %s\")"},{"line_number":1007,"context_line":"                     % volume[\u0027name\u0027])"},{"line_number":1008,"context_line":"            return"},{"line_number":1009,"context_line":"        return self.ssh.lsrcrelationship(vol_attrs[\u0027RC_name\u0027])[0]"},{"line_number":1010,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_09a6deab","line":1007,"updated":"2015-01-19 15:03:03.000000000","message":"% \u003d\u003e ,","commit_id":"b565f6753d74bac076686ee3bb1317a20ce83542"}],"cinder/volume/drivers/ibm/storwize_svc/replication.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3579128877b78e8860897430c63a7d0e37a96142","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        opts \u003d self.driver._get_vdisk_params(vol_type)"},{"line_number":221,"context_line":"        pool \u003d self.conf.replica_storwize_svc_volpool_name"},{"line_number":222,"context_line":"        #TODO(replica volume information)"},{"line_number":223,"context_line":"        replica_name \u003d volume[\u0027name\u0027].replace(\u0027volume\u0027, \u0027replica\u0027)"},{"line_number":224,"context_line":"        self._replica_helpers.create_vdisk(replica_name,"},{"line_number":225,"context_line":"                                           str(volume[\u0027size\u0027]),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_cef0f168","line":222,"updated":"2015-01-05 10:47:45.000000000","message":"Please, reformat comment to:\n# TODO: replica volume information","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"fc5622b275d8adcd2a6362411537bd62734fa8af","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        opts \u003d self.driver._get_vdisk_params(vol_type)"},{"line_number":221,"context_line":"        pool \u003d self.conf.replica_storwize_svc_volpool_name"},{"line_number":222,"context_line":"        #TODO(replica volume information)"},{"line_number":223,"context_line":"        replica_name \u003d volume[\u0027name\u0027].replace(\u0027volume\u0027, \u0027replica\u0027)"},{"line_number":224,"context_line":"        self._replica_helpers.create_vdisk(replica_name,"},{"line_number":225,"context_line":"                                           str(volume[\u0027size\u0027]),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_cd9b7ec7","line":222,"in_reply_to":"3a961159_cef0f168","updated":"2015-01-06 01:50:11.000000000","message":"Thanks Ivan, the comments will be removed when code finished.","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3579128877b78e8860897430c63a7d0e37a96142","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def delete_replica(self, volume):"},{"line_number":244,"context_line":"        LOG.debug(\u0027enter: delete_replica for volume %s.\u0027 % volume[\u0027name\u0027])"},{"line_number":245,"context_line":"        self._helpers.delete_relationship(volume)"},{"line_number":246,"context_line":"        #TODO(change replica volume name)"},{"line_number":247,"context_line":"        replica_name \u003d volume[\u0027name\u0027].replace(\u0027volume\u0027, \u0027replica\u0027)"},{"line_number":248,"context_line":"        self._replica_helpers.delete_vdisk(replica_name, False)"},{"line_number":249,"context_line":"        LOG.debug(\u0027exit: delete_replica for volume %s.\u0027 % volume[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_2e017539","line":246,"updated":"2015-01-05 10:47:45.000000000","message":"Same here","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"14828216d929124ab2c3776e571a17bf65c12eb7","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        try:"},{"line_number":256,"context_line":"            rel_info \u003d self._helpers.get_relationship_info(volume)"},{"line_number":257,"context_line":"        except exception.VolumeBackendAPIException as e:"},{"line_number":258,"context_line":"            LOG.error(\u0027Cannot get remote copy information as %s\u0027 % e)"},{"line_number":259,"context_line":"            replication_status \u003d \u0027error\u0027"},{"line_number":260,"context_line":"            host \u003d self._get_replica_host(volume)"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_57bd6d01","line":258,"updated":"2015-01-05 14:44:02.000000000","message":"Use _LE for LOG.error","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"fc5622b275d8adcd2a6362411537bd62734fa8af","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        try:"},{"line_number":256,"context_line":"            rel_info \u003d self._helpers.get_relationship_info(volume)"},{"line_number":257,"context_line":"        except exception.VolumeBackendAPIException as e:"},{"line_number":258,"context_line":"            LOG.error(\u0027Cannot get remote copy information as %s\u0027 % e)"},{"line_number":259,"context_line":"            replication_status \u003d \u0027error\u0027"},{"line_number":260,"context_line":"            host \u003d self._get_replica_host(volume)"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_6dac4aee","line":258,"in_reply_to":"3a961159_57bd6d01","updated":"2015-01-06 01:50:11.000000000","message":"thanks, will be addressed next patch.","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3579128877b78e8860897430c63a7d0e37a96142","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            host \u003d self._get_replica_host(volume)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        # Wait if the relationship is inreplication_status"},{"line_number":263,"context_line":"        if rel_info[\u0027state\u0027] in [\u0027inconsistent_copying\u0027]:"},{"line_number":264,"context_line":"            msg \u003d _(\u0027Relationship is copying, wait until consistent\u0027)"},{"line_number":265,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_2e8895c5","line":263,"updated":"2015-01-05 10:47:45.000000000","message":"What will be if previous exception handled? Not sure that rel_info will be available","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"fc5622b275d8adcd2a6362411537bd62734fa8af","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            host \u003d self._get_replica_host(volume)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        # Wait if the relationship is inreplication_status"},{"line_number":263,"context_line":"        if rel_info[\u0027state\u0027] in [\u0027inconsistent_copying\u0027]:"},{"line_number":264,"context_line":"            msg \u003d _(\u0027Relationship is copying, wait until consistent\u0027)"},{"line_number":265,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_2d7ec26a","line":263,"in_reply_to":"3a961159_2e8895c5","updated":"2015-01-06 01:50:11.000000000","message":"will update next patch","commit_id":"a842ed5fcf2ead24adb39adbb1ce43587fadce42"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        1. create a new volume to be used as the secondary copy"},{"line_number":213,"context_line":"        2. create relationship between primary and secondary"},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":"        LOG.debug(\u0027enter: create_replica for volume %s.\u0027 % volume[\u0027name\u0027])"},{"line_number":216,"context_line":"        if vol_type is None:"},{"line_number":217,"context_line":"            vol_type \u003d volume[\u0027volume_type_id\u0027]"},{"line_number":218,"context_line":"            vol_type \u003d volume_types.get_volume_type(ctxt, vol_type)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_7a3da9ba","line":215,"updated":"2015-01-07 15:03:40.000000000","message":"Logging formatting should use \u0027,\u0027, not \u0027%\u0027.","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                                                 self._state[\u0027system_name\u0027],"},{"line_number":237,"context_line":"                                                 globalmirror)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        LOG.debug(\u0027exit: create_replica for volume %s.\u0027 % volume[\u0027name\u0027])"},{"line_number":240,"context_line":"        return {\u0027replication_name\u0027: name}"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def delete_replica(self, volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_3a6fa1c5","line":239,"updated":"2015-01-07 15:03:40.000000000","message":"% \u003d\u003e ,","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        return {\u0027replication_name\u0027: name}"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def delete_replica(self, volume):"},{"line_number":243,"context_line":"        LOG.debug(\u0027enter: delete_replica for volume %s.\u0027 % volume[\u0027name\u0027])"},{"line_number":244,"context_line":"        self._helpers.delete_relationship(volume)"},{"line_number":245,"context_line":"        replica_name \u003d volume[\u0027name\u0027].replace(\u0027volume\u0027, \u0027replica\u0027)"},{"line_number":246,"context_line":"        self._replica_helpers.delete_vdisk(replica_name, False)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_fa78b990","line":243,"updated":"2015-01-07 15:03:40.000000000","message":"% \u003d\u003e ,","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self._helpers.delete_relationship(volume)"},{"line_number":245,"context_line":"        replica_name \u003d volume[\u0027name\u0027].replace(\u0027volume\u0027, \u0027replica\u0027)"},{"line_number":246,"context_line":"        self._replica_helpers.delete_vdisk(replica_name, False)"},{"line_number":247,"context_line":"        LOG.debug(\u0027exit: delete_replica for volume %s.\u0027 % volume[\u0027name\u0027])"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def promote_replica(self, volume):"},{"line_number":250,"context_line":"        LOG.debug(\u0027enter: promote_replica for volume %(vol)s on %(host)s.\u0027 %"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_9a5fb50e","line":247,"updated":"2015-01-07 15:03:40.000000000","message":"% \u003d\u003e ,","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        LOG.debug(\u0027exit: delete_replica for volume %s.\u0027 % volume[\u0027name\u0027])"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def promote_replica(self, volume):"},{"line_number":250,"context_line":"        LOG.debug(\u0027enter: promote_replica for volume %(vol)s on %(host)s.\u0027 %"},{"line_number":251,"context_line":"                  {\u0027vol\u0027: volume[\u0027name\u0027], \u0027host\u0027: volume[\u0027host\u0027]})"},{"line_number":252,"context_line":"        try:"},{"line_number":253,"context_line":"            rel_info \u003d self._replica_helpers.get_relationship_info(volume)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_1a6ca5cf","line":250,"updated":"2015-01-07 15:03:40.000000000","message":"% \u003d\u003e ,","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"6f2b6ce13a53f27b6e1087a611944dcbc5ab874f","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            rel_info \u003d self._replica_helpers.get_relationship_info(volume)"},{"line_number":254,"context_line":"        except exception.VolumeBackendAPIException as e:"},{"line_number":255,"context_line":"            msg \u003d _(\u0027Fail to get remote copy information for %(volume)s as \u0027"},{"line_number":256,"context_line":"                    \u0027%(err)s\u0027) % {\u0027volume\u0027: volume[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":257,"context_line":"            LOG.error(msg)"},{"line_number":258,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_946e73c6","line":256,"updated":"2015-01-09 05:41:00.000000000","message":"should add _LE for error message.\n\nThere is some update for i18n for different log type:\n\n_LI \u003d _translators.log_info\n\n_LW \u003d _translators.log_warning\n\n_LE \u003d _translators.log_error\n\n_LC \u003d _translators.log_critical","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        except exception.VolumeBackendAPIException as e:"},{"line_number":255,"context_line":"            msg \u003d _(\u0027Fail to get remote copy information for %(volume)s as \u0027"},{"line_number":256,"context_line":"                    \u0027%(err)s\u0027) % {\u0027volume\u0027: volume[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":257,"context_line":"            LOG.error(msg)"},{"line_number":258,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        # Wait if the relationship is inreplication_status"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_7a64c9e4","line":257,"updated":"2015-01-07 15:03:40.000000000","message":"% \u003d\u003e ,","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        host \u003d self._get_replica_host(volume)"},{"line_number":280,"context_line":"        model_update \u003d {\u0027replication_status\u0027: replication_status,"},{"line_number":281,"context_line":"                        \u0027host\u0027: host}"},{"line_number":282,"context_line":"        LOG.debug(\u0027enter: promote_replica for volume %(vol)s on %(host)s.\u0027 %"},{"line_number":283,"context_line":"                  {\u0027vol\u0027: volume[\u0027name\u0027], \u0027host\u0027: host})"},{"line_number":284,"context_line":"        return model_update"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_ba5ab11b","line":282,"updated":"2015-01-07 15:03:40.000000000","message":"% \u003d\u003e ,","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"6f2b6ce13a53f27b6e1087a611944dcbc5ab874f","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        try:"},{"line_number":290,"context_line":"            rel_info \u003d self._helpers.get_relationship_info(volume)"},{"line_number":291,"context_line":"        except exception.VolumeBackendAPIException as e:"},{"line_number":292,"context_line":"            msg \u003d _(\u0027Fail to get remote copy information for %(volume)s as \u0027"},{"line_number":293,"context_line":"                    \u0027%(err)s\u0027) % {\u0027volume\u0027: volume[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":294,"context_line":"            LOG.error(msg)"},{"line_number":295,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_145a831d","line":292,"updated":"2015-01-09 05:41:00.000000000","message":"_LE","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def get_replication_info(self):"},{"line_number":304,"context_line":"        data \u003d {}"},{"line_number":305,"context_line":"        data[\u0027replication\u0027] \u003d True"},{"line_number":306,"context_line":"        return data"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def get_replication_status(self, volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_3a7de16d","line":305,"updated":"2015-01-07 15:03:40.000000000","message":"Could be simplified to:\nreturn {\u0027replication\u0027: True}","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"deff5a71e7609860d1bdd203ac5768ae9d57d681","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def get_replication_info(self):"},{"line_number":304,"context_line":"        data \u003d {}"},{"line_number":305,"context_line":"        data[\u0027replication\u0027] \u003d True"},{"line_number":306,"context_line":"        return data"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def get_replication_status(self, volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_4f9f3f50","line":305,"in_reply_to":"3a961159_3a7de16d","updated":"2015-01-08 01:25:38.000000000","message":"yes, there is no more metadata needed for storwize driver.","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        inconsistent_stopped, consistent_stopped \u003d\u003e error"},{"line_number":317,"context_line":"        idling, idling_disconnected \u003d\u003e error"},{"line_number":318,"context_line":"        \"\"\""},{"line_number":319,"context_line":"        LOG.debug(\u0027enter: get_replication_status for volume %s.\u0027 %"},{"line_number":320,"context_line":"                  volume[\u0027name\u0027])"},{"line_number":321,"context_line":"        if volume[\u0027replication_status\u0027] \u003d\u003d \u0027disabled\u0027:"},{"line_number":322,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_9a8df57e","line":319,"updated":"2015-01-07 15:03:40.000000000","message":"% \u003d\u003e ,","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            ret \u003d {\u0027replication_status\u0027: \u0027error\u0027,"},{"line_number":347,"context_line":"                   \u0027replication_extended_status\u0027: ext}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        LOG.debug(\u0027exit: get_replication_status for volume %s.\u0027 %"},{"line_number":350,"context_line":"                  volume[\u0027name\u0027])"},{"line_number":351,"context_line":"        if orig !\u003d (ret[\u0027replication_status\u0027],"},{"line_number":352,"context_line":"                    ret[\u0027replication_extended_status\u0027]):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_ba88f16b","line":349,"updated":"2015-01-07 15:03:40.000000000","message":"% \u003d\u003e ,","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        host \u003d vol_utils.extract_host(volume[\u0027host\u0027], level\u003d\u0027host\u0027)"},{"line_number":358,"context_line":"        replica_backend \u003d self.conf.safe_get(\u0027replica_backend\u0027)"},{"line_number":359,"context_line":"        if not replica_backend:"},{"line_number":360,"context_line":"            msg \u003d (\u0027Not configure replica_backend for this backend.\u0027)"},{"line_number":361,"context_line":"            LOG.error(msg)"},{"line_number":362,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":363,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_faed1926","line":360,"updated":"2015-01-07 15:03:40.000000000","message":"Should be translated","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"deff5a71e7609860d1bdd203ac5768ae9d57d681","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        host \u003d vol_utils.extract_host(volume[\u0027host\u0027], level\u003d\u0027host\u0027)"},{"line_number":358,"context_line":"        replica_backend \u003d self.conf.safe_get(\u0027replica_backend\u0027)"},{"line_number":359,"context_line":"        if not replica_backend:"},{"line_number":360,"context_line":"            msg \u003d (\u0027Not configure replica_backend for this backend.\u0027)"},{"line_number":361,"context_line":"            LOG.error(msg)"},{"line_number":362,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":363,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_effb8b78","line":360,"in_reply_to":"3a961159_faed1926","updated":"2015-01-08 01:25:38.000000000","message":"yes, it\u0027s error message displayed to user, and how to mark what to be translated?","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"24dfc993200bf91854f1224ee8b3827a1ab6605e","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        try:"},{"line_number":253,"context_line":"            rel_info \u003d self._replica_helpers.get_relationship_info(volume)"},{"line_number":254,"context_line":"        except exception.VolumeBackendAPIException as e:"},{"line_number":255,"context_line":"            msg \u003d _LE(\u0027Fail to get remote copy information for %(volume)s as \u0027"},{"line_number":256,"context_line":"                      \u0027%(err)s\u0027) % {\u0027volume\u0027: volume[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":257,"context_line":"            LOG.error(msg)"},{"line_number":258,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a930d6b_342324be","line":255,"updated":"2015-01-27 10:28:58.000000000","message":"You should use _() marker  instead _LE(), please read: http://docs.openstack.org/developer/oslo.i18n/guidelines.html\nAnd fix all the cases, please","commit_id":"b565f6753d74bac076686ee3bb1317a20ce83542"},{"author":{"_account_id":11079,"name":"TaoBai","email":"baitao5@huawei.com","username":"TaoBai"},"change_message_id":"d856de19364e56a18f540656e0d2d323f25c8cd0","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            self._helpers.start_relationship(volume)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        LOG.debug(\u0027exit: reenable_replication for  %(vol)s on %(host)s.\u0027,"},{"line_number":301,"context_line":"                  {\u0027vol\u0027: volume[\u0027name\u0027], \u0027host\u0027: volume[\u0027host\u0027]})"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def get_replication_info(self):"},{"line_number":304,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_5b6996f6","line":301,"updated":"2015-01-19 09:06:16.000000000","message":"Hi Limin\n\nAs we have discussed offline. You should update db Model for the status change after reenable.\n\nAnd this function, you should also think about rebuild rc-relationship for complex user case.\n\nThanks\n\nTao","commit_id":"b565f6753d74bac076686ee3bb1317a20ce83542"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"41b3f070b80fae6f212385a17d7cc2307c706a2d","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        host \u003d vol_utils.extract_host(volume[\u0027host\u0027], level\u003d\u0027host\u0027)"},{"line_number":358,"context_line":"        replica_backend \u003d self.conf.safe_get(\u0027replica_backend_name\u0027)"},{"line_number":359,"context_line":"        if not replica_backend:"},{"line_number":360,"context_line":"            msg \u003d (\u0027Not configure replica_backend for this backend.\u0027)"},{"line_number":361,"context_line":"            LOG.error(msg)"},{"line_number":362,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":363,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_49de2612","line":360,"updated":"2015-01-19 15:03:03.000000000","message":"Message should be localizable","commit_id":"b565f6753d74bac076686ee3bb1317a20ce83542"}],"cinder/volume/drivers/ibm/storwize_svc/ssh.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ea3ae45e78dc5dd6a67423140b2616d2d8af0063","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        ssh_cmd \u003d [\u0027svctask\u0027, \u0027rmvdiskaccess\u0027, \u0027-iogrp\u0027, iogrp, vdisk]"},{"line_number":332,"context_line":"        self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def mkrcrelationship(self, master, aux, system, name, globalmirror):"},{"line_number":335,"context_line":"        ssh_cmd \u003d [\u0027svctask\u0027, \u0027mkrcrelationship\u0027, \u0027-master\u0027, master,"},{"line_number":336,"context_line":"                   \u0027-aux\u0027, aux, \u0027-cluster\u0027, system, \u0027-name\u0027, name]"},{"line_number":337,"context_line":"        if globalmirror:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_dad13d58","line":334,"updated":"2015-01-07 15:03:40.000000000","message":"I propose to make functions name more readable. Something like: %_relationship","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"},{"author":{"_account_id":8587,"name":"Li Min Liu","email":"liulm@certusnet.com.cn","username":"LarryLiu"},"change_message_id":"dd3ecef26618c5d7fed0133465e75c95b17219fd","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        ssh_cmd \u003d [\u0027svctask\u0027, \u0027rmvdiskaccess\u0027, \u0027-iogrp\u0027, iogrp, vdisk]"},{"line_number":332,"context_line":"        self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def mkrcrelationship(self, master, aux, system, name, globalmirror):"},{"line_number":335,"context_line":"        ssh_cmd \u003d [\u0027svctask\u0027, \u0027mkrcrelationship\u0027, \u0027-master\u0027, master,"},{"line_number":336,"context_line":"                   \u0027-aux\u0027, aux, \u0027-cluster\u0027, system, \u0027-name\u0027, name]"},{"line_number":337,"context_line":"        if globalmirror:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_f43b1337","line":334,"in_reply_to":"3a961159_dad13d58","updated":"2015-01-12 01:27:48.000000000","message":"Hi,Ivan?\nThank you for your comments.\nI\u0027m not agree with your point, for this module, the function name is always the same as storwize cli.","commit_id":"f6ec33817498e664f264b2378d54e85043b4f8c6"}]}
