diff options
| author | Endre Karlson <endre.karlson@hp.com> | 2014-11-13 09:56:24 +0100 |
|---|---|---|
| committer | Endre Karlson <endre.karlson@hp.com> | 2015-05-07 17:23:09 +0200 |
| commit | 2a2c85ce21cd03ba871f0b44195e7ed22e680d62 (patch) | |
| tree | 7924e0480efff1791cdbf5bb9dcd71fc83567953 /doc/examples | |
| parent | 39d8b54d785bafd550a94b3d396ead8911557cfc (diff) | |
| download | python-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.py | 44 | ||||
| -rw-r--r-- | doc/examples/recordset_crud.py | 72 | ||||
| -rw-r--r-- | doc/examples/zone_create_primary.py | 29 | ||||
| -rw-r--r-- | doc/examples/zone_create_secondary.py | 43 | ||||
| -rw-r--r-- | doc/examples/zone_list_nameservers.py | 29 | ||||
| -rw-r--r-- | doc/examples/zone_list_paging.py | 36 |
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 |
