)]}'
{"cinder/volume/drivers/emc/emc_cli_fc.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"fb32103bc45748df7763b77539aa4a94b6799d32","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        \"\"\"Failovers volume from primary device to secondary.\"\"\""},{"line_number":306,"context_line":"        return self.cli.failover_host(context, volumes, secondary_backend_id)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def list_replication_targets(self):"},{"line_number":309,"context_line":"        \"\"\"Returns volume replication info.\"\"\""},{"line_number":310,"context_line":"        return self.cli.list_replication_targets()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_c0733714","line":310,"range":{"start_line":308,"start_character":4,"end_line":310,"end_character":50},"updated":"2016-02-26 16:34:26.000000000","message":"List targets no longer exists.","commit_id":"c99bf0740b9880b3ee06ef9022cf8d79f4003f4a"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"f3876d66d8f10d7b484bf1299b1fb546ccd02fac","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        \"\"\"Failovers volume from primary device to secondary.\"\"\""},{"line_number":306,"context_line":"        return self.cli.failover_host(context, volumes, secondary_backend_id)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def list_replication_targets(self):"},{"line_number":309,"context_line":"        \"\"\"Returns volume replication info.\"\"\""},{"line_number":310,"context_line":"        return self.cli.list_replication_targets()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_e8e8c3b6","line":310,"range":{"start_line":308,"start_character":4,"end_line":310,"end_character":50},"in_reply_to":"9aed3d3a_c0733714","updated":"2016-02-27 08:00:20.000000000","message":"Done","commit_id":"c99bf0740b9880b3ee06ef9022cf8d79f4003f4a"}],"cinder/volume/drivers/emc/emc_cli_iscsi.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"fb32103bc45748df7763b77539aa4a94b6799d32","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        \"\"\"Failovers volume from primary device to secondary.\"\"\""},{"line_number":285,"context_line":"        return self.cli.failover_host(context, volumes, secondary_backend_id)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def list_replication_targets(self):"},{"line_number":288,"context_line":"        \"\"\"Returns volume replication info.\"\"\""},{"line_number":289,"context_line":"        return self.cli.list_replication_targets()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_00f23f6f","line":289,"range":{"start_line":287,"start_character":4,"end_line":289,"end_character":50},"updated":"2016-02-26 16:34:26.000000000","message":"Same, listing targets is gone","commit_id":"c99bf0740b9880b3ee06ef9022cf8d79f4003f4a"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"f3876d66d8f10d7b484bf1299b1fb546ccd02fac","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        \"\"\"Failovers volume from primary device to secondary.\"\"\""},{"line_number":285,"context_line":"        return self.cli.failover_host(context, volumes, secondary_backend_id)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def list_replication_targets(self):"},{"line_number":288,"context_line":"        \"\"\"Returns volume replication info.\"\"\""},{"line_number":289,"context_line":"        return self.cli.list_replication_targets()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_68ddd30d","line":289,"range":{"start_line":287,"start_character":4,"end_line":289,"end_character":50},"in_reply_to":"9aed3d3a_00f23f6f","updated":"2016-02-27 08:00:20.000000000","message":"Done","commit_id":"c99bf0740b9880b3ee06ef9022cf8d79f4003f4a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"63905a300096694fd01dcf778e170c7658a094a7","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def create_volume(self, volume):"},{"line_number":75,"context_line":"        \"\"\"Creates a VNX volume.\"\"\""},{"line_number":76,"context_line":"        return self.cli.create_volume(volume)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":79,"context_line":"        \"\"\"Creates a volume from a snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_70568ed3","line":76,"range":{"start_line":76,"start_character":0,"end_line":76,"end_character":45},"updated":"2016-03-01 22:17:49.000000000","message":"No checks on type or anything here?  ie type\u003d\u003dreplication","commit_id":"288b215b58efac12cf6ad75b8afd56b9d2e61d57"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"877d33cbc17c92ceb9786c7a75c21557aad2f291","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def create_volume(self, volume):"},{"line_number":75,"context_line":"        \"\"\"Creates a VNX volume.\"\"\""},{"line_number":76,"context_line":"        return self.cli.create_volume(volume)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":79,"context_line":"        \"\"\"Creates a volume from a snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_a640d157","line":76,"range":{"start_line":76,"start_character":0,"end_line":76,"end_character":45},"in_reply_to":"7af24918_70568ed3","updated":"2016-03-02 04:14:50.000000000","message":"We have done the check in self.cli.create_volume","commit_id":"288b215b58efac12cf6ad75b8afd56b9d2e61d57"}],"cinder/volume/drivers/emc/emc_vnx_cli.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"fb32103bc45748df7763b77539aa4a94b6799d32","unresolved":false,"context_lines":[{"line_number":4011,"context_line":"            failover_one(volume)"},{"line_number":4012,"context_line":"        return secondary_backend_id, volume_update_list"},{"line_number":4013,"context_line":""},{"line_number":4014,"context_line":"    def list_replication_targets(self):"},{"line_number":4015,"context_line":"        \"\"\"Provides replication target(s) for a volume.\"\"\""},{"line_number":4016,"context_line":"        targets \u003d []"},{"line_number":4017,"context_line":"        for device in self.configuration.replication_device:"},{"line_number":4018,"context_line":"            targets.append({\u0027backend_id\u0027: device[\u0027backend_id\u0027]})"},{"line_number":4019,"context_line":""},{"line_number":4020,"context_line":"        return {\u0027targets\u0027: targets}"},{"line_number":4021,"context_line":""},{"line_number":4022,"context_line":"    def _is_replication_enabled(self, volume):"},{"line_number":4023,"context_line":"        \"\"\"Return True if replication extra specs is specified."}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_c0f8574c","line":4020,"range":{"start_line":4014,"start_character":4,"end_line":4020,"end_character":35},"updated":"2016-02-26 16:34:26.000000000","message":"Should be removed","commit_id":"c99bf0740b9880b3ee06ef9022cf8d79f4003f4a"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"f3876d66d8f10d7b484bf1299b1fb546ccd02fac","unresolved":false,"context_lines":[{"line_number":4011,"context_line":"            failover_one(volume)"},{"line_number":4012,"context_line":"        return secondary_backend_id, volume_update_list"},{"line_number":4013,"context_line":""},{"line_number":4014,"context_line":"    def list_replication_targets(self):"},{"line_number":4015,"context_line":"        \"\"\"Provides replication target(s) for a volume.\"\"\""},{"line_number":4016,"context_line":"        targets \u003d []"},{"line_number":4017,"context_line":"        for device in self.configuration.replication_device:"},{"line_number":4018,"context_line":"            targets.append({\u0027backend_id\u0027: device[\u0027backend_id\u0027]})"},{"line_number":4019,"context_line":""},{"line_number":4020,"context_line":"        return {\u0027targets\u0027: targets}"},{"line_number":4021,"context_line":""},{"line_number":4022,"context_line":"    def _is_replication_enabled(self, volume):"},{"line_number":4023,"context_line":"        \"\"\"Return True if replication extra specs is specified."}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_a8051b7b","line":4020,"range":{"start_line":4014,"start_character":4,"end_line":4020,"end_character":35},"in_reply_to":"9aed3d3a_c0f8574c","updated":"2016-02-27 08:00:20.000000000","message":"Done","commit_id":"c99bf0740b9880b3ee06ef9022cf8d79f4003f4a"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"fb32103bc45748df7763b77539aa4a94b6799d32","unresolved":false,"context_lines":[{"line_number":4350,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":4351,"context_line":"        return pool"},{"line_number":4352,"context_line":""},{"line_number":4353,"context_line":"    def update_volume_stats(self):"},{"line_number":4354,"context_line":"        \"\"\"Retrieves stats info.\"\"\""},{"line_number":4355,"context_line":"        self.update_enabler_in_volume_stats()"},{"line_number":4356,"context_line":"        if self.protocol \u003d\u003d \u0027iSCSI\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_a078b3c5","line":4353,"range":{"start_line":4353,"start_character":4,"end_line":4353,"end_character":34},"updated":"2016-02-26 16:34:26.000000000","message":"replication_targets should be reported as a capability, so you can do a \u0027cinder get-capabilities \u003chost\u003e\u0027 to see the targets you can failover to","commit_id":"c99bf0740b9880b3ee06ef9022cf8d79f4003f4a"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"f3876d66d8f10d7b484bf1299b1fb546ccd02fac","unresolved":false,"context_lines":[{"line_number":4350,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":4351,"context_line":"        return pool"},{"line_number":4352,"context_line":""},{"line_number":4353,"context_line":"    def update_volume_stats(self):"},{"line_number":4354,"context_line":"        \"\"\"Retrieves stats info.\"\"\""},{"line_number":4355,"context_line":"        self.update_enabler_in_volume_stats()"},{"line_number":4356,"context_line":"        if self.protocol \u003d\u003d \u0027iSCSI\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_e8ff2365","line":4353,"range":{"start_line":4353,"start_character":4,"end_line":4353,"end_character":34},"in_reply_to":"9aed3d3a_a078b3c5","updated":"2016-02-27 08:00:20.000000000","message":"Done, added in _build_pool_stats function","commit_id":"c99bf0740b9880b3ee06ef9022cf8d79f4003f4a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"63905a300096694fd01dcf778e170c7658a094a7","unresolved":false,"context_lines":[{"line_number":3977,"context_line":"            mirror_view \u003d self._get_mirror_view(volume)"},{"line_number":3978,"context_line":"            remote_client \u003d mirror_view._secondary_client"},{"line_number":3979,"context_line":""},{"line_number":3980,"context_line":"            provider_location \u003d volume[\u0027provider_location\u0027]"},{"line_number":3981,"context_line":"            try:"},{"line_number":3982,"context_line":"                mirror_view.promote_image(mirror_name)"},{"line_number":3983,"context_line":"            except exception.EMCVnxCLICmdError as ex:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_0e59ec5a","line":3980,"range":{"start_line":3980,"start_character":12,"end_line":3980,"end_character":29},"updated":"2016-03-01 22:17:49.000000000","message":"Just a reminder about provider_auth, you likely don\u0027t need it; but just mentioning it","commit_id":"288b215b58efac12cf6ad75b8afd56b9d2e61d57"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"877d33cbc17c92ceb9786c7a75c21557aad2f291","unresolved":false,"context_lines":[{"line_number":3977,"context_line":"            mirror_view \u003d self._get_mirror_view(volume)"},{"line_number":3978,"context_line":"            remote_client \u003d mirror_view._secondary_client"},{"line_number":3979,"context_line":""},{"line_number":3980,"context_line":"            provider_location \u003d volume[\u0027provider_location\u0027]"},{"line_number":3981,"context_line":"            try:"},{"line_number":3982,"context_line":"                mirror_view.promote_image(mirror_name)"},{"line_number":3983,"context_line":"            except exception.EMCVnxCLICmdError as ex:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_612b5383","line":3980,"range":{"start_line":3980,"start_character":12,"end_line":3980,"end_character":29},"in_reply_to":"7af24918_0e59ec5a","updated":"2016-03-02 04:14:50.000000000","message":"Thanks for the reminder\nactually, We do not need it.","commit_id":"288b215b58efac12cf6ad75b8afd56b9d2e61d57"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"63905a300096694fd01dcf778e170c7658a094a7","unresolved":false,"context_lines":[{"line_number":4008,"context_line":"                                 \u0027replication_status\u0027: rep_status,"},{"line_number":4009,"context_line":"                                 \u0027provider_location\u0027: provider_location}}"},{"line_number":4010,"context_line":"            volume_update_list.append(model_update)"},{"line_number":4011,"context_line":"        for volume in volumes:"},{"line_number":4012,"context_line":"            failover_one(volume)"},{"line_number":4013,"context_line":"        return secondary_backend_id, volume_update_list"},{"line_number":4014,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_5060b2ce","line":4011,"range":{"start_line":4011,"start_character":0,"end_line":4011,"end_character":30},"updated":"2016-03-01 22:17:49.000000000","message":"It doesn\u0027t appear that you\u0027re checking the type to see if the volume is replicated or not?  I\u0027m assuming your config is an \"all or nothing\" then perhaps?  Not sure this is what you intend here or not.","commit_id":"288b215b58efac12cf6ad75b8afd56b9d2e61d57"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"877d33cbc17c92ceb9786c7a75c21557aad2f291","unresolved":false,"context_lines":[{"line_number":4008,"context_line":"                                 \u0027replication_status\u0027: rep_status,"},{"line_number":4009,"context_line":"                                 \u0027provider_location\u0027: provider_location}}"},{"line_number":4010,"context_line":"            volume_update_list.append(model_update)"},{"line_number":4011,"context_line":"        for volume in volumes:"},{"line_number":4012,"context_line":"            failover_one(volume)"},{"line_number":4013,"context_line":"        return secondary_backend_id, volume_update_list"},{"line_number":4014,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_c157c700","line":4011,"range":{"start_line":4011,"start_character":0,"end_line":4011,"end_character":30},"in_reply_to":"7af24918_5060b2ce","updated":"2016-03-02 04:14:50.000000000","message":"My fault, i missed the check whether volume is replicated.\nI will add the check in next patch","commit_id":"288b215b58efac12cf6ad75b8afd56b9d2e61d57"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"41f110e80c19be1538350063016dea976989b225","unresolved":false,"context_lines":[{"line_number":3968,"context_line":"                backend_id \u003d ("},{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified, \u0027"},{"line_number":3972,"context_line":"                             \u0027choose from %s.\u0027) % [backend_id])"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_d2b5497e","line":3971,"updated":"2016-03-03 22:05:54.000000000","message":"nit:\n\n, -\u003e.\n\nStart a new sentence on the next line:\n\"Choose ….\".","commit_id":"b15a3fdf23c17310c360110ab44085749d603356"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"0399ce7d3946059f1038d2540706fd03d433da0e","unresolved":false,"context_lines":[{"line_number":3968,"context_line":"                backend_id \u003d ("},{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified, \u0027"},{"line_number":3972,"context_line":"                             \u0027choose from %s.\u0027) % [backend_id])"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_9b98f66b","line":3971,"in_reply_to":"7af24918_d2b5497e","updated":"2016-03-04 02:13:16.000000000","message":"Done","commit_id":"b15a3fdf23c17310c360110ab44085749d603356"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"479137338f24ff16f7003847641a1aa23342984c","unresolved":false,"context_lines":[{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified, \u0027"},{"line_number":3972,"context_line":"                             \u0027choose from %s.\u0027) % [backend_id])"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":3975,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_3218ed74","line":3972,"updated":"2016-03-03 21:48:11.000000000","message":"please choose from 1 entry?","commit_id":"b15a3fdf23c17310c360110ab44085749d603356"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"0399ce7d3946059f1038d2540706fd03d433da0e","unresolved":false,"context_lines":[{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified, \u0027"},{"line_number":3972,"context_line":"                             \u0027choose from %s.\u0027) % [backend_id])"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":3975,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_9be636e6","line":3972,"in_reply_to":"7af24918_12069151","updated":"2016-03-04 02:13:16.000000000","message":"I meant to present a [] around the backend_id\nLooks like this cause confusion^_^, I will remove [].","commit_id":"b15a3fdf23c17310c360110ab44085749d603356"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"41f110e80c19be1538350063016dea976989b225","unresolved":false,"context_lines":[{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified, \u0027"},{"line_number":3972,"context_line":"                             \u0027choose from %s.\u0027) % [backend_id])"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":3975,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_12069151","line":3972,"in_reply_to":"7af24918_3218ed74","updated":"2016-03-03 22:05:54.000000000","message":"Not sure why this needs to be in [ ].  Looks wrong.","commit_id":"b15a3fdf23c17310c360110ab44085749d603356"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"0399ce7d3946059f1038d2540706fd03d433da0e","unresolved":false,"context_lines":[{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified, \u0027"},{"line_number":3972,"context_line":"                             \u0027choose from %s.\u0027) % [backend_id])"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":3975,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7af24918_bbcfb254","line":3972,"in_reply_to":"7af24918_3218ed74","updated":"2016-03-04 02:13:16.000000000","message":"Yes, we currently only support 1 replication device.","commit_id":"b15a3fdf23c17310c360110ab44085749d603356"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"f15ade3a834c52e357c82d2160b4f5a4cba434f1","unresolved":false,"context_lines":[{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified. \u0027"},{"line_number":3972,"context_line":"                             \u0027Choose one entry from: %s.\u0027) % backend_id)"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":3975,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_8fa99a7e","line":3972,"updated":"2016-03-04 22:20:16.000000000","message":"if backend_id is a single entry, ie. not a list, then the wording in the message \"Choose one entry from: %s\" is confusing.","commit_id":"d4a6b6c756ccd94fd4975a09514d2f77bb3ab070"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"92a470128ca35205709d2a97518d458972580e10","unresolved":false,"context_lines":[{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified. \u0027"},{"line_number":3972,"context_line":"                             \u0027Choose one entry from: %s.\u0027) % backend_id)"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":3975,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_ec6bfe83","line":3972,"in_reply_to":"7af24918_8f2b5a94","updated":"2016-03-05 12:08:01.000000000","message":"Done","commit_id":"d4a6b6c756ccd94fd4975a09514d2f77bb3ab070"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"92a470128ca35205709d2a97518d458972580e10","unresolved":false,"context_lines":[{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified. \u0027"},{"line_number":3972,"context_line":"                             \u0027Choose one entry from: %s.\u0027) % backend_id)"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":3975,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_8c6eba94","line":3972,"in_reply_to":"7af24918_8fa99a7e","updated":"2016-03-05 12:08:01.000000000","message":"Done","commit_id":"d4a6b6c756ccd94fd4975a09514d2f77bb3ab070"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fb3d90833d5ae649b5335d934f32b8cb1621df67","unresolved":false,"context_lines":[{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"},{"line_number":3970,"context_line":"                if secondary_backend_id !\u003d backend_id:"},{"line_number":3971,"context_line":"                    msg \u003d (_(\u0027Invalid secondary_backend_id specified. \u0027"},{"line_number":3972,"context_line":"                             \u0027Choose one entry from: %s.\u0027) % backend_id)"},{"line_number":3973,"context_line":"                    LOG.error(msg)"},{"line_number":3974,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":3975,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_8f2b5a94","line":3972,"in_reply_to":"7af24918_8fa99a7e","updated":"2016-03-04 22:27:14.000000000","message":"So change \"Choose one entry from\" to \"Valid backend id is\" since there is only 1 entry.","commit_id":"d4a6b6c756ccd94fd4975a09514d2f77bb3ab070"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4a5fddfaf7d4cf2a15713961006e64a016c1606f","unresolved":false,"context_lines":[{"line_number":3963,"context_line":"        def failover_one(volume):"},{"line_number":3964,"context_line":"            rep_data \u003d json.loads(volume[\u0027replication_driver_data\u0027])"},{"line_number":3965,"context_line":"            is_primary \u003d rep_data[\u0027is_primary\u0027]"},{"line_number":3966,"context_line":"            if secondary_backend_id !\u003d \u0027default\u0027:"},{"line_number":3967,"context_line":"                rep_status \u003d \u0027failed-over\u0027"},{"line_number":3968,"context_line":"                backend_id \u003d ("},{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_4fd92f21","line":3966,"updated":"2016-03-07 22:12:52.000000000","message":"Optionally, since 3966-3976 doesn\u0027t seem to be different for each volume, we could slide that check out of the loop so we\u0027re not evaluating it once for every volume.","commit_id":"3f8d79e2abc0f4df3902b983846dca02d7b2bdb4"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"6b3f117880210e5ff28e20bd6664ba30044a7892","unresolved":false,"context_lines":[{"line_number":3963,"context_line":"        def failover_one(volume):"},{"line_number":3964,"context_line":"            rep_data \u003d json.loads(volume[\u0027replication_driver_data\u0027])"},{"line_number":3965,"context_line":"            is_primary \u003d rep_data[\u0027is_primary\u0027]"},{"line_number":3966,"context_line":"            if secondary_backend_id !\u003d \u0027default\u0027:"},{"line_number":3967,"context_line":"                rep_status \u003d \u0027failed-over\u0027"},{"line_number":3968,"context_line":"                backend_id \u003d ("},{"line_number":3969,"context_line":"                    self.configuration.replication_device[0][\u0027backend_id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_dd74ccd0","line":3966,"in_reply_to":"5aef4532_4fd92f21","updated":"2016-03-08 06:42:47.000000000","message":"Good catch, I will move it out of this function","commit_id":"3f8d79e2abc0f4df3902b983846dca02d7b2bdb4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a6062ccb6add7536a83eba3db2789c0909378c6c","unresolved":false,"context_lines":[{"line_number":3988,"context_line":"                    \u0027to %(target)s: %(error)s.\u0027)"},{"line_number":3989,"context_line":"                LOG.error(msg, {\u0027volume_id\u0027: volume.id,"},{"line_number":3990,"context_line":"                                \u0027target\u0027: secondary_backend_id,"},{"line_number":3991,"context_line":"                                \u0027error\u0027: six.text_type(ex)},)"},{"line_number":3992,"context_line":"                new_status \u003d \u0027error\u0027"},{"line_number":3993,"context_line":"            else:"},{"line_number":3994,"context_line":"                rep_data.update({\u0027is_primary\u0027: not is_primary})"}],"source_content_type":"text/x-python","patch_set":8,"id":"5aef4532_fa5a09f1","line":3991,"updated":"2016-03-09 17:11:51.000000000","message":"six.text_type not needed here when passing in to the logger.","commit_id":"bb0dfa4a8a25e07ab245fec48e49acd9240366ae"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"affeb7cc05a600f9761e160d2656aa08ddedb63e","unresolved":false,"context_lines":[{"line_number":3988,"context_line":"                    \u0027to %(target)s: %(error)s.\u0027)"},{"line_number":3989,"context_line":"                LOG.error(msg, {\u0027volume_id\u0027: volume.id,"},{"line_number":3990,"context_line":"                                \u0027target\u0027: secondary_backend_id,"},{"line_number":3991,"context_line":"                                \u0027error\u0027: six.text_type(ex)},)"},{"line_number":3992,"context_line":"                new_status \u003d \u0027error\u0027"},{"line_number":3993,"context_line":"            else:"},{"line_number":3994,"context_line":"                rep_data.update({\u0027is_primary\u0027: not is_primary})"}],"source_content_type":"text/x-python","patch_set":8,"id":"5aef4532_1a719144","line":3991,"in_reply_to":"5aef4532_fa5a09f1","updated":"2016-03-10 08:02:44.000000000","message":"Done","commit_id":"bb0dfa4a8a25e07ab245fec48e49acd9240366ae"}],"releasenotes/notes/vnx-replication-v2.1-4d89935547183cc9.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a6062ccb6add7536a83eba3db2789c0909378c6c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds v2.1 replication support in VNX Cinder driver"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5aef4532_fa84c90b","line":3,"updated":"2016-03-09 17:11:51.000000000","message":"Can we add a period at the end for consistency?","commit_id":"bb0dfa4a8a25e07ab245fec48e49acd9240366ae"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"affeb7cc05a600f9761e160d2656aa08ddedb63e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds v2.1 replication support in VNX Cinder driver"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5aef4532_7a92554d","line":3,"in_reply_to":"5aef4532_fa84c90b","updated":"2016-03-10 08:02:44.000000000","message":"Done","commit_id":"bb0dfa4a8a25e07ab245fec48e49acd9240366ae"}]}
