'Brings an existing backend storage object under Cinder management.
existing_ref is passed straight through from the API request\'s
manage_existing_ref value, and it is up to the driver how this should
be interpreted.  It should be sufficient to identify a storage object
that the driver should somehow associate with the newly-created cinder
volume structure.
:param volume:       Cinder volume to manage
:param existing_ref: Driver-specific information used to identify a
volume'

def manage_existing(self, volume, existing_ref):

    (nfs_share, nfs_mount, volume_name) = self._get_share_mount(existing_ref)
    LOG.debug('Managing    volume    %(vol)s    with    ref    %(ref)s', {'vol': volume['id'], 'ref': existing_ref})
    if (volume_name != volume['name']):
        src = os.path.join(nfs_mount, volume_name)
        dst = os.path.join(nfs_mount, volume['name'])
        if (not self._move_file(src, dst)):
            msg = (_('Failed    to    manage    volume    %s.') % existing_ref['source-name'])
            raise exception.VolumeDriverException(msg)
        self._set_rw_permissions(dst)
    LOG.info('Manage    volume    %s', volume['name'])
    return {'provider_location': nfs_share}
