Add getter for MemorySettingsData

This will allow fetching various VM memory information, such as
dynamic memory limits and reserved amount.

Change-Id: Ifa9649e490a851090cdf3f8a0390e4ab7d5a6373
This commit is contained in:
maaktweluit 2018-09-28 12:14:30 +02:00 committed by Lucian Petrut
parent 1f8200ef79
commit 91eb56c8ac
2 changed files with 40 additions and 2 deletions

View File

@ -60,6 +60,12 @@ class VMUtilsTestCase(test_base.OsWinBaseTestCase):
_FAKE_DYNAMIC_MEMORY_RATIO = 1.0
_FAKE_MONITOR_COUNT = 1
_FAKE_MEMORY_INFO = {'DynamicMemoryEnabled': True,
'Reservation': 1024,
'Limit': 4096,
'Weight': 5000,
'MaxMemoryBlocksPerNumaNode': 2048}
_FAKE_SUMMARY_INFO = {'NumberOfProcessors': 4,
'EnabledState': 2,
'MemoryUsage': 2,
@ -144,6 +150,21 @@ class VMUtilsTestCase(test_base.OsWinBaseTestCase):
def test_set_vm_memory_dynamic(self):
self._test_set_vm_memory_dynamic(dynamic_memory_ratio=2.0)
@mock.patch.object(_wqlutils, 'get_element_associated_class')
def test_get_vm_memory_info(self, mock_get_element_associated_class):
vmsetting = self._lookup_vm()
mock_s = mock.MagicMock(**self._FAKE_MEMORY_INFO)
mock_get_element_associated_class.return_value = [mock_s]
memory = self._vmutils.get_vm_memory_info(self._FAKE_VM_NAME)
self.assertEqual(self._FAKE_MEMORY_INFO, memory)
mock_get_element_associated_class.assert_called_once_with(
self._vmutils._compat_conn,
self._vmutils._MEMORY_SETTING_DATA_CLASS,
element_instance_id=vmsetting.InstanceID)
@mock.patch.object(_wqlutils, 'get_element_associated_class')
def _test_set_vm_memory_dynamic(self, mock_get_element_associated_class,
dynamic_memory_ratio,

View File

@ -237,12 +237,29 @@ class VMUtils(baseutils.BaseUtilsVirt):
vm = self._lookup_vm_check(vm_name, as_vssd=False)
return vm.Name
def _set_vm_memory(self, vmsetting, memory_mb, memory_per_numa_node,
dynamic_memory_ratio):
def get_vm_memory_info(self, vm_name):
vmsetting = self._lookup_vm_check(vm_name)
memory = self._get_vm_memory(vmsetting)
memory_info_dict = {
'DynamicMemoryEnabled': memory.DynamicMemoryEnabled,
'Reservation': memory.Reservation,
'Limit': memory.Limit,
'Weight': memory.Weight,
'MaxMemoryBlocksPerNumaNode': memory.MaxMemoryBlocksPerNumaNode,
}
return memory_info_dict
def _get_vm_memory(self, vmsetting):
mem_settings = _wqlutils.get_element_associated_class(
self._compat_conn, self._MEMORY_SETTING_DATA_CLASS,
element_instance_id=vmsetting.InstanceID)[0]
return mem_settings
def _set_vm_memory(self, vmsetting, memory_mb, memory_per_numa_node,
dynamic_memory_ratio):
mem_settings = self._get_vm_memory(vmsetting)
max_mem = int(memory_mb)
mem_settings.Limit = max_mem