'Creates a snapshot.
If the volume does not have a backing then simply pass, else create
a snapshot.
Snapshot of only available volume is supported.
:param snapshot: Snapshot object'

def _create_snapshot(self, snapshot):

    volume = snapshot['volume']
    if (volume['status'] != 'available'):
        msg = (_('Snapshot    of    volume    not    supported    in    state:    %s.') % volume['status'])
        LOG.error(msg)
        raise exception.InvalidVolume(msg)
    backing = self.volumeops.get_backing(snapshot['volume_name'])
    if (not backing):
        LOG.info('There    is    no    backing,    so    will    not    create    snapshot:    %s.', snapshot['name'])
        return
    self.volumeops.create_snapshot(backing, snapshot['name'], snapshot['display_description'])
    LOG.info('Successfully    created    snapshot:    %s.', snapshot['name'])
