Merge branch '19070-update-workflow-deps' refs #19070
[arvados.git] / sdk / python / arvados / safeapi.py
index bc875367de02e6bea245c4d2230346bf4a78ac36..c6e17cae0b71a4ca0b580bbb6f8c056da8cb8988 100644 (file)
@@ -1,9 +1,16 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
 from __future__ import absolute_import
-import threading
-from . import api
-from . import keep
-from . import config
+
+from builtins import object
 import copy
+import threading
+
+import arvados
+import arvados.keep as keep
+import arvados.config as config
 
 class ThreadSafeApiCache(object):
     """Threadsafe wrapper for API objects.
@@ -13,16 +20,24 @@ class ThreadSafeApiCache(object):
 
     """
 
-    def __init__(self, apiconfig=None, keep_params={}):
+    def __init__(self, apiconfig=None, keep_params={}, api_params={}):
         if apiconfig is None:
             apiconfig = config.settings()
         self.apiconfig = copy.copy(apiconfig)
+        self.api_params = api_params
         self.local = threading.local()
+
+        # Initialize an API object for this thread before creating
+        # KeepClient, this will report if ARVADOS_API_HOST or
+        # ARVADOS_API_TOKEN are missing.
+        self.localapi()
+
         self.keep = keep.KeepClient(api_client=self, **keep_params)
 
     def localapi(self):
         if 'api' not in self.local.__dict__:
-            self.local.api = api.api_from_config('v1', apiconfig=self.apiconfig)
+            self.local.api = arvados.api_from_config('v1', apiconfig=self.apiconfig,
+                                                     **self.api_params)
         return self.local.api
 
     def __getattr__(self, name):