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

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: 0a063519fadaaca0c60eb150782e36fa8c2753ea
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:backport_deflake_dynamic_update_test_to_3.3
Merge into: maas:3.3
Diff against target: 90 lines (+44/-13)
2 files modified
src/provisioningserver/dns/config.py (+8/-11)
src/provisioningserver/dns/tests/test_config.py (+36/-2)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Christian Grabowski Approve
Review via email: mp+436466@code.launchpad.net

Commit message

split out reverse update generation tests to glue zones and non-gluezones
(cherry picked from commit b6241874577384ba4b0cb8c4c640ed4b36d9cbfb)

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

self-approving backport

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

UNIT TESTS
-b backport_deflake_dynamic_update_test_to_3.3 lp:~cgrabowski/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 0a063519fadaaca0c60eb150782e36fa8c2753ea

review: Approve

Update scan failed

At least one of the branches involved have failed to scan. You can manually schedule a rescan if required.

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 73b8d48..de7aba1 100644
--- a/src/provisioningserver/dns/config.py
+++ b/src/provisioningserver/dns/config.py
@@ -72,17 +72,14 @@ class DynamicDNSUpdate:
72 return None72 return None
73 ip = IPAddress(fwd_update.answer)73 ip = IPAddress(fwd_update.answer)
74 name = ip.reverse_dns74 name = ip.reverse_dns
75 if (75 if (ip.version == 4 and subnet.prefixlen > 24) or (
76 ip.version == 4 and subnet.prefixlen > 2476 ip.version == 6 and subnet.prefixlen > 124
77 ) or subnet.prefixlen > 64:77 ):
78 name = "in-addr.arpa."78 name_split = ip.reverse_dns.split(".")
79 addr_split = fwd_update.answer.split(".")79 name_split = (
80 idx = len(addr_split) - 180 name_split[:1] + [f"0-{subnet.prefixlen}"] + name_split[1:]
81 for i, octet in enumerate(addr_split):81 )
82 if i == idx:82 name = ".".join(name_split)
83 name = f"{octet}.0-{subnet.prefixlen}.{name}"
84 else:
85 name = f"{octet}.{name}"
8683
87 return cls(84 return cls(
88 operation=fwd_update.operation,85 operation=fwd_update.operation,
diff --git a/src/provisioningserver/dns/tests/test_config.py b/src/provisioningserver/dns/tests/test_config.py
index ddb9db4..5345f76 100644
--- a/src/provisioningserver/dns/tests/test_config.py
+++ b/src/provisioningserver/dns/tests/test_config.py
@@ -712,7 +712,15 @@ class TestDynamicDNSUpdate(MAASTestCase):
712712
713 def test_as_reverse_record_update(self):713 def test_as_reverse_record_update(self):
714 domain = factory.make_name()714 domain = factory.make_name()
715 subnet = factory.make_ip4_or_6_network()715 ip_version = random.choice([4, 6])
716 host_bits = (
717 random.randint(8, 24)
718 if ip_version == 4
719 else random.randint(8, 124)
720 )
721 subnet = factory.make_ip4_or_6_network(
722 version=ip_version, host_bits=host_bits
723 )
716 fwd_update = DynamicDNSUpdate(724 fwd_update = DynamicDNSUpdate(
717 operation="INSERT",725 operation="INSERT",
718 zone=domain,726 zone=domain,
@@ -736,7 +744,7 @@ class TestDynamicDNSUpdate(MAASTestCase):
736 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)744 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)
737 self.assertEqual(expected_rev_update.answer, rev_update.answer)745 self.assertEqual(expected_rev_update.answer, rev_update.answer)
738746
739 def test_as_reverse_record_update_for_glue_zone(self):747 def test_as_reverse_record_update_for_glue_zone_v4(self):
740 domain = factory.make_name()748 domain = factory.make_name()
741 subnet = IPNetwork("10.1.1.0/25")749 subnet = IPNetwork("10.1.1.0/25")
742 fwd_update = DynamicDNSUpdate(750 fwd_update = DynamicDNSUpdate(
@@ -761,3 +769,29 @@ class TestDynamicDNSUpdate(MAASTestCase):
761 self.assertEqual(expected_rev_update.name, rev_update.name)769 self.assertEqual(expected_rev_update.name, rev_update.name)
762 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)770 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)
763 self.assertEqual(expected_rev_update.answer, rev_update.answer)771 self.assertEqual(expected_rev_update.answer, rev_update.answer)
772
773 def test_as_reverse_record_update_for_glue_zone_v6(self):
774 domain = factory.make_name()
775 subnet = IPNetwork("fc55:4c7c:a5ea:57b0:7cad:a076:a844:8000/126")
776 fwd_update = DynamicDNSUpdate(
777 operation="INSERT",
778 zone=domain,
779 name=f"{factory.make_name()}.{domain}",
780 rectype="A",
781 answer="fc55:4c7c:a5ea:57b0:7cad:a076:a844:8001",
782 )
783 expected_rev_update = DynamicDNSUpdate(
784 operation="INSERT",
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.",
787 rectype="PTR",
788 ttl=fwd_update.ttl,
789 subnet=str(subnet),
790 answer=fwd_update.name,
791 )
792 rev_update = DynamicDNSUpdate.as_reverse_record_update(
793 fwd_update, subnet
794 )
795 self.assertEqual(expected_rev_update.name, rev_update.name)
796 self.assertEqual(expected_rev_update.rectype, rev_update.rectype)
797 self.assertEqual(expected_rev_update.answer, rev_update.answer)

Subscribers

People subscribed via source and target branches