diff options
Diffstat (limited to 'oslo_vmware/service.py')
-rw-r--r-- | oslo_vmware/service.py | 31 |
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 |