'Create a volume.
:param size: Size of volume to create (in GB).
:type size: ``int``
:param name: Name of volume to create
:type name: ``str``
:param location: Location to create the volume in
:type location: :class:`NodeLocation` or ``None``
:param snapshot:  Snapshot from which to create the new
volume.  (optional)
:type snapshot: :class:`.VolumeSnapshot`
:keyword ex_volume_type: ``\'classic\'`` or ``\'high-speed\'``
:type ex_volume_type: ``str``
:keyword ex_description: Optionnal description of volume
:type ex_description: str
:return:  Storage Volume object
:rtype:   :class:`StorageVolume`'

def create_volume(self, size, name, location, snapshot=None, ex_volume_type='classic', ex_description=None):

    action = self._get_project_action('volume')
    data = {'name': name, 'region': location.id, 'size': size, 'type': ex_volume_type}
    if ex_description:
        data['description'] = ex_description
    response = self.connection.request(action, data=data, method='POST')
    return self._to_volume(response.object)
