summaryrefslogtreecommitdiff
path: root/oslo_vmware
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-06-02 17:55:58 +0000
committerGerrit Code Review <review@openstack.org>2018-06-02 17:55:58 +0000
commitf69970eeee1696a111f8adde62f145274300319d (patch)
tree86fe4c94625f984ce3ec8d304e6b255ee27ff3be /oslo_vmware
parent08558b32f260a3853a0a5435806bbb5fbc76bac2 (diff)
parentd249fe1156d95abf3319d2d6389e096e161c3ad0 (diff)
downloadoslo-vmware-f69970eeee1696a111f8adde62f145274300319d.tar.gz
Merge "Fix session re-establish failure with PBM APIs"2.29.2
Diffstat (limited to 'oslo_vmware')
-rw-r--r--oslo_vmware/service.py7
-rw-r--r--oslo_vmware/tests/test_service.py15
2 files changed, 15 insertions, 7 deletions
diff --git a/oslo_vmware/service.py b/oslo_vmware/service.py
index 0f262ab..7edc0d4 100644
--- a/oslo_vmware/service.py
+++ b/oslo_vmware/service.py
@@ -380,7 +380,12 @@ class Service(object):
if detail:
for fault in detail.getChildren():
fault_type = fault.get('type')
- if fault_type.endswith(exceptions.SECURITY_ERROR):
+ # NOTE(vbala): PBM faults use vim25 namespace. Also,
+ # PBM APIs throw NotAuthenticated in vSphere 6.5 for
+ # session expiry.
+ if (fault_type.endswith(exceptions.SECURITY_ERROR) or
+ fault_type.endswith(
+ exceptions.NOT_AUTHENTICATED)):
fault_type = exceptions.NOT_AUTHENTICATED
fault_list.append(fault_type)
for child in fault.getChildren():
diff --git a/oslo_vmware/tests/test_service.py b/oslo_vmware/tests/test_service.py
index e20f96d..a12a0fc 100644
--- a/oslo_vmware/tests/test_service.py
+++ b/oslo_vmware/tests/test_service.py
@@ -15,13 +15,13 @@
import io
+import ddt
import mock
import requests
import six
import six.moves.http_client as httplib
import suds
-import ddt
from oslo_vmware import exceptions
from oslo_vmware import service
from oslo_vmware.tests import base
@@ -56,6 +56,7 @@ class ServiceMessagePluginTest(base.TestCase):
self.plugin.add_attribute_for_value)
+@ddt.ddt
class ServiceTest(base.TestCase):
def setUp(self):
@@ -209,8 +210,9 @@ class ServiceTest(base.TestCase):
mock.call('/Envelope/Body/Fault/detail')]
self.assertEqual(exp_calls, doc.childAtPath.call_args_list)
- def test_request_handler_with_security_error(self):
- managed_object = 'VirtualMachine'
+ @ddt.data('vim25:SecurityError', 'vim25:NotAuthenticated')
+ def test_request_handler_with_pbm_session_error(self, fault_name):
+ managed_object = 'ProfileManager'
doc = mock.Mock()
def side_effect(mo, **kwargs):
@@ -222,7 +224,7 @@ class ServiceTest(base.TestCase):
fault_children.name = "name"
fault_children.getText.return_value = "value"
child = mock.Mock()
- child.get.return_value = 'vim25:SecurityError'
+ child.get.return_value = fault_name
child.getChildren.return_value = [fault_children]
detail = mock.Mock()
detail.getChildren.return_value = [child]
@@ -231,9 +233,10 @@ class ServiceTest(base.TestCase):
svc_obj = service.Service()
service_mock = svc_obj.client.service
- setattr(service_mock, 'powerOn', side_effect)
+ setattr(service_mock, 'get_profile_id_by_name', side_effect)
- ex = self.assertRaises(exceptions.VimFaultException, svc_obj.powerOn,
+ ex = self.assertRaises(exceptions.VimFaultException,
+ svc_obj.get_profile_id_by_name,
managed_object)
self.assertEqual([exceptions.NOT_AUTHENTICATED], ex.fault_list)