'Manage an existing 3PAR snapshot.
existing_ref is a dictionary of the form:
{\'source-name\': <name of the snapshot>}'

def manage_existing_snapshot(self, snapshot, existing_ref):

    volume = snapshot['volume']
    if (volume.get('replication_status') == 'failed-over'):
        err = _('Managing    of    snapshots    to    failed-over    volumes    is    not    allowed.')
        raise exception.InvalidInput(reason=err)
    target_snap_name = self._get_existing_volume_ref_name(existing_ref, is_snapshot=True)
    try:
        snap = self.client.getVolume(target_snap_name)
    except hpeexceptions.HTTPNotFound:
        err = (_("Snapshot    '%s'    doesn't    exist    on    array.") % target_snap_name)
        LOG.error(err)
        raise exception.InvalidInput(reason=err)
    parent_vol_name = self._get_3par_vol_name(volume['id'])
    if (parent_vol_name != snap['copyOf']):
        err = (_("The    provided    snapshot    '%s'    is    not    a    snapshot    of    the    provided    volume.") % target_snap_name)
        LOG.error(err)
        raise exception.InvalidInput(reason=err)
    new_comment = {}
    if snapshot['display_name']:
        display_name = snapshot['display_name']
        new_comment['display_name'] = snapshot['display_name']
    elif ('comment' in snap):
        display_name = self._get_3par_vol_comment_value(snap['comment'], 'display_name')
        if display_name:
            new_comment['display_name'] = display_name
    else:
        display_name = None
    new_snap_name = self._get_3par_snap_name(snapshot['id'])
    new_comment['volume_id'] = volume['id']
    new_comment['volume_name'] = ('volume-' + volume['id'])
    if snapshot.get('display_description', None):
        new_comment['description'] = snapshot['display_description']
    else:
        new_comment['description'] = ''
    new_vals = {'newName': new_snap_name, 'comment': json.dumps(new_comment)}
    self.client.modifyVolume(target_snap_name, new_vals)
    LOG.info("Snapshot    '%(ref)s'    renamed    to    '%(new)s'.", {'ref': existing_ref['source-name'], 'new': new_snap_name})
    updates = {'display_name': display_name}
    LOG.info("Snapshot    %(disp)s    '%(new)s'    is    now    being    managed.", {'disp': display_name, 'new': new_snap_name})
    return updates
