Add new cli option to read machine probe data from file

Allow user to specify a probert machine configuration file to be
used during the installer.  If presented with the config file
no probing of the host will occur.

In the case that disks don't have a size in the data collected then
they'll be marked as USED.

Add a few example machines and update the README on how to specify.

Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
This commit is contained in:
Ryan Harper 2015-08-28 13:19:13 -05:00
parent 0100ed708c
commit 8a0e9ebdfd
14 changed files with 2770 additions and 40 deletions

View File

@ -17,6 +17,11 @@ INSTALLIMG=ubuntu-server-${STREAM}-${RELEASE}-${ARCH}-installer.img
INSTALLER_RESOURCES += $(shell find installer/resources -type f)
GITDEBDIR=/tmp/subiquity-deb
DEBDIR=./debian
ifneq (,$(MACHINE))
MACHARGS=--machine=$(MACHINE)
endif
.PHONY: run clean
all: dryrun
@ -33,7 +38,7 @@ dryrun:
$(MAKE) ui-view DRYRUN="--dry-run"
ui-view:
(PYTHONPATH=$(PYTHONPATH) bin/$(PYTHONSRC) $(DRYRUN))
(PYTHONPATH=$(PYTHONPATH) bin/$(PYTHONSRC) $(DRYRUN) $(MACHARGS))
ui-view-serial:
(TERM=att4424 PYTHONPATH=$(PYTHONPATH) bin/$(PYTHONSRC) $(DRYRUN) --serial)

View File

