'Setup up remote replication for a volume.
:param volume: the volume object
:param volume_name: the volume name
:param volume_dict: the volume dict
:param extra_specs: the extra specifications
:param delete_src: flag to indicate if source should be deleted on
if replication fails
:returns: replication model_update'

def _replicate_volume(self, volume, volume_name, volume_dict, extra_specs, delete_src=True):

    array = volume_dict['array']
    try:
        device_id = volume_dict['device_id']
        (replication_status, replication_driver_data) = self.setup_volume_replication(array, volume, device_id, extra_specs)
    except Exception:
        if delete_src:
            self._cleanup_replication_source(array, volume, volume_name, volume_dict, extra_specs)
        raise
    return {'replication_status': replication_status, 'replication_driver_data': six.text_type(replication_driver_data)}
