mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 01:18:58 +00:00
Update cluster gh (#37347)
* Added utils.vmware.update_cluster - updates an existing cluster based on a configuration spec * Added tests for utils.vmware.update_cluster
This commit is contained in:
parent
547ddccf1e
commit
b0aaebaab8
@ -912,6 +912,29 @@ def create_datacenter(service_instance, datacenter_name):
|
|||||||
return dc_obj
|
return dc_obj
|
||||||
|
|
||||||
|
|
||||||
|
def update_cluster(cluster_ref, cluster_spec):
|
||||||
|
'''
|
||||||
|
Updates a cluster in a datacenter.
|
||||||
|
|
||||||
|
cluster_ref
|
||||||
|
The cluster reference.
|
||||||
|
|
||||||
|
cluster_spec
|
||||||
|
The cluster spec (vim.ClusterConfigSpecEx).
|
||||||
|
Defaults to None.
|
||||||
|
'''
|
||||||
|
cluster_name = get_managed_object_name(cluster_ref)
|
||||||
|
log.trace('Updating cluster \'{0}\''.format(cluster_name))
|
||||||
|
try:
|
||||||
|
task = cluster_ref.ReconfigureComputeResource_Task(cluster_spec,
|
||||||
|
modify=True)
|
||||||
|
except vim.fault.VimFault as exc:
|
||||||
|
raise salt.exceptions.VMwareApiError(exc.msg)
|
||||||
|
except vmodl.RuntimeFault as exc:
|
||||||
|
raise salt.exceptions.VMwareRuntimeError(exc.msg)
|
||||||
|
wait_for_task(task, cluster_name, 'ClusterUpdateTask')
|
||||||
|
|
||||||
|
|
||||||
def list_clusters(service_instance):
|
def list_clusters(service_instance):
|
||||||
'''
|
'''
|
||||||
Returns a list of clusters associated with a given service instance.
|
Returns a list of clusters associated with a given service instance.
|
||||||
|
86
tests/unit/utils/vmware_test/cluster_test.py
Normal file
86
tests/unit/utils/vmware_test/cluster_test.py
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
'''
|
||||||
|
:codeauthor: :email:`Alexandru Bleotu <alexandru.bleotu@morganstanley.com>`
|
||||||
|
|
||||||
|
Tests for cluster related functions in salt.utils.vmware
|
||||||
|
'''
|
||||||
|
|
||||||
|
# Import python libraries
|
||||||
|
from __future__ import absolute_import
|
||||||
|
import logging
|
||||||
|
# Import Salt testing libraries
|
||||||
|
from salttesting import TestCase, skipIf
|
||||||
|
from salttesting.mock import NO_MOCK, NO_MOCK_REASON, patch, MagicMock
|
||||||
|
# Import Salt libraries
|
||||||
|
from salt.exceptions import VMwareApiError, VMwareRuntimeError
|
||||||
|
import salt.utils.vmware as vmware
|
||||||
|
# Import Third Party Libs
|
||||||
|
try:
|
||||||
|
from pyVmomi import vim, vmodl
|
||||||
|
HAS_PYVMOMI = True
|
||||||
|
except ImportError:
|
||||||
|
HAS_PYVMOMI = False
|
||||||
|
|
||||||
|
# Get Logging Started
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
||||||
|
@skipIf(not HAS_PYVMOMI, 'The \'pyvmomi\' library is missing')
|
||||||
|
@patch('salt.utils.vmware.get_managed_object_name', MagicMock())
|
||||||
|
@patch('salt.utils.vmware.wait_for_task', MagicMock())
|
||||||
|
class UpdateClusterTestCase(TestCase):
|
||||||
|
'''Tests for salt.utils.vmware.update_cluster'''
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.mock_task = MagicMock()
|
||||||
|
self.mock_reconfigure_compute_resource_task = \
|
||||||
|
MagicMock(return_value=self.mock_task)
|
||||||
|
self.mock_cluster = MagicMock(ReconfigureComputeResource_Task=
|
||||||
|
self.mock_reconfigure_compute_resource_task)
|
||||||
|
self.mock_cluster_spec = MagicMock()
|
||||||
|
|
||||||
|
def test_get_managed_object_name(self):
|
||||||
|
mock_get_managed_object_name = MagicMock()
|
||||||
|
with patch('salt.utils.vmware.get_managed_object_name',
|
||||||
|
mock_get_managed_object_name):
|
||||||
|
vmware.update_cluster(self.mock_cluster, self.mock_cluster_spec)
|
||||||
|
mock_get_managed_object_name.assert_called_once_with(self.mock_cluster)
|
||||||
|
|
||||||
|
def test_reconfigure_compute_resource_task_call(self):
|
||||||
|
vmware.update_cluster(self.mock_cluster, self.mock_cluster_spec)
|
||||||
|
self.mock_reconfigure_compute_resource_task.assert_called_once_with(
|
||||||
|
self.mock_cluster_spec, modify=True)
|
||||||
|
|
||||||
|
def test_create_cluster_raise_vim_fault(self):
|
||||||
|
exc = vim.fault.VimFault()
|
||||||
|
exc.msg = 'VimFault msg'
|
||||||
|
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, 'VimFault msg')
|
||||||
|
|
||||||
|
def test_create_cluster_raise_runtime_fault(self):
|
||||||
|
exc = vmodl.RuntimeFault()
|
||||||
|
exc.msg = 'RuntimeFault msg'
|
||||||
|
self.mock_cluster.ReconfigureComputeResource_Task = \
|
||||||
|
MagicMock(side_effect=exc)
|
||||||
|
with self.assertRaises(VMwareRuntimeError) as excinfo:
|
||||||
|
vmware.update_cluster(self.mock_cluster, self.mock_cluster_spec)
|
||||||
|
self.assertEqual(excinfo.exception.strerror, 'RuntimeFault msg')
|
||||||
|
|
||||||
|
def test_wait_for_task_call(self):
|
||||||
|
mock_wait_for_task = MagicMock()
|
||||||
|
with patch('salt.utils.vmware.get_managed_object_name',
|
||||||
|
MagicMock(return_value='fake_cluster')):
|
||||||
|
with patch('salt.utils.vmware.wait_for_task', mock_wait_for_task):
|
||||||
|
vmware.update_cluster(self.mock_cluster,
|
||||||
|
self.mock_cluster_spec)
|
||||||
|
mock_wait_for_task.assert_called_once_with(
|
||||||
|
self.mock_task, 'fake_cluster', 'ClusterUpdateTask')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
from integration import run_tests
|
||||||
|
run_tests(UpdateClusterTestCase, needs_daemon=False)
|
Loading…
Reference in New Issue
Block a user