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:
Qiaowei Ren 2014-08-18 09:46:28 +08:00
parent 5d857a2cad
commit cca1987ab2
2 changed files with 36 additions and 0 deletions

View File

@ -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)

View File

@ -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)