BIND 10 trac1443, updated. d98c6ee0863c784e79204242a3d868d4aedc3d5a [1443] append .X if backup config file exists
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Mar 26 10:01:21 UTC 2012
The branch, trac1443 has been updated
via d98c6ee0863c784e79204242a3d868d4aedc3d5a (commit)
from 04e0ef7fe56b4c9c65b71bba010147af4506675d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit d98c6ee0863c784e79204242a3d868d4aedc3d5a
Author: Jelte Jansen <jelte at isc.org>
Date: Mon Mar 26 12:00:37 2012 +0200
[1443] append .X if backup config file exists
where X is 1, and increases until a nonexistant file is found
-----------------------------------------------------------------------
Summary of changes:
src/lib/python/isc/config/cfgmgr.py | 5 ++
src/lib/python/isc/config/tests/cfgmgr_test.py | 58 +++++++++++++++---------
2 files changed, 42 insertions(+), 21 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/python/isc/config/cfgmgr.py b/src/lib/python/isc/config/cfgmgr.py
index df7d30a..9bb7544 100644
--- a/src/lib/python/isc/config/cfgmgr.py
+++ b/src/lib/python/isc/config/cfgmgr.py
@@ -159,6 +159,11 @@ class ConfigManagerData:
old_file_name = self.db_filename
if new_file_name is None:
new_file_name = old_file_name + ".bak"
+ if os.path.exists(new_file_name):
+ i = 1
+ while os.path.exists(new_file_name + "." + str(i)):
+ i += 1
+ new_file_name = new_file_name + "." + str(i)
if os.path.exists(old_file_name):
logger.info(CFGMGR_RENAMED_CONFIG_FILE, old_file_name, new_file_name)
os.rename(old_file_name, new_file_name)
diff --git a/src/lib/python/isc/config/tests/cfgmgr_test.py b/src/lib/python/isc/config/tests/cfgmgr_test.py
index 4385543..bda2ffd 100644
--- a/src/lib/python/isc/config/tests/cfgmgr_test.py
+++ b/src/lib/python/isc/config/tests/cfgmgr_test.py
@@ -74,36 +74,52 @@ class TestConfigManagerData(unittest.TestCase):
self.assertEqual(self.config_manager_data, new_config)
os.remove(output_file_name)
+ def check_existance(self, files, should_exist=[], should_not_exist=[]):
+ for n in should_exist:
+ self.assertTrue(os.path.exists(files[n]))
+ for n in should_not_exist:
+ self.assertFalse(os.path.exists(files[n]))
+
def test_rename_config_file(self):
- output_file_name = "b10-config-rename-test"
- renamed_file_name = "b10-config-rename-test.bak"
- if os.path.exists(output_file_name):
- os.remove(output_file_name)
- if os.path.exists(renamed_file_name):
- os.remove(renamed_file_name)
+ # test file names, put in array for easy cleanup
+ filenames = [ "b10-config-rename-test",
+ "b10-config-rename-test.bak",
+ "b10-config-rename-test.bak.1",
+ "b10-config-rename-test.bak.2" ]
+
+ for filename in filenames:
+ if os.path.exists(filename):
+ os.remove(filename)
# The original does not exist, so the new one should not be created
- self.config_manager_data.rename_config_file(output_file_name)
- self.assertFalse(os.path.exists(output_file_name))
- self.assertFalse(os.path.exists(renamed_file_name))
+ self.config_manager_data.rename_config_file(filenames[0])
+ self.check_existance(filenames, [], [0, 1, 2, 3])
# now create a file to rename, and call rename again
- self.config_manager_data.write_to_file(output_file_name)
- self.config_manager_data.rename_config_file(output_file_name)
- self.assertFalse(os.path.exists(output_file_name))
- self.assertTrue(os.path.exists(renamed_file_name))
+ self.config_manager_data.write_to_file(filenames[0])
+ self.config_manager_data.rename_config_file(filenames[0])
+ self.check_existance(filenames, [1], [0, 2, 3])
+
+ # If backup already exists, give it a new name automatically
+ self.config_manager_data.write_to_file(filenames[0])
+ self.config_manager_data.rename_config_file(filenames[0])
+ self.check_existance(filenames, [1, 2], [0, 3])
+
+ # If backup already exists, give it a new name automatically with
+ # increasing postfix
+ self.config_manager_data.write_to_file(filenames[0])
+ self.config_manager_data.rename_config_file(filenames[0])
+ self.check_existance(filenames, [1, 2, 3], [0])
# Test with explicit renamed file argument
- self.config_manager_data.rename_config_file(renamed_file_name,
- output_file_name)
- self.assertTrue(os.path.exists(output_file_name))
- self.assertFalse(os.path.exists(renamed_file_name))
+ self.config_manager_data.rename_config_file(filenames[1],
+ filenames[0])
+ self.check_existance(filenames, [0, 2, 3], [1])
# clean up again to be nice
- if os.path.exists(output_file_name):
- os.remove(output_file_name)
- if os.path.exists(renamed_file_name):
- os.remove(renamed_file_name)
+ for filename in filenames:
+ if os.path.exists(filename):
+ os.remove(filename)
def test_equality(self):
# tests the __eq__ function. Equality is only defined
More information about the bind10-changes
mailing list