4.2.2.3. Node¶
It is important to note that creation of a Node class will not immediately take
affect on the dyn.tm System unless it is created via a Zone
instance.
While creating Node
‘s via a Zone
you are required to place
either a DNSRecord
or a service on that Node
which allows
it to be created. To clerify, because Node
‘s may not exist without
either a record or service node = Node('zone.com', 'fqdn.zone.com.')
will
not actually create anything on the Dyn side until you add a record or service,
whereas rec = zone.add_record('fqnd', 'A', '127.0.0.1')
will create a new
Node
named ‘fqdn’ with an ARecord
attached.
-
class
dyn.tm.zones.
Node
(zone, fqdn=None)[source]¶ Node object. Represents a valid fqdn node within a zone. It should be noted that simply creating a
Node
object does not actually create anything on the DynECT System. The only way to actively create aNode
on the DynECT System is by attaching either a record or a service to it.-
__init__
(zone, fqdn=None)[source]¶ Create a
Node
objectParameters: - zone – name of the zone that this Node belongs to
- fqdn – the fully qualified domain name of this zone
-
add_record
(record_type='A', *args, **kwargs)[source]¶ Adds an a record with the provided data to this
Node
Parameters: - record_type – The type of record you would like to add. Valid record_type arguments are: ‘A’, ‘AAAA’, ‘CERT’, ‘CNAME’, ‘DHCID’, ‘DNAME’, ‘DNSKEY’, ‘DS’, ‘KEY’, ‘KX’, ‘LOC’, ‘IPSECKEY’, ‘MX’, ‘NAPTR’, ‘PTR’, ‘PX’, ‘NSAP’, ‘RP’, ‘NS’, ‘SOA’, ‘SPF’, ‘SRV’, and ‘TXT’.
- args – Non-keyword arguments to pass to the Record constructor
- kwargs – Keyword arguments to pass to the Record constructor
-
add_service
(service_type=None, *args, **kwargs)[source]¶ Add the specified service type to this
Node
Parameters: - service_type – The type of the service you would like to create. Valid service_type arguments are: ‘ActiveFailover’, ‘DDNS’, ‘DNSSEC’, ‘DSF’, ‘GSLB’, ‘RDNS’, ‘RTTM’, ‘HTTPRedirect’
- args – Non-keyword arguments to pass to the Record constructor
- kwargs – Keyword arguments to pass to the Record constructor
-
delete
()[source]¶ Delete this node, any records within this node, and any nodes underneath this node
-
get_all_records
()[source]¶ Retrieve a list of all record resources for the specified node and zone combination as well as all records from any Base_Record below that point on the zone hierarchy
-
get_all_records_by_type
(record_type)[source]¶ Get a list of all
DNSRecord
of typerecord_type
which are owned by this node.Parameters: record_type – The type of DNSRecord
you wish returned. Valid record_type arguments are: ‘A’, ‘AAAA’, ‘CERT’, ‘CNAME’, ‘DHCID’, ‘DNAME’, ‘DNSKEY’, ‘DS’, ‘KEY’, ‘KX’, ‘LOC’, ‘IPSECKEY’, ‘MX’, ‘NAPTR’, ‘PTR’, ‘PX’, ‘NSAP’, ‘RP’, ‘NS’, ‘SOA’, ‘SPF’, ‘SRV’, and ‘TXT’.Returns: A list of DNSRecord
‘s
-
4.2.2.3.1. Node Examples¶
The following examples highlight how to use the Node
class to
get/create Zone
‘s on the dyn.tm System and how to edit these objects
from within a Python script.
4.2.2.3.1.1. Creating a new Node¶
The following example shows how to create a new Node
on the dyn.tm
System and how to edit some of the fields using the returned Node
object. The easiest way to manipulate Node
objects is via a
Zone
object. This example will show how to create new Node
objects both by using a Zone
as a proxy, and by creating a
Node
as a standalone object.
>>> from dyn.tm.zones import Zone
>>> # Create a dyn.tmSession
>>> new_zone = Zone('myzone.com', 'me@email.com')
>>> new_zone.add_record('NewNode', 'A', '127.0.0.1')
<ARecord>: 127.0.0.1
>>> node = new_zone.get_node('NewNode')
>>> node.add_record('A', '127.0.1.1')
<ARecord>: 127.0.1.1
>>> node.get_any_records()
{u'a_records': [<ARecord>: 127.0.0.1, <ARecord>: 127.0.1.1]}
>>> from dyn.tm.zones import Node
>>> # Create a dyn.tmSession
>>> # Assuming the :class:`Zone` from the above example still exists
>>> new_node = Node('myzone.com', 'NewNode.myzone.com')
>>> new_node.get_any_records()
{u'a_records': [<ARecord>: 127.0.0.1, <ARecord>: 127.0.1.1]}
4.2.2.3.1.2. Getting an Existing Node¶
The following example shows how to get an existing Node
from the
dyn.tm System. Similarly to the above examples the easiest way to manipulate
existing Node
objects is via a Zone
object.
>>> from dyn.tm.zones import Zone
>>> # Create a dyn.tmSession
>>> new_zone = Zone('myzone.com', 'me@email.com')
>>> new_zone.add_record('NewNode', 'A', '127.0.0.1')
>>> node = new_zone.get_node('NewNode')
>>> node.get_any_records()
{u'a_records': ['127.0.0.1'], ...}
>>> from dyn.tm.zones import Node
>>> # Create a dyn.tmSession
>>> # Assuming the :class:`Zone` from the above example still exists
>>> new_node = Node('myzone.com', 'NewNode.myzone.com')
>>> new_node.get_any_records()
{u'a_records': ['127.0.0.1'], ...}