'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`'

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

    action = '/v1/zones'
    data = json.dumps({'name': domain})
    try:
        response = self.connection.request(action=action, method='POST', data=data)
    except LuadnsException:
        e = sys.exc_info()[1]
        if (e.message == ("Zone    '%s'    is    taken    already." % domain)):
            raise ZoneAlreadyExistsError(zone_id=domain, value='', driver=self)
        else:
            raise e
    zone = self._to_zone(response.parse_body())
    return zone
