DNS lookups first look in the nics table and then the machines table.
[invirt/packages/invirt-dns.git] / invirt-dns
index b2a9ac6..4049257 100755 (executable)
@@ -92,11 +92,17 @@ class DatabaseAuthority(common.ResolverBase):
                     results.append(dns.RRHeader(domain, dns.SOA, dns.IN,
                                                 ttl, self.soa, auth=True))
             else: # Request for a subdomain.
-                value = invirt.database.Machine.query().filter_by(name=host).first()
-                if value is None or not value.nics:
-                    return defer.fail(failure.Failure(dns.AuthoritativeDomainError(name)))
-                ip = value.nics[0].ip
-                if ip is None:  #Deactivated?
+                value = invirt.database.NIC.query.filter_by(hostname=host).first()
+                if value:
+                    ip = value.ip
+                else:
+                    value = invirt.database.Machine.query().filter_by(name=host).first()
+                    if value:
+                        ip = value.nics[0].ip
+                    else:
+                        return defer.fail(failure.Failure(dns.AuthoritativeDomainError(name)))
+                
+                if ip is None:
                     return defer.fail(failure.Failure(dns.AuthoritativeDomainError(name)))
 
                 if type in (dns.A, dns.ALL_RECORDS):
@@ -155,9 +161,9 @@ class QuotingBindAuthority(authority.BindAuthority):
         for line in lines:
             in_quote = False
             split_line = []
-            for m in string_pat.finditer(line):
+            for m in self.string_pat.finditer(line):
                 [x] = [x for x in m.groups() if x is not None]
-                split_line.append(escape_pat.sub(r'\1', x))
+                split_line.append(self.escape_pat.sub(r'\1', x))
             L.append(split_line)
         return filter(None, L)