'Brings an existing backend storage object under Cinder management.
:param snapshot:     Cinder volume snapshot to manage
:param existing_ref: Driver-specific information used to identify a
volume snapshot'

@cutils.trace
def manage_existing_snapshot(self, snapshot, existing_ref):

    (nfs_share, nfs_mount, src_snapshot_name) = self._get_share_mount_and_vol_from_vol_ref(existing_ref)
    LOG.info('Asked    to    manage    NFS    snapshot    %(snap)s    for    volume    %(vol)s,    with    vol    ref    %(ref)s.', {'snap': snapshot.id, 'vol': snapshot.volume_id, 'ref': existing_ref['source-name']})
    volume = snapshot.volume
    parent_name = self._get_snapshot_origin_from_name(src_snapshot_name)
    if (parent_name != volume.name):
        if (not self._check_snapshot_parent(volume, src_snapshot_name, nfs_share)):
            msg = (_("This    snapshot    %(snap)s    doesn't    belong    to    the    volume    parent    %(vol)s.") % {'snap': src_snapshot_name, 'vol': volume.id})
            raise exception.ManageExistingInvalidReference(existing_ref=existing_ref, reason=msg)
    snapshot_name = self._get_snapshot_name(snapshot)
    if (src_snapshot_name == snapshot_name):
        LOG.debug('New    Cinder    snapshot    %(snap)s    name    matches    reference    name.    No    need    to    rename.', {'snap': snapshot_name})
    else:
        src_snap = os.path.join(nfs_mount, src_snapshot_name)
        dst_snap = os.path.join(nfs_mount, snapshot_name)
        try:
            self._try_execute('mv', src_snap, dst_snap, run_as_root=False, check_exit_code=True)
            LOG.info('Setting    newly    managed    Cinder    snapshot    name    to    %(snap)s.', {'snap': snapshot_name})
            self._set_rw_permissions_for_all(dst_snap)
        except (OSError, processutils.ProcessExecutionError) as err:
            msg = (_('Failed    to    manage    existing    snapshot    %(name)s,    because    rename    operation    failed:    Error    msg:    %(msg)s.') % {'name': existing_ref['source-name'], 'msg': six.text_type(err)})
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)
    return {'provider_location': nfs_share}
