import config
import copy
-class SafeApi(object):
- """Threadsafe wrapper for API object. This stores and returns a different api
- object per thread, because httplib2 which underlies apiclient is not
- threadsafe.
+class ThreadSafeApiCache(object):
+ """Threadsafe wrapper for API objects.
+
+ This stores and returns a different api object per thread, because httplib2
+ which underlies apiclient is not threadsafe.
+
"""
def __init__(self, apiconfig=None, keep_params={}):
def localapi(self):
if 'api' not in self.local.__dict__:
- self.local.api = api.api('v1', False, apiconfig=self.apiconfig)
+ self.local.api = api.api_from_config('v1', apiconfig=self.apiconfig)
return self.local.api
def __getattr__(self, name):
# Proxy nonexistent attributes to the thread-local API client.
if name == "api_token":
return self.apiconfig['ARVADOS_API_TOKEN']
- try:
- return getattr(self.localapi(), name)
- except AttributeError:
- return super(SafeApi, self).__getattr__(name)
+ return getattr(self.localapi(), name)