'Create snapshot from volume
:param      volume: Instance of ``StorageVolume``
:type       volume: ``StorageVolume``
:param      name: Name of snapshot (optional)
:type       name: ``str``
:rtype: :class:`VolumeSnapshot`'

def create_volume_snapshot(self, volume, name=None):

    params = {'Action': 'CreateSnapshot', 'VolumeId': volume.id}
    if name:
        params.update({'Description': name})
    response = self.connection.request(self.path, params=params).object
    snapshot = self._to_snapshot(response, name)
    if (name and self.ex_create_tags(snapshot, {'Name': name})):
        snapshot.extra['tags']['Name'] = name
    return snapshot
