Kaynağa Gözat

Use from_json_keyfile_dict when credentials_dict is available.

baizhang 10 yıl önce
ebeveyn
işleme
f564235a7f
1 değiştirilmiş dosya ile 11 ekleme ve 3 silme
  1. 11 3
      cloudbridge/cloud/providers/gce/provider.py

+ 11 - 3
cloudbridge/cloud/providers/gce/provider.py

@@ -31,6 +31,14 @@ class GCECloudProvider(BaseCloudProvider):
             'gce_project_name', os.environ.get('GCE_PROJECT_NAME'))
         self.credentials_file = self._get_config_value(
             'gce_service_creds_file', os.environ.get('GCE_SERVICE_CREDS_FILE'))
+        self.credentials_dict = self._get_config_value(
+            'gce_service_creds_dict', {})
+        # If 'gce_service_creds_dict' is not passed in from config and
+        # self.credentials_file is available, read and parse the json file to
+        # self.credentials_dict.
+        if self.credentials_file and not self.credentials_dict:
+            with open(self.credentials_file) as creds_file:
+                self.credentials_dict = json.load(creds_file)
         self.default_zone = self._get_config_value(
             'gce_default_zone', os.environ.get('GCE_DEFAULT_ZONE'))
 
@@ -71,9 +79,9 @@ class GCECloudProvider(BaseCloudProvider):
         return self._gce_compute
 
     def _connect_gce_compute(self):
-        if self.credentials_file:
-            credentials = ServiceAccountCredentials.from_json_keyfile_name(
-                self.credentials_file)
+        if self.credentials_dict:
+            credentials = ServiceAccountCredentials.from_json_keyfile_dict(
+                self.credentials_dict)
         else:
             credentials = GoogleCredentials.get_application_default()
         return discovery.build('compute', 'v1', credentials=credentials)