diff --git a/ereuse_devicehub/config.py b/ereuse_devicehub/config.py index bdb668e2..2cd0474e 100644 --- a/ereuse_devicehub/config.py +++ b/ereuse_devicehub/config.py @@ -35,8 +35,8 @@ class DevicehubConfig(Config): SQLALCHEMY_DATABASE_URI = 'postgresql://dhub:ereuse@localhost/devicehub' # type: str MIN_WORKBENCH = StrictVersion('11.0') # type: StrictVersion """ - The minimum algorithm_version of eReuse.org Workbench that this Devicehub - accepts. We recommend not changing this value. + the minimum algorithm_version of ereuse.org workbench that this devicehub + accepts. we recommend not changing this value. """ ORGANIZATION_NAME = None # type: str ORGANIZATION_TAX_ID = None # type: str diff --git a/ereuse_devicehub/resources/device/models.py b/ereuse_devicehub/resources/device/models.py index e4c7eefb..58bf207f 100644 --- a/ereuse_devicehub/resources/device/models.py +++ b/ereuse_devicehub/resources/device/models.py @@ -6,15 +6,17 @@ from typing import Dict, Set from sqlalchemy import BigInteger, Column, Enum as DBEnum, Float, ForeignKey, Integer, Sequence, \ SmallInteger, Unicode, inspect from sqlalchemy.ext.declarative import declared_attr -from sqlalchemy.orm import ColumnProperty, backref, relationship +from sqlalchemy.orm import ColumnProperty, backref, relationship, validates from sqlalchemy.util import OrderedSet from sqlalchemy_utils import ColorType +from stdnum import imei, meid -from ereuse_devicehub.resources.enums import ComputerMonitorTechnologies, DataStorageInterface, \ +from ereuse_devicehub.resources.enums import ComputerChassis, DataStorageInterface, DisplayTech, \ RamFormat, RamInterface from ereuse_devicehub.resources.models import STR_BIG_SIZE, STR_SIZE, STR_SM_SIZE, Thing from ereuse_utils.naming import Naming from teal.db import CASCADE, POLYMORPHIC_ID, POLYMORPHIC_ON, ResourceNotFound, check_range +from teal.marshmallow import ValidationError class Device(Thing): @@ -107,36 +109,7 @@ class Device(Thing): return '<{0.t} {0.id!r} model={0.model!r} S/N={0.serial_number!r}>'.format(self) -class Computer(Device): - id = Column(BigInteger, ForeignKey(Device.id), primary_key=True) - - @property - def events(self) -> list: - return sorted(chain(super().events, self.events_parent), key=attrgetter('created')) - - -class Desktop(Computer): - pass - - -class Laptop(Computer): - pass - - -class Netbook(Computer): - pass - - -class Server(Computer): - pass - - -class Microtower(Computer): - pass - - -class ComputerMonitor(Device): - id = Column(BigInteger, ForeignKey(Device.id), primary_key=True) +class DisplayMixin: size = Column(Float(decimal_return_scale=2), check_range('size', 2, 150)) size.comment = """ The size of the monitor in inches. @@ -157,6 +130,74 @@ class ComputerMonitor(Device): """ +class Computer(Device): + id = Column(BigInteger, ForeignKey(Device.id), primary_key=True) + chassis = Column(DBEnum(ComputerChassis), nullable=False) + + @property + def events(self) -> list: + return sorted(chain(super().events, self.events_parent), key=attrgetter('created')) + + +class Desktop(Computer): + pass + + +class Laptop(Computer): + pass + + +class Server(Computer): + pass + + +class Monitor(DisplayMixin, Device): + id = Column(BigInteger, ForeignKey(Device.id), primary_key=True) + + +class ComputerMonitor(Monitor): + pass + + +class TelevisionSet(Monitor): + pass + + +class Mobile(Device): + id = Column(BigInteger, ForeignKey(Device.id), primary_key=True) + imei = Column(BigInteger) + imei.comment = """ + The International Mobile Equipment Identity of the smartphone + as an integer. + """ + meid = Column(Unicode) + meid.comment = """ + The Mobile Equipment Identifier as a hexadecimal string. + """ + + @validates('imei') + def validate_imei(self, _, value: int): + if not imei.is_valid(value): + raise ValidationError('{} is not a valid imei.'.format(value)) + + @validates('meid') + def validate_meid(self, _, value: str): + if not meid.is_valid(value): + raise ValidationError('{} is not a valid meid.'.format(value)) + + +class Smartphone(Mobile): + pass + + +class Tablet(Mobile): + pass + + +class Cellphone(Mobile): + pass + + class Component(Device): id = Column(BigInteger, ForeignKey(Device.id), primary_key=True) @@ -201,10 +242,16 @@ class JoinedComponentTableMixin: class GraphicCard(JoinedComponentTableMixin, Component): memory = Column(SmallInteger, check_range('memory', min=1, max=10000)) + memory.comment = """ + The amount of memory of the Graphic Card in MB. + """ class DataStorage(JoinedComponentTableMixin, Component): size = Column(Integer, check_range('size', min=1, max=10 ** 8)) + size.comment = """ + The size of the data-storage in MB. + """ interface = Column(DBEnum(DataStorageInterface)) @@ -218,6 +265,9 @@ class SolidStateDrive(DataStorage): class Motherboard(JoinedComponentTableMixin, Component): slots = Column(SmallInteger, check_range('slots')) + slots.comment = """ + PCI slots the motherboard has. + """ usb = Column(SmallInteger, check_range('usb')) firewire = Column(SmallInteger, check_range('firewire')) serial = Column(SmallInteger, check_range('serial')) @@ -246,3 +296,13 @@ class RamModule(JoinedComponentTableMixin, Component): speed = Column(Float, check_range('speed', min=100, max=10000)) interface = Column(DBEnum(RamInterface)) format = Column(DBEnum(RamFormat)) + + +class Display(JoinedComponentTableMixin, DisplayMixin, Component): + """ + The display of a device. This is used in all devices that have + displays but that it is not their main treat, like laptops, + mobiles, smart-watches, and so on; excluding then ComputerMonitor + and Television Set. + """ + pass diff --git a/ereuse_devicehub/resources/device/models.pyi b/ereuse_devicehub/resources/device/models.pyi index bb093992..fbdaeea0 100644 --- a/ereuse_devicehub/resources/device/models.pyi +++ b/ereuse_devicehub/resources/device/models.pyi @@ -68,11 +68,25 @@ class Computer(DisplayMixin, Device): super().__init__(**kwargs) self.components = ... # type: Set[Component] self.events_parent = ... # type: Set[Event] + self.chassis = ... # type: ComputerChassis + class Desktop(Computer): pass +class Laptop(Computer): + pass + + +class Server(Computer): + pass + + +class Monitor(DisplayMixin, Device): + pass + + class ComputerMonitor(Monitor): pass @@ -80,34 +94,27 @@ class ComputerMonitor(Monitor): class TelevisionSet(Monitor): pass -class Laptop(Computer): - pass - -class Netbook(Computer): - pass - - -class Server(Computer): - pass - - -class Microtower(Computer): - pass - - -class ComputerMonitor(Device): - technology = ... # type: Column - size = ... # type: Column - resolution_width = ... # type: Column - resolution_height = ... # type: Column +class Mobile(Device): + imei = ... # type: Column + meid = ... # type: Column def __init__(self, **kwargs) -> None: super().__init__(**kwargs) - technology = ... # type: ComputerMonitorTechnologies - size = ... # type: Integer - resolution_width = ... # type: int - resolution_height = ... # type: int + self.imei = ... # type: int + self.meid = ... # type: str + + +class Smartphone(Mobile): + pass + + +class Tablet(Mobile): + pass + + +class Cellphone(Mobile): + pass class Component(Device): @@ -195,3 +202,7 @@ class RamModule(Component): self.speed = ... # type: float self.interface = ... # type: RamInterface self.format = ... # type: RamFormat + + +class Display(DisplayMixin, Component): + pass diff --git a/ereuse_devicehub/resources/device/schemas.py b/ereuse_devicehub/resources/device/schemas.py index da3e95db..c64d6fdd 100644 --- a/ereuse_devicehub/resources/device/schemas.py +++ b/ereuse_devicehub/resources/device/schemas.py @@ -157,10 +157,8 @@ class Motherboard(Component): pcmcia = Integer(validate=Range(0, 20)) -class NetworkAdapter(Component): - speed = Integer(validate=Range(min=10, max=10000), - unit=UnitCodes.mbps, - description='The maximum speed this network adapter can handle, in mbps.') +class NetworkAdapter(NetworkMixin, Component): + pass class Processor(Component): @@ -174,3 +172,7 @@ class RamModule(Component): speed = Float(validate=Range(min=100, max=10000), unit=UnitCodes.mhz) interface = EnumField(RamInterface) format = EnumField(RamFormat) + + +class Display(DisplayMixin, Component): + pass diff --git a/ereuse_devicehub/resources/enums.py b/ereuse_devicehub/resources/enums.py index 5b754379..c2aa9237 100644 --- a/ereuse_devicehub/resources/enums.py +++ b/ereuse_devicehub/resources/enums.py @@ -160,3 +160,21 @@ class DisplayTech(Enum): LCD = 'Liquid-crystal display (any of TFT, LED, Blue Phase, IPS)' OLED = 'Organic light-emitting diode (OLED)' AMOLED = 'Organic light-emitting diode (AMOLED)' + + +@unique +class ComputerChassis(Enum): + """The chassis of a computer.""" + Tower = 'Tower' + Docking = 'Docking' + AllInOne = 'AllInOne' + Microtower = 'Microtower' + PizzaBox = 'PizzaBox' + Lunchbox = 'Lunchbox' + Stick = 'Stick' + Netbook = 'Netbook' + Handheld = 'Handheld' + Laptop = 'Laptop' + Convertible = 'Convertible' + Detachable = 'Detachable' + Tablet = 'Tablet' diff --git a/setup.py b/setup.py index bf4e7a22..d2d7f337 100644 --- a/setup.py +++ b/setup.py @@ -26,7 +26,8 @@ setup( 'tqdm', 'click-spinner', 'sqlalchemy-utils[password, color, babel]', - 'PyYAML' + 'PyYAML', + 'python-stdnum' ], tests_requires=[ 'pytest', diff --git a/tests/files/workbench-10.snapshot.yaml b/tests/files/workbench-10.snapshot.yaml new file mode 100644 index 00000000..a057a10d --- /dev/null +++ b/tests/files/workbench-10.snapshot.yaml @@ -0,0 +1,736 @@ +'@type': devices:Snapshot +_uuid: d0bbf629-c081-4f25-8b34-6619bca6fb46 +automatic: true +benchmarks: +- {'@type': BenchmarkRamSysbench, score: 8.7637} +components: +- '@type': Processor + address: 64 + benchmarks: + - {'@type': BenchmarkProcessor, score: 11969.48} + - {'@type': BenchmarkProcessorSysbench, score: 20.3175} + manufacturer: Intel Corp. + model: Intel Core2 Duo CPU E8400 @ 3.00GHz + numberOfCores: 2 + serialNumber: null + speed: 2.0 +- {'@type': RamModule, manufacturer: null, model: null, serialNumber: null, size: 2048, + speed: 1067.0} +- {'@type': RamModule, manufacturer: null, model: null, serialNumber: null, size: 2048, + speed: 1067.0} +- '@type': HardDrive + benchmark: {'@type': BenchmarkHardDrive, readingSpeed: 129.0, writingSpeed: 32.6} + interface: 'ata + + ' + manufacturer: Seagate + model: ST3250318AS + serialNumber: 6VMB1A52 + size: 238475 + test: {'@type': TestHardDrive, CommandTimeout: 1786733725708, CurrentPendingSectorCount: 0, + OfflineUncorrectable: 0, assessment: true, error: false, firstError: null, lifetime: 16947, + passedLifetime: 16947, powerCycleCount: 1694, reallocatedSectorCount: 0, reportedUncorrectableErrors: 0, + status: Completed without error, type: Short offline} + type: HDD +- {'@type': GraphicCard, manufacturer: Intel Corporation, memory: 256.0, model: 4 + Series Chipset Integrated Graphics Controller, serialNumber: null} +- '@type': Motherboard + connectors: {firewire: 0, pcmcia: 0, serial: 1, usb: 8} + manufacturer: LENOVO + model: LENOVO + serialNumber: null + totalSlots: 0 + usedSlots: 2 +- {'@type': NetworkAdapter, manufacturer: Intel Corporation, model: 82567LM-3 Gigabit + Network Connection, serialNumber: '00:21:86:2c:5e:d6', speed: 1000} +- {'@type': SoundCard, manufacturer: Intel Corporation, model: 82801JD/DO HD Audio + Controller, serialNumber: null} +condition: + appearance: {general: B} + functionality: {general: A} +date: '2018-05-09T10:32:15' +debug: + capabilities: {dmi-2.5: DMI version 2.5, smbios-2.5: SMBIOS version 2.5, smp: Symmetric + Multi-Processing, smp-1.4: SMP specification v1.4} + children: + - children: + - capabilities: {acpi: ACPI, biosbootspecification: BIOS boot specification, cdboot: Booting + from CD-ROM/DVD, edd: Enhanced Disk Drive extensions, escd: ESCD, ls120boot: Booting + from LS-120, pci: PCI bus, pnp: Plug-and-Play, shadowing: BIOS shadowing, + smartbattery: Smart battery, upgrade: BIOS EEPROM can be upgraded, usb: USB + legacy emulation} + capacity: 4128768 + claimed: true + class: memory + date: 04/24/2009 + description: BIOS + id: firmware + physid: '0' + size: 128736 + units: bytes + vendor: LENOVO + version: 5CKT48AUS + - businfo: cpu@0 + capabilities: {acpi: thermal control (ACPI), aperfmperf: true, apic: on-chip + advanced programmable interrupt controller (APIC), arch_perfmon: true, boot: boot + processor, bts: true, clflush: true, cmov: conditional move instruction, + constant_tsc: true, cpufreq: CPU Frequency scaling, cx16: true, cx8: compare + and exchange 8-byte, de: debugging extensions, ds_cpl: true, dtes64: true, + dtherm: true, dts: debug trace and EMON store MSRs, eagerfpu: true, est: true, + flexpriority: true, fpu: mathematical co-processor, fpu_exception: FPU exceptions + reporting, fxsr: fast floating point save/restore, ht: HyperThreading, lahf_lm: true, + mca: machine check architecture, mce: machine check exceptions, mmx: multimedia + extensions (MMX), monitor: true, msr: model-specific registers, mtrr: memory + type range registers, nx: no-execute bit (NX), pae: 4GB+ memory addressing + (Physical Address Extension), pat: page attribute table, pbe: pending break + event, pdcm: true, pebs: true, pge: page global enable, pni: true, pse: page + size extensions, pse36: 36-bit page size extensions, sep: fast system calls, + smx: true, ss: self-snoop, sse: streaming SIMD extensions (SSE), sse2: streaming + SIMD extensions (SSE2), sse4_1: true, ssse3: true, tm: thermal interrupt + and status, tm2: true, tpr_shadow: true, tsc: time stamp counter, vme: virtual + mode extensions, vmx: CPU virtualization (Vanderpool), vnmi: true, wp: true, + x86-64: 64bits extensions (x86-64), xsave: true, xtpr: true} + capacity: 3600000000 + children: + - capabilities: {asynchronous: Asynchronous, internal: Internal, write-back: Write-back} + capacity: 262144 + claimed: true + class: memory + configuration: {level: '1'} + description: L1 cache + handle: DMI:0005 + id: cache:0 + physid: '5' + size: 16384 + slot: L1 Cache + units: bytes + - capabilities: {burst: Burst, internal: Internal, write-back: Write-back} + capacity: 12582912 + claimed: true + class: memory + configuration: {level: '2'} + description: L2 cache + handle: DMI:0006 + id: cache:1 + physid: '6' + size: 6291456 + slot: L2 Cache + units: bytes + - capabilities: {logical: Logical CPU} + claimed: true + class: processor + description: Logical CPU + handle: CPU:1.0 + id: logicalcpu:0 + physid: '1.1' + width: 64 + - capabilities: {logical: Logical CPU} + claimed: true + class: processor + description: Logical CPU + handle: CPU:1.1 + id: logicalcpu:1 + physid: '1.2' + width: 64 + claimed: true + class: processor + clock: 333000000 + configuration: {cores: '2', enabledcores: '2', id: '1', threads: '2'} + description: CPU + handle: DMI:0004 + id: cpu:0 + physid: '4' + product: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz + serial: 0001-067A-0000-0000-0000-0000 + size: 2000000000 + slot: LGA 775 + units: Hz + vendor: Intel Corp. + version: 6.7.10 + width: 64 + - children: + - {claimed: true, class: memory, clock: 1067000000, description: DIMM DDR2 Synchronous + 1067 MHz (0.9 ns), handle: 'DMI:001F', id: 'bank:0', physid: '0', product: '000000000000000000000000000000000000', + serial: '00000000', size: 2147483648, slot: J6G1, units: bytes, vendor: Unknown, + width: 40960} + - {claimed: true, class: memory, clock: 1067000000, description: 'DIMM DDR2 + Synchronous 1067 MHz (0.9 ns) [empty]', handle: 'DMI:0020', id: 'bank:1', + physid: '1', product: 012345678901234567890123456789012345, serial: '01234567', + slot: J6G2, vendor: 48spaces} + - {claimed: true, class: memory, clock: 1067000000, description: DIMM DDR2 Synchronous + 1067 MHz (0.9 ns), handle: 'DMI:0021', id: 'bank:2', physid: '2', product: '000000000000000000000000000000000000', + serial: '00000000', size: 2147483648, slot: J6H1, units: bytes, vendor: Unknown, + width: 41984} + - {claimed: true, class: memory, clock: 1067000000, description: 'DIMM DDR2 + Synchronous 1067 MHz (0.9 ns) [empty]', handle: 'DMI:0022', id: 'bank:3', + physid: '3', product: 012345678901234567890123456789012345, serial: '01234567', + slot: J6H2, vendor: 48spaces} + claimed: true + class: memory + description: System Memory + handle: DMI:001E + id: memory + physid: 1e + size: 4294967296 + slot: System board or motherboard + units: bytes + - businfo: cpu@1 + capabilities: {cpufreq: CPU Frequency scaling, ht: HyperThreading, vmx: CPU + virtualization (Vanderpool)} + capacity: 3000000000 + children: + - capabilities: {logical: Logical CPU} + claimed: true + class: processor + description: Logical CPU + handle: CPU:1.0 + id: logicalcpu:0 + physid: '1.1' + - capabilities: {logical: Logical CPU} + claimed: true + class: processor + description: Logical CPU + handle: CPU:1.1 + id: logicalcpu:1 + physid: '1.2' + claimed: true + class: processor + configuration: {id: '1'} + id: cpu:1 + physid: '1' + serial: 0001-067A-0000-0000-0000-0000 + size: 3000000000 + units: Hz + version: 6.7.10 + - businfo: pci@0000:00:00.0 + children: + - businfo: pci@0000:00:02.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + msi: Message Signalled Interrupts, pm: Power Management, rom: extension + ROM, vga_controller: true} + claimed: true + class: display + clock: 33000000 + configuration: {driver: i915, latency: '0'} + description: VGA compatible controller + handle: PCI:0000:00:02.0 + id: display:0 + physid: '2' + product: 4 Series Chipset Integrated Graphics Controller + vendor: Intel Corporation + version: '03' + width: 64 + - businfo: pci@0000:00:02.1 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + pm: Power Management} + class: display + clock: 33000000 + configuration: {latency: '0'} + description: Display controller + handle: PCI:0000:00:02.1 + id: display:1 + physid: '2.1' + product: 4 Series Chipset Integrated Graphics Controller + vendor: Intel Corporation + version: '03' + width: 64 + - businfo: pci@0000:00:03.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + msi: Message Signalled Interrupts, pm: Power Management} + claimed: true + class: communication + clock: 33000000 + configuration: {driver: mei_me, latency: '0'} + description: Communication controller + handle: PCI:0000:00:03.0 + id: communication:0 + physid: '3' + product: 4 Series Chipset HECI Controller + vendor: Intel Corporation + version: '03' + width: 64 + - businfo: pci@0000:00:03.2 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + ide: true, msi: Message Signalled Interrupts, pci_native_mode-only_controller__supports_bus_mastering: true, + pm: Power Management} + class: storage + clock: 66000000 + configuration: {latency: '0'} + description: IDE interface + handle: PCI:0000:00:03.2 + id: ide + physid: '3.2' + product: 4 Series Chipset PT IDER Controller + vendor: Intel Corporation + version: '03' + width: 32 + - businfo: pci@0000:00:03.3 + capabilities: {'16550': true, bus_master: bus mastering, cap_list: PCI capabilities + listing, msi: Message Signalled Interrupts, pm: Power Management} + claimed: true + class: communication + clock: 66000000 + configuration: {driver: serial, latency: '0'} + description: Serial controller + handle: PCI:0000:00:03.3 + id: communication:1 + physid: '3.3' + product: 4 Series Chipset Serial KT Controller + vendor: Intel Corporation + version: '03' + width: 32 + - businfo: pci@0000:00:19.0 + capabilities: {1000bt-fd: 1Gbit/s (full duplex), 100bt: 100Mbit/s, 100bt-fd: 100Mbit/s + (full duplex), 10bt: 10Mbit/s, 10bt-fd: 10Mbit/s (full duplex), autonegotiation: Auto-negotiation, + bus_master: bus mastering, cap_list: PCI capabilities listing, ethernet: true, + msi: Message Signalled Interrupts, physical: Physical interface, pm: Power + Management, tp: twisted pair} + capacity: 1000000000 + claimed: true + class: network + clock: 33000000 + configuration: {autonegotiation: 'on', broadcast: 'yes', driver: e1000e, driverversion: 3.2.6-k, + duplex: full, firmware: 0.4-3, ip: 192.168.2.24, latency: '0', link: 'yes', + multicast: 'yes', port: twisted pair, speed: 100Mbit/s} + description: Ethernet interface + handle: PCI:0000:00:19.0 + id: network + logicalname: enp0s25 + physid: '19' + product: 82567LM-3 Gigabit Network Connection + serial: 00:21:86:2c:5e:d6 + size: 100000000 + units: bit/s + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1a.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@3 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:3:1 + id: usbhost + logicalname: usb3 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1a.0 + id: usb:0 + physid: 1a + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #4' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1a.1 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@4 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:4:1 + id: usbhost + logicalname: usb4 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1a.1 + id: usb:1 + physid: 1a.1 + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #5' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1a.2 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@5 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:5:1 + id: usbhost + logicalname: usb5 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1a.2 + id: usb:2 + physid: 1a.2 + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #6' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1a.7 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + debug: Debug port, ehci: Enhanced Host Controller Interface (USB2), pm: Power + Management} + children: + - businfo: usb@1 + capabilities: {usb-2.00: USB 2.0} + claimed: true + class: bus + configuration: {driver: hub, slots: '6', speed: 480Mbit/s} + handle: USB:1:1 + id: usbhost + logicalname: usb1 + physid: '1' + product: EHCI Host Controller + vendor: Linux 4.9.0-6-686 ehci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: ehci-pci, latency: '0'} + description: USB controller + handle: PCI:0000:00:1a.7 + id: usb:3 + physid: 1a.7 + product: '82801JD/DO (ICH10 Family) USB2 EHCI Controller #2' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1b.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + msi: Message Signalled Interrupts, pciexpress: PCI Express, pm: Power Management} + claimed: true + class: multimedia + clock: 33000000 + configuration: {driver: snd_hda_intel, latency: '0'} + description: Audio device + handle: PCI:0000:00:1b.0 + id: multimedia + physid: 1b + product: 82801JD/DO (ICH10 Family) HD Audio Controller + vendor: Intel Corporation + version: '02' + width: 64 + - businfo: pci@0000:00:1d.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@6 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:6:1 + id: usbhost + logicalname: usb6 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1d.0 + id: usb:4 + physid: 1d + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #1' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1d.1 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@7 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:7:1 + id: usbhost + logicalname: usb7 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1d.1 + id: usb:5 + physid: 1d.1 + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #2' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1d.2 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@8 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:8:1 + id: usbhost + logicalname: usb8 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1d.2 + id: usb:6 + physid: 1d.2 + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #3' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1d.7 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + debug: Debug port, ehci: Enhanced Host Controller Interface (USB2), pm: Power + Management} + children: + - businfo: usb@2 + capabilities: {usb-2.00: USB 2.0} + claimed: true + class: bus + configuration: {driver: hub, slots: '6', speed: 480Mbit/s} + handle: USB:2:1 + id: usbhost + logicalname: usb2 + physid: '1' + product: EHCI Host Controller + vendor: Linux 4.9.0-6-686 ehci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: ehci-pci, latency: '0'} + description: USB controller + handle: PCI:0000:00:1d.7 + id: usb:7 + physid: 1d.7 + product: '82801JD/DO (ICH10 Family) USB2 EHCI Controller #1' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1e.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + pci: true, subtractive_decode: true} + claimed: true + class: bridge + clock: 33000000 + description: PCI bridge + handle: PCIBUS:0000:11 + id: pci + physid: 1e + product: 82801 PCI Bridge + vendor: Intel Corporation + version: a2 + width: 32 + - businfo: pci@0000:00:1f.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + isa: true} + claimed: true + class: bridge + clock: 33000000 + configuration: {driver: lpc_ich, latency: '0'} + description: ISA bridge + handle: PCI:0000:00:1f.0 + id: isa + physid: 1f + product: 82801JDO (ICH10DO) LPC Interface Controller + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1f.2 + capabilities: {ahci_1.0: true, bus_master: bus mastering, cap_list: PCI capabilities + listing, msi: Message Signalled Interrupts, pm: Power Management, storage: true} + claimed: true + class: storage + clock: 66000000 + configuration: {driver: ahci, latency: '0'} + description: SATA controller + handle: PCI:0000:00:1f.2 + id: storage + physid: 1f.2 + product: 82801JD/DO (ICH10 Family) SATA AHCI Controller + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1f.3 + claimed: true + class: bus + clock: 33000000 + configuration: {driver: i801_smbus, latency: '0'} + description: SMBus + handle: PCI:0000:00:1f.3 + id: serial + physid: 1f.3 + product: 82801JD/DO (ICH10 Family) SMBus Controller + vendor: Intel Corporation + version: '02' + width: 64 + claimed: true + class: bridge + clock: 33000000 + description: Host bridge + handle: PCIBUS:0000:00 + id: pci + physid: '100' + product: 4 Series Chipset DRAM Controller + vendor: Intel Corporation + version: '03' + width: 32 + - capabilities: {emulated: Emulated device} + children: + - businfo: scsi@0:0.0.0 + capabilities: {partitioned: Partitioned disk, 'partitioned:dos': MS-DOS partition + table} + children: + - businfo: scsi@0:0.0.0,1 + capabilities: {dir_nlink: directories with 65000+ subdirs, ext2: EXT2/EXT3, + ext4: true, extended_attributes: Extended Attributes, extents: extent-based + allocation, huge_files: 16TB+ files, initialized: initialized volume, + journaled: true, large_files: 4GB+ files, primary: Primary partition} + capacity: 248984559616 + claimed: true + class: volume + configuration: {created: '2016-11-03 17:23:45', filesystem: ext4, lastmountpoint: /tmp/mnt, + modified: '2016-11-03 17:27:46', mounted: '2016-11-03 17:27:30', state: clean} + description: EXT4 volume + dev: '8:1' + id: volume:0 + logicalname: /dev/sda1 + physid: '1' + serial: a3e8943a-9a3f-4142-8d83-fecded5f0465 + size: 248984559616 + vendor: Linux + version: '1.0' + - businfo: scsi@0:0.0.0,2 + capabilities: {nofs: No filesystem, primary: Primary partition} + capacity: 1073741824 + claimed: true + class: volume + description: Linux swap / Solaris partition + dev: '8:2' + id: volume:1 + logicalname: /dev/sda2 + physid: '2' + claimed: true + class: disk + configuration: {ansiversion: '5', logicalsectorsize: '512', sectorsize: '512', + signature: e4bb7bc9} + description: ATA Disk + dev: '8:0' + handle: SCSI:00:00:00:00 + id: disk + logicalname: /dev/sda + physid: 0.0.0 + product: ST3250318AS + serial: 6VMB1A52 + size: 250059350016 + units: bytes + vendor: Seagate + version: CC66 + claimed: true + class: storage + id: scsi:0 + logicalname: scsi0 + physid: '2' + - capabilities: {emulated: Emulated device} + children: + - businfo: scsi@1:0.0.0 + capabilities: {audio: Audio CD playback, cd-r: CD-R burning, cd-rw: CD-RW + burning, dvd: DVD playback, dvd-r: DVD-R burning, dvd-ram: DVD-RAM burning, + removable: support is removable} + claimed: true + class: disk + configuration: {ansiversion: '5', status: nodisc} + description: DVD-RAM writer + dev: '11:0' + handle: SCSI:01:00:00:00 + id: cdrom + logicalname: [/dev/cdrom, /dev/cdrw, /dev/dvd, /dev/dvdrw, /dev/sr0] + physid: 0.0.0 + product: CDDVDW TS-H653F + vendor: TSSTcorp + version: LE08 + claimed: true + class: storage + id: scsi:1 + logicalname: scsi1 + physid: '3' + claimed: true + class: bus + description: Motherboard + handle: DMI:0002 + id: core + physid: '0' + product: LENOVO + serial: NONE + slot: INSIDE + vendor: LENOVO + version: NONE + - capabilities: {outbound: make outbound connections} + class: system + id: remoteaccess + physid: '1' + vendor: Intel + - {capacity: 125, class: power, description: Standard 235 ATX, id: power, physid: '2', + product: 'Diamond MM #87997/1845333', serial: '7481909424', units: mWh, vendor: 'PC + POwer & Cooling, INC', version: '2.30'} + claimed: true + class: system + configuration: {administrator_password: enabled, boot: normal, chassis: desktop, + cpus: '2', family: NONE, keyboard_password: disabled, power-on_password: disabled, + sku: NONE, uuid: 4D503B35-2239-3B5D-8499-343AE3A5F659} + description: Desktop Computer + handle: DMI:0001 + id: debian + product: 7220A91 (NONE) + serial: LMCVFMF + vendor: LENOVO + version: ThinkCentre M58p + width: 32 +device: {'@type': Computer, _id: '4544', gid: '10663', manufacturer: LENOVO, model: 7220A91, + serialNumber: LMCVFMF, type: Desktop} +elapsed: 0:13:10 +inventory: {elapsed: '0:00:34'} +osInstallation: {elapsed: '0:06:25', label: /media/workbench-images/LinuxMint18.3-cat-64, + success: true} +snapshotSoftware: Workbench +tests: +- {'@type': StressTest, elapsed: '0:05:00', success: true} +version: 10.0b5