Merge ~cgrabowski/maas:backport_outside_zone_update_fix_3.3 into maas:3.3

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: addac0edcd8733e20fdd2fbb16b71cf99bc54361
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:backport_outside_zone_update_fix_3.3
Merge into: maas:3.3
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
Christian Grabowski Approve
Review via email: mp+454817@code.launchpad.net

Commit message

use network ip and prefixlen of subnet when reverse zone is not given
(cherry picked from commit 6febd214b36cd3db4ff70540f7a25e01705fa5b2)

To post a comment you must log in.
Revision history for this message
Christian Grabowski (cgrabowski) wrote :

self-approving backport

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 5345f76..8c57ce4 100644
--- a/src/provisioningserver/dns/tests/test_config.py
+++ b/src/provisioningserver/dns/tests/test_config.py
@@ -783,7 +783,7 @@ class TestDynamicDNSUpdate(MAASTestCase):
783 expected_rev_update = DynamicDNSUpdate(783 expected_rev_update = DynamicDNSUpdate(
784 operation="INSERT",784 operation="INSERT",
785 zone=domain,785 zone=domain,
786 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.",786 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.",
787 rectype="PTR",787 rectype="PTR",
788 ttl=fwd_update.ttl,788 ttl=fwd_update.ttl,
789 subnet=str(subnet),789 subnet=str(subnet),
@@ -795,3 +795,30 @@ class TestDynamicDNSUpdate(MAASTestCase):
795 self.assertEqual(expected_rev_update.name, rev_update.name)795 self.assertEqual(expected_rev_update.name, rev_update.name)
796 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)796 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)
797 self.assertEqual(expected_rev_update.answer, rev_update.answer)797 self.assertEqual(expected_rev_update.answer, rev_update.answer)
798
799 def test_as_reverse_record_update_no_zone_set(self):
800 domain = factory.make_name()
801 subnet = IPNetwork("10.1.1.128/25")
802 fwd_update = DynamicDNSUpdate(
803 operation="INSERT",
804 zone=domain,
805 name=f"{factory.make_name()}.{domain}",
806 rectype="A",
807 answer=str("10.1.1.161"),
808 )
809 expected_rev_update = DynamicDNSUpdate(
810 operation="INSERT",
811 zone="128-25.1.1.10.in-addr.arpa.",
812 name="161.128-25.1.1.10.in-addr.arpa.",
813 rectype="PTR",
814 ttl=fwd_update.ttl,
815 subnet=str(subnet),
816 answer=fwd_update.name,
817 )
818 rev_update = DynamicDNSUpdate.as_reverse_record_update(
819 fwd_update, subnet
820 )
821 self.assertEqual(expected_rev_update.name, rev_update.name)
822 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)
823 self.assertEqual(expected_rev_update.answer, rev_update.answer)
824 self.assertEqual(expected_rev_update.zone, rev_update.zone)

Subscribers

People subscribed via source and target branches