)]}'
{"cinder/volume/drivers/dell_emc/vmax/common.py":[{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":2308,"context_line":"        :param volumes: the list of volumes to be failed over"},{"line_number":2309,"context_line":"        :param secondary_id: the target backend"},{"line_number":2310,"context_line":"        :param groups: replication groups"},{"line_number":2311,"context_line":"        :returns: secondary_id, volume_update_list, group_update_list"},{"line_number":2312,"context_line":"        \"\"\""},{"line_number":2313,"context_line":"        volume_update_list \u003d []"},{"line_number":2314,"context_line":"        group_update_list \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_5c394f3f","line":2311,"updated":"2017-09-21 11:07:18.000000000","message":":raises: VolumeBackendAPIException","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":2308,"context_line":"        :param volumes: the list of volumes to be failed over"},{"line_number":2309,"context_line":"        :param secondary_id: the target backend"},{"line_number":2310,"context_line":"        :param groups: replication groups"},{"line_number":2311,"context_line":"        :returns: secondary_id, volume_update_list, group_update_list"},{"line_number":2312,"context_line":"        \"\"\""},{"line_number":2313,"context_line":"        volume_update_list \u003d []"},{"line_number":2314,"context_line":"        group_update_list \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_a2514611","line":2311,"in_reply_to":"9f5c4f37_5c394f3f","updated":"2017-09-21 13:12:10.000000000","message":"Done","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"63ee2e1f4203d23335fb8be9e7251c8c160a65de","unresolved":false,"context_lines":[{"line_number":2348,"context_line":"            for group in groups:"},{"line_number":2349,"context_line":"                vol_list \u003d []"},{"line_number":2350,"context_line":"                for index, vol in enumerate(volumes):"},{"line_number":2351,"context_line":"                    if vol[\u0027group_id\u0027] \u003d\u003d group[\u0027id\u0027]:"},{"line_number":2352,"context_line":"                        vol_list.append(volumes.pop(index))"},{"line_number":2353,"context_line":"                grp_update, vol_updates \u003d ("},{"line_number":2354,"context_line":"                    self.failover_replication("}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_9aefcc86","line":2351,"range":{"start_line":2351,"start_character":23,"end_line":2351,"end_character":53},"updated":"2017-09-21 11:06:09.000000000","message":"Update vol[\u0027group_id\u0027] to vol.group_id and group[\u0027id\u0027] to group.id?","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":2348,"context_line":"            for group in groups:"},{"line_number":2349,"context_line":"                vol_list \u003d []"},{"line_number":2350,"context_line":"                for index, vol in enumerate(volumes):"},{"line_number":2351,"context_line":"                    if vol[\u0027group_id\u0027] \u003d\u003d group[\u0027id\u0027]:"},{"line_number":2352,"context_line":"                        vol_list.append(volumes.pop(index))"},{"line_number":2353,"context_line":"                grp_update, vol_updates \u003d ("},{"line_number":2354,"context_line":"                    self.failover_replication("}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_82564206","line":2351,"range":{"start_line":2351,"start_character":23,"end_line":2351,"end_character":53},"in_reply_to":"9f5c4f37_9aefcc86","updated":"2017-09-21 13:12:10.000000000","message":"Done","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"63ee2e1f4203d23335fb8be9e7251c8c160a65de","unresolved":false,"context_lines":[{"line_number":2349,"context_line":"                vol_list \u003d []"},{"line_number":2350,"context_line":"                for index, vol in enumerate(volumes):"},{"line_number":2351,"context_line":"                    if vol[\u0027group_id\u0027] \u003d\u003d group[\u0027id\u0027]:"},{"line_number":2352,"context_line":"                        vol_list.append(volumes.pop(index))"},{"line_number":2353,"context_line":"                grp_update, vol_updates \u003d ("},{"line_number":2354,"context_line":"                    self.failover_replication("},{"line_number":2355,"context_line":"                        None, group, vol_list, group_fo, host\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_350d9337","line":2352,"range":{"start_line":2352,"start_character":40,"end_line":2352,"end_character":58},"updated":"2017-09-21 11:06:09.000000000","message":"volumes is changed here, right? Maybe it is not a good way to do this.","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":2349,"context_line":"                vol_list \u003d []"},{"line_number":2350,"context_line":"                for index, vol in enumerate(volumes):"},{"line_number":2351,"context_line":"                    if vol[\u0027group_id\u0027] \u003d\u003d group[\u0027id\u0027]:"},{"line_number":2352,"context_line":"                        vol_list.append(volumes.pop(index))"},{"line_number":2353,"context_line":"                grp_update, vol_updates \u003d ("},{"line_number":2354,"context_line":"                    self.failover_replication("},{"line_number":2355,"context_line":"                        None, group, vol_list, group_fo, host\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_e2b4de37","line":2352,"range":{"start_line":2352,"start_character":40,"end_line":2352,"end_character":58},"in_reply_to":"9f5c4f37_350d9337","updated":"2017-09-21 13:12:10.000000000","message":"Yes that is correct - I\u0027m removing any volumes which can be failed over using the group, so there\u0027s no attempt to fail them over twice. I can take a different approach if you think it would be better? Thanks for the feedback!","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"63ee2e1f4203d23335fb8be9e7251c8c160a65de","unresolved":false,"context_lines":[{"line_number":3425,"context_line":"                raise exception.GroupNotFound(group_id\u003dgroup.id)"},{"line_number":3426,"context_line":""},{"line_number":3427,"context_line":"            rdf_group_no, _ \u003d self.get_rdf_details(array)"},{"line_number":3428,"context_line":"            failover \u003d False if secondary_backend_id is not None else True"},{"line_number":3429,"context_line":"            self.provision.failover_group("},{"line_number":3430,"context_line":"                array, vol_grp_name, rdf_group_no, extra_specs, failover)"},{"line_number":3431,"context_line":"            if failover:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_5527e765","line":3428,"range":{"start_line":3428,"start_character":0,"end_line":3428,"end_character":74},"updated":"2017-09-21 11:06:09.000000000","message":"Does it need to check invalid backend_id here?","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":3425,"context_line":"                raise exception.GroupNotFound(group_id\u003dgroup.id)"},{"line_number":3426,"context_line":""},{"line_number":3427,"context_line":"            rdf_group_no, _ \u003d self.get_rdf_details(array)"},{"line_number":3428,"context_line":"            failover \u003d False if secondary_backend_id is not None else True"},{"line_number":3429,"context_line":"            self.provision.failover_group("},{"line_number":3430,"context_line":"                array, vol_grp_name, rdf_group_no, extra_specs, failover)"},{"line_number":3431,"context_line":"            if failover:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_e8d95d22","line":3428,"range":{"start_line":3428,"start_character":0,"end_line":3428,"end_character":74},"in_reply_to":"9f5c4f37_5527e765","updated":"2017-09-21 13:12:10.000000000","message":"We only support a single replication target, so we always failover to the only available backend and ignore secondary_backend_id if it is not \u0027default\u0027. I will change this though to make it clearer, and add a comment to explain it. Thank you.","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"63ee2e1f4203d23335fb8be9e7251c8c160a65de","unresolved":false,"context_lines":[{"line_number":3428,"context_line":"            failover \u003d False if secondary_backend_id is not None else True"},{"line_number":3429,"context_line":"            self.provision.failover_group("},{"line_number":3430,"context_line":"                array, vol_grp_name, rdf_group_no, extra_specs, failover)"},{"line_number":3431,"context_line":"            if failover:"},{"line_number":3432,"context_line":"                model_update.update({"},{"line_number":3433,"context_line":"                    \u0027replication_status\u0027:"},{"line_number":3434,"context_line":"                        fields.ReplicationStatus.FAILED_OVER})"},{"line_number":3435,"context_line":"                vol_rep_status \u003d fields.ReplicationStatus.FAILED_OVER"},{"line_number":3436,"context_line":"            else:"},{"line_number":3437,"context_line":"                model_update.update({"},{"line_number":3438,"context_line":"                    \u0027replication_status\u0027: fields.ReplicationStatus.ENABLED})"},{"line_number":3439,"context_line":"                vol_rep_status \u003d fields.ReplicationStatus.ENABLED"},{"line_number":3440,"context_line":""},{"line_number":3441,"context_line":"        except Exception as e:"},{"line_number":3442,"context_line":"            model_update.update({"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_3f97ad93","line":3439,"range":{"start_line":3431,"start_character":2,"end_line":3439,"end_character":65},"updated":"2017-09-21 11:06:09.000000000","message":"How about in-use volume behavior after failover?\nThere is also another question, once the volume in a group is failovered to the target, how about attaching volume, the attaching should happens in the traget side, right?","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":3428,"context_line":"            failover \u003d False if secondary_backend_id is not None else True"},{"line_number":3429,"context_line":"            self.provision.failover_group("},{"line_number":3430,"context_line":"                array, vol_grp_name, rdf_group_no, extra_specs, failover)"},{"line_number":3431,"context_line":"            if failover:"},{"line_number":3432,"context_line":"                model_update.update({"},{"line_number":3433,"context_line":"                    \u0027replication_status\u0027:"},{"line_number":3434,"context_line":"                        fields.ReplicationStatus.FAILED_OVER})"},{"line_number":3435,"context_line":"                vol_rep_status \u003d fields.ReplicationStatus.FAILED_OVER"},{"line_number":3436,"context_line":"            else:"},{"line_number":3437,"context_line":"                model_update.update({"},{"line_number":3438,"context_line":"                    \u0027replication_status\u0027: fields.ReplicationStatus.ENABLED})"},{"line_number":3439,"context_line":"                vol_rep_status \u003d fields.ReplicationStatus.ENABLED"},{"line_number":3440,"context_line":""},{"line_number":3441,"context_line":"        except Exception as e:"},{"line_number":3442,"context_line":"            model_update.update({"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_a2bca6bb","line":3439,"range":{"start_line":3431,"start_character":2,"end_line":3439,"end_character":65},"in_reply_to":"9f5c4f37_3f97ad93","updated":"2017-09-21 13:12:10.000000000","message":"In-use volumes are a special case - failover on in-use volumes are blocked by default on groups, and if it is attempted, manual intervention is required to detach and reattach the volumes. This is a cinder-wide restriction. Best practice is to detach any volumes before failover.\n\nTo your second question, yes, that is correct - once a volume is failed over, the attach will occur on the target side. Before a failback operation, the volumes should be detached, and then reattached on the primary array after the failback occurs.","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"24907abf8c61b820cf968c1422d4cbb4314e80b1","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        \"\"\"Add a new volume to a volume group."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        This may also be called after extending a replicated volume."},{"line_number":282,"context_line":"        :param volume: the volume object"},{"line_number":283,"context_line":"        :param volume_name: the volume name"},{"line_number":284,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":285,"context_line":"        :param rep_driver_data: the replication driver data, optional"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_41e7f813","line":282,"updated":"2017-10-20 10:30:26.000000000","message":":param device_id missing","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"737e3c9135325f9cc842c9a89ee787b879368c77","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        \"\"\"Add a new volume to a volume group."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        This may also be called after extending a replicated volume."},{"line_number":282,"context_line":"        :param volume: the volume object"},{"line_number":283,"context_line":"        :param volume_name: the volume name"},{"line_number":284,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":285,"context_line":"        :param rep_driver_data: the replication driver data, optional"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_b3027f08","line":282,"in_reply_to":"3f4b6375_41e7f813","updated":"2017-10-20 10:55:39.000000000","message":"Done","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"24907abf8c61b820cf968c1422d4cbb4314e80b1","unresolved":false,"context_lines":[{"line_number":2401,"context_line":"        :param vol: the volume object"},{"line_number":2402,"context_line":"        :param failover: flag to indicate failover or failback -- bool"},{"line_number":2403,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":2404,"context_line":"        :returns: model_update -- dict"},{"line_number":2405,"context_line":"        \"\"\""},{"line_number":2406,"context_line":"        loc \u003d vol.provider_location"},{"line_number":2407,"context_line":"        rep_data \u003d vol.replication_driver_data"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_81abb087","line":2404,"updated":"2017-10-20 10:30:26.000000000","message":":returns: rep_extra_specs -- dict","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"737e3c9135325f9cc842c9a89ee787b879368c77","unresolved":false,"context_lines":[{"line_number":2401,"context_line":"        :param vol: the volume object"},{"line_number":2402,"context_line":"        :param failover: flag to indicate failover or failback -- bool"},{"line_number":2403,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":2404,"context_line":"        :returns: model_update -- dict"},{"line_number":2405,"context_line":"        \"\"\""},{"line_number":2406,"context_line":"        loc \u003d vol.provider_location"},{"line_number":2407,"context_line":"        rep_data \u003d vol.replication_driver_data"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_93578303","line":2404,"in_reply_to":"3f4b6375_81abb087","updated":"2017-10-20 10:55:39.000000000","message":"This method returns \"model_update\" - see line 2449 below. This view skips some unchanged lines, \"rep_extra_specs\" is returned on line 2718 from a different method (\"_get_replication_extra_specs\").","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"24907abf8c61b820cf968c1422d4cbb4314e80b1","unresolved":false,"context_lines":[{"line_number":2764,"context_line":""},{"line_number":2765,"context_line":"        :param context: the context"},{"line_number":2766,"context_line":"        :param group: the group object to be created"},{"line_number":2767,"context_line":"        :returns: dict -- modelUpdate \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":2768,"context_line":"        :raises: VolumeBackendAPIException, NotImplementedError"},{"line_number":2769,"context_line":"        \"\"\""},{"line_number":2770,"context_line":"        if (not volume_utils.is_group_a_cg_snapshot_type(group)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_c18f6821","line":2767,"updated":"2017-10-20 10:30:26.000000000","message":"nit model_update, not sure if the \u003d {\u0027status\u0027: \u0027available\u0027} is necessary","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"737e3c9135325f9cc842c9a89ee787b879368c77","unresolved":false,"context_lines":[{"line_number":2764,"context_line":""},{"line_number":2765,"context_line":"        :param context: the context"},{"line_number":2766,"context_line":"        :param group: the group object to be created"},{"line_number":2767,"context_line":"        :returns: dict -- modelUpdate \u003d {\u0027status\u0027: \u0027available\u0027}"},{"line_number":2768,"context_line":"        :raises: VolumeBackendAPIException, NotImplementedError"},{"line_number":2769,"context_line":"        \"\"\""},{"line_number":2770,"context_line":"        if (not volume_utils.is_group_a_cg_snapshot_type(group)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_53410b39","line":2767,"in_reply_to":"3f4b6375_c18f6821","updated":"2017-10-20 10:55:39.000000000","message":"Agreed, I will remove this.","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"}],"cinder/volume/drivers/dell_emc/vmax/fc.py":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"63ee2e1f4203d23335fb8be9e7251c8c160a65de","unresolved":false,"context_lines":[{"line_number":82,"context_line":"              - Support for volume replication"},{"line_number":83,"context_line":"              - Support for live migration"},{"line_number":84,"context_line":"              - Support for Generic Volume Group"},{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    VERSION \u003d \"3.0.0\""},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_753b0b9c","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":7},"updated":"2017-09-21 11:06:09.000000000","message":"Should version info be updated here?","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":82,"context_line":"              - Support for volume replication"},{"line_number":83,"context_line":"              - Support for live migration"},{"line_number":84,"context_line":"              - Support for Generic Volume Group"},{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    VERSION \u003d \"3.0.0\""},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_287655da","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":7},"in_reply_to":"9f5c4f37_753b0b9c","updated":"2017-09-21 13:12:10.000000000","message":"Yes it should, thank you!","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        :param context: the context"},{"line_number":467,"context_line":"        :param group: the group object"},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        return self.common.create_group(context, group)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def delete_group(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_5cd5cfb8","line":468,"updated":"2017-09-21 11:07:18.000000000","message":":returns: model_update","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        :param context: the context"},{"line_number":467,"context_line":"        :param group: the group object"},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        return self.common.create_group(context, group)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def delete_group(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_e82ddda8","line":468,"in_reply_to":"9f5c4f37_5cd5cfb8","updated":"2017-09-21 13:12:10.000000000","message":"Done","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        :param context: the context"},{"line_number":534,"context_line":"        :param group: the group object"},{"line_number":535,"context_line":"        :param volumes: the list of volumes"},{"line_number":536,"context_line":"        \"\"\""},{"line_number":537,"context_line":"        return self.common.enable_replication(context, group, volumes)"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def disable_replication(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_3cb1fb90","line":536,"updated":"2017-09-21 11:07:18.000000000","message":":returns: model_update, None","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        :param context: the context"},{"line_number":534,"context_line":"        :param group: the group object"},{"line_number":535,"context_line":"        :param volumes: the list of volumes"},{"line_number":536,"context_line":"        \"\"\""},{"line_number":537,"context_line":"        return self.common.enable_replication(context, group, volumes)"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def disable_replication(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_c803390f","line":536,"in_reply_to":"9f5c4f37_3cb1fb90","updated":"2017-09-21 13:12:10.000000000","message":"Done","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        :param context: the context"},{"line_number":543,"context_line":"        :param group: the group object"},{"line_number":544,"context_line":"        :param volumes: the list of volumes"},{"line_number":545,"context_line":"        \"\"\""},{"line_number":546,"context_line":"        return self.common.disable_replication(context, group, volumes)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def failover_replication(self, context, group, volumes,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_dca77f4f","line":545,"updated":"2017-09-21 11:07:18.000000000","message":":returns: model_update, None","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        :param context: the context"},{"line_number":543,"context_line":"        :param group: the group object"},{"line_number":544,"context_line":"        :param volumes: the list of volumes"},{"line_number":545,"context_line":"        \"\"\""},{"line_number":546,"context_line":"        return self.common.disable_replication(context, group, volumes)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def failover_replication(self, context, group, volumes,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_b3fe3603","line":545,"in_reply_to":"9f5c4f37_dca77f4f","updated":"2017-09-21 13:12:10.000000000","message":"Done","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        :param group: the group object"},{"line_number":554,"context_line":"        :param volumes: the list of volumes"},{"line_number":555,"context_line":"        :param secondary_backend_id: the secondary backend id - default None"},{"line_number":556,"context_line":"        \"\"\""},{"line_number":557,"context_line":"        return self.common.failover_replication("},{"line_number":558,"context_line":"            context, group, volumes, secondary_backend_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_5c4a6f80","line":556,"updated":"2017-09-21 11:07:18.000000000","message":":returns: model_update, vol_model_updates","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":553,"context_line":"        :param group: the group object"},{"line_number":554,"context_line":"        :param volumes: the list of volumes"},{"line_number":555,"context_line":"        :param secondary_backend_id: the secondary backend id - default None"},{"line_number":556,"context_line":"        \"\"\""},{"line_number":557,"context_line":"        return self.common.failover_replication("},{"line_number":558,"context_line":"            context, group, volumes, secondary_backend_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_9303320e","line":556,"in_reply_to":"9f5c4f37_5c4a6f80","updated":"2017-09-21 13:12:10.000000000","message":"Done","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"}],"cinder/volume/drivers/dell_emc/vmax/iscsi.py":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"63ee2e1f4203d23335fb8be9e7251c8c160a65de","unresolved":false,"context_lines":[{"line_number":87,"context_line":"              - Support for volume replication"},{"line_number":88,"context_line":"              - Support for live migration"},{"line_number":89,"context_line":"              - Support for Generic Volume Group"},{"line_number":90,"context_line":"    \"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    VERSION \u003d \"3.0.0\""},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_154a8f26","line":90,"range":{"start_line":90,"start_character":2,"end_line":90,"end_character":7},"updated":"2017-09-21 11:06:09.000000000","message":"Should version info be updated here?","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":87,"context_line":"              - Support for volume replication"},{"line_number":88,"context_line":"              - Support for live migration"},{"line_number":89,"context_line":"              - Support for Generic Volume Group"},{"line_number":90,"context_line":"    \"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    VERSION \u003d \"3.0.0\""},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_d3188a76","line":90,"range":{"start_line":90,"start_character":2,"end_line":90,"end_character":7},"in_reply_to":"9f5c4f37_154a8f26","updated":"2017-09-21 13:12:10.000000000","message":"Yes it should, thank you!","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        :param context: the context"},{"line_number":414,"context_line":"        :param group: the group object"},{"line_number":415,"context_line":"        \"\"\""},{"line_number":416,"context_line":"        return self.common.create_group(context, group)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def delete_group(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_9c3587fa","line":415,"updated":"2017-09-21 11:07:18.000000000","message":":returns: model_update","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        :param context: the context"},{"line_number":481,"context_line":"        :param group: the group object"},{"line_number":482,"context_line":"        :param volumes: the list of volumes"},{"line_number":483,"context_line":"        \"\"\""},{"line_number":484,"context_line":"        return self.common.enable_replication(context, group, volumes)"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def disable_replication(self, context, group, volumes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_5c3f0fd6","line":483,"updated":"2017-09-21 11:07:18.000000000","message":":returns: model_update, None","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        :param context: the context"},{"line_number":490,"context_line":"        :param group: the group object"},{"line_number":491,"context_line":"        :param volumes: the list of volumes"},{"line_number":492,"context_line":"        \"\"\""},{"line_number":493,"context_line":"        return self.common.disable_replication(context, group, volumes)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def failover_replication(self, context, group, volumes,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_dc2adf8e","line":492,"updated":"2017-09-21 11:07:18.000000000","message":":returns: model_update, None","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        :param group: the group object"},{"line_number":501,"context_line":"        :param volumes: the list of volumes"},{"line_number":502,"context_line":"        :param secondary_backend_id: the secondary backend id - default None"},{"line_number":503,"context_line":"        \"\"\""},{"line_number":504,"context_line":"        return self.common.failover_replication("},{"line_number":505,"context_line":"            context, group, volumes, secondary_backend_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_7f088527","line":503,"updated":"2017-09-21 11:07:18.000000000","message":":returns: model_update, vol_model_updates","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"}],"cinder/volume/drivers/dell_emc/vmax/rest.py":[{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":703,"context_line":"        :param array: the array serial number"},{"line_number":704,"context_line":"        :param device_id: the device id"},{"line_number":705,"context_line":"        :param element_name: name associated with cinder, e.g.OS-\u003ccinderUUID\u003e"},{"line_number":706,"context_line":"        :return: found_device_id"},{"line_number":707,"context_line":"        \"\"\""},{"line_number":708,"context_line":"        found_device_id \u003d None"},{"line_number":709,"context_line":"        vol_details \u003d self.get_volume(array, device_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_9f9fb9b3","line":706,"updated":"2017-09-21 11:07:18.000000000","message":":returns:","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":703,"context_line":"        :param array: the array serial number"},{"line_number":704,"context_line":"        :param device_id: the device id"},{"line_number":705,"context_line":"        :param element_name: name associated with cinder, e.g.OS-\u003ccinderUUID\u003e"},{"line_number":706,"context_line":"        :return: found_device_id"},{"line_number":707,"context_line":"        \"\"\""},{"line_number":708,"context_line":"        found_device_id \u003d None"},{"line_number":709,"context_line":"        vol_details \u003d self.get_volume(array, device_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_f3626ed8","line":706,"in_reply_to":"9f5c4f37_9f9fb9b3","updated":"2017-09-21 13:12:10.000000000","message":"Done","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"ead1a36645d2bae41c2065645f37c5d095c9431c","unresolved":false,"context_lines":[{"line_number":2067,"context_line":"        :param storagegroup_name: the storage group name"},{"line_number":2068,"context_line":"        :param rdf_group_num: the rdf group number"},{"line_number":2069,"context_line":"        :param action: the requested action"},{"line_number":2070,"context_line":"        :return: bool"},{"line_number":2071,"context_line":"        \"\"\""},{"line_number":2072,"context_line":"        mod_rqd \u003d True"},{"line_number":2073,"context_line":"        sg_rdf_details \u003d self.get_storagegroup_rdf_details("}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_9f88d971","line":2070,"updated":"2017-09-21 11:07:18.000000000","message":":returns:","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"265b9c56e66082855e9d2ebcfe95c20e4f3c08ec","unresolved":false,"context_lines":[{"line_number":2067,"context_line":"        :param storagegroup_name: the storage group name"},{"line_number":2068,"context_line":"        :param rdf_group_num: the rdf group number"},{"line_number":2069,"context_line":"        :param action: the requested action"},{"line_number":2070,"context_line":"        :return: bool"},{"line_number":2071,"context_line":"        \"\"\""},{"line_number":2072,"context_line":"        mod_rqd \u003d True"},{"line_number":2073,"context_line":"        sg_rdf_details \u003d self.get_storagegroup_rdf_details("}],"source_content_type":"text/x-python","patch_set":4,"id":"9f5c4f37_737d5e6d","line":2070,"in_reply_to":"9f5c4f37_9f88d971","updated":"2017-09-21 13:12:10.000000000","message":"Done","commit_id":"baaaa5c11b48a9d65b1cf16d1301e14af72ad54f"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"24907abf8c61b820cf968c1422d4cbb4314e80b1","unresolved":false,"context_lines":[{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        :param array: the array serial number"},{"line_number":869,"context_line":"        :param storagegroup_name: the storage group name"},{"line_number":870,"context_line":"        :param srp_name: the srp pool name"},{"line_number":871,"context_line":"        \"\"\""},{"line_number":872,"context_line":"        payload \u003d {\"editStorageGroupActionParam\": {"},{"line_number":873,"context_line":"            \"editStorageGroupSRPParam\": {\"srpId\": srp_name}}}"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_01222001","line":870,"updated":"2017-10-20 10:30:26.000000000","message":":param extra_specs:","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"737e3c9135325f9cc842c9a89ee787b879368c77","unresolved":false,"context_lines":[{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        :param array: the array serial number"},{"line_number":869,"context_line":"        :param storagegroup_name: the storage group name"},{"line_number":870,"context_line":"        :param srp_name: the srp pool name"},{"line_number":871,"context_line":"        \"\"\""},{"line_number":872,"context_line":"        payload \u003d {\"editStorageGroupActionParam\": {"},{"line_number":873,"context_line":"            \"editStorageGroupSRPParam\": {\"srpId\": srp_name}}}"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_134b9359","line":870,"in_reply_to":"3f4b6375_01222001","updated":"2017-10-20 10:55:39.000000000","message":"Done","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"}],"cinder/volume/drivers/dell_emc/vmax/utils.py":[{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"24907abf8c61b820cf968c1422d4cbb4314e80b1","unresolved":false,"context_lines":[{"line_number":676,"context_line":"        This will make sure they do not conflict with each other."},{"line_number":677,"context_line":"        :param volume: volume to be checked"},{"line_number":678,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":679,"context_line":"        :returns: None"},{"line_number":680,"context_line":"        :raises: InvalidInput"},{"line_number":681,"context_line":"        \"\"\""},{"line_number":682,"context_line":"        # If volume is not a member of group, skip this check anyway."}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_21519c63","line":679,"updated":"2017-10-20 10:30:26.000000000","message":"Remove :returns: None","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"},{"author":{"_account_id":23414,"name":"Ciara Stacke","email":"ciara.stacke@emc.com","username":"cstacke"},"change_message_id":"737e3c9135325f9cc842c9a89ee787b879368c77","unresolved":false,"context_lines":[{"line_number":676,"context_line":"        This will make sure they do not conflict with each other."},{"line_number":677,"context_line":"        :param volume: volume to be checked"},{"line_number":678,"context_line":"        :param extra_specs: the extra specifications"},{"line_number":679,"context_line":"        :returns: None"},{"line_number":680,"context_line":"        :raises: InvalidInput"},{"line_number":681,"context_line":"        \"\"\""},{"line_number":682,"context_line":"        # If volume is not a member of group, skip this check anyway."}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_b3795f94","line":679,"in_reply_to":"3f4b6375_21519c63","updated":"2017-10-20 10:55:39.000000000","message":"Done","commit_id":"b037a8eedb0cd2c3a012dd9b534f132d796fb3c8"}]}
