X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ba386628f3d998cf1dc28990505b1bbac6021db7..93380e6aec7e11607019cdce88419b6f708327d7:/sdk/python/arvados/safeapi.py?ds=sidebyside diff --git a/sdk/python/arvados/safeapi.py b/sdk/python/arvados/safeapi.py index 5c5c87250a..c6e17cae0b 100644 --- a/sdk/python/arvados/safeapi.py +++ b/sdk/python/arvados/safeapi.py @@ -1,8 +1,16 @@ -import threading -import api -import keep -import config +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import absolute_import + +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. @@ -12,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):