sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #03453
[Merge] ~cgrabowski/maas:fix_dns_initialization_in_snap into maas:master
Christian Grabowski has proposed merging ~cgrabowski/maas:fix_dns_initialization_in_snap into maas:master.
Commit message:
ensure zone file cleanup only deletes files
ensure settings for zone file config dir are correctly encoded
Requested reviews:
MAAS Maintainers (maas-maintainers)
For more details, see:
https://code.launchpad.net/~cgrabowski/maas/+git/maas/+merge/433482
--
Your team MAAS Maintainers is requested to review the proposed merge of ~cgrabowski/maas:fix_dns_initialization_in_snap into maas:master.
diff --git a/src/provisioningserver/dns/config.py b/src/provisioningserver/dns/config.py
index abb059c..ef5a166 100644
--- a/src/provisioningserver/dns/config.py
+++ b/src/provisioningserver/dns/config.py
@@ -109,6 +109,9 @@ def get_zone_file_config_dir():
so that bind can write to the location as well
"""
setting = os.getenv("MAAS_ZONE_FILE_CONFIG_DIR", MAAS_ZONE_FILE_DIR)
+ if isinstance(setting, bytes):
+ fsenc = sys.getfilesystemencoding()
+ setting = setting.decode(fsenc)
return Path(setting)
@@ -238,7 +241,8 @@ def set_up_nsupdate_key():
def clean_old_zone_files():
for path in get_zone_file_config_dir().glob("zone.*"):
- path.unlink()
+ if path.is_file():
+ path.unlink()
def set_up_zone_file_dir():
diff --git a/src/provisioningserver/dns/tests/test_config.py b/src/provisioningserver/dns/tests/test_config.py
index 954411c..25fa855 100644
--- a/src/provisioningserver/dns/tests/test_config.py
+++ b/src/provisioningserver/dns/tests/test_config.py
@@ -170,6 +170,15 @@ class TestHelpers(MAASTestCase):
self.useFixture(EnvironmentVariable("MAAS_DNS_DEFAULT_CONTROLS", "0"))
self.assertFalse(config.get_dns_default_controls())
+ def test_get_zone_file_config_dir_defaults_to_var_lib_bind_maas(self):
+ self.useFixture(EnvironmentVariable("MAAS_ZONE_FILE_CONFIG_DIR"))
+ self.assertEqual(str(config.get_zone_file_config_dir()), "/var/lib/bind/maas")
+
+ def test_get_zone_file_config_dir_check_environ_first(self):
+ directory = self.make_dir()
+ self.useFixture(EnvironmentVariable("MAAS_ZONE_FILE_CONFIG_DIR", directory))
+ self.assertEqual(str(config.get_zone_file_config_dir()), directory)
+
class TestRNDCUtilities(MAASTestCase):
def test_generate_rndc_returns_configurations(self):
@@ -307,6 +316,24 @@ class TestRNDCUtilities(MAASTestCase):
for zonefile in zonefiles:
self.assertRaises(FileNotFoundError, os.stat, zonefile)
+ def test_clean_old_zone_files_only_deletes_files(self):
+ zone_file_dir = patch_zone_file_config_path(self)
+
+ zonefiles = [
+ os.path.join(zone_file_dir, f"zone.{i}")
+ for i, _ in enumerate(range(2))
+ ]
+ for zonefile in zonefiles:
+ with open(zonefile, "w+"):
+ pass
+
+ child_dir = os.path.join(zone_file_dir, "test_dir")
+ os.mkdir(child_dir)
+
+ clean_old_zone_files()
+ self.assertIsNotNone(os.stat(child_dir))
+
+
def test_rndc_config_includes_default_controls(self):
dns_conf_dir = patch_dns_config_path(self)
patch_dns_default_controls(self, enable=True)
Follow ups