import logging
import os

from designateclient.v2 import client
from designateclient import exceptions

from keystoneauth1.identity import generic
from keystoneauth1 import session as keystone_session


logging.basicConfig(level='DEBUG')

auth = generic.Password(
    auth_url=os.environ.get('OS_AUTH_URL'),
    username=os.environ.get('OS_USERNAME'),
    password=os.environ.get('OS_PASSWORD'),
    project_name=os.environ.get('OS_PROJECT_NAME'),
    project_domain_id='default',
    user_domain_id='default')

session = keystone_session.Session(auth=auth)

client = client.Client(session=session)


try:
    zone = dict([(z['name'], z) for z in client.zones.list()])['i.io.']
    client.zones.delete(zone['id'])
except exceptions.NotFound:
    pass

zone = client.zones.create(name='i.io.', email='i@i.io')

# Clean all recordsets first in this zone (for sanity sake)
for rrset in client.recordsets.list(zone['id']):
    if rrset['type'] in ('NS', 'SOA'):
        continue
    client.recordsets.delete(zone['id'], rrset['id'])

# Make some A records
www = client.recordsets.create(
    zone['id'],
    'www.%s' % zone['name'],
    'A',
    ['10.0.0.1'])

values = {
    'records': ['10.0.1.1', '10.0.0.2']
}

client.recordsets.update(zone['id'], www['id'], values)

cname = client.recordsets.create(
    zone['id'],
    'my-site.%s' % zone['name'],
    'CNAME',
    [www['name']])

# Now let's do some Mailserver examples

# First create the A record
mail1 = client.recordsets.create(
    zone['id'], 'mail1.' + zone['name'], 'A', ["10.0.0.11"])

mail2 = client.recordsets.create(
    zone['id'], 'mail2.' + zone['name'], 'A', ["10.0.0.12"])

# Create the MX records - it will be 1 recordset with multiple records pointing
# to the A records we created above
mx_rrset = client.recordsets.create(
    zone['id'], zone['name'], 'MX',
    ['0 ' + mail1['name'], '5 ' + mail2['name']])

print(zone['id'])