'Create a new zone.
:param domain: Zone domain name (e.g. example.com)
:type domain: ``str``
:param type: Zone type (This is not really used. See API docs for extra
parameters).
:type  type: ``str``
:param ttl: TTL for new records. (This is not really used)
:type  ttl: ``int``
:param extra: Extra attributes (driver specific). (\'region_support\',
\'zone_data\')
:type extra: ``dict``
:rtype: :class:`Zone`
For more info, please see:
https://www.liquidweb.com/storm/api/docs/v1/Network/DNS/Zone.html'

def create_zone(self, domain, type='master', ttl=None, extra=None):

    action = '/v1/Network/DNS/Zone/create'
    data = {'params': {'name': domain}}
    if (extra is not None):
        data['params'].update(extra)
    try:
        data = json.dumps(data)
        response = self.connection.request(action=action, method='POST', data=data)
    except APIException:
        e = sys.exc_info()[1]
        if (e.error_class == 'LW::Exception::DuplicateRecord'):
            raise ZoneAlreadyExistsError(zone_id=domain, value=e.value, driver=self)
        else:
            raise e
    zone = self._to_zone(response.objects[0])
    return zone
