summaryrefslogtreecommitdiff
path: root/doc/examples
diff options
context:
space:
mode:
authorEndre Karlson <endre.karlson@hp.com>2014-11-13 09:56:24 +0100
committerEndre Karlson <endre.karlson@hp.com>2015-05-07 17:23:09 +0200
commit2a2c85ce21cd03ba871f0b44195e7ed22e680d62 (patch)
tree7924e0480efff1791cdbf5bb9dcd71fc83567953 /doc/examples
parent39d8b54d785bafd550a94b3d396ead8911557cfc (diff)
downloadpython-designateclient-2a2c85ce21cd03ba871f0b44195e7ed22e680d62.tar.gz
V2 Bindings
This provides bindings for: - zones - recordsets - tlds - blacklists - limits - nameservers With associated unit tests. Change-Id: Ie9b79340bd327b78916fd038633842da3ace881b
Diffstat (limited to 'doc/examples')
-rw-r--r--doc/examples/recordset_create.py44
-rw-r--r--doc/examples/recordset_crud.py72
-rw-r--r--doc/examples/zone_create_primary.py29
-rw-r--r--doc/examples/zone_create_secondary.py43
-rw-r--r--doc/examples/zone_list_nameservers.py29
-rw-r--r--doc/examples/zone_list_paging.py36
6 files changed, 253 insertions, 0 deletions
diff --git a/doc/examples/recordset_create.py b/doc/examples/recordset_create.py
new file mode 100644
index 0000000..38d4366
--- /dev/null
+++ b/doc/examples/recordset_create.py
@@ -0,0 +1,44 @@
+import logging
+
+from designateclient.v2 import client
+from designateclient import exceptions
+from designateclient import shell
+
+from keystoneclient.auth.identity import generic
+from keystoneclient import session as keystone_session
+
+
+logging.basicConfig(level='DEBUG')
+
+"""
+Example script to create or get a domain and add some records to it.
+"""
+
+
+auth = generic.Password(
+ auth_url=shell.env('OS_AUTH_URL'),
+ username=shell.env('OS_USERNAME'),
+ password=shell.env('OS_PASSWORD'),
+ tenant_name=shell.env('OS_TENANT_NAME'))
+
+session = keystone_session.Session(auth=auth)
+
+client = client.Client(session=session)
+
+
+try:
+ zone = client.zones.create('i.io.', email='i@i.io')
+except exceptions.RemoteError:
+ zone = dict([(z['name'], z) for z in client.zones.list()])['i.io.']
+
+print("Recordset list...")
+for rs in client.recordsets.list(zone['id']):
+ print rs
+
+# Here's an example of just passing "www" as the record name vs "www.i.io."
+records = ["10.0.0.1"]
+rs = client.recordsets.create(zone['id'], 'www', 'A', records)
+
+# Here we're replacing the records with new ones
+records = ["10.0.0.1", "10.0.0.5"]
+client.recordsets.update(zone['id'], rs['id'], {'records': records})
diff --git a/doc/examples/recordset_crud.py b/doc/examples/recordset_crud.py
new file mode 100644
index 0000000..35f554f
--- /dev/null
+++ b/doc/examples/recordset_crud.py
@@ -0,0 +1,72 @@
+import logging
+
+from designateclient.v2 import client
+from designateclient import exceptions
+from designateclient import shell
+
+from keystoneclient.auth.identity import generic
+from keystoneclient import session as keystone_session
+
+
+logging.basicConfig(level='DEBUG')
+
+auth = generic.Password(
+ auth_url=shell.env('OS_AUTH_URL'),
+ username=shell.env('OS_USERNAME'),
+ password=shell.env('OS_PASSWORD'),
+ tenant_name=shell.env('OS_TENANT_NAME'))
+
+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'])
diff --git a/doc/examples/zone_create_primary.py b/doc/examples/zone_create_primary.py
new file mode 100644
index 0000000..3ec99cc
--- /dev/null
+++ b/doc/examples/zone_create_primary.py
@@ -0,0 +1,29 @@
+import logging
+
+from designateclient import exceptions
+from designateclient import shell
+from designateclient.v2 import client
+
+from keystoneclient.auth.identity import generic
+from keystoneclient import session as keystone_session
+
+
+logging.basicConfig(level='DEBUG')
+
+auth = generic.Password(
+ auth_url=shell.env('OS_AUTH_URL'),
+ username=shell.env('OS_USERNAME'),
+ password=shell.env('OS_PASSWORD'),
+ tenant_name=shell.env('OS_TENANT_NAME'))
+
+session = keystone_session.Session(auth=auth)
+
+client = client.Client(session=session)
+
+
+try:
+ zone = client.zones.create('i.io.', email='i@i.io')
+except exceptions.RemoteError:
+ zone = dict([(z['name'], z) for z in client.zones.list()])['i.io.']
+
+print client.recordsets.list(zone['id'])
diff --git a/doc/examples/zone_create_secondary.py b/doc/examples/zone_create_secondary.py
new file mode 100644
index 0000000..ce9da1e
--- /dev/null
+++ b/doc/examples/zone_create_secondary.py
@@ -0,0 +1,43 @@
+import logging
+import uuid
+
+from keystoneclient.auth.identity import generic
+from keystoneclient import session as keystone_session
+
+from designateclient import exceptions
+from designateclient import shell
+from designateclient.v2 import client
+
+
+logging.basicConfig(level='DEBUG')
+
+auth = generic.Password(
+ auth_url=shell.env('OS_AUTH_URL'),
+ username=shell.env('OS_USERNAME'),
+ password=shell.env('OS_PASSWORD'),
+ tenant_name=shell.env('OS_TENANT_NAME'))
+
+session = keystone_session.Session(auth=auth)
+
+client = client.Client(session=session)
+
+# Primary Zone
+primary = client.zones.create(
+ 'primary-%s.io.' % str(uuid.uuid4()),
+ 'PRIMARY',
+ 'root@x.com')
+
+# Secondary Zone
+slave = client.zones.create(
+ 'secondary-%s.io.' % str(uuid.uuid4()),
+ 'SECONDARY',
+ masters=["127.0.1.1"])
+
+# Try updating Masters for the Secondary
+new_slave = client.zones.update(
+ slave['id'],
+ {"masters": ["10.0.0.1", "10.0.0.10"]}
+)
+
+# List all Zones
+zones = client.zones.list()
diff --git a/doc/examples/zone_list_nameservers.py b/doc/examples/zone_list_nameservers.py
new file mode 100644
index 0000000..f1a1e61
--- /dev/null
+++ b/doc/examples/zone_list_nameservers.py
@@ -0,0 +1,29 @@
+import logging
+import uuid
+
+from designateclient.v2 import client
+from designateclient import shell
+from designateclient import utils
+
+from keystoneclient.auth.identity import generic
+from keystoneclient import session as keystone_session
+
+
+logging.basicConfig(level='DEBUG')
+
+auth = generic.Password(
+ auth_url=shell.env('OS_AUTH_URL'),
+ username=shell.env('OS_USERNAME'),
+ password=shell.env('OS_PASSWORD'),
+ tenant_name=shell.env('OS_TENANT_NAME'))
+
+session = keystone_session.Session(auth=auth)
+
+client = client.Client(session=session)
+
+zone = client.zones.create(
+ 'primary-%s.io.' % str(uuid.uuid4()),
+ 'PRIMARY',
+ 'root@x.com')
+
+client.nameservers.list(zone['id'])
diff --git a/doc/examples/zone_list_paging.py b/doc/examples/zone_list_paging.py
new file mode 100644
index 0000000..47aba29
--- /dev/null
+++ b/doc/examples/zone_list_paging.py
@@ -0,0 +1,36 @@
+import logging
+
+from keystoneclient.auth.identity import generic
+from keystoneclient import session as keystone_session
+
+from designateclient import shell
+from designateclient.v2 import client
+
+logging.basicConfig(level='DEBUG')
+
+auth = generic.Password(
+ auth_url=shell.env('OS_AUTH_URL'),
+ username=shell.env('OS_USERNAME'),
+ password=shell.env('OS_PASSWORD'),
+ tenant_name=shell.env('OS_TENANT_NAME'))
+
+session = keystone_session.Session(auth=auth)
+
+client = client.Client(session=session)
+
+
+pages = []
+
+fetch = 1
+while fetch:
+ kw = {'limit': 3}
+ if pages:
+ # marker is the latest page with the last item.
+ kw['marker'] = pages[-1][-1]['id']
+ page = client.zones.list(**kw)
+ if not page:
+ break
+ pages.append(page)
+
+for page in pages:
+ print page