X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Fsysteminfo.py;h=921ede6dd9d55ede051c0ad867540bb20a7ca5a2;hb=46b7e125c111fd15cbd6942023095e6e3f861002;hp=b7ec3ee55b00a15c83e6b2a58d754ef285e87f08;hpb=058804ef1dd26ffb3f230b9a93f1e170e6e87291;p=bootmanager.git diff --git a/source/systeminfo.py b/source/systeminfo.py index b7ec3ee..921ede6 100755 --- a/source/systeminfo.py +++ b/source/systeminfo.py @@ -1,5 +1,5 @@ #!/usr/bin/python - +# # Copyright (c) 2003 Intel Corporation # All rights reserved. # @@ -46,14 +46,12 @@ DEVICES_SCANNED_FLAG= "/tmp/devices_scanned" BLOCKS_PER_GB = pow(10, 9) / 1024.0; -# -n is numeric ids (no lookup), -m is machine readable -LSPCI_CMD= "/sbin/lspci -nm" - MODULE_CLASS_NETWORK= "network" MODULE_CLASS_SCSI= "scsi" -PCI_BASE_CLASS_NETWORK=0x02L -PCI_BASE_CLASS_STORAGE=0x01L +#PCI_* is now defined in the pypci modules +#PCI_BASE_CLASS_NETWORK=0x02L +#PCI_BASE_CLASS_STORAGE=0x01L def get_total_phsyical_mem(vars = {}, log = sys.stderr): """ @@ -119,7 +117,8 @@ def get_block_device_list(vars = {}, log = sys.stderr): # table with valid scsi/sata/ide/raid block device names valid_blk_names = {} # add in valid sd and hd block device names - for blk_prefix in ('sd','hd'): + # also check for vd (virtio devices used with kvm) + for blk_prefix in ('sd','hd','vd'): for blk_num in map ( \ lambda x: chr(x), range(ord('a'),ord('z')+1)): devicename="%s%c" % (blk_prefix, blk_num) @@ -151,10 +150,14 @@ def get_block_device_list(vars = {}, log = sys.stderr): # so, lets run sfdisk -l (list partitions) against # most possible block devices, that way they show # up when it comes time to do the install. + + # 27.6.2012 - Using parted instead of sfdisk, assuming + # that doing so respects the behavior mentioned above. + devicenames = valid_blk_names.keys() devicenames.sort() for devicename in devicenames: - os.system( "sfdisk -l /dev/%s > /dev/null 2>&1" % devicename ) + os.system( "parted --script --list /dev/%s > /dev/null 2>&1" % devicename ) # touch file fb = open(DEVICES_SCANNED_FLAG,"w") @@ -279,13 +282,22 @@ def get_system_modules( vars = {}, log = sys.stderr): # XXX: this is really similar to what BootCD/conf_files/pl_hwinit does. merge? pcidevs = get_devices() - for (slot, dev) in pcidevs.iteritems(): + devlist=pcidevs.keys() + devlist.sort() + for slot in devlist: + dev = pcidevs[slot] base = (dev[4] & 0xff0000) >> 16 + modules = pcimap.get(dev) if base not in (PCI_BASE_CLASS_STORAGE, PCI_BASE_CLASS_NETWORK): - continue + # special exception for forcedeth NICs whose base id + # claims to be a Bridge, even though it is clearly a + # network device + if "forcedeth" in modules: + base=PCI_BASE_CLASS_NETWORK + else: + continue - modules = pcimap.get(dev) if len(modules) > 0: if base == PCI_BASE_CLASS_NETWORK: network_mods += modules