From 9b4329e9e78bf69093b3a8b0dcbb74d082867766 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Fri, 30 Nov 2012 11:41:48 +0100 Subject: [PATCH] Add ssconf function to read all files Configuring a node daemon on a newly added node will need all ssconf values. Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- lib/ssconf.py | 20 ++++++++++++++++++++ test/ganeti.ssconf_unittest.py | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/lib/ssconf.py b/lib/ssconf.py index 29db858da..c1f5ce17c 100644 --- a/lib/ssconf.py +++ b/lib/ssconf.py @@ -138,6 +138,26 @@ class SimpleStore(object): raise errors.ConfigurationError("Can't read ssconf file %s: %s" % (filename, str(err))) + def ReadAll(self): + """Reads all keys and returns their values. + + @rtype: dict + @return: Dictionary, ssconf key as key, value as value + + """ + result = [] + + for key in _VALID_KEYS: + try: + value = self._ReadFile(key) + except errors.ConfigurationError: + # Ignore non-existing files + pass + else: + result.append((key, value)) + + return dict(result) + def WriteFiles(self, values, dry_run=False): """Writes ssconf files used by external scripts. diff --git a/test/ganeti.ssconf_unittest.py b/test/ganeti.ssconf_unittest.py index eb9273545..201973f23 100755 --- a/test/ganeti.ssconf_unittest.py +++ b/test/ganeti.ssconf_unittest.py @@ -149,6 +149,16 @@ class TestSimpleStore(unittest.TestCase): default="something.example.com"), "cluster.example.com") + def testReadAllNoFiles(self): + self.assertEqual(self.sstore.ReadAll(), {}) + + def testReadAllSingleFile(self): + utils.WriteFile(self.sstore.KeyToFilename(constants.SS_CLUSTER_NAME), + data="cluster.example.com") + self.assertEqual(self.sstore.ReadAll(), { + constants.SS_CLUSTER_NAME: "cluster.example.com", + }) + def testWriteFiles(self): values = { constants.SS_CLUSTER_NAME: "cluster.example.com", -- GitLab