from twisted.internet import defer
from twisted.python import failure
+from invirt.common import InvirtConfigError
from invirt.config import structs as config
import invirt.database
import psycopg2
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):
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)
if '__main__' == __name__:
resolvers = []
- for zone in config.dns.zone_files:
- for origin in config.dns.domains:
- r = QuotingBindAuthority(zone)
- # This sucks, but if I want a generic zone file, I have to
- # reload the information by hand
- r.origin = origin
- lines = open(zone).readlines()
- lines = r.collapseContinuations(r.stripComments(lines))
- r.parseLines(lines)
-
- resolvers.append(r)
+ try:
+ for zone in config.dns.zone_files:
+ for origin in config.dns.domains:
+ r = QuotingBindAuthority(zone)
+ # This sucks, but if I want a generic zone file, I have to
+ # reload the information by hand
+ r.origin = origin
+ lines = open(zone).readlines()
+ lines = r.collapseContinuations(r.stripComments(lines))
+ r.parseLines(lines)
+
+ resolvers.append(r)
+ except InvirtConfigError:
+ # Don't care if zone_files isn't defined
+ pass
resolvers.append(DatabaseAuthority())
verbosity = 0