summaryrefslogtreecommitdiff
path: root/oslo_vmware/service.py
diff options
context:
space:
mode:
Diffstat (limited to 'oslo_vmware/service.py')
-rw-r--r--oslo_vmware/service.py31
1 files changed, 25 insertions, 6 deletions
diff --git a/oslo_vmware/service.py b/oslo_vmware/service.py
index 09702f4..89ed221 100644
--- a/oslo_vmware/service.py
+++ b/oslo_vmware/service.py
@@ -209,6 +209,25 @@ class MemoryCache(cache.ObjectCache):
_CACHE = MemoryCache()
+class CompatibilitySudsClient(client.Client):
+ """suds client with added cookiejar attribute
+
+ The cookiejar properties allow reading/setting the cookiejar used by the
+ underlying transport.
+ """
+ def __init__(self, *args, **kwargs):
+ super(CompatibilitySudsClient, self).__init__(*args, **kwargs)
+
+ @property
+ def cookiejar(self):
+ return self.options.transport.cookiejar
+
+ @cookiejar.setter
+ def cookiejar(self, cookies):
+ self.options.transport.session.cookies = cookies
+ self.options.transport.cookiejar = cookies
+
+
class Service(object):
"""Base class containing common functionality for invoking vSphere
services
@@ -226,11 +245,11 @@ class Service(object):
insecure=insecure,
pool_maxsize=pool_maxsize,
connection_timeout=connection_timeout)
- self.client = client.Client(self.wsdl_url,
- transport=transport,
- location=self.soap_url,
- plugins=[ServiceMessagePlugin()],
- cache=_CACHE)
+ self.client = CompatibilitySudsClient(self.wsdl_url,
+ transport=transport,
+ location=self.soap_url,
+ plugins=[ServiceMessagePlugin()],
+ cache=_CACHE)
self._service_content = None
self._vc_session_cookie = None
@@ -312,7 +331,7 @@ class Service(object):
def get_http_cookie(self):
"""Return the vCenter session cookie."""
- cookies = self.client.options.transport.cookiejar
+ cookies = self.client.cookiejar
for cookie in cookies:
if cookie.name.lower() == 'vmware_soap_session':
return cookie.value