Add a last_updated field to every metrics class.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
This commit is contained in:
Ewan Mellor committed 2007-03-23 13:27:29 +00:00
1 parent 6dcfe86140
commit f38e3b431b
17 files changed
+417 -52

No files matched your search

+41 -45
View File
@@ -21,6 +21,8 @@ import string
import sys
import traceback
import threading
import time
import xmlrpclib
from xen.xend import XendDomain, XendDomainInfo, XendNode, XendDmesg
from xen.xend import XendLogging, XendTaskManager
@@ -77,6 +79,11 @@ def xen_api_todo():
"""Temporary method to make sure we track down all the TODOs"""
return {"Status": "Error", "ErrorDescription": XEND_ERROR_TODO}
def now():
return xmlrpclib.DateTime(time.strftime("%Y%m%dT%H:%M:%S", time.gmtime()))
# ---------------------------------------------------
# Python Method Decorators for input value validation
# ---------------------------------------------------
@@ -850,7 +857,8 @@ class XendAPI(object):
# ----------------------------------------------------------------
host_metrics_attr_ro = ['memory_total',
'memory_free']
'memory_free',
'last_updated']
host_metrics_attr_rw = []
host_metrics_methods = []
@@ -865,14 +873,18 @@ class XendAPI(object):
'uuid' : ref,
'memory_total' : self._host_metrics_get_memory_total(),
'memory_free' : self._host_metrics_get_memory_free(),
'last_updated' : now(),
})
def host_metrics_get_memory_total(self, _, ref):
def host_metrics_get_memory_total(self, _1, _2):
return xen_api_success(self._host_metrics_get_memory_total())
def host_metrics_get_memory_free(self, _, ref):
def host_metrics_get_memory_free(self, _1, _2):
return xen_api_success(self._host_metrics_get_memory_free())
def host_metrics_get_last_updated(self, _1, _2):
return xen_api_success(now())
def _host_metrics_get_memory_total(self):
node = XendNode.instance()
return node.xc.physinfo()['total_memory'] * 1024
@@ -1012,7 +1024,8 @@ class XendAPI(object):
# ----------------------------------------------------------------
PIF_metrics_attr_ro = ['io_read_kbs',
'io_write_kbs']
'io_write_kbs',
'last_updated']
PIF_metrics_attr_rw = []
PIF_methods = []
@@ -1031,6 +1044,9 @@ class XendAPI(object):
def PIF_metrics_get_io_write_kbs(self, _, ref):
return xen_api_success(self._PIF_metrics_get(ref).get_io_write_kbs())
def PIF_metrics_get_last_updated(self, _1, _2):
return xen_api_success(now())
# Xen API: Class VM
# ----------------------------------------------------------------
@@ -1609,7 +1625,8 @@ class XendAPI(object):
'VCPUs_flags',
'VCPUs_params',
'state',
'start_time']
'start_time',
'last_updated']
VM_metrics_attr_rw = []
VM_metrics_methods = []
@@ -1646,6 +1663,9 @@ class XendAPI(object):
def VM_metrics_get_state(self, _, ref):
return xen_api_success(self._VM_metrics_get(ref).get_state())
def VM_metrics_get_last_updated(self, _1, _2):
return xen_api_success(now())
# Xen API: Class VBD
# ----------------------------------------------------------------
@@ -1800,7 +1820,8 @@ class XendAPI(object):
# ----------------------------------------------------------------
VBD_metrics_attr_ro = ['io_read_kbs',
'io_write_kbs']
'io_write_kbs',
'last_updated']
VBD_metrics_attr_rw = []
VBD_methods = []
@@ -1810,7 +1831,9 @@ class XendAPI(object):
return xen_api_error(['HANDLE_INVALID', 'VBD_metrics', ref])
return xen_api_success(
{ 'io_read_kbs' : vm.get_dev_property('vbd', ref, 'io_read_kbs'),
'io_write_kbs' : vm.get_dev_property('vbd', ref, 'io_write_kbs') })
'io_write_kbs' : vm.get_dev_property('vbd', ref, 'io_write_kbs'),
'last_updated' : now()
})
def VBD_metrics_get_io_read_kbs(self, _, ref):
return self._VBD_get(ref, 'io_read_kbs')
@@ -1818,6 +1841,9 @@ class XendAPI(object):
def VBD_metrics_get_io_write_kbs(self, session, ref):
return self._VBD_get(ref, 'io_write_kbs')
def VBD_metrics_get_last_updated(self, _1, _2):
return xen_api_success(now())
# Xen API: Class VIF
# ----------------------------------------------------------------
@@ -1934,7 +1960,8 @@ class XendAPI(object):
# ----------------------------------------------------------------
VIF_metrics_attr_ro = ['io_read_kbs',
'io_write_kbs']
'io_write_kbs',
'last_updated']
VIF_metrics_attr_rw = []
VIF_methods = []
@@ -1944,7 +1971,9 @@ class XendAPI(object):
return xen_api_error(['HANDLE_INVALID', 'VIF_metrics', ref])
return xen_api_success(
{ 'io_read_kbs' : vm.get_dev_property('vif', ref, 'io_read_kbs'),
'io_write_kbs' : vm.get_dev_property('vif', ref, 'io_write_kbs') })
'io_write_kbs' : vm.get_dev_property('vif', ref, 'io_write_kbs'),
'last_updated' : now()
})
def VIF_metrics_get_io_read_kbs(self, _, ref):
return self._VIF_get(ref, 'io_read_kbs')
@@ -1952,6 +1981,9 @@ class XendAPI(object):
def VIF_metrics_get_io_write_kbs(self, session, ref):
return self._VIF_get(ref, 'io_write_kbs')
def VIF_metrics_get_last_updated(self, _1, _2):
return xen_api_success(now())
# Xen API: Class VDI
# ----------------------------------------------------------------
@@ -2424,39 +2456,3 @@ class XendAPIAsyncProxy:
synchronous_method_name,
session)
return xen_api_success(task_uuid)
#
# Auto generate some stubs based on XendAPI introspection
#
if __name__ == "__main__":
def output(line):
print ' ' + line
classes = ['VDI', 'SR']
for cls in classes:
ro_attrs = getattr(XendAPI, '%s_attr_ro' % cls, [])
rw_attrs = getattr(XendAPI, '%s_attr_rw' % cls, [])
methods = getattr(XendAPI, '%s_methods' % cls, [])
funcs = getattr(XendAPI, '%s_funcs' % cls, [])
ref = '%s_ref' % cls
for attr_name in ro_attrs + rw_attrs + XendAPI.Base_attr_ro:
getter_name = '%s_get_%s' % (cls, attr_name)
output('def %s(self, session, %s):' % (getter_name, ref))
output(' return xen_api_todo()')
for attr_name in rw_attrs + XendAPI.Base_attr_rw:
setter_name = '%s_set_%s' % (cls, attr_name)
output('def %s(self, session, %s, value):' % (setter_name, ref))
output(' return xen_api_todo()')
for method_name in methods + XendAPI.Base_methods:
method_full_name = '%s_%s' % (cls,method_name)
output('def %s(self, session, %s):' % (method_full_name, ref))
output(' return xen_api_todo()')
for func_name in funcs + XendAPI.Base_funcs:
func_full_name = '%s_%s' % (cls, func_name)
output('def %s(self, session):' % func_full_name)
output(' return xen_api_todo()')
+3 -1
View File
@@ -40,8 +40,10 @@ class XendPIFMetrics:
return 0.0
def get_record(self):
import xen.xend.XendAPI as XendAPI
return {'uuid' : self.uuid,
'PIF' : self.pif.uuid,
'io_read_kbs' : self.get_io_read_kbs(),
'io_write_kbs' : self.get_io_write_kbs()
'io_write_kbs' : self.get_io_write_kbs(),
'last_updated' : XendAPI.now(),
}
+2
View File
@@ -141,6 +141,7 @@ class XendVMMetrics:
return self.xend_domain_instance.info.get("start_time", -1)
def get_record(self):
import xen.xend.XendAPI as XendAPI
return { 'uuid' : self.uuid,
'memory_actual' : self.get_memory_actual(),
'VCPUs_number' : self.get_VCPUs_number(),
@@ -150,4 +151,5 @@ class XendVMMetrics:
'VCPUs_params' : self.get_VCPUs_params(),
'start_time' : self.get_start_time(),
'state' : self.get_state(),
'last_updated' : XendAPI.now(),
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.