libcloud.dns.drivers package

Submodules

libcloud.dns.drivers.dummy module

class libcloud.dns.drivers.dummy.DummyDNSDriver(api_key, api_secret)[source]

Bases: libcloud.dns.base.DNSDriver

Dummy DNS driver.

>>> from libcloud.dns.drivers.dummy import DummyDNSDriver
>>> driver = DummyDNSDriver('key', 'secret')
>>> driver.name
'Dummy DNS Provider'
Parameters:
  • api_key (str) – API key or username to used (required)
  • api_secret (str) – Secret password to be used (required)
Return type:

None

create_record(name, zone, type, data, extra=None)[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> zone = driver.create_zone(domain='apache.org', type='master',
...                           ttl=100)
>>> record = driver.create_record(name='libcloud', zone=zone,
...                               type=RecordType.A, data='127.0.0.1')
>>> record 
<Record: zone=id-apache.org, name=libcloud, type=A, data=127.0.0.1...>
>>> record = driver.create_record(name='libcloud', zone=zone,
...                               type=RecordType.A, data='127.0.0.1')
... 
Traceback (most recent call last):
RecordAlreadyExistsError:
Traceback (most recent call last):
RecordAlreadyExistsError:

@inherits: DNSDriver.create_record

create_zone(domain, type='master', ttl=None, extra=None)[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> zone = driver.create_zone(domain='apache.org', type='master',
...                           ttl=100)
>>> zone
<Zone: domain=apache.org, ttl=100, provider=Dummy DNS Provider ...>
>>> zone = driver.create_zone(domain='apache.org', type='master',
...                           ttl=100)
... 
Traceback (most recent call last):
ZoneAlreadyExistsError:
Traceback (most recent call last):
ZoneAlreadyExistsError:

@inherits: DNSDriver.create_zone

delete_record(record)[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> zone = driver.create_zone(domain='apache.org', type='master',
...                           ttl=100)
>>> record = driver.create_record(name='libcloud', zone=zone,
...                               type=RecordType.A, data='127.0.0.1')
>>> driver.delete_record(record)
True
>>> driver.delete_record(record) 
Traceback (most recent call last):
RecordDoesNotExistError:
Traceback (most recent call last):
RecordDoesNotExistError:

@inherits: DNSDriver.delete_record

delete_zone(zone)[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> zone = driver.create_zone(domain='apache.org', type='master',
...                           ttl=100)
>>> driver.delete_zone(zone)
True
>>> driver.delete_zone(zone) 
Traceback (most recent call last):
ZoneDoesNotExistError:
Traceback (most recent call last):
ZoneDoesNotExistError:

@inherits: DNSDriver.delete_zone

get_record(zone_id, record_id)[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> driver.get_record(zone_id='doesnotexist', record_id='exists')
... 
Traceback (most recent call last):
ZoneDoesNotExistError:
Traceback (most recent call last):
ZoneDoesNotExistError:

@inherits: DNSDriver.get_record

get_zone(zone_id)[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> driver.get_zone(zone_id='foobar')
... 
Traceback (most recent call last):
ZoneDoesNotExistError:
Traceback (most recent call last):
ZoneDoesNotExistError:

@inherits: DNSDriver.get_zone

list_record_types()[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> driver.list_record_types()
['A']

@inherits: DNSDriver.list_record_types

list_records(zone)[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> zone = driver.create_zone(domain='apache.org', type='master',
...                           ttl=100)
>>> list(zone.list_records())
[]
>>> record = driver.create_record(name='libcloud', zone=zone,
...                               type=RecordType.A, data='127.0.0.1')
>>> list(zone.list_records()) 
[<Record: zone=id-apache.org, name=libcloud, type=A...>]
list_zones()[source]
>>> driver = DummyDNSDriver('key', 'secret')
>>> driver.list_zones()
[]

@inherits: DNSDriver.list_zones

name = 'Dummy DNS Provider'
website = 'http://example.com'

libcloud.dns.drivers.gandi module

class libcloud.dns.drivers.gandi.GandiDNSDriver(key, secret=None, secure=True, host=None, port=None, **kwargs)[source]

Bases: libcloud.common.gandi.BaseGandiDriver, libcloud.dns.base.DNSDriver

API reference can be found at:

http://doc.rpc.gandi.net/domain/reference.html

Parameters:
  • key (str) – API key or username to used (required)
  • secret (str) – Secret password to be used (required)
  • secure (bool) – Weither to use HTTPS or HTTP. Note: Some providers only support HTTPS, and it is on by default.
  • host (str) – Override hostname used for connections.
  • port (int) – Override port used for connections.
Returns:

None

RECORD_TYPE_MAP = {'A': 'A', 'AAAA': 'AAAA', 'CNAME': 'CNAME', 'SRV': 'SRV', 'TXT': 'TXT', 'LOC': 'LOC', 'WKS': 'WKS', 'NS': 'NS', 'MX': 'MX', 'SPF': 'SPF'}
connectionCls

alias of GandiDNSConnection

create_record(name, zone, type, data, extra=None)[source]
create_zone(domain, type='master', ttl=None, extra=None)[source]
delete_record(record)[source]
delete_zone(zone)[source]
get_record(zone_id, record_id)[source]
get_zone(zone_id)[source]
list_records(zone)[source]
list_zones()[source]
name = 'Gandi DNS'
type = 'gandi'
update_record(record, name, type, data, extra)[source]
update_zone(zone, domain=None, type=None, ttl=None, extra=None)[source]
website = 'http://www.gandi.net/domain'

libcloud.dns.drivers.google module

class libcloud.dns.drivers.google.GoogleDNSDriver(user_id, key, project=None, auth_type=None, scopes=None, **kwargs)[source]

Bases: libcloud.dns.base.DNSDriver

RECORD_TYPE_MAP = {'A': 'A', 'AAAA': 'AAAA', 'CNAME': 'CNAME', 'SRV': 'SRV', 'TXT': 'TXT', 'SOA': 'SOA', 'NS': 'NS', 'MX': 'MX', 'SPF': 'SPF', 'PTR': 'PTR'}
connectionCls

alias of GoogleDNSConnection

create_record(name, zone, type, data, extra=None)[source]

Create a new record.

Parameters:
  • name (str) – Record name fully qualified, with a ‘.’ at the end.
  • zone (Zone) – Zone where the requested record is created.
  • type (RecordType) – DNS record type (A, AAAA, ...).
  • data (str) – Data for the record (depends on the record type).
  • extra (dict) – Extra attributes. (optional)
Return type:

Record

create_zone(domain, type='master', ttl=None, extra=None)[source]

Create a new zone.

Parameters:
  • domain (str) – Zone domain name (e.g. example.com.) with a ‘.’ at the end.
  • type (str) – Zone type (master is the only one supported).
  • ttl (int) – TTL for new records. (unused)
  • extra (dict) – Extra attributes (driver specific). (optional)
Return type:

Zone

delete_record(record)[source]

Delete a record.

Parameters:record (Record) – Record to delete.
Return type:bool
delete_zone(zone)[source]

Delete a zone.

Note: This will delete all the records belonging to this zone.

Parameters:zone (Zone) – Zone to delete.
Return type:bool
get_record(zone_id, record_id)[source]

Return a Record instance.

Parameters:
  • zone_id (str) – ID of the required zone
  • record_id (str) – ID of the required record
Return type:

Record

get_zone(zone_id)[source]

Return a Zone instance.

Parameters:zone_id (str) – ID of the required zone
Return type:Zone
iterate_records(zone)[source]

Return a generator to iterate over records for the provided zone.

Parameters:zone (Zone) – Zone to list records for.
Return type:generator of Record
iterate_zones()[source]

Return a generator to iterate over available zones.

Return type:generator of Zone
name = 'Google DNS'
type = 'google'
website = 'https://cloud.google.com/'

libcloud.dns.drivers.hostvirtual module

class libcloud.dns.drivers.hostvirtual.HostVirtualDNSDriver(key, secure=True, host=None, port=None)[source]

Bases: libcloud.dns.base.DNSDriver

RECORD_TYPE_MAP = {'A': 'A', 'TXT': 'TXT', 'AAAA': 'AAAA', 'CNAME': 'CNAME', 'SRV': 'SRV', 'NS': 'SPF', 'MX': 'MX'}
connectionCls

alias of HostVirtualDNSConnection

create_record(name, zone, type, data, extra=None)[source]
create_zone(domain, type='NATIVE', ttl=None, extra=None)[source]
delete_record(record)[source]
delete_zone(zone)[source]
get_record(zone_id, record_id)[source]
get_zone(zone_id)[source]
list_records(zone)[source]
list_zones()[source]
name = 'Host Virtual DNS'
type = 'hostvirtual'
update_record(record, name=None, type=None, data=None, extra=None)[source]
update_zone(zone, domain=None, type=None, ttl=None, extra=None)[source]
website = 'http://www.vr.org/'

libcloud.dns.drivers.linode module

class libcloud.dns.drivers.linode.LinodeDNSDriver(key, secret=None, secure=True, host=None, port=None, **kwargs)[source]

Bases: libcloud.dns.base.DNSDriver

Parameters:
  • key (str) – API key or username to used (required)
  • secret (str) – Secret password to be used (required)
  • secure (bool) – Weither to use HTTPS or HTTP. Note: Some providers only support HTTPS, and it is on by default.
  • host (str) – Override hostname used for connections.
  • port (int) – Override port used for connections.
Returns:

None

RECORD_TYPE_MAP = {'A': 'A', 'TXT': 'TXT', 'AAAA': 'AAAA', 'CNAME': 'CNAME', 'SRV': 'SRV', 'NS': 'NS', 'MX': 'MX'}
connectionCls

alias of LinodeDNSConnection

create_record(name, zone, type, data, extra=None)[source]

Create a new record.

API docs: http://www.linode.com/api/dns/domain.resource.create

create_zone(domain, type='master', ttl=None, extra=None)[source]

Create a new zone.

API docs: http://www.linode.com/api/dns/domain.create

delete_record(record)[source]
delete_zone(zone)[source]
get_record(zone_id, record_id)[source]
get_zone(zone_id)[source]
list_records(zone)[source]
list_zones()[source]
name = 'Linode DNS'
type = 'linode'
update_record(record, name=None, type=None, data=None, extra=None)[source]

Update an existing record.

API docs: http://www.linode.com/api/dns/domain.resource.update

update_zone(zone, domain=None, type=None, ttl=None, extra=None)[source]

Update an existing zone.

API docs: http://www.linode.com/api/dns/domain.update

website = 'http://www.linode.com/'

libcloud.dns.drivers.rackspace module

class libcloud.dns.drivers.rackspace.RackspaceUSDNSDriver(*args, **kwargs)[source]

Bases: libcloud.dns.drivers.rackspace.RackspaceDNSDriver

name = 'Rackspace DNS (US)'
type = 'rackspace_us'
class libcloud.dns.drivers.rackspace.RackspaceUKDNSDriver(*args, **kwargs)[source]

Bases: libcloud.dns.drivers.rackspace.RackspaceDNSDriver

name = 'Rackspace DNS (UK)'
type = 'rackspace_uk'

libcloud.dns.drivers.route53 module

class libcloud.dns.drivers.route53.Route53DNSDriver(key, secret=None, secure=True, host=None, port=None, **kwargs)[source]

Bases: libcloud.dns.base.DNSDriver

Parameters:
  • key (str) – API key or username to used (required)
  • secret (str) – Secret password to be used (required)
  • secure (bool) – Weither to use HTTPS or HTTP. Note: Some providers only support HTTPS, and it is on by default.
  • host (str) – Override hostname used for connections.
  • port (int) – Override port used for connections.
Returns:

None

RECORD_TYPE_MAP = {'A': 'A', 'AAAA': 'AAAA', 'CNAME': 'CNAME', 'SRV': 'SRV', 'TXT': 'TXT', 'SOA': 'SOA', 'NS': 'NS', 'MX': 'MX', 'SPF': 'SPF', 'PTR': 'PTR'}
connectionCls

alias of Route53Connection

create_record(name, zone, type, data, extra=None)[source]
create_zone(domain, type='master', ttl=None, extra=None)[source]
delete_record(record)[source]
delete_zone(zone, ex_delete_records=False)[source]
ex_create_multi_value_record(name, zone, type, data, extra=None)[source]

Create a record with multiple values with a single call.

Returns:A list of created records.
Return type:list of libcloud.dns.base.Record
ex_delete_all_records(zone)[source]

Remove all the records for the provided zone.

Parameters:zone (Zone) – Zone to delete records for.
get_record(zone_id, record_id)[source]
get_zone(zone_id)[source]
iterate_records(zone)[source]
iterate_zones()[source]
name = 'Route53 DNS'
type = 'route53'
update_record(record, name=None, type=None, data=None, extra=None)[source]
website = 'http://aws.amazon.com/route53/'

libcloud.dns.drivers.zerigo module

class libcloud.dns.drivers.zerigo.ZerigoDNSDriver(key, secret=None, secure=True, host=None, port=None, **kwargs)[source]

Bases: libcloud.dns.base.DNSDriver

Parameters:
  • key (str) – API key or username to used (required)
  • secret (str) – Secret password to be used (required)
  • secure (bool) – Weither to use HTTPS or HTTP. Note: Some providers only support HTTPS, and it is on by default.
  • host (str) – Override hostname used for connections.
  • port (int) – Override port used for connections.
Returns:

None

RECORD_TYPE_MAP = {'A': 'A', 'URL': 'URL', 'AAAA': 'AAAA', 'CNAME': 'CNAME', 'SRV': 'SRV', 'REDIRECT': 'REDIRECT', 'NAPTR': 'NAPTR', 'TXT': 'TXT', 'PTR': 'PTR', 'NS': 'NS', 'GEO': 'GEO', 'MX': 'MX', 'SPF': 'SPF'}
connectionCls

alias of ZerigoDNSConnection

create_record(name, zone, type, data, extra=None)[source]

Create a new record.

Provider API docs: https://www.zerigo.com/docs/apis/dns/1.1/hosts/create

@inherits: DNSDriver.create_record

create_zone(domain, type='master', ttl=None, extra=None)[source]

Create a new zone.

Provider API docs: https://www.zerigo.com/docs/apis/dns/1.1/zones/create

@inherits: DNSDriver.create_zone

delete_record(record)[source]
delete_zone(zone)[source]
ex_force_slave_axfr(zone)[source]

Force a zone transfer.

Parameters:zone (Zone) – Zone which should be used.
Return type:Zone
ex_get_zone_by_domain(domain)[source]

Retrieve a zone object by the domain name.

Parameters:domain (str) – The domain which should be used
Return type:Zone
get_record(zone_id, record_id)[source]
get_zone(zone_id)[source]
iterate_records(zone)[source]
iterate_zones()[source]
name = 'Zerigo DNS'
type = 'zerigo'
update_record(record, name=None, type=None, data=None, extra=None)[source]
update_zone(zone, domain=None, type=None, ttl=None, extra=None)[source]

Update an existing zone.

Provider API docs: https://www.zerigo.com/docs/apis/dns/1.1/zones/update

@inherits: DNSDriver.update_zone

website = 'http://www.zerigo.com/'

Module contents