)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14532,"name":"Gerald McBrearty","email":"gfm@us.ibm.com","username":"gfm"},"change_message_id":"e69231e42122898fc1d3e1bb1c88f105741fe7c9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"volume_backend_name \u003d sv2"},{"line_number":72,"context_line":"storwize_svc_volpool_name\u003dcinder_target"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"From the configuration example above, we can see that the"},{"line_number":75,"context_line":"san_ip is the same for both sv1 and sv2. The only difference"},{"line_number":76,"context_line":"between them is the pool name."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"7a740942_921ce078","line":74,"updated":"2015-12-09 23:31:30.000000000","message":"This is a carry over from splitio? The ipaddr above are different. Should this just be deleted?","commit_id":"09b2d2e3b2e2a4f7fa7bf47f91fec30d860672fa"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"7f34cf4b24e3a069ca71b2db029e4289253b3c13","unresolved":false,"context_lines":[{"line_number":71,"context_line":"volume_backend_name \u003d sv2"},{"line_number":72,"context_line":"storwize_svc_volpool_name\u003dcinder_target"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"From the configuration example above, we can see that the"},{"line_number":75,"context_line":"san_ip is the same for both sv1 and sv2. The only difference"},{"line_number":76,"context_line":"between them is the pool name."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"7a740942_c8ee2cb4","line":74,"in_reply_to":"7a740942_921ce078","updated":"2015-12-10 03:13:51.000000000","message":"Done","commit_id":"09b2d2e3b2e2a4f7fa7bf47f91fec30d860672fa"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":28,"context_line":"* clone a volume"},{"line_number":29,"context_line":"If a volume is created, the target volume is created as well"},{"line_number":30,"context_line":"for the volume type with replication enabled and the back-end"},{"line_number":31,"context_line":"with replication enabled."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"What is not supported with replication yet:"},{"line_number":34,"context_line":"* volume migration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"5a710552_0a9beaca","line":31,"updated":"2015-12-14 21:54:05.000000000","message":"This is hard to understand.  Suggest:\n\nWhen a volume is created and replication is enabled, the target volume is also created on the back-end enabled for replicas.","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* volume retype"},{"line_number":36,"context_line":"The target volume will not be created or moved after migration"},{"line_number":37,"context_line":"or retype. It is not suggested to retype from a replication"},{"line_number":38,"context_line":"type to a non replication type or vice versa."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The replication can be configured via either multi-backend"},{"line_number":41,"context_line":"on one cinder volume service, or on seperate cinder volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"5a710552_8a727a7b","line":38,"updated":"2015-12-14 21:54:05.000000000","message":"This paragraph is very confusing. Let me suggest the following:\n\nThe replica volume will not be created or moved after migration or retype of a replicated volume. Users should be aware, when migrating to a type with replication enabled, that a replica will not be automatically created.\n\nIs this what you were trying to say?","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The replication can be configured via either multi-backend"},{"line_number":41,"context_line":"on one cinder volume service, or on seperate cinder volume"},{"line_number":42,"context_line":"services."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Options to be put in cinder.conf, where the primary back-end"},{"line_number":45,"context_line":"is located:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"5a710552_ca25e25c","line":42,"updated":"2015-12-14 21:54:05.000000000","message":"In the case of metro or global mirror isn\u0027t this always going to require a separate backend?","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"11ac716ce8f5907f05fc7b0bebc8064ddaf80ea2","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The replication can be configured via either multi-backend"},{"line_number":41,"context_line":"on one cinder volume service, or on seperate cinder volume"},{"line_number":42,"context_line":"services."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Options to be put in cinder.conf, where the primary back-end"},{"line_number":45,"context_line":"is located:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"5a710552_fd089c2a","line":42,"in_reply_to":"5a710552_ca25e25c","updated":"2015-12-15 05:52:15.000000000","message":"Yes. It can be on a a separate backend.\nBut if one cinder vol service node is configured with multiple back-ends, it works as well.","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"}],"cinder/tests/unit/test_storwize_svc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ad1ce1d2a00c1d0e43823c1f8c13ab261d3c675a","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import random"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"import time"},{"line_number":25,"context_line":"import uuid"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"da6ed579_e92f953c","line":23,"updated":"2016-01-15 19:29:11.000000000","message":"Remove duplicate import.  It is on line 31.","commit_id":"12f27cbb0cae17ecd2211f8de6fac7f5fe0ff35d"}],"cinder/volume/drivers/ibm/storwize_svc/__init__.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        # with replication."},{"line_number":200,"context_line":"        self._replication_enabled \u003d False"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        # This list used to save the supported replication modes of this node."},{"line_number":203,"context_line":"        self._supported_replication_types \u003d []"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        # Storwize has the limitation that can not burst more than 3 new ssh"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_caaac285","line":202,"updated":"2015-12-14 21:54:05.000000000","message":"This list is ...","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":720,"context_line":"                rel_info \u003d self._helpers.get_relationship_info(volume)"},{"line_number":721,"context_line":"                self._helpers.delete_relationship(volume)"},{"line_number":722,"context_line":"            except Exception as e:"},{"line_number":723,"context_line":"                msg \u003d _(\u0027Fail to get remote copy information for %(volume)s \u0027"},{"line_number":724,"context_line":"                        \u0027as %(err)s\u0027) % {\u0027volume\u0027: volume[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":725,"context_line":"                LOG.error(msg)"},{"line_number":726,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_aa3c1630","line":723,"updated":"2015-12-14 21:54:05.000000000","message":"End with a \u0027.\u0027 at EOL.","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                self._helpers.delete_relationship(volume)"},{"line_number":722,"context_line":"            except Exception as e:"},{"line_number":723,"context_line":"                msg \u003d _(\u0027Fail to get remote copy information for %(volume)s \u0027"},{"line_number":724,"context_line":"                        \u0027as %(err)s\u0027) % {\u0027volume\u0027: volume[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":725,"context_line":"                LOG.error(msg)"},{"line_number":726,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":727,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_4a2012f8","line":724,"updated":"2015-12-14 21:54:05.000000000","message":"Suggest:  Error: %(err)s","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":902,"context_line":"        if not self._replication_enabled:"},{"line_number":903,"context_line":"            msg \u003d _(\"The back-end where the volume is created is \""},{"line_number":904,"context_line":"                    \"not enabled withreplication.\")"},{"line_number":905,"context_line":"            LOG.error(msg)"},{"line_number":906,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":907,"context_line":"        return rep_type"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_aad896f0","line":904,"updated":"2015-12-14 21:54:05.000000000","message":"Suggest:  \u0027The back-end where the volume is created is does not have replication enabled.\u0027","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":991,"context_line":"                    replication.establish_target_partnership()"},{"line_number":992,"context_line":"                except exception.VolumeDriverException:"},{"line_number":993,"context_line":"                    msg \u003d (_LE(\u0027The replication mode of %s has not \u0027"},{"line_number":994,"context_line":"                               \u0027successfully established the partnership \u0027"},{"line_number":995,"context_line":"                               \u0027with the target Storwize cluster.\u0027) % rep_type)"},{"line_number":996,"context_line":"                    LOG.error(msg)"},{"line_number":997,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_8a77dad3","line":994,"updated":"2015-12-14 21:54:05.000000000","message":"suggest removing \u0027the\u0027 here.","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"}],"cinder/volume/drivers/ibm/storwize_svc/replication.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                client.startpartnership(partnership_info[\u0027id\u0027])"},{"line_number":332,"context_line":"        except Exception:"},{"line_number":333,"context_line":"            msg \u003d _(\u0027Unable to establish the mutual partnership between \u0027"},{"line_number":334,"context_line":"                    \u0027the source and target Storwize clusters.\u0027)"},{"line_number":335,"context_line":"            LOG.error(msg)"},{"line_number":336,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_454ec5c2","line":334,"updated":"2015-12-14 21:54:05.000000000","message":"Would be nice to include the system names here maybe.","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"11ac716ce8f5907f05fc7b0bebc8064ddaf80ea2","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                client.startpartnership(partnership_info[\u0027id\u0027])"},{"line_number":332,"context_line":"        except Exception:"},{"line_number":333,"context_line":"            msg \u003d _(\u0027Unable to establish the mutual partnership between \u0027"},{"line_number":334,"context_line":"                    \u0027the source and target Storwize clusters.\u0027)"},{"line_number":335,"context_line":"            LOG.error(msg)"},{"line_number":336,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_d3c7d143","line":334,"in_reply_to":"5a710552_454ec5c2","updated":"2015-12-15 05:52:15.000000000","message":"Done","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        self._partnership_validate_create(self, self.target_helpers,"},{"line_number":348,"context_line":"                                          local_system_name, local_ip)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    def _run_ssh(self, cmd_list, check_exit_code\u003dTrue, attempts\u003d1):"},{"line_number":351,"context_line":"        utils.check_ssh_injection(cmd_list)"},{"line_number":352,"context_line":"        command \u003d \u0027 \u0027. join(cmd_list)"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_85026d3d","line":350,"updated":"2015-12-14 21:54:05.000000000","message":"Why do we have _run_ssh defined here?  Can\u0027t we reuse the common _run_ssh ?","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"18c8f691da8ff39ff4ea8086e5db101a6f7682c1","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        self._partnership_validate_create(self, self.target_helpers,"},{"line_number":348,"context_line":"                                          local_system_name, local_ip)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    def _run_ssh(self, cmd_list, check_exit_code\u003dTrue, attempts\u003d1):"},{"line_number":351,"context_line":"        utils.check_ssh_injection(cmd_list)"},{"line_number":352,"context_line":"        command \u003d \u0027 \u0027. join(cmd_list)"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"3a7e1126_f40e73e4","line":350,"in_reply_to":"5a710552_85026d3d","updated":"2015-12-17 07:13:21.000000000","message":"The one in storwize_common does not do anything, but waiting for an input run_ssh to set the local run_ssh, so this one is playing a passive part, not an active one, which is unable to retrieve the ip, password, etc.\n\nThe same method in san.driver is hard to reuse so far, because it is unreasonable for this class to inherit a driver.\nEven if it does, this class won\u0027t be instantiated correctly.","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                self.asyncmirror)"},{"line_number":413,"context_line":"        except Exception:"},{"line_number":414,"context_line":"            msg \u003d (_(\"Unable to set up the replication of \""},{"line_number":415,"context_line":"                     \"mirror mode for %s.\"), vref[\u0027name\u0027])"},{"line_number":416,"context_line":"            LOG.error(msg)"},{"line_number":417,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_6555011c","line":415,"updated":"2015-12-14 21:54:05.000000000","message":"Suggest:  Unable to set up mirror mode replication for %s.  Error: %s","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"11ac716ce8f5907f05fc7b0bebc8064ddaf80ea2","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                self.asyncmirror)"},{"line_number":413,"context_line":"        except Exception:"},{"line_number":414,"context_line":"            msg \u003d (_(\"Unable to set up the replication of \""},{"line_number":415,"context_line":"                     \"mirror mode for %s.\"), vref[\u0027name\u0027])"},{"line_number":416,"context_line":"            LOG.error(msg)"},{"line_number":417,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_b3ca454e","line":415,"in_reply_to":"5a710552_6555011c","updated":"2015-12-15 05:52:15.000000000","message":"Done","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            rel_info \u003d self.driver._helpers.get_relationship_info(vref)"},{"line_number":441,"context_line":"        except Exception as e:"},{"line_number":442,"context_line":"            msg \u003d _(\u0027Fail to get remote copy information for %(volume)s \u0027"},{"line_number":443,"context_line":"                    \u0027as %(err)s\u0027) % {\u0027volume\u0027: vref[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":444,"context_line":"            LOG.error(msg)"},{"line_number":445,"context_line":"            raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_20a047f4","line":443,"updated":"2015-12-14 21:54:05.000000000","message":"instead of \u0027as %err\u0027 suggest \u0027due to: %(err)s\u0027","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"11ac716ce8f5907f05fc7b0bebc8064ddaf80ea2","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            rel_info \u003d self.driver._helpers.get_relationship_info(vref)"},{"line_number":441,"context_line":"        except Exception as e:"},{"line_number":442,"context_line":"            msg \u003d _(\u0027Fail to get remote copy information for %(volume)s \u0027"},{"line_number":443,"context_line":"                    \u0027as %(err)s\u0027) % {\u0027volume\u0027: vref[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":444,"context_line":"            LOG.error(msg)"},{"line_number":445,"context_line":"            raise exception.VolumeDriverException(data\u003dmsg)"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_13b559cc","line":443,"in_reply_to":"5a710552_20a047f4","updated":"2015-12-15 05:52:15.000000000","message":"Done","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                    rel_info[\u0027aux_vdisk_name\u0027], False)"},{"line_number":452,"context_line":"            except Exception:"},{"line_number":453,"context_line":"                msg \u003d (_(\u0027Unable to delete the target volume for \u0027"},{"line_number":454,"context_line":"                         \u0027volume %s.\u0027), vref[\u0027id\u0027])"},{"line_number":455,"context_line":"                LOG.error(msg)"},{"line_number":456,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":457,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_80afbbe2","line":454,"updated":"2015-12-14 21:54:05.000000000","message":"Suggest adding the error here as well.","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"11ac716ce8f5907f05fc7b0bebc8064ddaf80ea2","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                    rel_info[\u0027aux_vdisk_name\u0027], False)"},{"line_number":452,"context_line":"            except Exception:"},{"line_number":453,"context_line":"                msg \u003d (_(\u0027Unable to delete the target volume for \u0027"},{"line_number":454,"context_line":"                         \u0027volume %s.\u0027), vref[\u0027id\u0027])"},{"line_number":455,"context_line":"                LOG.error(msg)"},{"line_number":456,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":457,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_13b0f9f3","line":454,"in_reply_to":"5a710552_80afbbe2","updated":"2015-12-15 05:52:15.000000000","message":"Done","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            rel_info \u003d self.driver._helpers.get_relationship_info(vref)"},{"line_number":462,"context_line":"        except Exception as e:"},{"line_number":463,"context_line":"            msg \u003d _(\u0027Fail to get remote copy information for %(volume)s \u0027"},{"line_number":464,"context_line":"                    \u0027as %(err)s\u0027) % {\u0027volume\u0027: vref[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":465,"context_line":"            LOG.error(msg)"},{"line_number":466,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_00e98b1a","line":464,"updated":"2015-12-14 21:54:05.000000000","message":"instead of \u0027as %err\u0027 suggest \u0027due to: %(err)s\u0027","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"11ac716ce8f5907f05fc7b0bebc8064ddaf80ea2","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            rel_info \u003d self.driver._helpers.get_relationship_info(vref)"},{"line_number":462,"context_line":"        except Exception as e:"},{"line_number":463,"context_line":"            msg \u003d _(\u0027Fail to get remote copy information for %(volume)s \u0027"},{"line_number":464,"context_line":"                    \u0027as %(err)s\u0027) % {\u0027volume\u0027: vref[\u0027id\u0027], \u0027err\u0027: e}"},{"line_number":465,"context_line":"            LOG.error(msg)"},{"line_number":466,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_f3aa0d85","line":464,"in_reply_to":"5a710552_00e98b1a","updated":"2015-12-15 05:52:15.000000000","message":"Done","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a12b7a9eb0f03d5c1ea949027eb2cabce05032ba","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            msg \u003d _LE(\"A valid secondary target MUST be specified in order \""},{"line_number":482,"context_line":"                      \"to failover.\")"},{"line_number":483,"context_line":"            LOG.error(msg)"},{"line_number":484,"context_line":"            return None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        try:"},{"line_number":487,"context_line":"            rel_info \u003d self.driver._helpers.get_relationship_info(vref)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_005e6be9","line":484,"updated":"2015-12-14 21:54:05.000000000","message":"Do we need an  InvalidConfigurationValue(Invalid) here?","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"11ac716ce8f5907f05fc7b0bebc8064ddaf80ea2","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            msg \u003d _LE(\"A valid secondary target MUST be specified in order \""},{"line_number":482,"context_line":"                      \"to failover.\")"},{"line_number":483,"context_line":"            LOG.error(msg)"},{"line_number":484,"context_line":"            return None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        try:"},{"line_number":487,"context_line":"            rel_info \u003d self.driver._helpers.get_relationship_info(vref)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5a710552_53bbe1c4","line":484,"in_reply_to":"5a710552_005e6be9","updated":"2015-12-15 05:52:15.000000000","message":"No, this is not a configuration value, but the value from the user request.\nThis does not need to raise any excpetion, because the user can trigger the failover again with another input value.\nIf the exception is raised, with current code in manager, the failover will not be issued again because the volume replication status is changed.","commit_id":"e79fa09dc5d61ee6fd5537303958e50467a1dccf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ad1ce1d2a00c1d0e43823c1f8c13ab261d3c675a","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            driver, replication_target)"},{"line_number":316,"context_line":"        self.sshpool \u003d None"},{"line_number":317,"context_line":"        from cinder.volume.drivers.ibm.storwize_svc import storwize_svc_common"},{"line_number":318,"context_line":"        self.target_helpers \u003d storwize_svc_common.StorwizeHelpers(self._run_ssh)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _partnership_validate_create(self, client, remote_name, remote_ip):"},{"line_number":321,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":46,"id":"da6ed579_a95bddf5","line":318,"updated":"2016-01-15 19:29:11.000000000","message":"Line too long \u003e79.","commit_id":"12f27cbb0cae17ecd2211f8de6fac7f5fe0ff35d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1a8e8aed17819f482539cdc1d3442b188a3f0563","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        return model_update"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def replication_disable(self, context, vref):"},{"line_number":479,"context_line":"        self.delete_target_volume(vref)"},{"line_number":480,"context_line":"        model_update \u003d {\u0027replication_status\u0027: \u0027disabled\u0027}"},{"line_number":481,"context_line":"        return model_update"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"fa69d971_abef781c","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":39},"updated":"2016-01-06 16:58:37.000000000","message":"Deleting the volume is not really disabling replication. The idea of disabling is to temporarily pause replication. Then when it is enabled, the replication resumes from where it last left off.","commit_id":"12f27cbb0cae17ecd2211f8de6fac7f5fe0ff35d"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1f67ef30c02ef3207228c3e1d9aa00d14b11d32b","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        return model_update"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def replication_disable(self, context, vref):"},{"line_number":479,"context_line":"        self.delete_target_volume(vref)"},{"line_number":480,"context_line":"        model_update \u003d {\u0027replication_status\u0027: \u0027disabled\u0027}"},{"line_number":481,"context_line":"        return model_update"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"da6ed579_1daca38b","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":39},"in_reply_to":"da6ed579_fdd66f26","updated":"2016-01-15 21:12:58.000000000","message":"Essentially you want to keep the volume existing on the backend array(s). You just temporarily stop the replication from happening. Replication becomes paused for the volume, and when you call replication_enable, it will resume the replication.","commit_id":"12f27cbb0cae17ecd2211f8de6fac7f5fe0ff35d"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"058490947612646620ffc1ff70b38a6af65fe97f","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        return model_update"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def replication_disable(self, context, vref):"},{"line_number":479,"context_line":"        self.delete_target_volume(vref)"},{"line_number":480,"context_line":"        model_update \u003d {\u0027replication_status\u0027: \u0027disabled\u0027}"},{"line_number":481,"context_line":"        return model_update"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"da6ed579_fdd66f26","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":39},"in_reply_to":"fa69d971_abef781c","updated":"2016-01-15 21:10:16.000000000","message":"Do you mean it is just an indicator in cinder, no need to change the relationship from the back-end storage?","commit_id":"12f27cbb0cae17ecd2211f8de6fac7f5fe0ff35d"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"1a8e8aed17819f482539cdc1d3442b188a3f0563","unresolved":false,"context_lines":[{"line_number":1820,"context_line":"    1.3.3 - Update driver to use ABC metaclasses"},{"line_number":1821,"context_line":"    2.0 - Code refactor, split init file and placed shared methods for"},{"line_number":1822,"context_line":"          FC and iSCSI within the StorwizeSVCCommonDriver class"},{"line_number":1823,"context_line":"    2.1.1 - Added replication V2 support to the split IO (stretched"},{"line_number":1824,"context_line":"            cluster) mode"},{"line_number":1825,"context_line":"    2.1.2 - Added replication V2 support to the global/metro mirror"},{"line_number":1826,"context_line":"            mode"},{"line_number":1827,"context_line":"    \"\"\""},{"line_number":1828,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"fa69d971_ab3218a5","line":1825,"range":{"start_line":1823,"start_character":4,"end_line":1825,"end_character":67},"updated":"2016-01-06 16:58:37.000000000","message":"This versioning should be fixed in the parent patch. You are incrementing the 2.1 entry to 2.1.1 here.","commit_id":"12f27cbb0cae17ecd2211f8de6fac7f5fe0ff35d"}],"cinder/volume/manager.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"0ceb50f07d32728ac5a6a3ab5582ea797801d6ae","unresolved":false,"context_lines":[{"line_number":1830,"context_line":"        if volume is None:"},{"line_number":1831,"context_line":"            # For older clients, mimic the old behavior and look up the volume"},{"line_number":1832,"context_line":"            # by its volume_id."},{"line_number":1833,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume_id)"},{"line_number":1834,"context_line":""},{"line_number":1835,"context_line":"        try:"},{"line_number":1836,"context_line":"            # NOTE(flaper87): Verify the driver is enabled"}],"source_content_type":"text/x-python","patch_set":46,"id":"fa69d971_6b5c207d","line":1833,"range":{"start_line":1833,"start_character":12,"end_line":1833,"end_character":62},"updated":"2016-01-06 17:03:07.000000000","message":"This should be fixed in a different patch","commit_id":"12f27cbb0cae17ecd2211f8de6fac7f5fe0ff35d"}]}
