You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2016/07/30 11:16:42 UTC

[3/4] libcloud git commit: Make sure that writing auth token from a file and reading it from a file is not fatal if a token file is corrupted or similar.

Make sure that writing auth token from a file and reading it from a file is not
fatal if a token file is corrupted or similar.


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/2f02aece
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/2f02aece
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/2f02aece

Branch: refs/heads/trunk
Commit: 2f02aecebc4ba371b1239378961675a477ab9086
Parents: 43eeed6
Author: Tomaz Muraus <to...@tomaz.me>
Authored: Sat Jul 30 13:02:30 2016 +0200
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Sat Jul 30 13:02:30 2016 +0200

----------------------------------------------------------------------
 libcloud/common/google.py | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/2f02aece/libcloud/common/google.py
----------------------------------------------------------------------
diff --git a/libcloud/common/google.py b/libcloud/common/google.py
index 68aa77c..4b896c6 100644
--- a/libcloud/common/google.py
+++ b/libcloud/common/google.py
@@ -677,7 +677,9 @@ class GoogleOAuth2Credential(object):
             with open(filename, 'r') as f:
                 data = f.read()
             token = json.loads(data)
-        except IOError:
+        except (IOError, ValueError):
+            # Note: File related errors (IOError) and errors related to json
+            # parsing of the data (ValueError) are not fatal.
             pass
         return token
 
@@ -686,11 +688,19 @@ class GoogleOAuth2Credential(object):
         Write token to credential file.
         Mocked in libcloud.test.common.google.GoogleTestCase.
         """
-        filename = os.path.realpath(os.path.expanduser(self.credential_file))
-        data = json.dumps(self.token)
-        with os.fdopen(os.open(filename, os.O_CREAT | os.O_WRONLY | os.O_TRUNC,
-                               int('600', 8)), 'w') as f:
-            f.write(data)
+        try:
+            filename = os.path.expanduser(self.credential_file)
+            filename = os.path.realpath(filename)
+            data = json.dumps(self.token)
+            write_flags = os.O_CREAT | os.O_WRONLY | os.O_TRUNC
+            with os.fdopen(os.open(filename, write_flags,
+                                   int('600', 8)), 'w') as f:
+                f.write(data)
+        except:
+            # Note: Failed to write (cache) token in a file is not fatal. It
+            # simply means degraded performance since we will need to acquire a
+            # new token each time script runs.
+            pass
 
 
 class GoogleBaseConnection(ConnectionUserAndKey, PollingConnection):