From 89b14f05e181724ffc0666af7f2e0aa81f51b1eb Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Tue, 2 Dec 2008 05:04:17 +0000 Subject: [PATCH] Simplify a little the ssconf update We have (again) the KeyToFilename function, so we move the writing of the files to a method under SimpleStore. Reviewed-by: imsnah --- lib/backend.py | 7 ++++++- lib/ssconf.py | 46 +++++++++++++++++++--------------------------- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/lib/backend.py b/lib/backend.py index 89c1b2b9d..70afa6034 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -1227,7 +1227,12 @@ def UploadFile(file_name, data, mode, uid, gid, atime, mtime): def WriteSsconfFiles(values): - ssconf.WriteSsconfFiles(values) + """Update all ssconf files. + + Wrapper around the SimpleStore.WriteFiles. + + """ + ssconf.SimpleStore().WriteFiles(values) def _ErrnoOrStr(err): diff --git a/lib/ssconf.py b/lib/ssconf.py index 2189382b4..5e2ec0429 100644 --- a/lib/ssconf.py +++ b/lib/ssconf.py @@ -171,6 +171,25 @@ class SimpleStore(object): " '%s'" % str(err)) return data + def WriteFiles(self, values): + """Writes ssconf files used by external scripts. + + @type values: dict + @param values: Dictionary of (name, value) + + """ + ssconf_lock = utils.FileLock(constants.SSCONF_LOCK_FILE) + + # Get lock while writing files + ssconf_lock.Exclusive(blocking=True, timeout=SSCONF_LOCK_TIMEOUT) + try: + for name, value in values.iteritems(): + if not value.endswith("\n"): + value += "\n" + utils.WriteFile(self.KeyToFilename(name), data=value) + finally: + ssconf_lock.Unlock() + def GetFileList(self): """Return the list of all config files. @@ -218,33 +237,6 @@ class SimpleStore(object): return nl -def _SsconfPath(name): - if not RE_VALID_SSCONF_NAME.match(name): - raise errors.ParameterError("Invalid ssconf name: %s" % name) - return "%s/ssconf_%s" % (constants.DATA_DIR, name) - - -def WriteSsconfFiles(values): - """Writes legacy ssconf files to be used by external scripts. - - @type values: dict - @param values: Dictionary of (name, value) - - """ - ssconf_lock = utils.FileLock(constants.SSCONF_LOCK_FILE) - - # Get lock while writing files - ssconf_lock.Exclusive(blocking=True, timeout=SSCONF_LOCK_TIMEOUT) - try: - for name, value in values.iteritems(): - if not value.endswith("\n"): - value += "\n" - utils.WriteFile(_SsconfPath(name), - data=value) - finally: - ssconf_lock.Unlock() - - def GetMasterAndMyself(ss=None): """Get the master node and my own hostname. -- GitLab