XenAPI support: Memory Usage
Implemented inspect_memory_usage() to inspect the memory usage statistics for an instance. Change-Id: I0a8549e9e80ffeab18acc3b236c8fdc63d970783 Implements: blueprint xenapi-support
This commit is contained in:
parent
5d857a2cad
commit
cca1987ab2
@ -17,6 +17,7 @@
|
||||
|
||||
from eventlet import timeout
|
||||
from oslo.config import cfg
|
||||
from oslo.utils import units
|
||||
try:
|
||||
import XenAPI as api
|
||||
except ImportError:
|
||||
@ -134,3 +135,13 @@ class XenapiInspector(virt_inspector.Inspector):
|
||||
utils += vcpus_utils.get(str(num))
|
||||
utils = utils / int(vcpus_number) * 100
|
||||
return virt_inspector.CPUUtilStats(util=utils)
|
||||
|
||||
def inspect_memory_usage(self, instance, duration=None):
|
||||
instance_name = util.instance_name(instance)
|
||||
vm_ref = self._lookup_by_name(instance_name)
|
||||
metrics_ref = self._call_xenapi("VM.get_metrics", vm_ref)
|
||||
metrics_rec = self._call_xenapi("VM_metrics.get_record",
|
||||
metrics_ref)
|
||||
# Stat provided from XenServer is in B, converting it to MB.
|
||||
memory = long(metrics_rec['memory_actual']) / units.Mi
|
||||
return virt_inspector.MemoryUsageStats(usage=memory)
|
||||
|
@ -74,3 +74,28 @@ class TestXenapiInspection(base.BaseTestCase):
|
||||
side_effect=fake_xenapi_request):
|
||||
cpu_util_stat = self.inspector.inspect_cpu_util(fake_instance)
|
||||
self.assertEqual(fake_stat, cpu_util_stat)
|
||||
|
||||
def test_inspect_memory_usage(self):
|
||||
fake_instance = {'OS-EXT-SRV-ATTR:instance_name': 'fake_instance_name',
|
||||
'id': 'fake_instance_id'}
|
||||
fake_stat = virt_inspector.MemoryUsageStats(usage=128)
|
||||
|
||||
def fake_xenapi_request(method, args):
|
||||
metrics_rec = {
|
||||
'memory_actual': '134217728',
|
||||
}
|
||||
|
||||
if method == 'VM.get_by_name_label':
|
||||
return ['vm_ref']
|
||||
elif method == 'VM.get_metrics':
|
||||
return 'metrics_ref'
|
||||
elif method == 'VM_metrics.get_record':
|
||||
return metrics_rec
|
||||
else:
|
||||
return None
|
||||
|
||||
session = self.inspector.session
|
||||
with mock.patch.object(session, 'xenapi_request',
|
||||
side_effect=fake_xenapi_request):
|
||||
memory_stat = self.inspector.inspect_memory_usage(fake_instance)
|
||||
self.assertEqual(fake_stat, memory_stat)
|
||||
|
Loading…
x
Reference in New Issue
Block a user