1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#!/usr/bin/python
##
## Hardware profiler plugin
## requires the "smolt" client package be installed
##
## Copyright 2007, Red Hat, Inc
## Michael DeHaan <mdehaan@redhat.com>
##
## This software may be freely redistributed under the terms of the GNU
## general public license.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
# other modules
import sys
# hack: smolt is not installed in site-packages
sys.path.append("/usr/share/smolt/client")
import smolt
# our modules
from codes import *
from modules import func_module
# =================================
class HardwareModule(func_module.FuncModule):
def __init__(self):
self.methods = {
"info": self.info
}
func_module.FuncModule.__init__(self)
def info(self,with_devices=True):
"""
Returns a struct of hardware information. By default, this pulls down
all of the devices. If you don't care about them, set with_devices to
False.
"""
return hw_info(with_devices)
# =================================
def hw_info(with_devices=True):
hardware = smolt.Hardware()
host = hardware.host
# NOTE: casting is needed because these are DBusStrings, not real strings
data = {
'os' : str(host.os),
'defaultRunlevel' : str(host.defaultRunlevel),
'bogomips' : str(host.bogomips),
'cpuVendor' : str(host.cpuVendor),
'cpuModel' : str(host.cpuModel),
'numCpus' : str(host.numCpus),
'cpuSpeed' : str(host.cpuSpeed),
'systemMemory' : str(host.systemMemory),
'systemSwap' : str(host.systemSwap),
'kernelVersion' : str(host.kernelVersion),
'language' : str(host.language),
'platform' : str(host.platform),
'systemVendor' : str(host.systemVendor),
'systemModel' : str(host.systemModel),
'formfactor' : str(host.formfactor),
'selinux_enabled' : str(host.selinux_enabled),
'selinux_enforce' : str(host.selinux_enforce)
}
# if no hardware info requested, just return the above bits
if not with_devices:
return data
collection = data["devices"] = []
for item in hardware.deviceIter():
(VendorID,DeviceID,SubsysVendorID,SubsysDeviceID,Bus,Driver,Type,Description) = item
collection.append({
"VendorID" : str(VendorID),
"DeviceID" : str(DeviceID),
"SubsysVendorID" : str(SubsysVendorID),
"Bus" : str(Bus),
"Driver" : str(Driver),
"Type" : str(Type),
"Description" : str(Description)
})
return data
methods = HardwareModule()
register_rpc = methods.register_rpc
|