Merge ~cgrabowski/maas:fix_dns_initialization_in_snap into maas:master

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

Commit message

ensure zone file cleanup only deletes files

ensure settings for zone file config dir are correctly encoded

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

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

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/1456/consoleText
COMMIT: 11318709ea7ded3c685138eeb105bc4db82dd653

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

STATUS: SUCCESS
COMMIT: 1e6ca51fbb5820d882dc9ec0500ef0b652e533bd

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/provisioningserver/dns/config.py b/src/provisioningserver/dns/config.py
2index abb059c..ef5a166 100644
3--- a/src/provisioningserver/dns/config.py
4+++ b/src/provisioningserver/dns/config.py
5@@ -109,6 +109,9 @@ def get_zone_file_config_dir():
6 so that bind can write to the location as well
7 """
8 setting = os.getenv("MAAS_ZONE_FILE_CONFIG_DIR", MAAS_ZONE_FILE_DIR)
9+ if isinstance(setting, bytes):
10+ fsenc = sys.getfilesystemencoding()
11+ setting = setting.decode(fsenc)
12 return Path(setting)
13
14
15@@ -238,7 +241,8 @@ def set_up_nsupdate_key():
16
17 def clean_old_zone_files():
18 for path in get_zone_file_config_dir().glob("zone.*"):
19- path.unlink()
20+ if path.is_file():
21+ path.unlink()
22
23
24 def set_up_zone_file_dir():
25diff --git a/src/provisioningserver/dns/tests/test_config.py b/src/provisioningserver/dns/tests/test_config.py
26index 954411c..60b4c58 100644
27--- a/src/provisioningserver/dns/tests/test_config.py
28+++ b/src/provisioningserver/dns/tests/test_config.py
29@@ -170,6 +170,19 @@ class TestHelpers(MAASTestCase):
30 self.useFixture(EnvironmentVariable("MAAS_DNS_DEFAULT_CONTROLS", "0"))
31 self.assertFalse(config.get_dns_default_controls())
32
33+ def test_get_zone_file_config_dir_defaults_to_var_lib_bind_maas(self):
34+ self.useFixture(EnvironmentVariable("MAAS_ZONE_FILE_CONFIG_DIR"))
35+ self.assertEqual(
36+ str(config.get_zone_file_config_dir()), "/var/lib/bind/maas"
37+ )
38+
39+ def test_get_zone_file_config_dir_check_environ_first(self):
40+ directory = self.make_dir()
41+ self.useFixture(
42+ EnvironmentVariable("MAAS_ZONE_FILE_CONFIG_DIR", directory)
43+ )
44+ self.assertEqual(str(config.get_zone_file_config_dir()), directory)
45+
46
47 class TestRNDCUtilities(MAASTestCase):
48 def test_generate_rndc_returns_configurations(self):
49@@ -307,6 +320,23 @@ class TestRNDCUtilities(MAASTestCase):
50 for zonefile in zonefiles:
51 self.assertRaises(FileNotFoundError, os.stat, zonefile)
52
53+ def test_clean_old_zone_files_only_deletes_files(self):
54+ zone_file_dir = patch_zone_file_config_path(self)
55+
56+ zonefiles = [
57+ os.path.join(zone_file_dir, f"zone.{i}")
58+ for i, _ in enumerate(range(2))
59+ ]
60+ for zonefile in zonefiles:
61+ with open(zonefile, "w+"):
62+ pass
63+
64+ child_dir = os.path.join(zone_file_dir, "test_dir")
65+ os.mkdir(child_dir)
66+
67+ clean_old_zone_files()
68+ self.assertIsNotNone(os.stat(child_dir))
69+
70 def test_rndc_config_includes_default_controls(self):
71 dns_conf_dir = patch_dns_config_path(self)
72 patch_dns_default_controls(self, enable=True)

Subscribers

People subscribed via source and target branches