Merge ~cgrabowski/maas:fix_update_outside_of_zone_dns into maas:master

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: 4e2c59e7ac337a75a463301ce1ea3db7cd32a9a4
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:fix_update_outside_of_zone_dns
Merge into: maas:master
Diff against target: 63 lines (+35/-2)
2 files modified
src/provisioningserver/dns/config.py (+7/-1)
src/provisioningserver/dns/tests/test_config.py (+28/-1)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Alexsander de Souza Approve
Review via email: mp+454808@code.launchpad.net

Commit message

use network ip and prefixlen of subnet when reverse zone is not given

To post a comment you must log in.
Revision history for this message
Alexsander de Souza (alexsander-souza) wrote :

+1

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b fix_update_outside_of_zone_dns lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 4e2c59e7ac337a75a463301ce1ea3db7cd32a9a4

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/provisioningserver/dns/config.py b/src/provisioningserver/dns/config.py
index 264139e..7ee7b50 100644
--- a/src/provisioningserver/dns/config.py
+++ b/src/provisioningserver/dns/config.py
@@ -80,7 +80,13 @@ class DynamicDNSUpdate:
80 name_split = ip.reverse_dns.split(".")80 name_split = ip.reverse_dns.split(".")
81 suffix = [zone]81 suffix = [zone]
82 if not zone:82 if not zone:
83 suffix = [f"0-{subnet.prefixlen}"] + name_split[1:]83 if ip.version == 4:
84 first_octet = str(subnet.network).split(".")[-1]
85 else:
86 first_octet = str(subnet.network).split(":")[-1]
87
88 suffix = [f"{first_octet}-{subnet.prefixlen}"] + name_split[1:]
89 zone = ".".join(suffix)
8490
85 name_split = name_split[:1] + suffix91 name_split = name_split[:1] + suffix
86 name = ".".join(name_split)92 name = ".".join(name_split)
diff --git a/src/provisioningserver/dns/tests/test_config.py b/src/provisioningserver/dns/tests/test_config.py
index 35452ba..985e846 100644
--- a/src/provisioningserver/dns/tests/test_config.py
+++ b/src/provisioningserver/dns/tests/test_config.py
@@ -784,7 +784,7 @@ class TestDynamicDNSUpdate(MAASTestCase):
784 expected_rev_update = DynamicDNSUpdate(784 expected_rev_update = DynamicDNSUpdate(
785 operation="INSERT",785 operation="INSERT",
786 zone=domain,786 zone=domain,
787 name="1.0-126.0.0.8.4.4.8.a.6.7.0.a.d.a.c.7.0.b.7.5.a.e.5.a.c.7.c.4.5.5.c.f.ip6.arpa.",787 name="1.8000-126.0.0.8.4.4.8.a.6.7.0.a.d.a.c.7.0.b.7.5.a.e.5.a.c.7.c.4.5.5.c.f.ip6.arpa.",
788 rectype="PTR",788 rectype="PTR",
789 ttl=fwd_update.ttl,789 ttl=fwd_update.ttl,
790 subnet=str(subnet),790 subnet=str(subnet),
@@ -796,3 +796,30 @@ class TestDynamicDNSUpdate(MAASTestCase):
796 self.assertEqual(expected_rev_update.name, rev_update.name)796 self.assertEqual(expected_rev_update.name, rev_update.name)
797 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)797 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)
798 self.assertEqual(expected_rev_update.answer, rev_update.answer)798 self.assertEqual(expected_rev_update.answer, rev_update.answer)
799
800 def test_as_reverse_record_update_no_zone_set(self):
801 domain = factory.make_name()
802 subnet = IPNetwork("10.1.1.128/25")
803 fwd_update = DynamicDNSUpdate(
804 operation="INSERT",
805 zone=domain,
806 name=f"{factory.make_name()}.{domain}",
807 rectype="A",
808 answer=str("10.1.1.161"),
809 )
810 expected_rev_update = DynamicDNSUpdate(
811 operation="INSERT",
812 zone="128-25.1.1.10.in-addr.arpa.",
813 name="161.128-25.1.1.10.in-addr.arpa.",
814 rectype="PTR",
815 ttl=fwd_update.ttl,
816 subnet=str(subnet),
817 answer=fwd_update.name,
818 )
819 rev_update = DynamicDNSUpdate.as_reverse_record_update(
820 fwd_update, subnet
821 )
822 self.assertEqual(expected_rev_update.name, rev_update.name)
823 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)
824 self.assertEqual(expected_rev_update.answer, rev_update.answer)
825 self.assertEqual(expected_rev_update.zone, rev_update.zone)

Subscribers

People subscribed via source and target branches