@ -7,12 +7,11 @@
# running installer
`make run`
# running the UI locally
`make ui-view`
# running the UI locally in dry-run mode
`make`
with `--dry-run`
`make dryrun`
# running the UI locally with a different machine profile (see examples/)
`MACHINE=examples/desktop.json make`
# overrides
```

View File

@ -33,6 +33,9 @@ def parse_options(argv):
parser.add_argument('--serial', action='store_true',
dest='run_on_serial',
help='Run the installer over serial console.')
parser.add_argument('--machine-config', metavar='CONFIG',
dest='machine_config',
help="Don't Probe. Use probe data file")
return parser.parse_args(argv)

948
examples/desktop.json Normal file
View File

@ -0,0 +1,948 @@
{
"network": {
"em1": {
"hardware": {
"DEVPATH": "/devices/pci0000:00/0000:00:19.0/net/em1",
"ID_BUS": "pci",
"ID_MM_CANDIDATE": "1",
"ID_MODEL_FROM_DATABASE": "82579LM Gigabit Network Connection",
"ID_MODEL_ID": "0x1502",
"ID_NET_DRIVER": "e1000e",
"ID_NET_LABEL_ONBOARD": "en Onboard LAN",
"ID_NET_LINK_FILE": "/lib/systemd/network/99-default.link",
"ID_NET_NAME_MAC": "enx4437e683c1e3",
"ID_NET_NAME_ONBOARD": "eno1",
"ID_NET_NAME_PATH": "enp0s25",
"ID_OUI_FROM_DATABASE": "Hon Hai Precision Ind.Co.Ltd",
"ID_PATH": "pci-0000:00:19.0",
"ID_PATH_TAG": "pci-0000_00_19_0",
"ID_PCI_CLASS_FROM_DATABASE": "Network controller",
"ID_PCI_SUBCLASS_FROM_DATABASE": "Ethernet controller",
"ID_VENDOR_FROM_DATABASE": "Intel Corporation",
"ID_VENDOR_ID": "0x8086",
"IFINDEX": "2",
"INTERFACE": "em1",
"SUBSYSTEM": "net",
"SYSTEMD_ALIAS": "/sys/subsystem/net/devices/em1",
"SYSTEMD_WANTS": "ifup@em1.service",
"TAGS": ":systemd:",
"USEC_INITIALIZED": "3269",
"attrs": {
"addr_assign_type": "0",
"addr_len": "6",
"address": "44:37:e6:83:c1:e3",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": "1",
"carrier_changes": "2",
"dev_id": "0x0",
"dev_port": "0",
"device": null,
"dormant": "0",
"duplex": "full",
"flags": "0x1003",
"gro_flush_timeout": "0",
"ifalias": "",
"ifindex": "2",
"iflink": "2",
"link_mode": "0",
"mtu": "1500",
"name_assign_type": "4",
"netdev_group": "0",
"operstate": "up",
"phys_port_id": null,
"phys_switch_id": null,
"speed": "100",
"subsystem": "net",
"tx_queue_len": "1000",
"type": "1",
"uevent": "INTERFACE=em1\nIFINDEX=2"
}
},
"ip": {
"addr": "192.168.0.104",
"broadcast": "192.168.0.255",
"netmask": "255.255.255.0"
},
"type": "eth"
},
"lo": {
"hardware": {
"DEVPATH": "/devices/virtual/net/lo",
"ID_MM_CANDIDATE": "1",
"ID_NET_LINK_FILE": "/lib/systemd/network/99-default.link",
"IFINDEX": "1",
"INTERFACE": "lo",
"SUBSYSTEM": "net",
"USEC_INITIALIZED": "216954",
"attrs": {
"addr_assign_type": "0",
"addr_len": "6",
"address": "00:00:00:00:00:00",
"broadcast": "00:00:00:00:00:00",
"carrier": "1",
"carrier_changes": "0",
"dev_id": "0x0",
"dev_port": "0",
"dormant": "0",
"duplex": null,
"flags": "0x9",
"gro_flush_timeout": "0",
"ifalias": "",
"ifindex": "1",
"iflink": "1",
"link_mode": "0",
"mtu": "65536",
"name_assign_type": null,
"netdev_group": "0",
"operstate": "unknown",
"phys_port_id": null,
"phys_switch_id": null,
"speed": null,
"subsystem": "net",
"tx_queue_len": "0",
"type": "772",
"uevent": "INTERFACE=lo\nIFINDEX=1"
}
},
"ip": {
"addr": "127.0.0.1",
"netmask": "255.0.0.0",
"peer": "127.0.0.1"
},
"type": "lo"
},
"lxcbr0": {
"hardware": {
"DEVPATH": "/devices/virtual/net/lxcbr0",
"DEVTYPE": "bridge",
"ID_MM_CANDIDATE": "1",
"ID_NET_DRIVER": "bridge",
"ID_NET_LINK_FILE": "/lib/systemd/network/99-default.link",
"IFINDEX": "3",
"INTERFACE": "lxcbr0",
"SUBSYSTEM": "net",
"SYSTEMD_ALIAS": "/sys/subsystem/net/devices/lxcbr0",
"SYSTEMD_WANTS": "ifup@lxcbr0.service",
"TAGS": ":systemd:",
"USEC_INITIALIZED": "305347",
"attrs": {
"addr_assign_type": "1",
"addr_len": "6",
"address": "fe:97:6a:16:73:d9",
"brforward": "\ufffd\ufffdj\u0016s\ufffd\u0001\u0001",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": "1",
"carrier_changes": "4",
"dev_id": "0x0",
"dev_port": "0",
"dormant": "0",
"duplex": null,
"flags": "0x1003",
"gro_flush_timeout": "0",
"ifalias": "",
"ifindex": "3",
"iflink": "3",
"link_mode": "0",
"lower_vethGYDUSB": null,
"mtu": "1500",
"name_assign_type": null,
"netdev_group": "0",
"operstate": "up",
"phys_port_id": null,
"phys_switch_id": null,
"speed": null,
"subsystem": "net",
"tx_queue_len": "0",
"type": "1",
"uevent": "DEVTYPE=bridge\nINTERFACE=lxcbr0\nIFINDEX=3"
}
},
"ip": {
"addr": "10.0.3.1",
"broadcast": "10.0.3.1",
"netmask": "255.255.255.0"
},
"type": "bridge"
},
"vethGYDUSB": {
"hardware": {
"DEVPATH": "/devices/virtual/net/vethGYDUSB",
"ID_MM_CANDIDATE": "1",
"ID_NET_DRIVER": "veth",
"ID_NET_LINK_FILE": "/lib/systemd/network/99-default.link",
"IFINDEX": "5",
"INTERFACE": "vethGYDUSB",
"SUBSYSTEM": "net",
"SYSTEMD_ALIAS": "/sys/subsystem/net/devices/vethGYDUSB",
"SYSTEMD_WANTS": "ifup@vethGYDUSB.service",
"TAGS": ":systemd:",
"USEC_INITIALIZED": "120121",
"attrs": {
"addr_assign_type": "3",
"addr_len": "6",
"address": "fe:97:6a:16:73:d9",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": "1",
"carrier_changes": "2",
"dev_id": "0x0",
"dev_port": "0",
"dormant": "0",
"duplex": "full",
"flags": "0x1303",
"gro_flush_timeout": "0",
"ifalias": "",
"ifindex": "5",
"iflink": "5",
"link_mode": "0",
"master": null,
"mtu": "1500",
"name_assign_type": "3",
"netdev_group": "0",
"operstate": "up",
"phys_port_id": null,
"phys_switch_id": null,
"speed": "10000",
"subsystem": "net",
"tx_queue_len": "1000",
"type": "1",
"uevent": "INTERFACE=vethGYDUSB\nIFINDEX=5",
"upper_lxcbr0": null
}
},
"ip": {
"addr": null,
"broadcast": null,
"netmask": null
},
"type": "eth"
},
"virbr0": {
"hardware": {
"DEVPATH": "/devices/virtual/net/virbr0",
"DEVTYPE": "bridge",
"ID_MM_CANDIDATE": "1",
"ID_NET_DRIVER": "bridge",
"ID_NET_LINK_FILE": "/lib/systemd/network/99-default.link",
"IFINDEX": "6",
"INTERFACE": "virbr0",
"SUBSYSTEM": "net",
"SYSTEMD_ALIAS": "/sys/subsystem/net/devices/virbr0",
"SYSTEMD_WANTS": "ifup@virbr0.service",
"TAGS": ":systemd:",
"USEC_INITIALIZED": "762766",
"attrs": {
"addr_assign_type": "1",
"addr_len": "6",
"address": "52:54:00:b0:59:e2",
"brforward": "RT",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": "0",
"carrier_changes": "1",
"dev_id": "0x0",
"dev_port": "0",
"dormant": "0",
"duplex": null,
"flags": "0x1003",
"gro_flush_timeout": "0",
"ifalias": "",
"ifindex": "6",
"iflink": "6",
"link_mode": "0",
"lower_virbr0-nic": null,
"mtu": "1500",
"name_assign_type": null,
"netdev_group": "0",
"operstate": "down",
"phys_port_id": null,
"phys_switch_id": null,
"speed": null,
"subsystem": "net",
"tx_queue_len": "0",
"type": "1",
"uevent": "DEVTYPE=bridge\nINTERFACE=virbr0\nIFINDEX=6"
}
},
"ip": {
"addr": "192.168.122.1",
"broadcast": "192.168.122.255",
"netmask": "255.255.255.0"
},
"type": "bridge"
},
"virbr0-nic": {
"hardware": {
"DEVPATH": "/devices/virtual/net/virbr0-nic",
"ID_MM_CANDIDATE": "1",
"ID_NET_DRIVER": "tun",
"ID_NET_LINK_FILE": "/lib/systemd/network/99-default.link",
"IFINDEX": "7",
"INTERFACE": "virbr0-nic",
"SUBSYSTEM": "net",
"SYSTEMD_ALIAS": "/sys/subsystem/net/devices/virbr0-nic",
"SYSTEMD_WANTS": "ifup@virbr0-nic.service",
"TAGS": ":systemd:",
"USEC_INITIALIZED": "776315",
"attrs": {
"addr_assign_type": "3",
"addr_len": "6",
"address": "52:54:00:b0:59:e2",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": null,
"carrier_changes": "1",
"dev_id": "0x0",
"dev_port": "0",
"dormant": null,
"duplex": null,
"flags": "0x1302",
"gro_flush_timeout": "0",
"group": "-1",
"ifalias": "",
"ifindex": "7",
"iflink": "7",
"link_mode": "0",
"master": null,
"mtu": "1500",
"name_assign_type": null,
"netdev_group": "0",
"operstate": "down",
"owner": "-1",
"phys_port_id": null,
"phys_switch_id": null,
"speed": null,
"subsystem": "net",
"tun_flags": "0x1802",
"tx_queue_len": "500",
"type": "1",
"uevent": "INTERFACE=virbr0-nic\nIFINDEX=7",
"upper_virbr0": null
}
},
"ip": {
"addr": null,
"broadcast": null,
"netmask": null
},
"type": "tap"
}
},
"storage": {
"/dev/sda": {
"DEVLINKS": "/dev/disk/by-id/ata-ST3500413AS_Z2AMRTB6 /dev/disk/by-id/wwn-0x17872886972540801024x",
"DEVNAME": "/dev/sda",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"DEVTYPE": "disk",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "7200",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_MODEL": "ST3500413AS",
"ID_MODEL_ENC": "ST3500413AS\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_TABLE_TYPE": "gpt",
"ID_PART_TABLE_UUID": "225dc29d-bc21-4dd8-83fd-75c58f64c02b",
"ID_REVISION": "JC66",
"ID_SERIAL": "ST3500413AS_Z2AMRTB6",
"ID_SERIAL_SHORT": "Z2AMRTB6",
"ID_TYPE": "disk",
"ID_WWN": "0x17872886972540801024x",
"ID_WWN_WITH_EXTENSION": "0x17872886972540801024x",
"MAJOR": "8",
"MINOR": "0",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_ATA_SMART_IS_AVAILABLE": "1",
"UDISKS_PARTITION_TABLE": "1",
"UDISKS_PARTITION_TABLE_COUNT": "4",
"UDISKS_PARTITION_TABLE_SCHEME": "gpt",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "61132",
"attrs": {
"alignment_offset": "0",
"bdi": null,
"capability": "50",
"dev": "8:0",
"device": null,
"discard_alignment": "0",
"events": "",
"events_async": "",
"events_poll_msecs": "-1",
"ext_range": "256",
"inflight": " 0 0",
"range": "16",
"removable": "0",
"ro": "0",
"size": "500107862016",
"stat": " 265978 108238 9347116 3349936 1396011 1024491 38571922 35977524 0 10927124 39326468",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=0\nDEVNAME=sda\nDEVTYPE=disk"
}
},
"/dev/sda1": {
"DEVLINKS": "/dev/disk/by-id/ata-ST3500413AS_Z2AMRTB6-part1 /dev/disk/by-id/wwn-0x17872886972540801024x-part1 /dev/disk/by-partuuid/18a80974-9382-403e-8e3b-8b1f2de7ef58 /dev/disk/by-uuid/B2FE-9E05",
"DEVNAME": "/dev/sda1",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1",
"DEVTYPE": "partition",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "7200",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_FS_TYPE": "vfat",
"ID_FS_USAGE": "filesystem",
"ID_FS_UUID": "B2FE-9E05",
"ID_FS_UUID_ENC": "B2FE-9E05",
"ID_FS_VERSION": "FAT32",
"ID_MODEL": "ST3500413AS",
"ID_MODEL_ENC": "ST3500413AS\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_ENTRY_DISK": "8:0",
"ID_PART_ENTRY_NUMBER": "1",
"ID_PART_ENTRY_OFFSET": "2048",
"ID_PART_ENTRY_SCHEME": "gpt",
"ID_PART_ENTRY_SIZE": "497664",
"ID_PART_ENTRY_TYPE": "c12a7328-f81f-11d2-ba4b-00a0c93ec93b",
"ID_PART_ENTRY_UUID": "18a80974-9382-403e-8e3b-8b1f2de7ef58",
"ID_PART_TABLE_TYPE": "gpt",
"ID_PART_TABLE_UUID": "225dc29d-bc21-4dd8-83fd-75c58f64c02b",
"ID_REVISION": "JC66",
"ID_SERIAL": "ST3500413AS_Z2AMRTB6",
"ID_SERIAL_SHORT": "Z2AMRTB6",
"ID_TYPE": "disk",
"ID_WWN": "0x17872886972540801024x",
"ID_WWN_WITH_EXTENSION": "0x17872886972540801024x",
"MAJOR": "8",
"MINOR": "1",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_IGNORE": "1",
"UDISKS_PARTITION": "1",
"UDISKS_PARTITION_ALIGNMENT_OFFSET": "0",
"UDISKS_PARTITION_NUMBER": "1",
"UDISKS_PARTITION_OFFSET": "1048576",
"UDISKS_PARTITION_SCHEME": "gpt",
"UDISKS_PARTITION_SIZE": "254803968",
"UDISKS_PARTITION_SLAVE": "/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"UDISKS_PARTITION_TYPE": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
"UDISKS_PARTITION_UUID": "18A80974-9382-403E-8E3B-8B1F2DE7EF58",
"UDISKS_PRESENTATION_HIDE": "1",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "61164",
"attrs": {
"alignment_offset": "0",
"dev": "8:1",
"discard_alignment": "0",
"inflight": " 0 0",
"partition": "1",
"ro": "0",
"size": "254803968",
"start": "2048",
"stat": " 396 4 13520 3168 2 0 2 0 0 2996 3168",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=1\nDEVNAME=sda1\nDEVTYPE=partition"
}
},
"/dev/sda2": {
"DEVLINKS": "/dev/disk/by-id/ata-ST3500413AS_Z2AMRTB6-part2 /dev/disk/by-id/wwn-0x17872886972540801024x-part2 /dev/disk/by-partuuid/8794f286-bcbf-417c-9a08-a0891ecb4c74 /dev/disk/by-uuid/6de99199-d162-42e5-932f-33ec17f89593",
"DEVNAME": "/dev/sda2",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2",
"DEVTYPE": "partition",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "7200",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_FS_TYPE": "ext4",
"ID_FS_USAGE": "filesystem",
"ID_FS_UUID": "6de99199-d162-42e5-932f-33ec17f89593",
"ID_FS_UUID_ENC": "6de99199-d162-42e5-932f-33ec17f89593",
"ID_FS_VERSION": "1.0",
"ID_MODEL": "ST3500413AS",
"ID_MODEL_ENC": "ST3500413AS\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_ENTRY_DISK": "8:0",
"ID_PART_ENTRY_NUMBER": "2",
"ID_PART_ENTRY_OFFSET": "499712",
"ID_PART_ENTRY_SCHEME": "gpt",
"ID_PART_ENTRY_SIZE": "195311616",
"ID_PART_ENTRY_TYPE": "0fc63daf-8483-4772-8e79-3d69d8477de4",
"ID_PART_ENTRY_UUID": "8794f286-bcbf-417c-9a08-a0891ecb4c74",
"ID_PART_TABLE_TYPE": "gpt",
"ID_PART_TABLE_UUID": "225dc29d-bc21-4dd8-83fd-75c58f64c02b",
"ID_REVISION": "JC66",
"ID_SERIAL": "ST3500413AS_Z2AMRTB6",
"ID_SERIAL_SHORT": "Z2AMRTB6",
"ID_TYPE": "disk",
"ID_WWN": "0x17872886972540801024x",
"ID_WWN_WITH_EXTENSION": "0x17872886972540801024x",
"MAJOR": "8",
"MINOR": "2",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_PARTITION": "1",
"UDISKS_PARTITION_ALIGNMENT_OFFSET": "0",
"UDISKS_PARTITION_NUMBER": "2",
"UDISKS_PARTITION_OFFSET": "255852544",
"UDISKS_PARTITION_SCHEME": "gpt",
"UDISKS_PARTITION_SIZE": "99999547392",
"UDISKS_PARTITION_SLAVE": "/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"UDISKS_PARTITION_TYPE": "0FC63DAF-8483-4772-8E79-3D69D8477DE4",
"UDISKS_PARTITION_UUID": "8794F286-BCBF-417C-9A08-A0891ECB4C74",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "61189",
"attrs": {
"alignment_offset": "0",
"dev": "8:2",
"discard_alignment": "0",
"inflight": " 0 0",
"partition": "2",
"ro": "0",
"size": "99999547392",
"start": "499712",
"stat": " 124143 58911 6838258 1546400 233387 219516 13535992 8206400 0 1924284 9752704",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=2\nDEVNAME=sda2\nDEVTYPE=partition"
}
},
"/dev/sda3": {
"DEVLINKS": "/dev/disk/by-id/ata-ST3500413AS_Z2AMRTB6-part3 /dev/disk/by-id/wwn-0x17872886972540801024x-part3 /dev/disk/by-partuuid/4ae1034a-dede-470b-85d8-57cfd33adf28 /dev/disk/by-uuid/73f31980-3482-4891-ac53-f994e75d1965",
"DEVNAME": "/dev/sda3",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda3",
"DEVTYPE": "partition",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "7200",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_FS_TYPE": "swap",
"ID_FS_USAGE": "other",
"ID_FS_UUID": "73f31980-3482-4891-ac53-f994e75d1965",
"ID_FS_UUID_ENC": "73f31980-3482-4891-ac53-f994e75d1965",
"ID_FS_VERSION": "1",
"ID_MODEL": "ST3500413AS",
"ID_MODEL_ENC": "ST3500413AS\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_ENTRY_DISK": "8:0",
"ID_PART_ENTRY_NUMBER": "3",
"ID_PART_ENTRY_OFFSET": "195811328",
"ID_PART_ENTRY_SCHEME": "gpt",
"ID_PART_ENTRY_SIZE": "29296640",
"ID_PART_ENTRY_TYPE": "0657fd6d-a4ab-43c4-84e5-0933c84b4f4f",
"ID_PART_ENTRY_UUID": "4ae1034a-dede-470b-85d8-57cfd33adf28",
"ID_PART_TABLE_TYPE": "gpt",
"ID_PART_TABLE_UUID": "225dc29d-bc21-4dd8-83fd-75c58f64c02b",
"ID_REVISION": "JC66",
"ID_SERIAL": "ST3500413AS_Z2AMRTB6",
"ID_SERIAL_SHORT": "Z2AMRTB6",
"ID_TYPE": "disk",
"ID_WWN": "0x17872886972540801024x",
"ID_WWN_WITH_EXTENSION": "0x17872886972540801024x",
"MAJOR": "8",
"MINOR": "3",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_PARTITION": "1",
"UDISKS_PARTITION_ALIGNMENT_OFFSET": "0",
"UDISKS_PARTITION_NUMBER": "3",
"UDISKS_PARTITION_OFFSET": "100255399936",
"UDISKS_PARTITION_SCHEME": "gpt",
"UDISKS_PARTITION_SIZE": "14999879680",
"UDISKS_PARTITION_SLAVE": "/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"UDISKS_PARTITION_TYPE": "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F",
"UDISKS_PARTITION_UUID": "4AE1034A-DEDE-470B-85D8-57CFD33ADF28",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "61203",
"attrs": {
"alignment_offset": "0",
"dev": "8:3",
"discard_alignment": "0",
"inflight": " 0 0",
"partition": "3",
"ro": "0",
"size": "14999879680",
"start": "195811328",
"stat": " 198 0 3592 1772 0 0 0 0 0 1480 1772",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=3\nDEVNAME=sda3\nDEVTYPE=partition"
}
},
"/dev/sda4": {
"DEVLINKS": "/dev/disk/by-id/ata-ST3500413AS_Z2AMRTB6-part4 /dev/disk/by-id/wwn-0x17872886972540801024x-part4 /dev/disk/by-partuuid/532cfca4-f3c3-481c-bf93-b48f40c4ea3e /dev/disk/by-uuid/184ba6a2-a7a9-4457-a504-68a06709aa24",
"DEVNAME": "/dev/sda4",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda4",
"DEVTYPE": "partition",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "78",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "7200",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_FS_TYPE": "ext4",
"ID_FS_USAGE": "filesystem",
"ID_FS_UUID": "184ba6a2-a7a9-4457-a504-68a06709aa24",
"ID_FS_UUID_ENC": "184ba6a2-a7a9-4457-a504-68a06709aa24",
"ID_FS_VERSION": "1.0",
"ID_MODEL": "ST3500413AS",
"ID_MODEL_ENC": "ST3500413AS\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_ENTRY_DISK": "8:0",
"ID_PART_ENTRY_NUMBER": "4",
"ID_PART_ENTRY_OFFSET": "225107968",
"ID_PART_ENTRY_SCHEME": "gpt",
"ID_PART_ENTRY_SIZE": "751663104",
"ID_PART_ENTRY_TYPE": "0fc63daf-8483-4772-8e79-3d69d8477de4",
"ID_PART_ENTRY_UUID": "532cfca4-f3c3-481c-bf93-b48f40c4ea3e",
"ID_PART_TABLE_TYPE": "gpt",
"ID_PART_TABLE_UUID": "225dc29d-bc21-4dd8-83fd-75c58f64c02b",
"ID_REVISION": "JC66",
"ID_SERIAL": "ST3500413AS_Z2AMRTB6",
"ID_SERIAL_SHORT": "Z2AMRTB6",
"ID_TYPE": "disk",
"ID_WWN": "0x17872886972540801024x",
"ID_WWN_WITH_EXTENSION": "0x17872886972540801024x",
"MAJOR": "8",
"MINOR": "4",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_PARTITION": "1",
"UDISKS_PARTITION_ALIGNMENT_OFFSET": "0",
"UDISKS_PARTITION_NUMBER": "4",
"UDISKS_PARTITION_OFFSET": "115255279616",
"UDISKS_PARTITION_SCHEME": "gpt",
"UDISKS_PARTITION_SIZE": "384851509248",
"UDISKS_PARTITION_SLAVE": "/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"UDISKS_PARTITION_TYPE": "0FC63DAF-8483-4772-8E79-3D69D8477DE4",
"UDISKS_PARTITION_UUID": "532CFCA4-F3C3-481C-BF93-B48F40C4EA3E",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "61223",
"attrs": {
"alignment_offset": "0",
"dev": "8:4",
"discard_alignment": "0",
"inflight": " 0 0",
"partition": "4",
"ro": "0",
"size": "384851509248",
"start": "225107968",
"stat": " 140106 49323 2473818 1794460 1017949 804975 25035928 25555888 0 7815888 27349416",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=4\nDEVNAME=sda4\nDEVTYPE=partition"
}
},
"/dev/sdb": {
"DEVLINKS": "/dev/disk/by-id/usb-Generic-_Compact_Flash_20060413092100000-0:0 /dev/disk/by-path/pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:0",
"DEVNAME": "/dev/sdb",
"DEVPATH": "/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host6/target6:0:0/6:0:0:0/block/sdb",
"DEVTYPE": "disk",
"ID_BUS": "usb",
"ID_INSTANCE": "0:0",
"ID_MODEL": "Compact_Flash",
"ID_MODEL_ENC": "Compact\\x20Flash\\x20\\x20\\x20",
"ID_MODEL_ID": "0181",
"ID_PATH": "pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:0",
"ID_PATH_TAG": "pci-0000_00_1d_0-usb-0_1_2_1_0-scsi-0_0_0_0",
"ID_REVISION": "1.00",
"ID_SERIAL": "Generic-_Compact_Flash_20060413092100000-0:0",
"ID_SERIAL_SHORT": "20060413092100000",
"ID_TYPE": "disk",
"ID_USB_DRIVER": "usb-storage",
"ID_USB_INTERFACES": ":080650:",
"ID_USB_INTERFACE_NUM": "00",
"ID_VENDOR": "Generic-",
"ID_VENDOR_ENC": "Generic-",
"ID_VENDOR_ID": "0bda",
"MAJOR": "8",
"MINOR": "16",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "75383",
"attrs": {
"alignment_offset": "0",
"bdi": null,
"capability": "51",
"dev": "8:16",
"device": null,
"discard_alignment": "0",
"events": "media_change",
"events_async": "",
"events_poll_msecs": "2000",
"ext_range": "256",
"inflight": " 0 0",
"range": "16",
"removable": "1",
"ro": "0",
"size": "0",
"stat": " 0 0 0 0 0 0 0 0 0 0 0",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=16\nDEVNAME=sdb\nDEVTYPE=disk"
}
},
"/dev/sdc": {
"DEVLINKS": "/dev/disk/by-id/usb-Generic-_SM_xD-Picture_20060413092100000-0:1 /dev/disk/by-path/pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:1",
"DEVNAME": "/dev/sdc",
"DEVPATH": "/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host6/target6:0:0/6:0:0:1/block/sdc",
"DEVTYPE": "disk",
"ID_BUS": "usb",
"ID_INSTANCE": "0:1",
"ID_MODEL": "SM_xD-Picture",
"ID_MODEL_ENC": "SM\\x2fxD-Picture\\x20\\x20\\x20",
"ID_MODEL_ID": "0181",
"ID_PATH": "pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:1",
"ID_PATH_TAG": "pci-0000_00_1d_0-usb-0_1_2_1_0-scsi-0_0_0_1",
"ID_REVISION": "1.00",
"ID_SERIAL": "Generic-_SM_xD-Picture_20060413092100000-0:1",
"ID_SERIAL_SHORT": "20060413092100000",
"ID_TYPE": "disk",
"ID_USB_DRIVER": "usb-storage",
"ID_USB_INTERFACES": ":080650:",
"ID_USB_INTERFACE_NUM": "00",
"ID_VENDOR": "Generic-",
"ID_VENDOR_ENC": "Generic-",
"ID_VENDOR_ID": "0bda",
"MAJOR": "8",
"MINOR": "32",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "75607",
"attrs": {
"alignment_offset": "0",
"bdi": null,
"capability": "51",
"dev": "8:32",
"device": null,
"discard_alignment": "0",
"events": "media_change",
"events_async": "",
"events_poll_msecs": "2000",
"ext_range": "256",
"inflight": " 0 0",
"range": "16",
"removable": "1",
"ro": "0",
"size": "0",
"stat": " 0 0 0 0 0 0 0 0 0 0 0",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=32\nDEVNAME=sdc\nDEVTYPE=disk"
}
},
"/dev/sdd": {
"DEVLINKS": "/dev/disk/by-id/usb-Generic-_SD_MMC_20060413092100000-0:2 /dev/disk/by-path/pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:2",
"DEVNAME": "/dev/sdd",
"DEVPATH": "/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host6/target6:0:0/6:0:0:2/block/sdd",
"DEVTYPE": "disk",
"ID_BUS": "usb",
"ID_INSTANCE": "0:2",
"ID_MODEL": "SD_MMC",
"ID_MODEL_ENC": "SD\\x2fMMC\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_MODEL_ID": "0181",
"ID_PATH": "pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:2",
"ID_PATH_TAG": "pci-0000_00_1d_0-usb-0_1_2_1_0-scsi-0_0_0_2",
"ID_REVISION": "1.00",
"ID_SERIAL": "Generic-_SD_MMC_20060413092100000-0:2",
"ID_SERIAL_SHORT": "20060413092100000",
"ID_TYPE": "disk",
"ID_USB_DRIVER": "usb-storage",
"ID_USB_INTERFACES": ":080650:",
"ID_USB_INTERFACE_NUM": "00",
"ID_VENDOR": "Generic-",
"ID_VENDOR_ENC": "Generic-",
"ID_VENDOR_ID": "0bda",
"MAJOR": "8",
"MINOR": "48",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "75828",
"attrs": {
"alignment_offset": "0",
"bdi": null,
"capability": "51",
"dev": "8:48",
"device": null,
"discard_alignment": "0",
"events": "media_change",
"events_async": "",
"events_poll_msecs": "2000",
"ext_range": "256",
"inflight": " 0 0",
"range": "16",
"removable": "1",
"ro": "0",
"size": "0",
"stat": " 0 0 0 0 0 0 0 0 0 0 0",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=48\nDEVNAME=sdd\nDEVTYPE=disk"
}
},
"/dev/sde": {
"DEVLINKS": "/dev/disk/by-id/usb-Generic-_MS_MS-Pro_HG_20060413092100000-0:3 /dev/disk/by-path/pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:3",
"DEVNAME": "/dev/sde",
"DEVPATH": "/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host6/target6:0:0/6:0:0:3/block/sde",
"DEVTYPE": "disk",
"ID_BUS": "usb",
"ID_INSTANCE": "0:3",
"ID_MODEL": "MS_MS-Pro_HG",
"ID_MODEL_ENC": "MS\\x2fMS-Pro\\x2fHG\\x20\\x20\\x20\\x20",
"ID_MODEL_ID": "0181",
"ID_PATH": "pci-0000:00:1d.0-usb-0:1.2:1.0-scsi-0:0:0:3",
"ID_PATH_TAG": "pci-0000_00_1d_0-usb-0_1_2_1_0-scsi-0_0_0_3",
"ID_REVISION": "1.00",
"ID_SERIAL": "Generic-_MS_MS-Pro_HG_20060413092100000-0:3",
"ID_SERIAL_SHORT": "20060413092100000",
"ID_TYPE": "disk",
"ID_USB_DRIVER": "usb-storage",
"ID_USB_INTERFACES": ":080650:",
"ID_USB_INTERFACE_NUM": "00",
"ID_VENDOR": "Generic-",
"ID_VENDOR_ENC": "Generic-",
"ID_VENDOR_ID": "0bda",
"MAJOR": "8",
"MINOR": "64",
"SUBSYSTEM": "block",
"TAGS": ":systemd:",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "76087",
"attrs": {
"alignment_offset": "0",
"bdi": null,
"capability": "51",
"dev": "8:64",
"device": null,
"discard_alignment": "0",
"events": "media_change",
"events_async": "",
"events_poll_msecs": "2000",
"ext_range": "256",
"inflight": " 0 0",
"range": "16",
"removable": "1",
"ro": "0",
"size": "0",
"stat": " 0 0 0 0 0 0 0 0 0 0 0",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=64\nDEVNAME=sde\nDEVTYPE=disk"
}
},
"/dev/sr0": {
"DEVLINKS": "/dev/cdrom /dev/cdrw /dev/disk/by-id/ata-HL-DT-STDVD-RAM_GH70N_K4EC1F94009 /dev/dvd /dev/dvdrw",
"DEVNAME": "/dev/sr0",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sr0",
"DEVTYPE": "disk",
"ID_ATA": "1",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_BUS": "ata",
"ID_CDROM": "1",
"ID_CDROM_CD": "1",
"ID_CDROM_CD_R": "1",
"ID_CDROM_CD_RW": "1",
"ID_CDROM_DVD": "1",
"ID_CDROM_DVD_PLUS_R": "1",
"ID_CDROM_DVD_PLUS_RW": "1",
"ID_CDROM_DVD_PLUS_R_DL": "1",
"ID_CDROM_DVD_R": "1",
"ID_CDROM_DVD_RAM": "1",
"ID_CDROM_DVD_RW": "1",
"ID_CDROM_MRW": "1",
"ID_CDROM_MRW_W": "1",
"ID_MODEL": "HL-DT-STDVD-RAM_GH70N",
"ID_MODEL_ENC": "HL-DT-STDVD-RAM\\x20GH70N\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_REVISION": "NYA2",
"ID_SERIAL": "HL-DT-STDVD-RAM_GH70N_K4EC1F94009",
"ID_SERIAL_SHORT": "K4EC1F94009",
"ID_TYPE": "cd",
"MAJOR": "11",
"MINOR": "0",
"SUBSYSTEM": "block",
"TAGS": ":seat:systemd:uaccess:",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "59556",
"attrs": {
"alignment_offset": "0",
"bdi": null,
"capability": "119",
"dev": "11:0",
"device": null,
"discard_alignment": "0",
"events": "media_change eject_request",
"events_async": "",
"events_poll_msecs": "2000",
"ext_range": "1",
"inflight": " 0 0",
"range": "1",
"removable": "1",
"ro": "0",
"size": "1073741312",
"stat": " 0 0 0 0 0 0 0 0 0 0 0",
"subsystem": "block",
"uevent": "MAJOR=11\nMINOR=0\nDEVNAME=sr0\nDEVTYPE=disk"
}
}
}
}

1116
examples/kriek.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,576 @@
{
"network": {
"eth0": {
"hardware": {
"DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1.1/3-2.1.1:1.0/net/eth0",
"ID_BUS": "usb",
"ID_MM_CANDIDATE": "1",
"ID_MODEL": "AX88179",
"ID_MODEL_ENC": "AX88179",
"ID_MODEL_ID": "1790",
"ID_NET_NAME_MAC": "enx000acd264533",
"ID_NET_NAME_PATH": "enp0s20u2u1u1",
"ID_OUI_FROM_DATABASE": "Sunrich Technology Limited",
"ID_REVISION": "0100",
"ID_SERIAL": "ASIX_Elec._Corp._AX88179_00000000000001",
"ID_SERIAL_SHORT": "00000000000001",
"ID_TYPE": "generic",
"ID_USB_CLASS_FROM_DATABASE": "Vendor Specific Class",
"ID_USB_DRIVER": "ax88179_178a",
"ID_USB_INTERFACES": ":ffff00:",
"ID_USB_INTERFACE_NUM": "00",
"ID_USB_SUBCLASS_FROM_DATABASE": "Vendor Specific Subclass",
"ID_VENDOR": "ASIX_Elec._Corp.",
"ID_VENDOR_ENC": "ASIX\\x20Elec.\\x20Corp.",
"ID_VENDOR_FROM_DATABASE": "ASIX Electronics Corp.",
"ID_VENDOR_ID": "0b95",
"IFINDEX": "3",
"INTERFACE": "eth0",
"SUBSYSTEM": "net",
"USEC_INITIALIZED": "33255",
"attrs": {
"addr_assign_type": "0",
"addr_len": "6",
"address": "00:0a:cd:26:45:33",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": "1",
"dev_id": "0x0",
"device": null,
"dormant": "0",
"duplex": "full",
"flags": "0x1003",
"ifalias": "",
"ifindex": "3",
"iflink": "3",
"link_mode": "0",
"mtu": "1500",
"netdev_group": "0",
"operstate": "up",
"phys_port_id": null,
"speed": "1000",
"subsystem": "net",
"tx_queue_len": "1000",
"type": "1",
"uevent": "INTERFACE=eth0\nIFINDEX=3"
}
},
"ip": {
"addr": "192.168.11.58",
"broadcast": "192.168.11.255",
"netmask": "255.255.255.0"
},
"type": "eth"
},
"lo": {
"hardware": {
"DEVPATH": "/devices/virtual/net/lo",
"ID_MM_CANDIDATE": "1",
"IFINDEX": "1",
"INTERFACE": "lo",
"SUBSYSTEM": "net",
"USEC_INITIALIZED": "11311",
"attrs": {
"addr_assign_type": "0",
"addr_len": "6",
"address": "00:00:00:00:00:00",
"broadcast": "00:00:00:00:00:00",
"carrier": "1",
"dev_id": "0x0",
"dormant": "0",
"duplex": null,
"flags": "0x9",
"ifalias": "",
"ifindex": "1",
"iflink": "1",
"link_mode": "0",
"mtu": "65536",
"netdev_group": "0",
"operstate": "unknown",
"phys_port_id": null,
"speed": null,
"subsystem": "net",
"tx_queue_len": "0",
"type": "772",
"uevent": "INTERFACE=lo\nIFINDEX=1"
}
},
"ip": {
"addr": "127.0.0.1",
"netmask": "255.0.0.0",
"peer": "127.0.0.1"
},
"type": "lo"
},
"lxcbr0": {
"hardware": {
"DEVPATH": "/devices/virtual/net/lxcbr0",
"DEVTYPE": "bridge",
"ID_MM_CANDIDATE": "1",
"IFINDEX": "4",
"INTERFACE": "lxcbr0",
"SUBSYSTEM": "net",
"USEC_INITIALIZED": "75746",
"attrs": {
"addr_assign_type": "1",
"addr_len": "6",
"address": "b2:ff:62:85:c0:08",
"brforward": "",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": "1",
"dev_id": "0x0",
"dormant": "0",
"duplex": null,
"flags": "0x1003",
"ifalias": "",
"ifindex": "4",
"iflink": "4",
"link_mode": "0",
"mtu": "1500",
"netdev_group": "0",
"operstate": "unknown",
"phys_port_id": null,
"speed": null,
"subsystem": "net",
"tx_queue_len": "0",
"type": "1",
"uevent": "DEVTYPE=bridge\nINTERFACE=lxcbr0\nIFINDEX=4"
}
},
"ip": {
"addr": "10.0.3.1",
"broadcast": "10.0.3.1",
"netmask": "255.255.255.0"
},
"type": "bridge"
},
"tun0": {
"hardware": {
"DEVPATH": "/devices/virtual/net/tun0",
"ID_MM_CANDIDATE": "1",
"IFINDEX": "7",
"INTERFACE": "tun0",
"SUBSYSTEM": "net",
"USEC_INITIALIZED": "277564657499",
"attrs": {
"addr_assign_type": "0",
"addr_len": "0",
"address": "",
"broadcast": "",
"carrier": "1",
"dev_id": "0x0",
"dormant": "0",
"duplex": "full",
"flags": "0x1091",
"group": "-1",
"ifalias": "",
"ifindex": "7",
"iflink": "7",
"link_mode": "0",
"mtu": "1500",
"netdev_group": "0",
"operstate": "unknown",
"owner": "-1",
"phys_port_id": null,
"speed": "10",
"subsystem": "net",
"tun_flags": "0x2001",
"tx_queue_len": "100",
"type": "65534",
"uevent": "INTERFACE=tun0\nIFINDEX=7"
}
},
"ip": {
"addr": "10.172.64.178",
"netmask": "255.255.192.0",
"peer": "10.172.127.255"
},
"type": "tun"
},
"virbr0": {
"hardware": {
"DEVPATH": "/devices/virtual/net/virbr0",
"DEVTYPE": "bridge",
"ID_MM_CANDIDATE": "1",
"IFINDEX": "5",
"INTERFACE": "virbr0",
"SUBSYSTEM": "net",
"USEC_INITIALIZED": "45457",
"attrs": {
"addr_assign_type": "1",
"addr_len": "6",
"address": "2a:fe:07:89:d2:81",
"brforward": "",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": "0",
"dev_id": "0x0",
"dormant": "0",
"duplex": null,
"flags": "0x1003",
"ifalias": "",
"ifindex": "5",
"iflink": "5",
"link_mode": "0",
"mtu": "1500",
"netdev_group": "0",
"operstate": "down",
"phys_port_id": null,
"speed": null,
"subsystem": "net",
"tx_queue_len": "0",
"type": "1",
"uevent": "DEVTYPE=bridge\nINTERFACE=virbr0\nIFINDEX=5"
}
},
"ip": {
"addr": "192.168.122.1",
"broadcast": "192.168.122.255",
"netmask": "255.255.255.0"
},
"type": "bridge"
},
"wlan0": {
"hardware": {
"DEVPATH": "/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0",
"DEVTYPE": "wlan",
"ID_BUS": "pci",
"ID_MM_CANDIDATE": "1",
"ID_MODEL_FROM_DATABASE": "Centrino Advanced-N 6205 [Taylor Peak]",
"ID_MODEL_ID": "0x0085",
"ID_NET_NAME_MAC": "wlx843a4bcd1778",
"ID_NET_NAME_PATH": "wlp3s0",
"ID_OUI_FROM_DATABASE": "Intel Corporate",
"ID_PCI_CLASS_FROM_DATABASE": "Network controller",
"ID_PCI_SUBCLASS_FROM_DATABASE": "Network controller",
"ID_VENDOR_FROM_DATABASE": "Intel Corporation",
"ID_VENDOR_ID": "0x8086",
"IFINDEX": "2",
"INTERFACE": "wlan0",
"SUBSYSTEM": "net",
"USEC_INITIALIZED": "60258",
"attrs": {
"addr_assign_type": "0",
"addr_len": "6",
"address": "84:3a:4b:cd:17:78",
"broadcast": "ff:ff:ff:ff:ff:ff",
"carrier": "1",
"dev_id": "0x0",
"device": null,
"dormant": "0",
"duplex": null,
"flags": "0x1003",
"ifalias": "",
"ifindex": "2",
"iflink": "2",
"link_mode": "1",
"mtu": "1500",
"netdev_group": "0",
"operstate": "up",
"phy80211": null,
"phys_port_id": null,
"speed": null,
"subsystem": "net",
"tx_queue_len": "1000",
"type": "1",
"uevent": "DEVTYPE=wlan\nINTERFACE=wlan0\nIFINDEX=2"
}
},
"ip": {
"addr": "192.168.11.42",
"broadcast": "192.168.11.255",
"netmask": "255.255.255.0"
},
"type": "wlan"
}
},
"storage": {
"/dev/sda": {
"DEVLINKS": "/dev/disk/by-id/ata-SanDisk_SD5SG2128G1052E_133507400177 /dev/disk/by-id/wwn-0x5001b44a213e3df1",
"DEVNAME": "/dev/sda",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"DEVTYPE": "disk",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_APM": "1",
"ID_ATA_FEATURE_SET_APM_CURRENT_VALUE": "254",
"ID_ATA_FEATURE_SET_APM_ENABLED": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "12",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "2",
"ID_ATA_FEATURE_SET_SECURITY_FROZEN": "1",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "0",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_MODEL": "SanDisk_SD5SG2128G1052E",
"ID_MODEL_ENC": "SanDisk\\x20SD5SG2128G1052E\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_TABLE_TYPE": "dos",
"ID_REVISION": "10.04.01",
"ID_SERIAL": "SanDisk_SD5SG2128G1052E_133507400177",
"ID_SERIAL_SHORT": "133507400177",
"ID_TYPE": "disk",
"ID_WWN": "0x5001b44a213e3df1",
"ID_WWN_WITH_EXTENSION": "0x5001b44a213e3df1",
"MAJOR": "8",
"MINOR": "0",
"SUBSYSTEM": "block",
"UDISKS_ATA_SMART_IS_AVAILABLE": "1",
"UDISKS_PARTITION_TABLE": "1",
"UDISKS_PARTITION_TABLE_COUNT": "3",
"UDISKS_PARTITION_TABLE_SCHEME": "mbr",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "50985",
"attrs": {
"alignment_offset": "0",
"bdi": null,
"capability": "50",
"dev": "8:0",
"device": null,
"discard_alignment": "0",
"events": "",
"events_async": "",
"events_poll_msecs": "-1",
"ext_range": "256",
"inflight": " 0 0",
"range": "16",
"removable": "0",
"ro": "0",
"size": "128035676160",
"stat": " 5346540 346209 229685278 3580544 2106070 1770997 536661832 36300664 0 3541536 39891028",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=0\nDEVNAME=sda\nDEVTYPE=disk"
}
},
"/dev/sda1": {
"DEVLINKS": "/dev/disk/by-id/ata-SanDisk_SD5SG2128G1052E_133507400177-part1 /dev/disk/by-id/wwn-0x5001b44a213e3df1-part1 /dev/disk/by-uuid/aa553e3a-3e79-4f9f-8be3-e40e357c06f7",
"DEVNAME": "/dev/sda1",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1",
"DEVTYPE": "partition",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_APM": "1",
"ID_ATA_FEATURE_SET_APM_CURRENT_VALUE": "128",
"ID_ATA_FEATURE_SET_APM_ENABLED": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "12",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "2",
"ID_ATA_FEATURE_SET_SECURITY_FROZEN": "1",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "0",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_FS_TYPE": "ext4",
"ID_FS_USAGE": "filesystem",
"ID_FS_UUID": "aa553e3a-3e79-4f9f-8be3-e40e357c06f7",
"ID_FS_UUID_ENC": "aa553e3a-3e79-4f9f-8be3-e40e357c06f7",
"ID_FS_VERSION": "1.0",
"ID_MODEL": "SanDisk_SD5SG2128G1052E",
"ID_MODEL_ENC": "SanDisk\\x20SD5SG2128G1052E\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_ENTRY_DISK": "8:0",
"ID_PART_ENTRY_FLAGS": "0x80",
"ID_PART_ENTRY_NUMBER": "1",
"ID_PART_ENTRY_OFFSET": "2048",
"ID_PART_ENTRY_SCHEME": "dos",
"ID_PART_ENTRY_SIZE": "233910272",
"ID_PART_ENTRY_TYPE": "0x83",
"ID_PART_TABLE_TYPE": "dos",
"ID_REVISION": "10.04.01",
"ID_SERIAL": "SanDisk_SD5SG2128G1052E_133507400177",
"ID_SERIAL_SHORT": "133507400177",
"ID_TYPE": "disk",
"ID_WWN": "0x5001b44a213e3df1",
"ID_WWN_WITH_EXTENSION": "0x5001b44a213e3df1",
"MAJOR": "8",
"MINOR": "1",
"SUBSYSTEM": "block",
"UDISKS_PARTITION": "1",
"UDISKS_PARTITION_ALIGNMENT_OFFSET": "0",
"UDISKS_PARTITION_FLAGS": "boot",
"UDISKS_PARTITION_NUMBER": "1",
"UDISKS_PARTITION_OFFSET": "1048576",
"UDISKS_PARTITION_SCHEME": "mbr",
"UDISKS_PARTITION_SIZE": "119762059264",
"UDISKS_PARTITION_SLAVE": "/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"UDISKS_PARTITION_TYPE": "0x83",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "51007",
"attrs": {
"alignment_offset": "0",
"dev": "8:1",
"discard_alignment": "0",
"inflight": " 0 0",
"partition": "1",
"ro": "0",
"size": "119762059264",
"start": "2048",
"stat": " 5276564 32864 226617690 3531412 1987700 1303538 532766640 36118768 0 3425928 39664340",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=1\nDEVNAME=sda1\nDEVTYPE=partition"
}
},
"/dev/sda2": {
"DEVLINKS": "/dev/disk/by-id/ata-SanDisk_SD5SG2128G1052E_133507400177-part2 /dev/disk/by-id/wwn-0x5001b44a213e3df1-part2",
"DEVNAME": "/dev/sda2",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2",
"DEVTYPE": "partition",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_APM": "1",
"ID_ATA_FEATURE_SET_APM_CURRENT_VALUE": "128",
"ID_ATA_FEATURE_SET_APM_ENABLED": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "12",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "2",
"ID_ATA_FEATURE_SET_SECURITY_FROZEN": "1",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "0",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_MODEL": "SanDisk_SD5SG2128G1052E",
"ID_MODEL_ENC": "SanDisk\\x20SD5SG2128G1052E\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_ENTRY_DISK": "8:0",
"ID_PART_ENTRY_NUMBER": "2",
"ID_PART_ENTRY_OFFSET": "233914366",
"ID_PART_ENTRY_SCHEME": "dos",
"ID_PART_ENTRY_SIZE": "16154626",
"ID_PART_ENTRY_TYPE": "0x5",
"ID_PART_TABLE_TYPE": "dos",
"ID_REVISION": "10.04.01",
"ID_SERIAL": "SanDisk_SD5SG2128G1052E_133507400177",
"ID_SERIAL_SHORT": "133507400177",
"ID_TYPE": "disk",
"ID_WWN": "0x5001b44a213e3df1",
"ID_WWN_WITH_EXTENSION": "0x5001b44a213e3df1",
"MAJOR": "8",
"MINOR": "2",
"SUBSYSTEM": "block",
"UDISKS_PARTITION": "1",
"UDISKS_PARTITION_ALIGNMENT_OFFSET": "0",
"UDISKS_PARTITION_NUMBER": "2",
"UDISKS_PARTITION_OFFSET": "119764155392",
"UDISKS_PARTITION_SCHEME": "mbr",
"UDISKS_PARTITION_SIZE": "8271168512",
"UDISKS_PARTITION_SLAVE": "/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"UDISKS_PARTITION_TYPE": "0x05",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "51022",
"attrs": {
"alignment_offset": "0",
"dev": "8:2",
"discard_alignment": "0",
"inflight": " 0 0",
"partition": "2",
"ro": "0",
"size": "1024",
"start": "233914366",
"stat": " 2 0 4 0 0 0 0 0 0 0 0",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=2\nDEVNAME=sda2\nDEVTYPE=partition"
}
},
"/dev/sda5": {
"DEVLINKS": "/dev/disk/by-id/ata-SanDisk_SD5SG2128G1052E_133507400177-part5 /dev/disk/by-id/wwn-0x5001b44a213e3df1-part5 /dev/disk/by-uuid/d7de9528-c3f7-40ea-a43d-59c7d7beb216",
"DEVNAME": "/dev/sda5",
"DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda5",
"DEVTYPE": "partition",
"ID_ATA": "1",
"ID_ATA_DOWNLOAD_MICROCODE": "1",
"ID_ATA_FEATURE_SET_APM": "1",
"ID_ATA_FEATURE_SET_APM_CURRENT_VALUE": "128",
"ID_ATA_FEATURE_SET_APM_ENABLED": "1",
"ID_ATA_FEATURE_SET_HPA": "1",
"ID_ATA_FEATURE_SET_HPA_ENABLED": "1",
"ID_ATA_FEATURE_SET_PM": "1",
"ID_ATA_FEATURE_SET_PM_ENABLED": "1",
"ID_ATA_FEATURE_SET_SECURITY": "1",
"ID_ATA_FEATURE_SET_SECURITY_ENABLED": "0",
"ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN": "12",
"ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN": "2",
"ID_ATA_FEATURE_SET_SECURITY_FROZEN": "1",
"ID_ATA_FEATURE_SET_SMART": "1",
"ID_ATA_FEATURE_SET_SMART_ENABLED": "1",
"ID_ATA_ROTATION_RATE_RPM": "0",
"ID_ATA_SATA": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN1": "1",
"ID_ATA_SATA_SIGNAL_RATE_GEN2": "1",
"ID_ATA_WRITE_CACHE": "1",
"ID_ATA_WRITE_CACHE_ENABLED": "1",
"ID_BUS": "ata",
"ID_FS_TYPE": "swap",
"ID_FS_USAGE": "other",
"ID_FS_UUID": "d7de9528-c3f7-40ea-a43d-59c7d7beb216",
"ID_FS_UUID_ENC": "d7de9528-c3f7-40ea-a43d-59c7d7beb216",
"ID_FS_VERSION": "2",
"ID_MODEL": "SanDisk_SD5SG2128G1052E",
"ID_MODEL_ENC": "SanDisk\\x20SD5SG2128G1052E\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20",
"ID_PART_ENTRY_DISK": "8:0",
"ID_PART_ENTRY_NUMBER": "5",
"ID_PART_ENTRY_OFFSET": "233914368",
"ID_PART_ENTRY_SCHEME": "dos",
"ID_PART_ENTRY_SIZE": "16154624",
"ID_PART_ENTRY_TYPE": "0x82",
"ID_PART_TABLE_TYPE": "dos",
"ID_REVISION": "10.04.01",
"ID_SERIAL": "SanDisk_SD5SG2128G1052E_133507400177",
"ID_SERIAL_SHORT": "133507400177",
"ID_TYPE": "disk",
"ID_WWN": "0x5001b44a213e3df1",
"ID_WWN_WITH_EXTENSION": "0x5001b44a213e3df1",
"MAJOR": "8",
"MINOR": "5",
"SUBSYSTEM": "block",
"UDISKS_PARTITION": "1",
"UDISKS_PARTITION_ALIGNMENT_OFFSET": "0",
"UDISKS_PARTITION_NUMBER": "5",
"UDISKS_PARTITION_OFFSET": "119764156416",
"UDISKS_PARTITION_SCHEME": "mbr",
"UDISKS_PARTITION_SIZE": "8271167488",
"UDISKS_PARTITION_SLAVE": "/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
"UDISKS_PARTITION_TYPE": "0x82",
"UDISKS_PRESENTATION_NOPOLICY": "0",
"USEC_INITIALIZED": "51035",
"attrs": {
"alignment_offset": "0",
"dev": "8:5",
"discard_alignment": "0",
"inflight": " 0 0",
"partition": "5",
"ro": "0",
"size": "8271167488",
"start": "233914368",
"stat": " 69635 313345 3064872 49080 19439 467459 3895192 91368 0 71388 140388",
"subsystem": "block",
"uevent": "MAJOR=8\nMINOR=5\nDEVNAME=sda5\nDEVTYPE=partition"
}
}
}
}

View File

@ -30,10 +30,11 @@ BIOS_GRUB_SIZE_BYTES = 2 * 1024 * 1024 # 2MiB
class FilesystemController(ControllerPolicy):
def __init__(self, ui, signal):
def __init__(self, ui, signal, prober):
self.ui = ui
self.signal = signal
self.model = FilesystemModel()
self.prober = prober
self.model = FilesystemModel(prober)
def filesystem(self, reset=False):
# FIXME: Is this the best way to zero out this list for a reset?

View File

@ -20,10 +20,11 @@ from subiquity.ui.dummy import DummyView
class NetworkController(ControllerPolicy):
def __init__(self, ui, signal):
def __init__(self, ui, signal, prober):
self.ui = ui
self.signal = signal
self.model = NetworkModel()
self.prober = prober
self.model = NetworkModel(self.prober)
def network(self):
title = "Network connections"

View File

@ -19,6 +19,7 @@ import urwid.curses_display
from tornado.ioloop import IOLoop
from subiquity.signals import Signal
from subiquity.palette import STYLES, STYLES_MONO
from subiquity.prober import Prober
# Modes import ----------------------------------------------------------------
from subiquity.controllers import (WelcomeController,
@ -41,11 +42,13 @@ class Controller:
self.ui = ui
self.opts = opts
self.signal = Signal()
self.prober = Prober(self.opts)
self.controllers = {
"welcome": WelcomeController(self.ui, self.signal),
"installpath": InstallpathController(self.ui, self.signal),
"network": NetworkController(self.ui, self.signal),
"filesystem": FilesystemController(self.ui, self.signal),
"network": NetworkController(self.ui, self.signal, self.prober),
"filesystem": FilesystemController(self.ui, self.signal,
self.prober),
"identity": IdentityController(self.ui, self.signal),
"progress": InstallProgressController(self.ui, self.signal,
self.opts)

View File

@ -75,6 +75,11 @@ class Disk():
sysblock = os.path.join('/sys/block', os.path.basename(devpath))
nr_blocks_f = os.path.join(sysblock, 'size')
block_sz_f = os.path.join(sysblock, 'queue', 'logical_block_size')
if not os.path.exists(sysblock):
log.warn('disk at devpath:{} not present'.format(devpath))
return 0
with open(nr_blocks_f, 'r') as r:
nr_blocks = int(r.read())
with open(block_sz_f, 'r') as r:
@ -162,7 +167,7 @@ class Blockdev():
def available(self):
''' return True if has free space or partitions not
assigned '''
if self.freespace > 0.0 or self.freepartition > 0.0:
if self.freespace > 0.0:
return True
return False

View File

@ -14,12 +14,9 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import json
import argparse
import logging
from .blockdev import Blockdev
from probert import prober
from probert.storage import StorageInfo
import math
from subiquity.model import ModelPolicy
@ -89,14 +86,11 @@ class FilesystemModel(ModelPolicy):
'leave unformatted'
]
def __init__(self):
self.storage = {}
def __init__(self, prober):
self.prober = prober
self.info = {}
self.devices = {}
self.options = argparse.Namespace(probe_storage=True,
probe_network=False)
self.prober = prober.Prober(self.options)
self.probe_storage()
self.storage = {}
def reset(self):
log.debug('FilesystemModel: resetting disks')
@ -115,8 +109,9 @@ class FilesystemModel(ModelPolicy):
return self.fs_menu
def probe_storage(self):
self.prober.probe()
self.storage = self.prober.get_results().get('storage')
log.debug('model.probe_storage: probing storage')
self.storage = self.prober.get_storage()
log.debug('got storage:\n{}'.format(self.storage))
# TODO: Put this into a logging namespace for probert
# since its quite a bit of log information.
# log.debug('storage probe data:\n{}'.format(
@ -131,15 +126,18 @@ class FilesystemModel(ModelPolicy):
log.debug('disk={}\n{}'.format(disk,
json.dumps(self.storage[disk], indent=4,
sort_keys=True)))
self.info[disk] = StorageInfo({disk: self.storage[disk]})
self.info[disk] = self.prober.get_storage_info(disk)
def get_disk(self, disk):
log.debug('probe_storage: get_disk()')
if disk not in self.devices:
self.devices[disk] = Blockdev(disk, self.info[disk].serial,
self.info[disk].model)
self.info[disk].model,
size=self.info[disk].size)
return self.devices[disk]
def get_partitions(self):
log.debug('probe_storage: get_partitions()')
partitions = []
for dev in self.devices.values():
partnames = [part.path for (num, part) in
@ -147,13 +145,14 @@ class FilesystemModel(ModelPolicy):
partitions += partnames
sorted(partitions)
log.debug('probe_storage: get_partitions() returns: {}'.format(partitions))
return partitions
def get_available_disks(self):
return sorted(self.info.keys())
def get_used_disks(self):
return [dev.disk.path for dev in self.devices.values()
return [dev.disk.devpath for dev in self.devices.values()
if dev.available is False]
def get_disk_info(self, disk):

View File

@ -14,8 +14,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
import argparse
from probert import prober
from subiquity.model import ModelPolicy
@ -61,11 +59,9 @@ class NetworkModel(ModelPolicy):
'install_network_driver')
]
def __init__(self):
def __init__(self, prober):
self.prober = prober
self.network = {}
self.options = argparse.Namespace(probe_storage=False,
probe_network=True)
self.prober = prober.Prober(self.options)
def get_signal_by_name(self, selection):
for x, y, z in self.get_signals():
@ -79,8 +75,8 @@ class NetworkModel(ModelPolicy):
return self.additional_options
def probe_network(self):
self.prober.probe()
self.network = self.prober.get_results().get('network')
log.debug('model calling prober.get_network()')
self.network = self.prober.get_network()
def get_interfaces(self):
VALID_NIC_TYPES = ['eth', 'wlan']

64
subiquity/prober.py Normal file
View File

@ -0,0 +1,64 @@
# Copyright 2015 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
import json
import os
from probert.storage import (Storage,
StorageInfo)
from probert.network import (Network,
NetworkInfo)
log = logging.getLogger('subiquity.prober')
class Prober():
def __init__(self, opts):
self.opts = opts
self.probe_data = {}
if self.opts.machine_config:
log.debug('User specified machine_config: {}'.format(
self.opts.machine_config))
if os.path.exists(self.opts.machine_config):
with open(self.opts.machine_config) as mc:
self.probe_data = json.load(mc)
log.debug('Prober() init finished, data:{}'.format(self.probe_data))
def get_network(self):
if 'network' not in self.probe_data:
log.debug('get_network: no network in probe_data, fetching')
network = Network()
results = network.probe()
self.probe_data['network'] = results
return self.probe_data['network']
def get_network_info(self, device):
''' Load a NetworkInfo class for specified device '''
return NetworkInfo({device: self.get_network().get(device)})
def get_storage(self):
''' Load a StorageInfo class. Probe if it's not present '''
if 'storage' not in self.probe_data:
log.debug('get_storage: no storage in probe_data, fetching')
storage = Storage()
results = storage.probe()
self.probe_data['storage'] = results
return self.probe_data['storage']
def get_storage_info(self, device):
''' Load a StorageInfo class for specified device '''
return StorageInfo({device: self.get_storage().get(device)})

View File

@ -284,9 +284,11 @@ class DiskPartitionView(WidgetWrap):
class FilesystemView(ViewPolicy):
def __init__(self, model, signal):
log.debug('FileSystemView init start()')
self.model = model
self.signal = signal
self.items = []
self.model.probe_storage() # probe before we complete
self.body = [
Padding.center_79(Text("FILE SYSTEM")),
Padding.center_79(self._build_partition_list()),
@ -296,27 +298,35 @@ class FilesystemView(ViewPolicy):
Padding.line_break(""),
Padding.center_79(self._build_menu()),
Padding.line_break(""),
self._build_used_disks(),
Padding.center_79(self._build_used_disks()),
Padding.center_15(self._build_buttons()),
]
super().__init__(ListBox(self.body))
log.debug('FileSystemView init complete()')
def _build_used_disks(self):
log.debug('FileSystemView: building used disks')
pl = []
for disk in self.model.get_used_disks():
pl.append(Text(disk.path))
log.debug('used disk: {}'.format(disk))
pl.append(Text(disk))
if len(pl):
return Padding.center_79(Text("USED DISKS"),
Padding.line_break(""),
Pile(pl))
return Pile([Text("USED DISKS"),
Padding.line_break("")] + pl +
[Padding.line_break("")]
)
return Pile(pl)
def _build_partition_list(self):
log.debug('FileSystemView: building part list')
pl = []
if len(self.model.get_partitions()) == 0:
pl.append(Color.info_minor(
Text("No disks or partitions mounted")))
log.debug('FileSystemView: no partitions')
return Pile(pl)
log.debug('FileSystemView: weve got partitions!')
for dev in self.model.devices.values():
for mnt, size, fstype, path in dev.get_fs_table():
mnt = Text(mnt)
@ -330,9 +340,11 @@ class FilesystemView(ViewPolicy):
mnt
], 4)
pl.append(partition_column)
log.debug('FileSystemView: build-part-list done')
return Pile(pl)
def _build_buttons(self):
log.debug('FileSystemView: building buttons')
buttons = [
Color.button(done_btn(on_press=self.done),
focus_map='button focus'),
@ -351,6 +363,7 @@ class FilesystemView(ViewPolicy):
return (rounded, percent)
def _build_model_inputs(self):
log.debug('FileSystemView: building model inputs')
col_1 = []
col_2 = []
@ -378,6 +391,7 @@ class FilesystemView(ViewPolicy):
return Columns([(15, col_1), col_2], 2)
def _build_menu(self):
log.debug('FileSystemView: building menu')
opts = []
for opt, sig, _ in self.model.get_menu():
opts.append(