@@ 508,6 508,23 @@ class NSZoneTemplate(ZerigoDNS):
template.save()
return template
+ def create_host_template(self, data, load_blank=False):
+ if not hasattr(self, 'id'):
+ raise ZerigoError(
+ 'Cannot add host template without a valid zone template id'
+ )
+
+ if data.has_key('host-template'):
+ data = data.get('host-template')
+ host = NSHostTemplate(
+ self.user,
+ self.key,
+ data=data,
+ is_secure=self.is_secure,
+ is_debug=self.is_debug,
+ )
+ return host.create(data, self.id, load_blank)
+
def find_all(self, opts={}):
return self.templates(opts=opts)
@@ 579,4 596,67 @@ class NSHostTemplate(ZerigoDNS):
host.build_blank_host()
host.load(data, reset=False)
host.save()
- return host
No newline at end of file
+ return host
+
+ def find_all(self, zone_id, opts={}):
+ opts['zone_template_id'] = self._get_zone_template_id(zone_id)
+ return self.templates(opts=opts)
+
+ def templates(self, opts={}):
+ if not opts.has_key('zone_id'):
+ opts['zone_template_id'] = self.zone_id
+ else:
+ opts['zone_template_id'] = \
+ self._get_zone_template_id(opts['zone_template_id'])
+ xml = self.send_request(method='GET', opts=opts)
+ data = self.parse(xml)
+ return [
+ NSHostTemplate(
+ self.user,
+ self.key,
+ data=zdata['host-template'],
+ is_secure=self.is_secure,
+ is_debug=self.is_debug,
+ ) for zdata in data.get('host-templates', [])
+ ]
+
+ def find(self, id, zone_id):
+ zone_id = self._get_zone_template_id(zone_id)
+ host = NSHostTemplate(
+ self.user,
+ self.key,
+ data={'id': id, 'zone_template_id': zone_id,},
+ is_secure=self.is_secure,
+ is_debug=self.is_debug,
+ )
+ host.reload()
+ return host
+
+ def reload(self):
+ if not hasattr(self, 'id'):
+ raise ZerigoError('Cannot retrieve host without a valid id')
+ xml = self.send_request(method='GET', id=self.id)
+ data = self.parse(xml)
+ self.load(data['host-template'])
+ return self
+
+ def find_by_hostname(self, hostname, zone_id):
+ zone_id = self._get_zone_template_id(zone_id)
+ host = NSHostTemplate(
+ self.user,
+ self.key,
+ data={'zone_template_id': zone_id,},
+ is_secure=self.is_secure,
+ is_debug=self.is_debug
+ )
+ xml = host.send_request(method='GET', opts={'fqdn': hostname})
+ data = self.parse(xml)
+ return [
+ NSHostTemplate(
+ self.user,
+ self.key,
+ data=zdata['host-template'],
+ is_secure=self.is_secure,
+ is_debug=self.is_debug,
+ ) for zdata in data.get('host-templates', [])
+ ]
No newline at end of file