'Gets a single snapshot.'

def get_snapshot(self, volume_name, snapshot_name):

    snapshot_list_info = netapp_api.NaElement('snapshot-list-info')
    snapshot_list_info.add_new_child('volume', volume_name)
    result = self.connection.invoke_successfully(snapshot_list_info, enable_tunneling=True)
    snapshots = result.get_child_by_name('snapshots')
    if (not snapshots):
        msg = _('No    snapshots    could    be    found    on    volume    %s.')
        raise exception.VolumeBackendAPIException(data=(msg % volume_name))
    snapshot_list = snapshots.get_children()
    snapshot = None
    for s in snapshot_list:
        if ((snapshot_name == s.get_child_content('name')) and (snapshot is None)):
            snapshot = {'name': s.get_child_content('name'), 'volume': s.get_child_content('volume'), 'busy': strutils.bool_from_string(s.get_child_content('busy'))}
            snapshot_owners_list = (s.get_child_by_name('snapshot-owners-list') or netapp_api.NaElement('none'))
            snapshot_owners = set([snapshot_owner.get_child_content('owner') for snapshot_owner in snapshot_owners_list.get_children()])
            snapshot['owners'] = snapshot_owners
        elif ((snapshot_name == s.get_child_content('name')) and (snapshot is not None)):
            msg = _('Could    not    find    unique    snapshot    %(snap)s    on    volume    %(vol)s.')
            msg_args = {'snap': snapshot_name, 'vol': volume_name}
            raise exception.VolumeBackendAPIException(data=(msg % msg_args))
    if (not snapshot):
        raise exception.SnapshotNotFound(snapshot_id=snapshot_name)
    return snapshot
