Merge ~cgrabowski/maas:clean_old_zonefiles_on_dns_setup into maas:master

Proposed by Christian Grabowski
Status: Merged
Approved by: Alexsander de Souza
Approved revision: f85d69615c9bd786ebaa641f82d4cd102ae9b5dd
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:clean_old_zonefiles_on_dns_setup
Merge into: maas:master
Diff against target: 126 lines (+33/-2)
5 files modified
src/maasserver/dns/tests/test_config.py (+1/-1)
src/provisioningserver/dns/commands/tests/test_setup_dns.py (+2/-1)
src/provisioningserver/dns/config.py (+9/-0)
src/provisioningserver/dns/tests/test_config.py (+17/-0)
src/provisioningserver/testing/bindfixture.py (+4/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Alexsander de Souza Approve
Review via email: mp+433218@code.launchpad.net

Commit message

clean old zonefiles when setting up the zonefile dir

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

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

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/1398/consoleText
COMMIT: 4ee48ce858d635759191064afad7490335f70466

review: Needs Fixing
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 clean_old_zonefiles_on_dns_setup lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/1399/consoleText
COMMIT: d2571796f3c192aa2bb544b6efdea58659a87781

review: Needs Fixing
Revision history for this message
Christian Grabowski (cgrabowski) wrote :

jenkins: !test

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

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

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/1402/consoleText
COMMIT: d2571796f3c192aa2bb544b6efdea58659a87781

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

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

STATUS: SUCCESS
COMMIT: f85d69615c9bd786ebaa641f82d4cd102ae9b5dd

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

LANDING
-b clean_old_zonefiles_on_dns_setup lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED BUILD
LOG: http://maas-ci.internal:8080/job/maas-tester/1405/consoleText

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/dns/tests/test_config.py b/src/maasserver/dns/tests/test_config.py
2index 913c96e..9a2835d 100644
3--- a/src/maasserver/dns/tests/test_config.py
4+++ b/src/maasserver/dns/tests/test_config.py
5@@ -133,7 +133,7 @@ class TestDNSServer(MAASServerTestCase):
6 patch_dns_config_path(self, self.bind.config.homedir)
7 # Use a random port for rndc.
8 patch_dns_rndc_port(self, allocate_ports("localhost")[0])
9- patch_zone_file_config_path(self, config_dir=self.bind.config.homedir)
10+ patch_zone_file_config_path(self, config_dir=self.bind.config.zonedir)
11 # This simulates what should happen when the package is
12 # installed:
13 # Create MAAS-specific DNS configuration files.
14diff --git a/src/provisioningserver/dns/commands/tests/test_setup_dns.py b/src/provisioningserver/dns/commands/tests/test_setup_dns.py
15index e720cff..132dc5e 100644
16--- a/src/provisioningserver/dns/commands/tests/test_setup_dns.py
17+++ b/src/provisioningserver/dns/commands/tests/test_setup_dns.py
18@@ -46,8 +46,9 @@ class TestSetupCommand(MAASTestCase):
19
20 def test_does_not_overwrite_config(self):
21 dns_conf_dir = self.make_dir()
22+ zone_file_dir = self.make_dir()
23 patch_dns_config_path(self, dns_conf_dir)
24- patch_zone_file_config_path(self, dns_conf_dir)
25+ patch_zone_file_config_path(self, zone_file_dir)
26 random_content = factory.make_string()
27 factory.make_file(
28 location=dns_conf_dir,
29diff --git a/src/provisioningserver/dns/config.py b/src/provisioningserver/dns/config.py
30index 5673b4a..199fb76 100644
31--- a/src/provisioningserver/dns/config.py
32+++ b/src/provisioningserver/dns/config.py
33@@ -239,6 +239,13 @@ def set_up_nsupdate_key():
34 atomic_write(tsig, get_nsupdate_key_path(), overwrite=True, mode=0o644)
35
36
37+def clean_old_zone_files():
38+ p = get_zone_file_config_dir()
39+ files = os.listdir(p)
40+ for f in files:
41+ os.remove(os.path.join(p, f))
42+
43+
44 def set_up_zone_file_dir():
45 p = get_zone_file_config_dir()
46 if not os.path.exists(p):
47@@ -252,6 +259,8 @@ def set_up_zone_file_dir():
48
49 os.chown(p, uid, gid)
50 os.chmod(p, 0o775)
51+ else:
52+ clean_old_zone_files()
53
54
55 def set_up_rndc():
56diff --git a/src/provisioningserver/dns/tests/test_config.py b/src/provisioningserver/dns/tests/test_config.py
57index 1e02498..ca6f037 100644
58--- a/src/provisioningserver/dns/tests/test_config.py
59+++ b/src/provisioningserver/dns/tests/test_config.py
60@@ -35,6 +35,7 @@ from maastesting.fakemethod import FakeMethod
61 from maastesting.testcase import MAASTestCase
62 from provisioningserver.dns import config
63 from provisioningserver.dns.config import (
64+ clean_old_zone_files,
65 compose_config_path,
66 DEFAULT_CONTROLS,
67 DNSConfig,
68@@ -58,6 +59,7 @@ from provisioningserver.dns.config import (
69 from provisioningserver.dns.testing import (
70 patch_dns_config_path,
71 patch_dns_default_controls,
72+ patch_zone_file_config_path,
73 )
74 from provisioningserver.dns.zoneconfig import (
75 DNSForwardZoneConfig,
76@@ -290,6 +292,21 @@ class TestRNDCUtilities(MAASTestCase):
77 )
78 self.assertThat(target_file, FileExists())
79
80+ def test_clean_old_zone_files(self):
81+ zone_file_dir = patch_zone_file_config_path(self)
82+
83+ zonefiles = [
84+ os.path.join(zone_file_dir, f"zonefile{i}")
85+ for i, _ in enumerate(range(2))
86+ ]
87+ for zonefile in zonefiles:
88+ with open(zonefile, "w+"):
89+ pass
90+
91+ clean_old_zone_files()
92+ for zonefile in zonefiles:
93+ self.assertRaises(FileNotFoundError, os.stat, zonefile)
94+
95 def test_rndc_config_includes_default_controls(self):
96 dns_conf_dir = patch_dns_config_path(self)
97 patch_dns_default_controls(self, enable=True)
98diff --git a/src/provisioningserver/testing/bindfixture.py b/src/provisioningserver/testing/bindfixture.py
99index 448fad8..714ff04 100644
100--- a/src/provisioningserver/testing/bindfixture.py
101+++ b/src/provisioningserver/testing/bindfixture.py
102@@ -134,6 +134,7 @@ class BINDServerResources(fixtures.Fixture):
103 port=None,
104 rndc_port=None,
105 homedir=None,
106+ zonedir=None,
107 log_file=None,
108 include_in_options=None,
109 ):
110@@ -142,6 +143,7 @@ class BINDServerResources(fixtures.Fixture):
111 port=port,
112 rndc_port=rndc_port,
113 homedir=homedir,
114+ zonedir=zonedir,
115 log_file=log_file,
116 include_in_options=include_in_options,
117 )
118@@ -209,6 +211,8 @@ class BINDServerResources(fixtures.Fixture):
119 [self.rndc_port] = allocate_ports("localhost")
120 if self.homedir is None:
121 self.homedir = self.useFixture(TempDirectory()).path
122+ if self.zonedir is None:
123+ self.zonedir = self.useFixture(TempDirectory()).path
124 if self.log_file is None:
125 self.log_file = os.path.join(self.homedir, "named.log")
126 self.named_file = os.path.join(

Subscribers

People subscribed via source and target branches