'Manage an existing volume in the ZFSSA backend.
:param volume: Reference to the new volume.
:param existing_ref: Reference to the existing volume to be managed.'

def manage_existing(self, volume, existing_ref):

    existing_vol_name = self._get_existing_vol_name(existing_ref)
    try:
        vol_props = self.zfssa.get_volume(existing_vol_name)
    except exception.VolumeNotFound:
        err_msg = (_("Volume    %s    doesn't    exist    on    the    ZFSSA    backend.") % existing_vol_name)
        LOG.error(err_msg)
        raise exception.InvalidInput(reason=err_msg)
    self._verify_volume_to_manage(existing_vol_name, vol_props)
    try:
        self.zfssa.rename_volume(existing_vol_name, volume['name'])
    except Exception:
        LOG.error('Failed    to    rename    volume    %(existing)s    to    %(new)s.    Volume    manage    failed.', {'existing': existing_vol_name, 'new': volume['name']})
        raise
    try:
        self.zfssa.set_file_props(volume['name'], {'cinder_managed': 'True'})
    except Exception:
        self.zfssa.rename_volume(volume['name'], existing_vol_name)
        LOG.error('Failed    to    set    properties    for    volume    %(existing)s.    Volume    manage    failed.', {'existing': volume['name']})
        raise
    return {'provider_location': self.mount_path}
