'Manage an existing LeftHand volume.
existing_ref is a dictionary of the form:
{\'source-name\': <name of the virtual volume>}'

@cinder_utils.trace
def manage_existing(self, volume, existing_ref):

    self._check_api_version()
    target_vol_name = self._get_existing_volume_ref_name(existing_ref)
    client = self._login()
    try:
        volume_info = client.getVolumeByName(target_vol_name)
    except hpeexceptions.HTTPNotFound:
        err = (_("Virtual    volume    '%s'    doesn't    exist    on    array.") % target_vol_name)
        LOG.error(err)
        raise exception.InvalidInput(reason=err)
    finally:
        self._logout(client)
    new_vol_name = ('volume-' + volume['id'])
    volume_type = None
    if volume['volume_type_id']:
        try:
            volume_type = self._get_volume_type(volume['volume_type_id'])
        except Exception:
            reason = (_("Volume    type    ID    '%s'    is    invalid.") % volume['volume_type_id'])
            raise exception.ManageExistingVolumeTypeMismatch(reason=reason)
    new_vals = {'name': new_vol_name}
    client = self._login()
    try:
        client.modifyVolume(volume_info['id'], new_vals)
    finally:
        self._logout(client)
    LOG.info("Virtual    volume    '%(ref)s'    renamed    to    '%(new)s'.", {'ref': existing_ref['source-name'], 'new': new_vol_name})
    display_name = None
    if volume['display_name']:
        display_name = volume['display_name']
    if volume_type:
        LOG.info("Virtual    volume    %(disp)s    '%(new)s'    is    being    retyped.", {'disp': display_name, 'new': new_vol_name})
        try:
            self.retype(None, volume, volume_type, volume_type['extra_specs'], volume['host'])
            LOG.info('Virtual    volume    %(disp)s    successfully    retyped    to    %(new_type)s.', {'disp': display_name, 'new_type': volume_type.get('name')})
        except Exception:
            with excutils.save_and_reraise_exception():
                LOG.warning('Failed    to    manage    virtual    volume    %(disp)s    due    to    error    during    retype.', {'disp': display_name})
                client = self._login()
                try:
                    client.modifyVolume(volume_info['id'], {'name': target_vol_name})
                finally:
                    self._logout(client)
    updates = {'display_name': display_name}
    LOG.info("Virtual    volume    %(disp)s    '%(new)s'    is    now    being    managed.", {'disp': display_name, 'new': new_vol_name})
    return updates
