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

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/maasserver/dns/tests/test_config.py b/src/maasserver/dns/tests/test_config.py
index 913c96e..9a2835d 100644
--- a/src/maasserver/dns/tests/test_config.py
+++ b/src/maasserver/dns/tests/test_config.py
@@ -133,7 +133,7 @@ class TestDNSServer(MAASServerTestCase):
133 patch_dns_config_path(self, self.bind.config.homedir)133 patch_dns_config_path(self, self.bind.config.homedir)
134 # Use a random port for rndc.134 # Use a random port for rndc.
135 patch_dns_rndc_port(self, allocate_ports("localhost")[0])135 patch_dns_rndc_port(self, allocate_ports("localhost")[0])
136 patch_zone_file_config_path(self, config_dir=self.bind.config.homedir)136 patch_zone_file_config_path(self, config_dir=self.bind.config.zonedir)
137 # This simulates what should happen when the package is137 # This simulates what should happen when the package is
138 # installed:138 # installed:
139 # Create MAAS-specific DNS configuration files.139 # Create MAAS-specific DNS configuration files.
diff --git a/src/provisioningserver/dns/commands/tests/test_setup_dns.py b/src/provisioningserver/dns/commands/tests/test_setup_dns.py
index e720cff..132dc5e 100644
--- a/src/provisioningserver/dns/commands/tests/test_setup_dns.py
+++ b/src/provisioningserver/dns/commands/tests/test_setup_dns.py
@@ -46,8 +46,9 @@ class TestSetupCommand(MAASTestCase):
4646
47 def test_does_not_overwrite_config(self):47 def test_does_not_overwrite_config(self):
48 dns_conf_dir = self.make_dir()48 dns_conf_dir = self.make_dir()
49 zone_file_dir = self.make_dir()
49 patch_dns_config_path(self, dns_conf_dir)50 patch_dns_config_path(self, dns_conf_dir)
50 patch_zone_file_config_path(self, dns_conf_dir)51 patch_zone_file_config_path(self, zone_file_dir)
51 random_content = factory.make_string()52 random_content = factory.make_string()
52 factory.make_file(53 factory.make_file(
53 location=dns_conf_dir,54 location=dns_conf_dir,
diff --git a/src/provisioningserver/dns/config.py b/src/provisioningserver/dns/config.py
index 5673b4a..199fb76 100644
--- a/src/provisioningserver/dns/config.py
+++ b/src/provisioningserver/dns/config.py
@@ -239,6 +239,13 @@ def set_up_nsupdate_key():
239 atomic_write(tsig, get_nsupdate_key_path(), overwrite=True, mode=0o644)239 atomic_write(tsig, get_nsupdate_key_path(), overwrite=True, mode=0o644)
240240
241241
242def clean_old_zone_files():
243 p = get_zone_file_config_dir()
244 files = os.listdir(p)
245 for f in files:
246 os.remove(os.path.join(p, f))
247
248
242def set_up_zone_file_dir():249def set_up_zone_file_dir():
243 p = get_zone_file_config_dir()250 p = get_zone_file_config_dir()
244 if not os.path.exists(p):251 if not os.path.exists(p):
@@ -252,6 +259,8 @@ def set_up_zone_file_dir():
252259
253 os.chown(p, uid, gid)260 os.chown(p, uid, gid)
254 os.chmod(p, 0o775)261 os.chmod(p, 0o775)
262 else:
263 clean_old_zone_files()
255264
256265
257def set_up_rndc():266def set_up_rndc():
diff --git a/src/provisioningserver/dns/tests/test_config.py b/src/provisioningserver/dns/tests/test_config.py
index 1e02498..ca6f037 100644
--- a/src/provisioningserver/dns/tests/test_config.py
+++ b/src/provisioningserver/dns/tests/test_config.py
@@ -35,6 +35,7 @@ from maastesting.fakemethod import FakeMethod
35from maastesting.testcase import MAASTestCase35from maastesting.testcase import MAASTestCase
36from provisioningserver.dns import config36from provisioningserver.dns import config
37from provisioningserver.dns.config import (37from provisioningserver.dns.config import (
38 clean_old_zone_files,
38 compose_config_path,39 compose_config_path,
39 DEFAULT_CONTROLS,40 DEFAULT_CONTROLS,
40 DNSConfig,41 DNSConfig,
@@ -58,6 +59,7 @@ from provisioningserver.dns.config import (
58from provisioningserver.dns.testing import (59from provisioningserver.dns.testing import (
59 patch_dns_config_path,60 patch_dns_config_path,
60 patch_dns_default_controls,61 patch_dns_default_controls,
62 patch_zone_file_config_path,
61)63)
62from provisioningserver.dns.zoneconfig import (64from provisioningserver.dns.zoneconfig import (
63 DNSForwardZoneConfig,65 DNSForwardZoneConfig,
@@ -290,6 +292,21 @@ class TestRNDCUtilities(MAASTestCase):
290 )292 )
291 self.assertThat(target_file, FileExists())293 self.assertThat(target_file, FileExists())
292294
295 def test_clean_old_zone_files(self):
296 zone_file_dir = patch_zone_file_config_path(self)
297
298 zonefiles = [
299 os.path.join(zone_file_dir, f"zonefile{i}")
300 for i, _ in enumerate(range(2))
301 ]
302 for zonefile in zonefiles:
303 with open(zonefile, "w+"):
304 pass
305
306 clean_old_zone_files()
307 for zonefile in zonefiles:
308 self.assertRaises(FileNotFoundError, os.stat, zonefile)
309
293 def test_rndc_config_includes_default_controls(self):310 def test_rndc_config_includes_default_controls(self):
294 dns_conf_dir = patch_dns_config_path(self)311 dns_conf_dir = patch_dns_config_path(self)
295 patch_dns_default_controls(self, enable=True)312 patch_dns_default_controls(self, enable=True)
diff --git a/src/provisioningserver/testing/bindfixture.py b/src/provisioningserver/testing/bindfixture.py
index 448fad8..714ff04 100644
--- a/src/provisioningserver/testing/bindfixture.py
+++ b/src/provisioningserver/testing/bindfixture.py
@@ -134,6 +134,7 @@ class BINDServerResources(fixtures.Fixture):
134 port=None,134 port=None,
135 rndc_port=None,135 rndc_port=None,
136 homedir=None,136 homedir=None,
137 zonedir=None,
137 log_file=None,138 log_file=None,
138 include_in_options=None,139 include_in_options=None,
139 ):140 ):
@@ -142,6 +143,7 @@ class BINDServerResources(fixtures.Fixture):
142 port=port,143 port=port,
143 rndc_port=rndc_port,144 rndc_port=rndc_port,
144 homedir=homedir,145 homedir=homedir,
146 zonedir=zonedir,
145 log_file=log_file,147 log_file=log_file,
146 include_in_options=include_in_options,148 include_in_options=include_in_options,
147 )149 )
@@ -209,6 +211,8 @@ class BINDServerResources(fixtures.Fixture):
209 [self.rndc_port] = allocate_ports("localhost")211 [self.rndc_port] = allocate_ports("localhost")
210 if self.homedir is None:212 if self.homedir is None:
211 self.homedir = self.useFixture(TempDirectory()).path213 self.homedir = self.useFixture(TempDirectory()).path
214 if self.zonedir is None:
215 self.zonedir = self.useFixture(TempDirectory()).path
212 if self.log_file is None:216 if self.log_file is None:
213 self.log_file = os.path.join(self.homedir, "named.log")217 self.log_file = os.path.join(self.homedir, "named.log")
214 self.named_file = os.path.join(218 self.named_file = os.path.join(

Subscribers

People subscribed via source and target branches