code: def volume_create(self, label, region=None, linode=None, size=20, **kwargs):
          
          if not (region or linode):
              raise ValueError('region or linode required!')
  
          params = {
              "label": label,
              "size": size,
              "region": region.id if issubclass(type(region), Base) else region,
              "linode_id": linode.id if issubclass(type(linode), Base) else linode,
          }
          params.update(kwargs)
  
          result = self.post('/volumes', data=params)
  
          if not 'id' in result:
              raise UnexpectedResponseError('Unexpected response when creating volume!', json=result)
  
          v = Volume(self, result['id'], result)
          return v
docs: Creates a new Block Storage Volume, either in the given Region or
          attached to the given Instance.
  
          :param label: The label for the new Volume.
          :type label: str
          :param region: The Region to create this Volume in.  Not required if
                         `linode` is provided.
          :type region: Region or str
          :param linode: The Instance to attach this Volume to.  If not given, the
                         new Volume will not be attached to anything.
          :type linode: Instance or int
          :param size: The size, in GB, of the new Volume.  Defaults to 20.
          :type size: int
  
          :returns: The new Volume.
          :rtype: Volume