import device
import hypervisor
+SYS_CLASS_DMI = "/sys/class/dmi/id"
+
class Singleton(type):
def __init__(cls, name, bases, dict):
super(Singleton, cls).__init__(name, bases, dict)
return cls.instance
+def read_from_file(filename):
+ """
+ Read all data from filename.
+ """
+ if not os.path.exists(filename):
+ return
+
+ try:
+ with open(filename) as f:
+ return f.read().strip()
+ except IOError:
+ pass
+
class System(object):
__metaclass__ = Singleton
"root_size" : self.root_size,
"devices" : [],
+ # System information
+ "model" : self.model,
+ "vendor" : self.vendor,
+
"virtual" : self.virtual,
}
with open("/sys/class/dmi/id/bios_vendor", "r") as f:
return f.read().strip()
+ @property
+ def vendor(self):
+ ret = None
+ for file in ("chassis_vendor", "board_vendor", "sys_vendor",):
+ ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
+ if ret:
+ break
+
+ return ret
+
+ @property
+ def model(self):
+ ret = None
+ for file in ("chassis_model", "board_model", "product_name",):
+ ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
+ if ret:
+ break
+
+ return ret
+
@property
def memory(self):
with open("/proc/meminfo", "r") as f: