[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.0.5-testing] [XEND] Make existing autoplug classes implement new XendBase
# HG changeset patch # User Tom Wilkie <tom.wilkie@xxxxxxxxx> # Date 1177514060 -3600 # Node ID 7317e701f3e7e4d19a0076acb2accef5a8b6e504 # Parent 5d2e5d05e82880805ecff6be94b4f05792e18ca2 [XEND] Make existing autoplug classes implement new XendBase signed-off-by: Tom Wilkie <tom.wilkie@xxxxxxxxx> --- tools/python/xen/xend/XendPBD.py | 108 ++++++++++++++----------- tools/python/xen/xend/XendPIFMetrics.py | 40 +++++---- tools/python/xen/xend/XendQCoWStorageRepo.py | 2 tools/python/xen/xend/XendStorageRepository.py | 2 tools/python/xen/xend/XendVMMetrics.py | 55 ++++-------- 5 files changed, 110 insertions(+), 97 deletions(-) diff -r 5d2e5d05e828 -r 7317e701f3e7 tools/python/xen/xend/XendPBD.py --- a/tools/python/xen/xend/XendPBD.py Wed Apr 25 16:12:41 2007 +0100 +++ b/tools/python/xen/xend/XendPBD.py Wed Apr 25 16:14:20 2007 +0100 @@ -18,62 +18,82 @@ import uuid from XendLogging import log +from xen.xend.XendBase import XendBase +from xen.xend import XendAPIStore +class XendPBD(XendBase): + """Physical block devices.""" -attr_inst = ['uuid', - 'host', - 'SR', - 'device_config'] -attr_ro = attr_inst + ['currently_attached'] + def getClass(self): + return "PBD" + + def getAttrRO(self): + attrRO = ['host', + 'SR', + 'device_config', + 'currently_attached'] + return XendBase.getAttrRO() + attrRO + def getAttrRW(self): + attrRW = [] + return XendBase.getAttrRW() + attrRW -_all = {} + def getAttrInst(self): + return ['uuid', + 'host', + 'SR', + 'device_config'] + def getMethods(self): + methods = ['destroy'] + return XendBase.getMethods() + methods -def get(ref): - return _all[ref] + def getFuncs(self): + funcs = ['create', + 'get_by_SR'] + return XendBase.getFuncs() + funcs + getClass = classmethod(getClass) + getAttrRO = classmethod(getAttrRO) + getAttrRW = classmethod(getAttrRW) + getAttrInst = classmethod(getAttrInst) + getMethods = classmethod(getMethods) + getFuncs = classmethod(getFuncs) -def get_all(): - return _all.values() + def recreate(uuid, record): + pbd = XendPBD(uuid, record) + return uuid + + def create(cls, record): + uuid = genuuid.createString() + pbd = XendPBD(uuid, record) + return uuid + create = classmethod(create) + + def __init__(self, uuid, record): + XendBase.__init__(self, uuid, record) + this.currently_attached = True -def get_all_refs(): - return _all.keys() + def get_host(self): + return this.host + + def get_SR(self): + return this.SR + def get_device_config(self): + return this.device_config -def get_by_SR(sr_ref): - return [k for (k, v) in _all.items() if v.get_SR() == sr_ref] - - -class XendPBD: - """Physical block devices.""" - - def __init__(self, record): - if 'uuid' not in record: - record['uuid'] = uuid.createString() - - import XendAPI - for v in attr_inst: - setattr(self, v, record[v]) - self.currently_attached = True - _all[record['uuid']] = self - + def get_currently_attached(self): + return this.currently_attached def destroy(self): - if self.uuid in _all: - del _all[self.uuid] + pass + + def get_by_SR(cls, sr_ref): + pbds = XendAPIStore.get_all("PBD") + return [pbd.get_uuid() + for pbd in pbds + if pbd.get_SR() == sr_ref] - - def get_record(self): - import XendAPI - result = {} - for v in attr_ro: - result[v] = getattr(self, v) - return result - - -for v in attr_ro: - def f(v_): - setattr(XendPBD, 'get_' + v_, lambda s: getattr(s, v_)) - f(v) + get_by_SR = classmethod(get_by_SR) diff -r 5d2e5d05e828 -r 7317e701f3e7 tools/python/xen/xend/XendPIFMetrics.py --- a/tools/python/xen/xend/XendPIFMetrics.py Wed Apr 25 16:12:41 2007 +0100 +++ b/tools/python/xen/xend/XendPIFMetrics.py Wed Apr 25 16:14:20 2007 +0100 @@ -15,15 +15,30 @@ # Copyright (c) 2006-2007 Xensource Inc. #============================================================================ +from XendBase import XendBase -class XendPIFMetrics: +class XendPIFMetrics(XendBase): """PIF Metrics.""" + + def getClass(self): + return "PIF_metrics" - def __init__(self, uuid): - self.uuid = uuid + def getAttrRO(self): + attrRO = ['io_read_kbs', + 'io_write_kbs', + 'last_updated', + 'pif'] + return XendBase.getAttrRO() + attrRO - def set_PIF(self, pif): - self.pif = pif + getClass = classmethod(getClass) + getAttrRO = classmethod(getAttrRO) + + def __init__(self, uuid, pif_uuid): + XendBase.__init__(self, uuid, {}) + self.pif_uuid = pif_uuid + + def get_pif(self): + return self.pif_uuid def get_io_read_kbs(self): return self._get_stat(0) @@ -33,19 +48,12 @@ class XendPIFMetrics: def _get_stat(self, n): from xen.xend.XendNode import instance as xennode - pifname = self.pif.device - pifs_util = xennode().monitor.get_pifs_util() - if pifname in pifs_util: - return pifs_util[pifname][n] + #pifname = self.pif.device + #pifs_util = xennode().monitor.get_pifs_util() + #if pifname in pifs_util: + # return pifs_util[pifname][n] return 0.0 def get_last_updated(self): import xen.xend.XendAPI as XendAPI return XendAPI.now() - - def get_record(self): - return {'uuid' : self.uuid, - 'io_read_kbs' : self.get_io_read_kbs(), - 'io_write_kbs' : self.get_io_write_kbs(), - 'last_updated' : self.get_last_updated(), - } diff -r 5d2e5d05e828 -r 7317e701f3e7 tools/python/xen/xend/XendQCoWStorageRepo.py --- a/tools/python/xen/xend/XendQCoWStorageRepo.py Wed Apr 25 16:12:41 2007 +0100 +++ b/tools/python/xen/xend/XendQCoWStorageRepo.py Wed Apr 25 16:14:20 2007 +0100 @@ -30,7 +30,7 @@ import struct from xen.util import mkdir import uuid -import XendPBD +from XendPBD import XendPBD from XendError import XendError from XendVDI import * from XendTask import XendTask diff -r 5d2e5d05e828 -r 7317e701f3e7 tools/python/xen/xend/XendStorageRepository.py --- a/tools/python/xen/xend/XendStorageRepository.py Wed Apr 25 16:12:41 2007 +0100 +++ b/tools/python/xen/xend/XendStorageRepository.py Wed Apr 25 16:14:20 2007 +0100 @@ -24,7 +24,7 @@ import sys from XendError import XendError from XendVDI import * -import XendPBD +from XendPBD import XendPBD XEND_STORAGE_NO_MAXIMUM = sys.maxint diff -r 5d2e5d05e828 -r 7317e701f3e7 tools/python/xen/xend/XendVMMetrics.py --- a/tools/python/xen/xend/XendVMMetrics.py Wed Apr 25 16:12:41 2007 +0100 +++ b/tools/python/xen/xend/XendVMMetrics.py Wed Apr 25 16:14:20 2007 +0100 @@ -17,38 +17,36 @@ #============================================================================ from xen.xend.XendLogging import log +from xen.xend.XendBase import XendBase import xen.lowlevel.xc xc = xen.lowlevel.xc.xc() -instances = {} - -class XendVMMetrics: +class XendVMMetrics(XendBase): """VM Metrics.""" - def get_by_uuid(_, uuid): - return instances[uuid] + def getClass(self): + return "VM_metrics" + + def getAttrRO(self): + attrRO = ['memory_actual', + 'VCPUs_number', + 'VCPUs_utilisation', + 'VCPUs_CPU', + 'VCPUs_flags', + 'VCPUs_params', + 'state', + 'start_time', + 'last_updated'] + return XendBase.getAttrRO() + attrRO - get_by_uuid = classmethod(get_by_uuid) + getClass = classmethod(getClass) + getAttrRO = classmethod(getAttrRO) - def is_valid_vm_metrics(_, uuid): - return uuid in instances - - is_valid_vm_metrics = classmethod(is_valid_vm_metrics) - - def get_all(_): - return instances.keys() - - get_all = classmethod(get_all) - def __init__(self, uuid, xend_domain_instance): - self.uuid = uuid + XendBase.__init__(self, uuid, {}) self.xend_domain_instance = xend_domain_instance - instances[uuid] = self - - def get_uuid(self): - return self.uuid - + def get_memory_actual(self): domInfo = self.xend_domain_instance.getDomInfo() if domInfo: @@ -145,16 +143,3 @@ class XendVMMetrics: def get_last_updated(self): import xen.xend.XendAPI as XendAPI return XendAPI.now() - - def get_record(self): - return { 'uuid' : self.uuid, - 'memory_actual' : self.get_memory_actual(), - 'VCPUs_number' : self.get_VCPUs_number(), - 'VCPUs_utilisation' : self.get_VCPUs_utilisation(), - 'VCPUs_CPU' : self.get_VCPUs_CPU(), - 'VCPUs_flags' : self.get_VCPUs_flags(), - 'VCPUs_params' : self.get_VCPUs_params(), - 'start_time' : self.get_start_time(), - 'state' : self.get_state(), - 'last_updated' : self.get_last_updated(), - } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |