de14874f1be2 — Peter Sanchez 14 years ago
Should have working Zone and Host Templates
1 files changed, 81 insertions(+), 1 deletions(-)

M zerigodns/api.py
M zerigodns/api.py +81 -1
@@ 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