# HG changeset patch # User Tero Marttila # Date 1424869188 -7200 # Node ID 3bb00e5e79d3c4dabbd24165cd0b325bd5faa63b # Parent ad9d512ec1e725619d48a115ddcdd759c5b8ef60 pvl.hosts.zone: support combining forward= with alias= diff -r ad9d512ec1e7 -r 3bb00e5e79d3 pvl/hosts/host.py --- a/pvl/hosts/host.py Wed Feb 25 14:56:59 2015 +0200 +++ b/pvl/hosts/host.py Wed Feb 25 14:59:48 2015 +0200 @@ -152,7 +152,7 @@ alias4 - list (CNAME -> A) alias6 - list (CNAME -> AAAA) forward - None: generate forward zone A/AAAA records per ip/ip6 - False: omit A/AAAA records + False: omit A/AAAA records (and any alias= CNAMEs) str: generate forward zone CNAME to given fqdn reverse - None: generate reverse zone PTR records per ip/ip6 False: omit PTR records for ip/ip6 diff -r ad9d512ec1e7 -r 3bb00e5e79d3 pvl/hosts/tests.py --- a/pvl/hosts/tests.py Wed Feb 25 14:56:59 2015 +0200 +++ b/pvl/hosts/tests.py Wed Feb 25 14:59:48 2015 +0200 @@ -155,7 +155,16 @@ ('*.test', 'CNAME'): ['host'], }) - # TODO: forward=... with alias= + def testHostForwardAlias(self): + h = host.Host.build('host', 'domain', + forward = 'host.example.net', + alias = 'test', + ) + + self.assertZoneEquals(zone.host_forward(h, 'domain'), { + ('host', 'CNAME'): ['host.example.net.'], + ('test', 'CNAME'): ['host'], + }) def testHostDelegateForward(self): h = host.Host.build('host', 'example.com', diff -r ad9d512ec1e7 -r 3bb00e5e79d3 pvl/hosts/zone.py --- a/pvl/hosts/zone.py Wed Feb 25 14:56:59 2015 +0200 +++ b/pvl/hosts/zone.py Wed Feb 25 14:59:48 2015 +0200 @@ -54,18 +54,22 @@ log.info("%s: forward: %s", host, forward) yield pvl.dns.ZoneRecord.CNAME(label, forward) - return + + elif host.forward is None: + # forward + if host.ip : + log.info("%s: forward %s[%s]: A %s", host, origin, label, host.ip) - elif host.forward is not None: + yield pvl.dns.ZoneRecord.A(label, host.ip) + + if host.ip6 : + log.info("%s: forward %s[%s]: AAAA %s", host, origin, label, host.ip6) + + yield pvl.dns.ZoneRecord.AAAA(label, host.ip6) + + else: log.info("%s: skip forward", host) return - - # forward - if host.ip : - yield pvl.dns.ZoneRecord.A(label, host.ip) - - if host.ip6 : - yield pvl.dns.ZoneRecord.AAAA(label, host.ip6) if host.location: location_alias, location_domain = host.location