]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
node.py: change get_or_create_config() to accept a function
authorBrian Warner <warner@lothar.com>
Tue, 28 Aug 2007 02:07:12 +0000 (19:07 -0700)
committerBrian Warner <warner@lothar.com>
Tue, 28 Aug 2007 02:07:12 +0000 (19:07 -0700)
src/allmydata/client.py
src/allmydata/node.py

index 896c5e6194f284b8ebe1f44ff4479d84fa2f68dc..7ff46b68c2afa2caf49ecd412c7ff31022e0de15 100644 (file)
@@ -103,6 +103,8 @@ class Client(node.Node, Referenceable):
     def tub_ready(self):
         self.log("tub_ready")
 
+        # we use separate get_config/write_config here because we want to
+        # update the connection hints each time.
         my_old_name = None
         my_old_furl = self.get_config("myself.furl")
         if my_old_furl is not None:
index 279d8e8089fe79268f634b0d68e08b9a68b76632..40f48da2404c84800825f45dc294d1532a89b855 100644 (file)
@@ -78,14 +78,21 @@ class Node(service.MultiService):
                 return None
             raise
 
-    def get_or_create_config(self, name, default, mode="w"):
-        """Try to get the (string) contents of a config file. If the file
-        does not exist, create it with the given default value, and return
-        the default value. Any leading or trailing whitespace will be
-        stripped from the data."""
+    def get_or_create_config(self, name, default_fn, mode="w"):
+        """Try to get the (string) contents of a config file, and return it.
+        Any leading or trailing whitespace will be stripped from the data.
+
+        If the file does not exist, try to create it using default_fn, and
+        then return the value that was written. If 'default_fn' is a string,
+        use it as a default value. If not, treat it as a 0-argument callable
+        which is expected to return a string.
+        """
         value = self.get_config(name)
         if value is None:
-            value = default
+            if isinstance(default_fn, (str, unicode)):
+                value = default_fn
+            else:
+                value = default_fn()
             fn = os.path.join(self.basedir, name)
             try:
                 open(fn, mode).write(value)