mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge pull request #42354 from alexbleotu/vmware_logs_and_no_permission_exc-gh
VMware utils functions: additional logs & raise NoPermission exceptions
This commit is contained in:
commit
968a9dba46
7 changed files with 264 additions and 2 deletions
|
@ -242,8 +242,8 @@ def _get_service_instance(host, username, password, protocol,
|
|||
b64token=token,
|
||||
mechanism=mechanism)
|
||||
else:
|
||||
log.exception(exc)
|
||||
err_msg = exc.msg if hasattr(exc, 'msg') else default_msg
|
||||
log.trace(exc)
|
||||
raise salt.exceptions.VMwareConnectionError(err_msg)
|
||||
except Exception as exc:
|
||||
if 'certificate verify failed' in str(exc):
|
||||
|
@ -262,8 +262,8 @@ def _get_service_instance(host, username, password, protocol,
|
|||
mechanism=mechanism
|
||||
)
|
||||
except Exception as exc:
|
||||
log.exception(exc)
|
||||
err_msg = exc.msg if hasattr(exc, 'msg') else str(exc)
|
||||
log.trace(err_msg)
|
||||
raise salt.exceptions.VMwareConnectionError(
|
||||
'Could not connect to host \'{0}\': '
|
||||
'{1}'.format(host, err_msg))
|
||||
|
@ -388,9 +388,16 @@ def get_service_instance(host, username=None, password=None, protocol=None,
|
|||
mechanism,
|
||||
principal,
|
||||
domain)
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
|
||||
return service_instance
|
||||
|
@ -425,9 +432,16 @@ def disconnect(service_instance):
|
|||
log.trace('Disconnecting')
|
||||
try:
|
||||
Disconnect(service_instance)
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
|
||||
|
||||
|
@ -441,9 +455,16 @@ def is_connection_to_a_vcenter(service_instance):
|
|||
'''
|
||||
try:
|
||||
api_type = service_instance.content.about.apiType
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
log.trace('api_type = {0}'.format(api_type))
|
||||
if api_type == 'VirtualCenter':
|
||||
|
@ -648,9 +669,16 @@ def get_root_folder(service_instance):
|
|||
try:
|
||||
log.trace('Retrieving root folder')
|
||||
return service_instance.RetrieveContent().rootFolder
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
|
||||
|
||||
|
@ -700,9 +728,16 @@ def get_content(service_instance, obj_type, property_list=None,
|
|||
try:
|
||||
obj_ref = service_instance.content.viewManager.CreateContainerView(
|
||||
container_ref, [obj_type], True)
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
|
||||
# Create 'Traverse All' traversal spec to determine the path for
|
||||
|
@ -738,18 +773,32 @@ def get_content(service_instance, obj_type, property_list=None,
|
|||
# Retrieve the contents
|
||||
try:
|
||||
content = service_instance.content.propertyCollector.RetrieveContents([filter_spec])
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
|
||||
# Destroy the object view
|
||||
if local_traversal_spec:
|
||||
try:
|
||||
obj_ref.Destroy()
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
|
||||
return content
|
||||
|
@ -1000,9 +1049,16 @@ def create_datacenter(service_instance, datacenter_name):
|
|||
log.trace('Creating datacenter \'{0}\''.format(datacenter_name))
|
||||
try:
|
||||
dc_obj = root_folder.CreateDatacenter(datacenter_name)
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
return dc_obj
|
||||
|
||||
|
@ -1062,9 +1118,16 @@ def create_cluster(dc_ref, cluster_name, cluster_spec):
|
|||
''.format(cluster_name, dc_name))
|
||||
try:
|
||||
dc_ref.hostFolder.CreateClusterEx(cluster_name, cluster_spec)
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
|
||||
|
||||
|
@ -1084,9 +1147,16 @@ def update_cluster(cluster_ref, cluster_spec):
|
|||
try:
|
||||
task = cluster_ref.ReconfigureComputeResource_Task(cluster_spec,
|
||||
modify=True)
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
wait_for_task(task, cluster_name, 'ClusterUpdateTask')
|
||||
|
||||
|
@ -1291,9 +1361,16 @@ def wait_for_task(task, instance_name, task_type, sleep_seconds=1, log_level='de
|
|||
task.__class__.__name__))
|
||||
try:
|
||||
task_info = task.info
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
while task_info.state == 'running' or task_info.state == 'queued':
|
||||
if time_counter % sleep_seconds == 0:
|
||||
|
@ -1307,9 +1384,16 @@ def wait_for_task(task, instance_name, task_type, sleep_seconds=1, log_level='de
|
|||
time_counter += 1
|
||||
try:
|
||||
task_info = task.info
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.RuntimeFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||
if task_info.state == 'success':
|
||||
msg = '[ {0} ] Successfully completed {1} task in {2} seconds'.format(
|
||||
|
@ -1324,11 +1408,19 @@ def wait_for_task(task, instance_name, task_type, sleep_seconds=1, log_level='de
|
|||
# task is in an error state
|
||||
try:
|
||||
raise task_info.error
|
||||
except vim.fault.NoPermission as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(
|
||||
'Not enough permissions. Required privilege: '
|
||||
'{}'.format(exc.privilegeId))
|
||||
except vim.fault.VimFault as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||
except vmodl.fault.SystemError as exc:
|
||||
log.exception(exc)
|
||||
raise salt.exceptions.VMwareSystemError(exc.msg)
|
||||
except vmodl.fault.InvalidArgument as exc:
|
||||
log.exception(exc)
|
||||
exc_message = exc.msg
|
||||
if exc.faultMessage:
|
||||
exc_message = '{0} ({1})'.format(exc_message,
|
||||
|
|
|
@ -178,6 +178,18 @@ class CreateClusterTestCase(TestCase):
|
|||
self.mock_create_cluster_ex.assert_called_once_with(
|
||||
'fake_cluster', self.mock_cluster_spec)
|
||||
|
||||
def test_create_cluster_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
self.mock_dc.hostFolder.CreateClusterEx = MagicMock(
|
||||
side_effect=exc)
|
||||
with self.assertRaises(VMwareApiError) as excinfo:
|
||||
vmware.create_cluster(self.mock_dc, 'fake_cluster',
|
||||
self.mock_cluster_spec)
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_create_cluster_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -234,6 +246,17 @@ class UpdateClusterTestCase(TestCase):
|
|||
self.mock_reconfigure_compute_resource_task.assert_called_once_with(
|
||||
self.mock_cluster_spec, modify=True)
|
||||
|
||||
def test_reconfigure_compute_resource_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
self.mock_cluster.ReconfigureComputeResource_Task = \
|
||||
MagicMock(side_effect=exc)
|
||||
with self.assertRaises(VMwareApiError) as excinfo:
|
||||
vmware.update_cluster(self.mock_cluster, self.mock_cluster_spec)
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_reconfigure_compute_resource_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
|
@ -43,6 +43,19 @@ class WaitForTaskTestCase(TestCase):
|
|||
patcher.start()
|
||||
self.addCleanup(patcher.stop)
|
||||
|
||||
def test_first_task_info_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
mock_task = MagicMock()
|
||||
type(mock_task).info = PropertyMock(side_effect=exc)
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.wait_for_task(mock_task,
|
||||
'fake_instance_name',
|
||||
'task_type')
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_first_task_info_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -65,6 +78,22 @@ class WaitForTaskTestCase(TestCase):
|
|||
'task_type')
|
||||
self.assertEqual(excinfo.exception.strerror, 'RuntimeFault msg')
|
||||
|
||||
def test_inner_loop_task_info_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
mock_task = MagicMock()
|
||||
mock_info1 = MagicMock()
|
||||
type(mock_task).info = PropertyMock(
|
||||
side_effect=[mock_info1, exc])
|
||||
type(mock_info1).state = PropertyMock(side_effect=['running', 'bad'])
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.wait_for_task(mock_task,
|
||||
'fake_instance_name',
|
||||
'task_type')
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_inner_loop_task_info_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -161,6 +190,22 @@ class WaitForTaskTestCase(TestCase):
|
|||
'task_type')
|
||||
self.assertEqual(str(excinfo.exception), 'error exc')
|
||||
|
||||
def test_info_error_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
mock_task = MagicMock()
|
||||
prop_mock_state = PropertyMock(return_value='error')
|
||||
prop_mock_error = PropertyMock(side_effect=exc)
|
||||
type(mock_task.info).state = prop_mock_state
|
||||
type(mock_task.info).error = prop_mock_error
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.wait_for_task(mock_task,
|
||||
'fake_instance_name',
|
||||
'task_type')
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_info_error_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -658,6 +703,19 @@ class GetContentTestCase(TestCase):
|
|||
# check destroy is called
|
||||
self.assertEqual(self.destroy_mock.call_count, 1)
|
||||
|
||||
def test_create_container_view_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
self.si_mock.content.viewManager.CreateContainerView = \
|
||||
MagicMock(side_effect=exc)
|
||||
with patch('salt.utils.vmware.get_root_folder',
|
||||
self.get_root_folder_mock):
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.get_content(self.si_mock, self.obj_type_mock)
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_create_container_view_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -680,6 +738,19 @@ class GetContentTestCase(TestCase):
|
|||
salt.utils.vmware.get_content(self.si_mock, self.obj_type_mock)
|
||||
self.assertEqual(excinfo.exception.strerror, 'RuntimeFault msg')
|
||||
|
||||
def test_destroy_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
self.si_mock.content.viewManager.CreateContainerView = MagicMock(
|
||||
return_value=MagicMock(Destroy=MagicMock(side_effect=exc)))
|
||||
with patch('salt.utils.vmware.get_root_folder',
|
||||
self.get_root_folder_mock):
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.get_content(self.si_mock, self.obj_type_mock)
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_destroy_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -745,6 +816,17 @@ class GetContentTestCase(TestCase):
|
|||
[self.filter_spec_ret_mock])
|
||||
self.assertEqual(ret, self.result_mock)
|
||||
|
||||
def test_retrieve_contents_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
self.si_mock.content.propertyCollector.RetrieveContents = \
|
||||
MagicMock(side_effect=exc)
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.get_content(self.si_mock, self.obj_type_mock)
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_retrieve_contents_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -789,6 +871,16 @@ class GetRootFolderTestCase(TestCase):
|
|||
self.mock_si = MagicMock(
|
||||
RetrieveContent=MagicMock(return_value=self.mock_content))
|
||||
|
||||
def test_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
type(self.mock_content).rootFolder = PropertyMock(side_effect=exc)
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.get_root_folder(self.mock_si)
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
|
@ -688,6 +688,26 @@ class GetServiceInstanceTestCase(TestCase):
|
|||
self.assertEqual(mock_disconnect.call_count, 1)
|
||||
self.assertEqual(mock_get_si.call_count, 2)
|
||||
|
||||
def test_current_time_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
with patch('salt.utils.vmware._get_service_instance',
|
||||
MagicMock(return_value=MagicMock(
|
||||
CurrentTime=MagicMock(side_effect=exc)))):
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.get_service_instance(
|
||||
host='fake_host',
|
||||
username='fake_username',
|
||||
password='fake_password',
|
||||
protocol='fake_protocol',
|
||||
port=1,
|
||||
mechanism='fake_mechanism',
|
||||
principal='fake_principal',
|
||||
domain='fake_domain')
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_current_time_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -741,6 +761,17 @@ class DisconnectTestCase(TestCase):
|
|||
service_instance=self.mock_si)
|
||||
mock_disconnect.assert_called_once_with(self.mock_si)
|
||||
|
||||
def test_disconnect_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
with patch('salt.utils.vmware.Disconnect', MagicMock(side_effect=exc)):
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.disconnect(
|
||||
service_instance=self.mock_si)
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_disconnect_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
||||
|
@ -765,6 +796,17 @@ class DisconnectTestCase(TestCase):
|
|||
class IsConnectionToAVCenterTestCase(TestCase):
|
||||
'''Tests for salt.utils.vmware.is_connection_to_a_vcenter'''
|
||||
|
||||
def test_api_type_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
mock_si = MagicMock()
|
||||
type(mock_si.content.about).apiType = PropertyMock(side_effect=exc)
|
||||
with self.assertRaises(excs.VMwareApiError) as excinfo:
|
||||
salt.utils.vmware.is_connection_to_a_vcenter(mock_si)
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_api_type_raise_vim_fault(self):
|
||||
exc = vim.fault.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
|
@ -164,6 +164,19 @@ class CreateDatacenterTestCase(TestCase):
|
|||
vmware.create_datacenter(self.mock_si, 'fake_dc')
|
||||
self.mock_create_datacenter.assert_called_once_with('fake_dc')
|
||||
|
||||
def test_create_datacenter_raise_no_permission(self):
|
||||
exc = vim.fault.NoPermission()
|
||||
exc.privilegeId = 'Fake privilege'
|
||||
self.mock_root_folder = MagicMock(
|
||||
CreateDatacenter=MagicMock(side_effect=exc))
|
||||
with patch('salt.utils.vmware.get_root_folder',
|
||||
MagicMock(return_value=self.mock_root_folder)):
|
||||
with self.assertRaises(VMwareApiError) as excinfo:
|
||||
vmware.create_datacenter(self.mock_si, 'fake_dc')
|
||||
self.assertEqual(excinfo.exception.strerror,
|
||||
'Not enough permissions. Required privilege: '
|
||||
'Fake privilege')
|
||||
|
||||
def test_create_datacenter_raise_vim_fault(self):
|
||||
exc = vim.VimFault()
|
||||
exc.msg = 'VimFault msg'
|
Loading…
Add table
Reference in a new issue