]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
refactor reading of configuration files in client.py
authorZooko O'Whielacronx <zooko@zooko.com>
Wed, 22 Aug 2007 17:29:57 +0000 (10:29 -0700)
committerZooko O'Whielacronx <zooko@zooko.com>
Wed, 22 Aug 2007 17:29:57 +0000 (10:29 -0700)
This makes it so that an optional file which is unreadable or is rm'ed
at the wrong moment will be ignored instead of raising an exception.
It also bums out a couple of unnecessary lines of code (the explicit
".close()" call).

src/allmydata/client.py

index e15cae28578b1f9e83461085f1bd30a27b5abcf4..5976a7b17a55017effd51b9ed4fd5edce49b572f 100644 (file)
@@ -44,23 +44,20 @@ class Client(node.Node, Referenceable):
         self.add_service(Uploader())
         self.add_service(Downloader())
         self.add_service(VirtualDrive())
-        WEBPORTFILE = os.path.join(self.basedir, self.WEBPORTFILE)
-        if os.path.exists(WEBPORTFILE):
-            f = open(WEBPORTFILE, "r")
-            webport = f.read().strip() # strports string
-            f.close()
+        try:
+            webport = open(os.path.join(self.basedir, self.WEBPORTFILE),
+                           "r").read().strip() # strports string
+        except EnvironmentError:
+            pass # absent or unreadable webport file
+        else:
             ws = WebishServer(webport)
-            local_access_file = os.path.join(self.basedir,
-                                             self.WEB_ALLOW_LOCAL_ACCESS_FILE)
-            if os.path.exists(local_access_file):
-                ws.allow_local_access(True)
+            ws.allow_local_access(os.path.exists(os.path.join(self.basedir,
+                                  self.WEB_ALLOW_LOCAL_ACCESS_FILE)))
             self.add_service(ws)
 
         INTRODUCER_FURL_FILE = os.path.join(self.basedir,
                                             self.INTRODUCER_FURL_FILE)
-        f = open(INTRODUCER_FURL_FILE, "r")
-        self.introducer_furl = f.read().strip()
-        f.close()
+        self.introducer_furl = open(INTRODUCER_FURL_FILE, "r").read().strip()
 
         hotline_file = os.path.join(self.basedir,
                                     self.SUICIDE_PREVENTION_HOTLINE_FILE)
@@ -72,12 +69,13 @@ class Client(node.Node, Referenceable):
     def init_storage(self):
         storedir = os.path.join(self.basedir, self.STOREDIR)
         sizelimit = None
-        SIZELIMIT_FILE = os.path.join(self.basedir,
-                                      self.SIZELIMIT_FILE)
-        if os.path.exists(SIZELIMIT_FILE):
-            f = open(SIZELIMIT_FILE, "r")
-            data = f.read().strip()
-            f.close()
+
+        try:
+            data = open(os.path.join(self.basedir, self.SIZELIMIT_FILE),
+                        "r").read().strip()
+        except EnvironmentError:
+            pass # absent or unreadable sizelimit file
+        else:
             m = re.match(r"^(\d+)([kKmMgG]?[bB]?)$", data)
             if not m:
                 log.msg("SIZELIMIT_FILE contains unparseable value %s" % data)
@@ -114,16 +112,18 @@ class Client(node.Node, Referenceable):
         self.log("tub_ready")
 
         my_old_name = None
-        MYSELF_FURL_PATH = os.path.join(self.basedir, self.MY_FURL_FILE)
-        if os.path.exists(MYSELF_FURL_PATH):
-            my_old_furl = open(MYSELF_FURL_PATH, "r").read().strip()
+        try:
+            my_old_furl = open(os.path.join(self.basedir, self.MY_FURL_FILE),
+                               "r").read().strip()
+        except EnvironmentError:
+            pass # absent or unreadable myfurl file
+        else:
             sturdy = SturdyRef(my_old_furl)
             my_old_name = sturdy.name
 
         self.my_furl = self.tub.registerReference(self, my_old_name)
-        f = open(MYSELF_FURL_PATH, "w")
-        f.write(self.my_furl + "\n")
-        f.close()
+        open(os.path.join(self.basedir, self.MY_FURL_FILE),
+             "w").write(self.my_furl + "\n")
 
         ic = IntroducerClient(self.tub, self.introducer_furl, self.my_furl)
         self.introducer_client = ic
@@ -136,9 +136,7 @@ class Client(node.Node, Referenceable):
         c.setServiceParent(self)
         control_url = self.tub.registerReference(c)
         control_furl_file = os.path.join(self.basedir, "control.furl")
-        f = open(control_furl_file, "w")
-        f.write(control_url + "\n")
-        f.close()
+        open(control_furl_file, "w").write(control_url + "\n")
         os.chmod(control_furl_file, 0600)