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
Nodeobject does not actually create anything on the DynECT System. The only way to actively create aNodeon the DynECT System is by attaching either a record or a service to it.-
__init__(zone, fqdn=None)[source]¶ Create a
NodeobjectParameters: - 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
NodeParameters: - 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
NodeParameters: - 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
DNSRecordof typerecord_typewhich are owned by this node.Parameters: record_type – The type of DNSRecordyou 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'], ...}