diff -r a8603b2fb786 tools/python/xen/xend/XendNode.py --- a/tools/python/xen/xend/XendNode.py Thu Jul 17 15:37:09 2008 +0100 +++ b/tools/python/xen/xend/XendNode.py Fri Jul 18 15:02:07 2008 +0200 @@ -23,6 +23,7 @@ from xen.util import Brctl from xen.util import Brctl from xen.util import pci as PciUtil from xen.xend import XendAPIStore +from xen.xend import osdep import uuid, arch from XendPBD import XendPBD @@ -91,7 +92,7 @@ class XendNode: for cpu_uuid, cpu in saved_cpus.items(): self.cpus[cpu_uuid] = cpu - cpuinfo = parse_proc_cpuinfo() + cpuinfo = osdep.get_cpuinfo() physinfo = self.physinfo_dict() cpu_count = physinfo['nr_cpus'] cpu_features = physinfo['hw_caps'] @@ -743,31 +744,6 @@ class XendNode: def info_dict(self): return dict(self.info()) -def parse_proc_cpuinfo(): - cpuinfo = {} - f = file('/proc/cpuinfo', 'r') - try: - p = -1 - d = {} - for line in f: - keyvalue = line.split(':') - if len(keyvalue) != 2: - continue - key = keyvalue[0].strip() - val = keyvalue[1].strip() - if key == 'processor': - if p != -1: - cpuinfo[p] = d - p = int(val) - d = {} - else: - d[key] = val - cpuinfo[p] = d - return cpuinfo - finally: - f.close() - - def instance(): global inst try: diff -r a8603b2fb786 tools/python/xen/xend/osdep.py --- a/tools/python/xen/xend/osdep.py Thu Jul 17 15:37:09 2008 +0100 +++ b/tools/python/xen/xend/osdep.py Fri Jul 18 15:02:07 2008 +0200 @@ -87,6 +87,33 @@ _balloon_stat = { "SunOS": _solaris_balloon_stat } +def _linux_get_cpuinfo(): + cpuinfo = {} + f = file('/proc/cpuinfo', 'r') + try: + p = -1 + d = {} + for line in f: + keyvalue = line.split(':') + if len(keyvalue) != 2: + continue + key = keyvalue[0].strip() + val = keyvalue[1].strip() + if key == 'processor': + if p != -1: + cpuinfo[p] = d + p = int(val) + d = {} + else: + d[key] = val + cpuinfo[p] = d + return cpuinfo + finally: + f.close() + +_get_cpuinfo = { +} + def _get(var, default=None): return var.get(os.uname()[0], default) @@ -95,3 +122,4 @@ pygrub_path = _get(_pygrub_path, "/usr/b pygrub_path = _get(_pygrub_path, "/usr/bin/pygrub") vif_script = _get(_vif_script, "vif-bridge") lookup_balloon_stat = _get(_balloon_stat, _linux_balloon_stat) +get_cpuinfo = _get(_get_cpuinfo, _linux_get_cpuinfo)