# 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
|