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