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

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

    action = self._get_project_action(('volume/%s/snapshot/' % volume.id))
    data = {}
    if name:
        data['name'] = name
    if ex_description:
        data['description'] = ex_description
    response = self.connection.request(action, data=data, method='POST')
    return self._to_snapshot(response.object)
