Compare commits

..

No commits in common. "master" and "fix/hp-raid-ignore-errors-2" have entirely different histories.

53 changed files with 16359 additions and 293 deletions

25
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View file

@ -0,0 +1,25 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Configuration file**
Paste here your netbox agent configuration file
**Environment:**
- OS: [e.g. Ubuntu 18.04]
- Netbox agent version [e.g. master, v0.6.0]
**Additional context**
Add any other context about the problem here.

183
.gitignore vendored Normal file
View file

@ -0,0 +1,183 @@
# Created by https://www.gitignore.io/api/emacs,python
# Edit at https://www.gitignore.io/?templates=emacs,python
### Emacs ###
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
# Org-mode
.org-id-locations
*_archive
# flymake-mode
*_flymake.*
# eshell files
/eshell/history
/eshell/lastdir
# elpa packages
/elpa/
# reftex files
*.rel
# AUCTeX auto folder
/auto/
# cask packages
.cask/
dist/
# Flycheck
flycheck_*.el
# server auth directory
/server/
# projectiles files
.projectile
# directory configuration
.dir-locals.el
# network security
/network-security.data
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# End of https://www.gitignore.io/api/emacs,python
netbox-docker

38
.travis.yml Normal file
View file

@ -0,0 +1,38 @@
sudo: false
dist: xenial
language: python
services:
- docker
matrix:
include:
- python: 3.5
env: TOXENV=pytest
- python: 3.6
env: TOXENV=pytest
- python: 3.7
env: TOXENV=pytest
- python: pypy3
env: TOXENV=pytest
- python: 3.5
env: TOXENV=flake8
- python: 3.7
env: TOXENV=flake8
cache:
directories:
- $HOME/.cache/pip
install:
- pip install tox
- if [[ $TOXENV == pytest ]]; then pip install coveralls; fi
script:
- tox
notifications:
email: false
after_success:
- if [[ $TOXENV == pytest ]]; then coveralls; fi

1
MANIFEST.in Normal file
View file

@ -0,0 +1 @@
include requirements.txt

299
README.md
View file

@ -1,25 +1,292 @@
[![netbox](https://badgen.net/badge/netbox/3.7+/blue)](https://hosterra.dev/Hosterra/netbox-agent) # Netbox agent [![Build Status](https://travis-ci.com/Solvik/netbox-agent.svg?branch=master)](https://travis-ci.com/Solvik/netbox-agent)
[![php](https://badgen.net/badge/python/3.11/yellow)](https://hosterra.dev/Hosterra/netbox-agent)
[![license](https://badgen.net/badge/license/Apache%202.0/green)](https://hosterra.dev/Hosterra/netbox-agent/src/branch/master/LICENSE.md)
# NetBox agent for Hosterra This project aims to create hardware automatically into [Netbox](https://github.com/netbox-community/netbox) based on standard tools (dmidecode, lldpd, parsing /sys/, etc).
This project is a customized version of [NetBox Agent](https://github.com/Solvik/netbox-agent). The goal is to generate an existing infrastructure on Netbox and have the ability to update it regularly by executing the agent.
It is useable as-is on [Hosterra](https://hosterra.eu)'s infrastructures, or you can use it as base for your own customizations.
## Why? # Features
The main differences with the original agent are: * Create virtual machines, servers, chassis and blade through standard tools (`dmidecode`)
* Create physical, bonding and vlan network interfaces with IPs (IPv4 & IPv6)
* Create IPMI interface if found
* Create or get existing VLAN and associate it to interfaces
* Generic ability to guess datacenters and rack location through drivers (`cmd` and `file` and custom ones)
* Update existing `Device` and `Interface`
* Handle blade moving (new slot, new chassis)
* Handle blade GPU expansions
* Automatic cabling (server's interface to switch's interface) using lldp
* Local inventory using `Inventory Item` for CPU, GPU, RAM, RAID cards, physical disks (behind raid cards)
* PSUs creation and power consumption reporting (based on vendor's tools)
- it don't mess with devices roles # Requirements
- setting `inventory = false` will actually block (i.e. do not even try to start) inventory process
- it implements Scaleway and OpenStack Foundation as manufacturers, so it's possible to provision instances as devices (not vm)
## Notes - Netbox >= 2.6
On Hosterra servers, it is not used in Python virtual envs. So you have to globally install the following libs: - Python >= 3.4
- [pynetbox](https://github.com/digitalocean/pynetbox/)
- [python3-netaddr](https://github.com/drkjam/netaddr)
- [python3-netifaces](https://github.com/al45tair/netifaces)
- [jsonargparse](https://github.com/omni-us/jsonargparse/)
`ethtool dmidecode ipmitool lldpd lshw epel-release python3.11 python3.11-pip python3.11-devel`. - ethtool
- dmidecode
- ipmitool
- lldpd
- lshw
Then you need to install modules with: ## Inventory requirement
- hpassacli
- storcli
- omreport
`pip3.11 install jsonargparse pynetbox python-slugify netaddr netifaces pyyaml configargparse packaging`. # Installation
```
# pip3 install netbox-agent
```
# Usage
The agent can be run from a shell and get its configuration from either the configuration file or environment variables.
Configuration values are overridden based on the following precedence: command line arguments (might include config file) > environment variables > default config file > defaults.
```
# netbox_agent -c /etc/netbox_agent.yaml --register
INFO:root:Creating chassis blade (serial: QTFCQ574502EF)
INFO:root:Creating blade (serial: QTFCQ574502D2) myserver on chassis QTFCQ574502EF
INFO:root:Setting device (QTFCQ574502D2) new slot on Slot 9 (Chassis QTFCQ574502EF)..
INFO:root:Interface a8:1e:84:f2:9e:6a not found, creating..
INFO:root:Creating NIC enp1s0f1 (a8:1e:84:f2:9e:6a) on myserver
INFO:root:Interface 02:42:7a:89:cf:a4 not found, creating..
INFO:root:Creating NIC br-07ea1e4a2f0e (02:42:7a:89:cf:a4) on myserver
INFO:root:Create new IP 172.19.0.1/16 on br-07ea1e4a2f0e
INFO:root:Interface a8:1e:84:f2:9e:69 not found, creating..
INFO:root:Creating NIC enp1s0f0 (a8:1e:84:f2:9e:69) on myserver
INFO:root:Create new IP 42.42.42.42/24 on enp1s0f0
INFO:root:Create new IP fe80::aa1e:84ff:fef2:9e69/64 on enp1s0f0
INFO:root:Interface a8:1e:84:cd:9d:d6 not found, creating..
INFO:root:Creating NIC IPMI (a8:1e:84:cd:9d:d6) on myserver
INFO:root:Create new IP 10.191.122.10/24 on IPMI
```
If you need, you can update only specific informations like:
* Network
* Inventory
* Location
* PSUs
```
# ip a add 42.42.42.43/24 dev enp1s0f1
# netbox_agent -c /etc/netbox_agent.yaml --update-network
INFO:root:Create new IP 42.42.42.43/24 on enp1s0f1
# netbox_agent --update-inventory
INFO:root:Creating Disk Samsung SSD 850 S2RBNX0K101698D
```
# Configuration
```
# Netbox configuration
netbox:
url: 'http://netbox.internal.company.com'
token: supersecrettoken
# uncomment to disable ssl verification
# ssl_verify: false
# uncomment to use the system's CA certificates
# ssl_ca_certs_file: /etc/ssl/certs/ca-certificates.crt
# Network configuration
network:
# Regex to ignore interfaces
ignore_interfaces: "(dummy.*|docker.*)"
# Regex to ignore IP addresses
ignore_ips: (127\.0\.0\..*)
# enable auto-cabling by parsing LLDP answers
lldp: true
#
# You can use these to change the Netbox roles.
# These are the defaults.
#
#device:
# chassis_role: "Server Chassis"
# blade_role: "Blade"
# server_role: "Server"
# tags: server, blade, ,just a comma,delimited,list
# custom_fields: field1=value1,field2=value2#
#
# Can use this to set the tenant
#
#tenant:
# driver: "file:/tmp/tenant"
# regex: "(.*)"
## Enable virtual machine support
# virtual:
# # not mandatory, can be guessed
# enabled: True
# # see https://netbox.company.com/virtualization/clusters/
# cluster_name: my_vm_cluster
# Enable datacenter location feature in Netbox
datacenter_location:
driver: "cmd:cat /etc/qualification | tr [A-Z] [a-z]"
regex: "datacenter: (?P<datacenter>[A-Za-z0-9]+)"
# driver: 'cmd:lldpctl'
# regex: 'SysName: .*\.([A-Za-z0-9]+)'
#
# driver: "file:/tmp/datacenter"
# regex: "(.*)"
# Enable rack location feature in Netbox
rack_location:
# driver: 'cmd:lldpctl'
# match SysName: sw-dist-a1.dc42
# regex: 'SysName:[ ]+[A-Za-z]+-[A-Za-z]+-([A-Za-z0-9]+)'
#
# driver: "file:/tmp/datacenter"
# regex: "(.*)"
# Enable local inventory reporting
inventory: true
```
# Specific workflow
## Blades
Each vendor class has a `is_blade` method which is later used for `Device` creation using the Netbox [parent/child feature](https://netbox.readthedocs.io/en/stable/core-functionality/devices/).
The `get_blade_slot` method return the name of the `Device Bay`.
Certain vendors don't report the blade slot in `dmidecode`, so we can use the `slot_location` regex feature of the configuration file.
Some blade servers can be equipped with additional hardware using expansion blades, next to the processing blade, such as GPU expansion, or drives bay expansion. By default, the hardware from the expnasion is associated with the blade server itself, but it's possible to register the expansion as its own device using the `--expansion-as-device` command line parameter, or by setting `expansion_as_device` to `true` in the configuration file.
## Drives attributes processing
It is possible to process drives extended attributes such as the drive's physical or logical identifier, logical drive RAID type, size, consistency and so on.
Those attributes as set as `custom_fields` in Netbox, and need to be registered properly before being able to specify them during the inventory phase.
As the custom fields have to be created prior being able to register the disks extended attributes, this feature is only activated using the `--process-virtual-drives` command line parameter, or by setting `process_virtual_drives` to `true` in the configuration file.
The custom fields to create as `DCIM > inventory item` `Text` are described below.
```
NAME LABEL DESCRIPTION
mount_point Mount point Device mount point(s)
pd_identifier Physical disk identifier Physical disk identifier in the RAID controller
vd_array Virtual drive array Virtual drive array the disk is member of
vd_consistency Virtual drive consistency Virtual disk array consistency
vd_device Virtual drive device Virtual drive system device
vd_raid_type Virtual drive RAID Virtual drive array RAID type
vd_size Virtual drive size Virtual drive array size
```
In the current implementation, the disks attributes ore not updated: if a disk with the correct serial number is found, it's sufficient to consider it as up to date.
To force the reprocessing of the disks extended attributes, the `--force-disk-refresh` command line option can be used: it removes all existing disks to before populating them with the correct parsing. Unless this option is specified, the extended attributes won't be modified unless a disk is replaced.
It is possible to dump the physical/virtual disks map on the filesystem under the JSON notation to ease or automate disks management. The file path has to be provided using the `--dump-disks-map` command line parameter.
## Anycast IP
The default behavior of the agent is to assign an interface to an IP.
So two servers with anycasted IPs, running update mode, would only trigger IP's interface assignement in a loop.
In order to handle this case, user need to set Netbox IP's mode to `Anycast` so that the agent will create another one if it's present on another server.
# Hardware
Tested on:
## Virtual Machines
* Hyper-V
* VMWare
* VirtualBox
* AWS
* GCP
## [Dell Inc.](https://github.com/Solvik/netbox-agent/blob/master/netbox_agent/vendors/dell.py)
### Blades
* PowerEdge MX7000
* PowerEdge M1000e (your `DeviceType` should have slots named `Slot 01` and so on)
* PowerEdge MX740c
* PowerEdge M640
* PowerEdge M630
* PowerEdge M620
* PowerEdge M610
### Pizzas
* DSS7500
## [HP / HPE](https://github.com/Solvik/netbox-agent/blob/master/netbox_agent/vendors/hp.py)
### Blades
* HP BladeSystem c7000 Enclosure G2 / G3 (your `DeviceType` should have slots named `Bay 1` and so on)
* HP ProLiant BL460c Gen8
* HP ProLiant BL460c Gen9
* HP ProLiant BL460c Gen10
* HP ProLiant BL460c Gen10 Graphics Exp its expansion HP ProLiant BL460c Graphics Expansion Blade
* HP Moonshot 1500 Enclosure (your `DeviceType` should have slots batch create with `Bay c[1-45n1]`) with HP ProLiant m750, m710x, m510 Server Cartridge
### Pizzas
* ProLiant DL380p Gen8
* ProLiant SL4540 Gen8
* ProLiant SL4540 Gen9
* ProLiant XL450 Gen10
## [Supermicro](https://github.com/Solvik/netbox-agent/blob/master/netbox_agent/vendors/supermicro.py)
### Blades
* SBI-* and SBA-* should be supported, but I need dmidecode output example to support automatic blade location
### Pizzas
* SSG-6028R
* SYS-6018R
## [QCT](https://github.com/Solvik/netbox-agent/blob/master/netbox_agent/vendors/qct.py)
### Blades
* QuantaMicro X10E-9N
### Pizzas
* Nothing ATM, feel free to send me a dmidecode or make a PR!
# Known limitations
* The project is only compatible with Linux.
Since it uses `ethtool` and parses `/sys/` directory, it's not compatible with *BSD distributions.
* Netbox `>=2.6.0,<=2.6.2` has a caching problem ; if the cache lifetime is too high, the script can get stale data after modification.
We advise to set `CACHE_TIME` to `0`.
# Developing
If you want to run the agent while adding features or just for debugging purposes
```
# git clone https://github.com/Solvik/netbox-agent.git
# cd netbox-agent
# python3 -m netbox_agent.cli --register
```
On a personal note, I use the docker image from [netbox-community/netbox-docker](https://github.com/netbox-community/netbox-docker)
```
# git clone https://github.com/netbox-community/netbox-docker
# cd netbox-docker
# docker-compose pull
# docker-compose up
```

7
dev-requirements.txt Normal file
View file

@ -0,0 +1,7 @@
-r requirements.txt
pytest
pytest-cov
flake8
flake8-isort
tox

53
netbox_agent.yaml.example Normal file
View file

@ -0,0 +1,53 @@
netbox:
url: 'http://netbox.internal.company.com'
token: supersecrettoken
# uncomment to disable ssl verification
# ssl_verify: false
network:
ignore_interfaces: "(dummy.*|docker.*)"
ignore_ips: (127\.0\.0\..*)
# enable auto-cabling
lldp: true
#
# You can use these to change the roles.
#
#device:
# chassis_role: "Server Chassis"
# blade_role: "Blade"
# server_role: "Server"
# tags: server, blade, ,just a comma,delimited,list
# custom_fields: field1=value1,field2=value2
#
#
# Use this to set the tenant
#
#tenant:
# driver: "file:/tmp/tenant"
# regex: "(.*)"
datacenter_location:
driver: "cmd:cat /etc/qualification | tr [A-Z] [a-z]"
regex: "datacenter: (?P<datacenter>[A-Za-z0-9]+)"
# driver: 'cmd:lldpctl'
# regex: 'SysName: .*\.([A-Za-z0-9]+)'
#
# driver: "file:/tmp/datacenter"
# regex: "(.*)"
rack_location:
# driver: 'cmd:lldpctl'
# match SysName: sw-dist-a1.dc42
# regex: 'SysName:[ ]+[A-Za-z]+-[A-Za-z]+-([A-Za-z0-9]+)'
#
# driver: "file:/tmp/datacenter"
# regex: "(.*)"
# Some servers dont report the slot, since most people put it in the hostname
# here's a way to extract it and maintain correct slot location in Netbox
# slot_location:
# driver: 'cmd:hostname'
# regex: '.*-(\d+)'
inventory: true

View file

@ -5,8 +5,6 @@ from netbox_agent.config import netbox_instance as nb
from netbox_agent.logging import logging # NOQA from netbox_agent.logging import logging # NOQA
from netbox_agent.vendors.dell import DellHost from netbox_agent.vendors.dell import DellHost
from netbox_agent.vendors.generic import GenericHost from netbox_agent.vendors.generic import GenericHost
from netbox_agent.vendors.scaleway import ScalewayHost
from netbox_agent.vendors.ovh import OvhHost
from netbox_agent.vendors.hp import HPHost from netbox_agent.vendors.hp import HPHost
from netbox_agent.vendors.qct import QCTHost from netbox_agent.vendors.qct import QCTHost
from netbox_agent.vendors.supermicro import SupermicroHost from netbox_agent.vendors.supermicro import SupermicroHost
@ -18,8 +16,6 @@ MANUFACTURERS = {
'HPE': HPHost, 'HPE': HPHost,
'Supermicro': SupermicroHost, 'Supermicro': SupermicroHost,
'Quanta Cloud Technology Inc.': QCTHost, 'Quanta Cloud Technology Inc.': QCTHost,
'Scaleway': ScalewayHost,
'OpenStack Foundation': OvhHost,
'Generic': GenericHost, 'Generic': GenericHost,
} }
@ -32,12 +28,16 @@ def run(config):
raise Exception('virtual.cluster_name parameter is mandatory because it\'s a VM') raise Exception('virtual.cluster_name parameter is mandatory because it\'s a VM')
server = VirtualMachine(dmi=dmi) server = VirtualMachine(dmi=dmi)
else: else:
manufacturer = dmidecode.get_by_type(dmi, 'System')[0].get('Manufacturer') manufacturer = dmidecode.get_by_type(dmi, 'Chassis')[0].get('Manufacturer')
try: try:
server = MANUFACTURERS[manufacturer](dmi=dmi) server = MANUFACTURERS[manufacturer](dmi=dmi)
except KeyError: except KeyError:
server = GenericHost(dmi=dmi) server = GenericHost(dmi=dmi)
if version.parse(nb.version) < version.parse('2.9'):
print('netbox-agent is not compatible with Netbox prior to verison 2.9')
return False
if config.register or config.update_all or config.update_network or \ if config.register or config.update_all or config.update_network or \
config.update_location or config.update_inventory or config.update_psu: config.update_location or config.update_inventory or config.update_psu:
server.netbox_create_or_update(config) server.netbox_create_or_update(config)

View file

@ -52,7 +52,7 @@ def get_config():
help='custom_fields to use for a host, eg: field1=v1,field2=v2') help='custom_fields to use for a host, eg: field1=v1,field2=v2')
p.add_argument('--device.blade_role', default=r'Blade', p.add_argument('--device.blade_role', default=r'Blade',
help='role to use for a blade server') help='role to use for a blade server')
p.add_argument('--device.chassis_role', default=r'Chassis', p.add_argument('--device.chassis_role', default=r'Server Chassis',
help='role to use for a chassis') help='role to use for a chassis')
p.add_argument('--device.server_role', default=r'Server', p.add_argument('--device.server_role', default=r'Server',
help='role to use for a server') help='role to use for a server')
@ -78,7 +78,6 @@ def get_config():
help='Regex to ignore interfaces') help='Regex to ignore interfaces')
p.add_argument('--network.ignore_ips', default=r'^(127\.0\.0\..*|fe80.*|::1.*)', p.add_argument('--network.ignore_ips', default=r'^(127\.0\.0\..*|fe80.*|::1.*)',
help='Regex to ignore IPs') help='Regex to ignore IPs')
p.add_argument('--network.ipmi', default=True, help='Enable gathering IPMI information')
p.add_argument('--network.lldp', help='Enable auto-cabling feature through LLDP infos') p.add_argument('--network.lldp', help='Enable auto-cabling feature through LLDP infos')
p.add_argument('--inventory', action='store_true', p.add_argument('--inventory', action='store_true',
help='Enable HW inventory (CPU, Memory, RAID Cards, Disks) feature') help='Enable HW inventory (CPU, Memory, RAID Cards, Disks) feature')

View file

@ -232,7 +232,7 @@ class Inventory():
raid_class = OmreportRaid raid_class = OmreportRaid
if is_tool('storcli'): if is_tool('storcli'):
raid_class = StorcliRaid raid_class = StorcliRaid
elif self.server.manufacturer in ('HP', 'HPE'): elif self.server.manufacturer == 'HP':
if is_tool('ssacli'): if is_tool('ssacli'):
raid_class = HPRaid raid_class = HPRaid
@ -371,14 +371,13 @@ class Inventory():
desc = disk.get('description') desc = disk.get('description')
name = '{} ({})'.format(disk['Model'], disk['Size']) name = '{} ({})'.format(disk['Model'], disk['Size'])
description = disk['Type'] description = disk['Type']
sn = disk.get('SN', 'unknown')
parms = { parms = {
'device': self.device_id, 'device': self.device_id,
'discovered': True, 'discovered': True,
'tags': [{'name': INVENTORY_TAG['disk']['name']}], 'tags': [{'name': INVENTORY_TAG['disk']['name']}],
'name': name, 'name': name,
'serial': sn, 'serial': disk['SN'],
'part_id': disk['Model'], 'part_id': disk['Model'],
'description': description, 'description': description,
'manufacturer': getattr(manufacturer, "id", None), 'manufacturer': getattr(manufacturer, "id", None),
@ -390,7 +389,7 @@ class Inventory():
logging.info('Creating Disk {model} {serial}'.format( logging.info('Creating Disk {model} {serial}'.format(
model=disk['Model'], model=disk['Model'],
serial=sn, serial=disk['SN'],
)) ))
def dump_disks_map(self, disks): def dump_disks_map(self, disks):

View file

@ -55,7 +55,6 @@ class IPMI():
ret = {} ret = {}
ret['name'] = 'IPMI' ret['name'] = 'IPMI'
ret["mtu"] = 1500
ret['bonding'] = False ret['bonding'] = False
ret['mac'] = _ipmi['MAC Address'] ret['mac'] = _ipmi['MAC Address']
ret['vlan'] = int(_ipmi['802.1q VLAN ID']) \ ret['vlan'] = int(_ipmi['802.1q VLAN ID']) \

View file

@ -31,9 +31,8 @@ class LLDP():
vlans[interface] = {} vlans[interface] = {}
for path_component in path_components: for path_component in path_components:
if not isinstance(current_dict.get(path_component), dict): current_dict[path_component] = current_dict.get(path_component, {})
current_dict[path_component] = {} current_dict = current_dict[path_component]
current_dict = current_dict.get(path_component)
if 'vlan-id' in path: if 'vlan-id' in path:
vid = value vid = value
vlans[interface][value] = vlans[interface].get(vid, {}) vlans[interface][value] = vlans[interface].get(vid, {})
@ -51,16 +50,12 @@ class LLDP():
return output_dict return output_dict
def get_switch_ip(self, interface): def get_switch_ip(self, interface):
if 'lldp' not in self.data:
return None
# lldp.eth0.chassis.mgmt-ip=100.66.7.222 # lldp.eth0.chassis.mgmt-ip=100.66.7.222
if self.data['lldp'].get(interface) is None: if self.data['lldp'].get(interface) is None:
return None return None
return self.data['lldp'][interface]['chassis'].get('mgmt-ip') return self.data['lldp'][interface]['chassis'].get('mgmt-ip')
def get_switch_port(self, interface): def get_switch_port(self, interface):
if 'lldp' not in self.data:
return None
# lldp.eth0.port.descr=GigabitEthernet1/0/1 # lldp.eth0.port.descr=GigabitEthernet1/0/1
if self.data['lldp'].get(interface) is None: if self.data['lldp'].get(interface) is None:
return None return None
@ -69,8 +64,6 @@ class LLDP():
return self.data['lldp'][interface]['port']['descr'] return self.data['lldp'][interface]['port']['descr']
def get_switch_vlan(self, interface): def get_switch_vlan(self, interface):
if 'lldp' not in self.data:
return None
# lldp.eth0.vlan.vlan-id=296 # lldp.eth0.vlan.vlan-id=296
if self.data['lldp'].get(interface) is None: if self.data['lldp'].get(interface) is None:
return None return None

View file

@ -44,8 +44,8 @@ class LSHW():
if j["class"] == "generic": if j["class"] == "generic":
continue continue
#if j["class"] == "storage": if j["class"] == "storage":
# self.find_storage(j) self.find_storage(j)
if j["class"] == "memory": if j["class"] == "memory":
self.find_memories(j) self.find_memories(j)
@ -72,17 +72,9 @@ class LSHW():
# Some interfaces do not have device (logical) name (eth0, for # Some interfaces do not have device (logical) name (eth0, for
# instance), such as not connected network mezzanine cards in blade # instance), such as not connected network mezzanine cards in blade
# servers. In such situations, the card will be named `unknown[0-9]`. # servers. In such situations, the card will be named `unknown[0-9]`.
unkn_intfs = [] unkn_intfs = [
for i in self.interfaces: i for i in self.interfaces if i["name"].startswith("unknown")
# newer versions of lshw can return a list of names, see issue #227 ]
if not isinstance(i["name"], list):
if i["name"].startswith("unknown"):
unkn_intfs.push(i)
else:
for j in i["name"]:
if j.startswith("unknown"):
unkn_intfs.push(j)
unkn_name = "unknown{}".format(len(unkn_intfs)) unkn_name = "unknown{}".format(len(unkn_intfs))
self.interfaces.append({ self.interfaces.append({
"name": obj.get("logicalname", unkn_name), "name": obj.get("logicalname", unkn_name),
@ -173,15 +165,15 @@ class LSHW():
return return
for bus in obj["children"]: for bus in obj["children"]:
#if bus["class"] == "storage": if bus["class"] == "storage":
# self.find_storage(bus) self.find_storage(bus)
if bus["class"] == "display": if bus["class"] == "display":
self.find_gpus(bus) self.find_gpus(bus)
if "children" in bus: if "children" in bus:
for b in bus["children"]: for b in bus["children"]:
#if b["class"] == "storage": if b["class"] == "storage":
# self.find_storage(b) self.find_storage(b)
if b["class"] == "network": if b["class"] == "network":
self.find_network(b) self.find_network(b)
if b["class"] == "display": if b["class"] == "display":

View file

@ -5,6 +5,7 @@ import subprocess
import socket import socket
import re import re
def is_tool(name): def is_tool(name):
'''Check whether `name` is on PATH and marked as executable.''' '''Check whether `name` is on PATH and marked as executable.'''
return which(name) is not None return which(name) is not None
@ -29,19 +30,22 @@ def get_device_type(type):
def get_device_platform(device_platform): def get_device_platform(device_platform):
try: if device_platform is None:
# Python 3.8+ moved linux_distribution() to distro
try: try:
import distro # Python 3.8+ moved linux_distribution() to distro
linux_distribution = " ".join(distro.linux_distribution()) try:
except ImportError: import distro
import platform linux_distribution = " ".join(distro.linux_distribution())
linux_distribution = " ".join(platform.linux_distribution()) except ImportError:
import platform
linux_distribution = " ".join(platform.linux_distribution())
if not linux_distribution: if not linux_distribution:
return None
except (ModuleNotFoundError, NameError, AttributeError):
return None return None
except (ModuleNotFoundError, NameError, AttributeError): else:
return None linux_distribution = device_platform
device_platform = nb.dcim.platforms.get(name=linux_distribution) device_platform = nb.dcim.platforms.get(name=linux_distribution)
if device_platform is None: if device_platform is None:

View file

@ -85,7 +85,6 @@ class Network(object):
ip_addr.append(addr) ip_addr.append(addr)
mac = open('/sys/class/net/{}/address'.format(interface), 'r').read().strip() mac = open('/sys/class/net/{}/address'.format(interface), 'r').read().strip()
mtu = int(open('/sys/class/net/{}/mtu'.format(interface), 'r').read().strip())
vlan = None vlan = None
if len(interface.split('.')) > 1: if len(interface.split('.')) > 1:
vlan = int(interface.split('.')[1]) vlan = int(interface.split('.')[1])
@ -115,7 +114,6 @@ class Network(object):
'ethtool': Ethtool(interface).parse(), 'ethtool': Ethtool(interface).parse(),
'virtual': virtual, 'virtual': virtual,
'vlan': vlan, 'vlan': vlan,
'mtu': mtu,
'bonding': bonding, 'bonding': bonding,
'bonding_slaves': bonding_slaves, 'bonding_slaves': bonding_slaves,
} }
@ -278,51 +276,36 @@ class Network(object):
if nic['mac']: if nic['mac']:
params['mac_address'] = nic['mac'] params['mac_address'] = nic['mac']
if nic['mtu']: interface = self.nb_net.interfaces.create(**params)
params['mtu'] = nic['mtu']
# interface = self.nb_net.interfaces.create(**params) if nic['vlan']:
nb_vlan = self.get_or_create_vlan(nic['vlan'])
interface.mode = self.dcim_choices['interface:mode']['Tagged']
interface.tagged_vlans = [nb_vlan.id]
interface.save()
elif config.network.lldp and self.lldp.get_switch_vlan(nic['name']) is not None:
# if lldp reports a vlan on an interface, tag the interface in access and set the vlan
# report only the interface which has `pvid=yes` (ie: lldp.eth3.vlan.pvid=yes)
# if pvid is not present, it'll be processed as a vlan tagged interface
vlans = self.lldp.get_switch_vlan(nic['name'])
for vid, vlan_infos in vlans.items():
nb_vlan = self.get_or_create_vlan(vid)
if vlan_infos.get('vid'):
interface.mode = self.dcim_choices['interface:mode']['Access']
interface.untagged_vlan = nb_vlan.id
interface.save()
try: # cable the interface
interface = self.nb_net.interfaces.create(**params) if config.network.lldp:
except: switch_ip = self.lldp.get_switch_ip(interface.name)
logging.error( switch_interface = self.lldp.get_switch_port(interface.name)
'Unable to (re)create NIC {name} ({mac}) on {device}'.format(
name=nic['name'], mac=nic['mac'], device=self.device.name if switch_ip and switch_interface:
nic_update, interface = self.create_or_update_cable(
switch_ip, switch_interface, interface
) )
) if nic_update:
interface = None interface.save()
if interface:
if nic['vlan']:
nb_vlan = self.get_or_create_vlan(nic['vlan'])
interface.mode = self.dcim_choices['interface:mode']['Tagged']
interface.tagged_vlans = [nb_vlan.id]
interface.save()
elif config.network.lldp and self.lldp.get_switch_vlan(nic['name']) is not None:
# if lldp reports a vlan on an interface, tag the interface in access and set the vlan
# report only the interface which has `pvid=yes` (ie: lldp.eth3.vlan.pvid=yes)
# if pvid is not present, it'll be processed as a vlan tagged interface
vlans = self.lldp.get_switch_vlan(nic['name'])
for vid, vlan_infos in vlans.items():
nb_vlan = self.get_or_create_vlan(vid)
if vlan_infos.get('vid'):
interface.mode = self.dcim_choices['interface:mode']['Access']
interface.untagged_vlan = nb_vlan.id
interface.save()
# cable the interface
if config.network.lldp:
switch_ip = self.lldp.get_switch_ip(interface.name)
switch_interface = self.lldp.get_switch_port(interface.name)
if switch_ip and switch_interface:
nic_update, interface = self.create_or_update_cable(
switch_ip, switch_interface, interface
)
if nic_update:
interface.save()
return interface return interface
def create_or_update_netbox_ip_on_interface(self, ip, interface): def create_or_update_netbox_ip_on_interface(self, ip, interface):
@ -450,57 +433,49 @@ class Network(object):
) )
interface = self.create_netbox_nic(nic) interface = self.create_netbox_nic(nic)
if interface: nic_update = 0
nic_update = 0 if nic['name'] != interface.name:
if nic['name'] != interface.name: logging.info('Updating interface {interface} name to: {name}'.format(
logging.info('Updating interface {interface} name to: {name}'.format( interface=interface, name=nic['name']))
interface=interface, name=nic['name'])) interface.name = nic['name']
interface.name = nic['name'] nic_update += 1
ret, interface = self.reset_vlan_on_interface(nic, interface)
nic_update += ret
if hasattr(interface, 'type'):
_type = self.get_netbox_type_for_nic(nic)
if not interface.type or \
_type != interface.type.value:
logging.info('Interface type is wrong, resetting')
interface.type = _type
nic_update += 1 nic_update += 1
ret, interface = self.reset_vlan_on_interface(nic, interface) if hasattr(interface, 'lag') and interface.lag is not None:
nic_update += ret local_lag_int = next(
item for item in self.nics if item['name'] == interface.lag.name
)
if nic['name'] not in local_lag_int['bonding_slaves']:
logging.info('Interface has no LAG, resetting')
nic_update += 1
interface.lag = None
if hasattr(interface, 'mtu'): # cable the interface
if nic['mtu'] != interface.mtu: if config.network.lldp:
logging.info('Interface mtu is wrong, updating to: {mtu}'.format( switch_ip = self.lldp.get_switch_ip(interface.name)
mtu=nic['mtu'])) switch_interface = self.lldp.get_switch_port(interface.name)
interface.mtu = nic['mtu'] if switch_ip and switch_interface:
nic_update += 1 ret, interface = self.create_or_update_cable(
switch_ip, switch_interface, interface
if hasattr(interface, 'type'):
_type = self.get_netbox_type_for_nic(nic)
if not interface.type or \
_type != interface.type.value:
logging.info('Interface type is wrong, resetting')
interface.type = _type
nic_update += 1
if hasattr(interface, 'lag') and interface.lag is not None:
local_lag_int = next(
item for item in self.nics if item['name'] == interface.lag.name
) )
if nic['name'] not in local_lag_int['bonding_slaves']: nic_update += ret
logging.info('Interface has no LAG, resetting')
nic_update += 1
interface.lag = None
# cable the interface if nic['ip']:
if config.network.lldp: # sync local IPs
switch_ip = self.lldp.get_switch_ip(interface.name) for ip in nic['ip']:
switch_interface = self.lldp.get_switch_port(interface.name) self.create_or_update_netbox_ip_on_interface(ip, interface)
if switch_ip and switch_interface: if nic_update > 0:
ret, interface = self.create_or_update_cable( interface.save()
switch_ip, switch_interface, interface
)
nic_update += ret
if nic['ip']:
# sync local IPs
for ip in nic['ip']:
self.create_or_update_netbox_ip_on_interface(ip, interface)
if nic_update > 0:
interface.save()
self._set_bonding_interfaces() self._set_bonding_interfaces()
logging.debug('Finished updating NIC!') logging.debug('Finished updating NIC!')
@ -509,12 +484,9 @@ class Network(object):
class ServerNetwork(Network): class ServerNetwork(Network):
def __init__(self, server, *args, **kwargs): def __init__(self, server, *args, **kwargs):
super(ServerNetwork, self).__init__(server, args, kwargs) super(ServerNetwork, self).__init__(server, args, kwargs)
self.ipmi = self.get_ipmi()
if config.network.ipmi:
self.ipmi = self.get_ipmi()
if self.ipmi: if self.ipmi:
self.nics.append(self.ipmi) self.nics.append(self.ipmi)
self.server = server self.server = server
self.device = self.server.get_netbox_server() self.device = self.server.get_netbox_server()
self.nb_net = nb.dcim self.nb_net = nb.dcim

View file

@ -18,48 +18,40 @@ def ssacli(sub_command):
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT stderr=subprocess.STDOUT
) )
stdout, stderr = p.communicate() p.wait()
stdout = stdout.decode("utf-8") stdout = p.stdout.read().decode("utf-8")
if p.returncode != 0: if p.returncode != 0 and 'does not have any physical' not in stdout:
mesg = "Failed to execute command '{}':\n{}".format( mesg = "Failed to execute command '{}':\n{}".format(
" ".join(command), stdout " ".join(command), stdout
) )
raise HPRaidControllerError(mesg) raise HPRaidControllerError(mesg)
if 'does not have any physical' in stdout:
return list()
else: else:
lines = stdout.split('\n') if 'does not have any physical' in stdout:
lines = list(filter(None, lines)) return list()
return lines else:
lines = stdout.split('\n')
def _test_if_valid_line(line): lines = list(filter(None, lines))
ignore_patterns = ['Note:', 'Error:', 'is not loaded', 'README', ' failure', ' cache'] return lines
for pattern in ignore_patterns:
if not line or pattern in line:
return None
return line
def _parse_ctrl_output(lines): def _parse_ctrl_output(lines):
controllers = {} controllers = {}
current_ctrl = None current_ctrl = None
ignore_patterns = ['Note:', 'Error:', 'is not loaded', 'README', 'failure']
ignore_match = False
for line in lines: for line in lines:
line = line.strip() for pattern in ignore_patterns:
line = _test_if_valid_line(line) if not line or pattern in line:
if line is None: ignore_match = True
break
if ignore_match:
continue continue
ctrl = REGEXP_CONTROLLER_HP.search(line) ctrl = REGEXP_CONTROLLER_HP.search(line)
if ctrl is not None: if ctrl is not None:
slot = ctrl.group(2) current_ctrl = ctrl.group(1)
current_ctrl = "{} - Slot {}".format(ctrl.group(1), slot) controllers[current_ctrl] = {'Slot': ctrl.group(2)}
controllers[current_ctrl] = {'Slot': slot}
if 'Embedded' not in line: if 'Embedded' not in line:
controllers[current_ctrl]['External'] = True controllers[current_ctrl]['External'] = True
continue
if ': ' not in line:
continue continue
attr, val = line.split(': ', 1) attr, val = line.split(': ', 1)
attr = attr.strip() attr = attr.strip()
val = val.strip() val = val.strip()
@ -74,8 +66,9 @@ def _parse_pd_output(lines):
for line in lines: for line in lines:
line = line.strip() line = line.strip()
line = _test_if_valid_line(line) if not line or line.startswith('Note:'):
if line is None: continue
if 'cache' in line or 'reboot' in line:
continue continue
# Parses the Array the drives are in # Parses the Array the drives are in
if line.startswith('Array'): if line.startswith('Array'):
@ -90,13 +83,10 @@ def _parse_pd_output(lines):
if ': ' not in line: if ': ' not in line:
continue continue
attr, val = line.split(': ', 1) attr, val = line.split(': ', 1)
attr = attr.strip()
val = val.strip()
drives.setdefault(current_drv, {})[attr] = val drives.setdefault(current_drv, {})[attr] = val
return drives return drives
def _parse_ld_output(lines): def _parse_ld_output(lines):
drives = {} drives = {}
current_array = None current_array = None
@ -104,8 +94,7 @@ def _parse_ld_output(lines):
for line in lines: for line in lines:
line = line.strip() line = line.strip()
line = _test_if_valid_line(line) if not line or line.startswith('Note:'):
if line is None:
continue continue
# Parses the Array the drives are in # Parses the Array the drives are in
if line.startswith('Array'): if line.startswith('Array'):
@ -173,12 +162,7 @@ class HPRaidController(RaidController):
'Type': 'SSD' if attrs.get('Interface Type') == 'Solid State SATA' 'Type': 'SSD' if attrs.get('Interface Type') == 'Solid State SATA'
else 'HDD', else 'HDD',
'_src': self.__class__.__name__, '_src': self.__class__.__name__,
'custom_fields': { 'custom_fields': {'pd_identifier': name}
'pd_identifier': name,
'mount_point': attrs.get('Mount Points', '').strip(),
'vd_device': attrs.get('Disk Name', '').strip(),
'vd_size': attrs.get('Size', '').strip(),
}
} }
return ret return ret
@ -190,11 +174,11 @@ class HPRaidController(RaidController):
for array, attrs in ldrives.items(): for array, attrs in ldrives.items():
ret[array] = { ret[array] = {
'vd_array': array, 'vd_array': array,
'vd_size': attrs.get('Size', '').strip(), 'vd_size': attrs['Size'],
'vd_consistency': attrs.get('Status', '').strip(), 'vd_consistency': attrs['Status'],
'vd_raid_type': 'RAID {}'.format(attrs.get('Fault Tolerance', 'N/A').strip()), 'vd_raid_type': 'RAID {}'.format(attrs['Fault Tolerance']),
'vd_device': attrs.get('LogicalDrive', '').strip(), 'vd_device': attrs['LogicalDrive'],
'mount_point': attrs.get('Mount Points', '').strip() 'mount_point': attrs['Mount Points']
} }
return ret return ret

View file

@ -21,17 +21,14 @@ def storecli(sub_command):
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT stderr=subprocess.STDOUT
) )
p.wait()
stdout, stderr = p.communicate() stdout = p.stdout.read().decode("utf-8")
if stderr: if p.returncode != 0:
mesg = "Failed to execute command '{}':\n{}".format( mesg = "Failed to execute command '{}':\n{}".format(
" ".join(command), stdout " ".join(command), stdout
) )
raise StorcliControllerError(mesg) raise StorcliControllerError(mesg)
stdout = stdout.decode("utf-8")
data = json.loads(stdout) data = json.loads(stdout)
controllers = dict([ controllers = dict([
( (
c['Command Status']['Controller'], c['Command Status']['Controller'],

View file

@ -199,7 +199,7 @@ class ServerBase():
name=self.get_chassis_name(), name=self.get_chassis_name(),
device_type=device_type.id, device_type=device_type.id,
serial=serial, serial=serial,
role=device_role.id, device_role=device_role.id,
site=datacenter.id if datacenter else None, site=datacenter.id if datacenter else None,
tenant=tenant.id if tenant else None, tenant=tenant.id if tenant else None,
rack=rack.id if rack else None, rack=rack.id if rack else None,
@ -220,7 +220,7 @@ class ServerBase():
new_blade = nb.dcim.devices.create( new_blade = nb.dcim.devices.create(
name=hostname, name=hostname,
serial=serial, serial=serial,
role=device_role.id, device_role=device_role.id,
device_type=device_type.id, device_type=device_type.id,
parent_device=chassis.id, parent_device=chassis.id,
site=datacenter.id if datacenter else None, site=datacenter.id if datacenter else None,
@ -243,7 +243,7 @@ class ServerBase():
new_blade = nb.dcim.devices.create( new_blade = nb.dcim.devices.create(
name=hostname, name=hostname,
serial=serial, serial=serial,
role=device_role.id, device_role=device_role.id,
device_type=device_type.id, device_type=device_type.id,
parent_device=chassis.id, parent_device=chassis.id,
site=datacenter.id if datacenter else None, site=datacenter.id if datacenter else None,
@ -272,7 +272,7 @@ class ServerBase():
new_server = nb.dcim.devices.create( new_server = nb.dcim.devices.create(
name=hostname, name=hostname,
serial=serial, serial=serial,
role=device_role.id, device_role=device_role.id,
device_type=device_type.id, device_type=device_type.id,
platform=self.device_platform.id, platform=self.device_platform.id,
site=datacenter.id if datacenter else None, site=datacenter.id if datacenter else None,
@ -413,10 +413,10 @@ class ServerBase():
self.network.create_or_update_netbox_network_cards() self.network.create_or_update_netbox_network_cards()
update_inventory = config.inventory and (config.register or update_inventory = config.inventory and (config.register or
config.update_all or config.update_inventory) config.update_all or config.update_inventory)
if config.inventory: # update inventory if feature is enabled
self.inventory = Inventory(server=self) self.inventory = Inventory(server=self)
if update_inventory: if update_inventory:
self.inventory.create_or_update() self.inventory.create_or_update()
# update psu # update psu
if config.register or config.update_all or config.update_psu: if config.register or config.update_all or config.update_psu:
self.power = PowerSupply(server=self) self.power = PowerSupply(server=self)

View file

@ -1,23 +0,0 @@
import netbox_agent.dmidecode as dmidecode
from netbox_agent.server import ServerBase
class OvhHost(ServerBase):
def __init__(self, *args, **kwargs):
super(OvhHost, self).__init__(*args, **kwargs)
self.manufacturer = dmidecode.get_by_type(self.dmi, 'System')[0].get('Manufacturer')
def is_blade(self):
return False
def get_blade_slot(self):
return None
def get_chassis_name(self):
return None
def get_chassis(self):
return self.get_product_name()
def get_chassis_service_tag(self):
return self.get_service_tag()

View file

@ -1,23 +0,0 @@
import netbox_agent.dmidecode as dmidecode
from netbox_agent.server import ServerBase
class ScalewayHost(ServerBase):
def __init__(self, *args, **kwargs):
super(ScalewayHost, self).__init__(*args, **kwargs)
self.manufacturer = dmidecode.get_by_type(self.dmi, 'System')[0].get('Manufacturer')
def is_blade(self):
return False
def get_blade_slot(self):
return None
def get_chassis_name(self):
return None
def get_chassis(self):
return self.get_product_name()
def get_chassis_service_tag(self):
return self.get_service_tag()

View file

@ -10,26 +10,19 @@ from netbox_agent.network import VirtualNetwork
def is_vm(dmi): def is_vm(dmi):
bios = dmidecode.get_by_type(dmi, 'BIOS')[0] bios = dmidecode.get_by_type(dmi, 'BIOS')
system = dmidecode.get_by_type(dmi, 'System')[0] system = dmidecode.get_by_type(dmi, 'System')
return ( if 'Hyper-V' in bios[0]['Version'] or \
( 'Xen' in bios[0]['Version'] or \
'Hyper-V' in bios['Version'] or 'Google Compute Engine' in system[0]['Product Name'] or \
'Xen' in bios['Version'] or ('Amazon EC2' in system[0]['Manufacturer'] and not system[0]['Product Name'].endswith('.metal')) or \
'Google Compute Engine' in system['Product Name'] 'RHEV Hypervisor' in system[0]['Product Name'] or \
) or 'QEMU' in system[0]['Manufacturer'] or \
( 'VirtualBox' in bios[0]['Version'] or \
( 'VMware' in system[0]['Manufacturer']:
'Amazon EC2' in system['Manufacturer'] and return True
not system['Product Name'].endswith('.metal') return False
) or
'RHEV Hypervisor' in system['Product Name'] or
'QEMU' in system['Manufacturer'] or
'VirtualBox' in bios['Version'] or
'VMware' in system['Manufacturer']
)
)
class VirtualMachine(object): class VirtualMachine(object):

5
renovate.json Normal file
View file

@ -0,0 +1,5 @@
{
"extends": [
"config:base"
]
}

8
requirements.txt Normal file
View file

@ -0,0 +1,8 @@
pynetbox==6.1.2
netaddr==0.8.0
netifaces==0.10.9
pyyaml==5.4.1
jsonargparse==3.11.2
python-slugify==5.0.2
packaging==20.9
distro==1.7.0

27
rpmenv.json Normal file
View file

@ -0,0 +1,27 @@
{
"extensions": {
"enabled": ["python_venv", "blocks"]
},
"core": {
"group": "Application/System",
"license": "Apache2",
"name": "netbox-agent",
"summary": "NetBox agent for server",
"url": "https://github.com/Solvik/netbox-agent",
"version": "0.7.0",
"requires": ["lshw"]
},
"python_venv": {
"python": "python3.6",
"requirements": ["requirements.txt"],
"name": "netbox-agent",
"path": "/opt/"
},
"blocks": {
"post": ["ln -sf /opt/netbox-agent/bin/netbox_agent /usr/bin/netbox_agent"],
"desc": [
"This project aims to create hardware automatically into Netbox based on standard tools (dmidecode, lldpd, parsing /sys/, etc).",
"The goal is to generate an existing infrastructure on Netbox and have the ability to update it regularly by executing the agent."
]
}
}

16
setup.cfg Normal file
View file

@ -0,0 +1,16 @@
[tool:pytest]
testpaths = tests
python_files = *.py
addopts = -vv --showlocals --cov-report term-missing --cov netbox_agent --no-cov-on-fail
[flake8]
ignore = E125,E129,W503,W504
exclude = .venv/,.git/,.tox/,netbox-docker/
max-line-length = 99
[isort]
line_length = 99
indent=' '
multi_line_output = 0
skip = .venv/,.git/,tests/conftest.py,ipython_config.py
known_first_party = netbox_agent,tests

42
setup.py Normal file
View file

@ -0,0 +1,42 @@
from setuptools import find_packages, setup
import os
def get_requirements():
reqs_path = os.path.join(
os.path.dirname(__file__),
'requirements.txt'
)
with open(reqs_path, 'r') as f:
reqs = [
r.strip() for r in f
if r.strip()
]
return reqs
setup(
name='netbox_agent',
version='0.7.1',
description='NetBox agent for server',
long_description=open('README.md', encoding="utf-8").read(),
long_description_content_type='text/markdown',
url='https://github.com/solvik/netbox_agent',
author='Solvik Blum',
author_email='solvik@solvik.fr',
license='Apache2',
include_package_data=True,
packages=find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
use_scm_version=True,
install_requires=get_requirements(),
zip_safe=False,
keywords=['netbox'],
classifiers=[
'Intended Audience :: Developers',
'Development Status :: 5 - Production/Stable',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.6',
],
entry_points={
'console_scripts': ['netbox_agent=netbox_agent.cli:main'],
}
)

22
tests.sh Executable file
View file

@ -0,0 +1,22 @@
set -x
git clone https://github.com/netbox-community/netbox-docker.git
cd netbox-docker
docker-compose pull
docker-compose up -d
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://$(docker-compose port nginx 8080))" != "200" ]]
do
sleep 5
done
export NETBOX_AGENT__NETBOX__URL="http://$(docker-compose port nginx 8080)"
export NETBOX_AGENT__NETBOX__TOKEN=0123456789abcdef0123456789abcdef01234567
cd -
pytest
cd netbox-docker
docker-compose down
cd -
set +x

0
tests/__init__.py Normal file
View file

33
tests/conftest.py Normal file
View file

@ -0,0 +1,33 @@
import os
import pytest
def get_fixture_paths(path):
if not os.path.isdir(path):
return [path]
fixture_paths = []
for p in os.listdir(path):
p = os.path.join(path, p)
if os.path.isfile(p):
fixture_paths.append(p)
return fixture_paths
def parametrize_with_fixtures(path, base_path='tests/fixtures',
argname='fixture', only_filenames=None):
path = os.path.join(base_path, path)
fixture_paths = get_fixture_paths(path)
argvalues = []
for path in fixture_paths:
with open(path, 'r') as f:
content = ''.join(f.readlines())
filename = os.path.basename(path)
if only_filenames and filename not in only_filenames:
continue
param = pytest.param(content, id=filename)
argvalues.append(param)
def _decorator(test_function):
return pytest.mark.parametrize(argname, argvalues)(test_function)
return _decorator

868
tests/fixtures/dmidecode/Dell_DSS7500 vendored Normal file
View file

@ -0,0 +1,868 @@
# dmidecode 2.12
SMBIOS 2.8 present.
57 structures occupying 3093 bytes.
Table at 0x7AF09000.
Handle 0xDA00, DMI type 218, 11 bytes
OEM-specific Type
Header and Data:
DA 0B 00 DA B2 00 17 20 0E 10 03
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Dell Inc.
Version: 2.3.4
Release Date: 11/10/2016
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16384 kB
Characteristics:
ISA is supported
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
5.25"/360 kB floppy services are supported (int 13h)
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Function key-initiated network boot is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 2.3
Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Product Name: DSS7500
Version: Not Specified
Serial Number: 4242-SERVICE_TAG
UUID: 4C4C4544-0048-5110-804A-C6C04F594A32
Wake-up Type: Power Switch
SKU Number: SKU=NotProvided;ModelName=DSS7500
Family: Not Specified
Handle 0x0200, DMI type 2, 8 bytes
Base Board Information
Manufacturer: Dell Inc.
Product Name: 0X89R8
Version: A04
Serial Number: 4242
Handle 0x0300, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Dell Inc.
Type: Rack Mount Chassis
Lock: Present
Version: Not Specified
Serial Number: 4242
Asset Tag: Not Specified
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: Unknown
OEM Information: 0x00000000
Height: 4 U
Number Of Power Cords: Unspecified
Contained Elements: 0
SKU Number: Not Specified
Handle 0x0400, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU1
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: F1 06 04 00 FF FB EB BF
Signature: Type 0, Family 6, Model 79, Stepping 1
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
Voltage: 1.3 V
External Clock: 8000 MHz
Max Speed: 4000 MHz
Current Speed: 2200 MHz
Status: Populated, Enabled
Upgrade: <OUT OF SPEC>
L1 Cache Handle: 0x0700
L2 Cache Handle: 0x0701
L3 Cache Handle: 0x0702
Serial Number: 4242
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 10
Core Enabled: 10
Thread Count: 10
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
Handle 0x0401, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU2
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: F1 06 04 00 FF FB EB BF
Signature: Type 0, Family 6, Model 79, Stepping 1
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
Voltage: 1.3 V
External Clock: 8000 MHz
Max Speed: 4000 MHz
Current Speed: 2200 MHz
Status: Populated, Enabled
Upgrade: <OUT OF SPEC>
L1 Cache Handle: 0x0703
L2 Cache Handle: 0x0704
L3 Cache Handle: 0x0705
Serial Number: 4242
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 10
Core Enabled: 10
Thread Count: 10
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
Handle 0x0700, DMI type 7, 19 bytes
Cache Information
Socket Designation: Not Specified
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 640 kB
Maximum Size: 640 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Parity
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x0701, DMI type 7, 19 bytes
Cache Information
Socket Designation: Not Specified
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 2560 kB
Maximum Size: 2560 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x0702, DMI type 7, 19 bytes
Cache Information
Socket Designation: Not Specified
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 25600 kB
Maximum Size: 25600 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 20-way Set-associative
Handle 0x0703, DMI type 7, 19 bytes
Cache Information
Socket Designation: Not Specified
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 640 kB
Maximum Size: 640 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Parity
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x0704, DMI type 7, 19 bytes
Cache Information
Socket Designation: Not Specified
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 2560 kB
Maximum Size: 2560 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x0705, DMI type 7, 19 bytes
Cache Information
Socket Designation: Not Specified
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 25600 kB
Maximum Size: 25600 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 20-way Set-associative
Handle 0x0800, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: Back USB port 2
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x0801, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Internal USB port 1
Internal Connector Type: Access Bus (USB)
External Reference Designator: Not Specified
External Connector Type: None
Port Type: USB
Handle 0x0802, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: Front USB port 2
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x0803, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: Back USB port 1
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x0804, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: Front USB port 1
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x0805, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: Video port 1
External Connector Type: DB-15 female
Port Type: Video Port
Handle 0x0806, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: Serial port 1
External Connector Type: DB-9 male
Port Type: Serial Port 16550A Compatible
Handle 0x0900, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 1
Type: x8 PCI Express 3
Current Usage: Available
Length: Long
Characteristics:
3.3 V is provided
PME signal is supported
Handle 0x0901, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 2
Type: x8 PCI Express 3 x16
Current Usage: In Use
Length: Long
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:04:00.0
Handle 0x0902, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 3
Type: x8 PCI Express 3
Current Usage: Available
Length: Long
Characteristics:
3.3 V is provided
PME signal is supported
Handle 0x0903, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 4
Type: x8 PCI Express 3
Current Usage: In Use
Length: Long
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:06:00.0
Handle 0x0B00, DMI type 11, 5 bytes
OEM Strings
String 1: Dell System
String 2: 5[0000]
String 3: 1[06B6]
String 4: 7[0721]
String 5: 8[Dell Inc.]
String 6: 9[DSS7500]
String 7: 10[2.3.4]
String 8: 11[01.00.00]
String 9: 12[www.dell.com]
String 10: 14[1]
String 11: 17[8F27911A0C407F63]
String 12: 17[8F28041BFDD8E7E6]
String 13: 18[0]
String 14: 19[1]
String 15: 19[1]
Handle 0x0C00, DMI type 12, 5 bytes
System Configuration Options
Option 1: NVRAM_CLR: Clear user settable NVRAM areas and set defaults
Option 2: PWRD_EN: Close to enable password
Handle 0x0D00, DMI type 13, 22 bytes
BIOS Language Information
Language Description Format: Long
Installable Languages: 1
en|US|iso8859-1
Currently Installed Language: en|US|iso8859-1
Handle 0x1000, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 1536 GB
Error Information Handle: Not Provided
Number Of Devices: 12
Handle 0x1100, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 1
Locator: A1
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1101, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 1
Locator: A2
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1102, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 1
Locator: A3
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1103, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 1
Locator: A4
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1104, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 2
Locator: A5
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1105, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 2
Locator: A6
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1106, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 2
Locator: A7
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1107, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 2
Locator: A8
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1108, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 3
Locator: B1
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1109, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 3
Locator: B2
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x110A, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 3
Locator: B3
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x110B, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 3
Locator: B4
Bank Locator: Not Specified
Type: <OUT OF SPEC>
Type Detail: Synchronous Registered (Buffered)
Speed: 2400 MHz
Manufacturer: 002C00B3002C
Serial Number: 4242
Asset Tag: 00171230
Part Number: 18ASF2G72PDZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum voltage: 1.200 V
Maximum voltage: 1.200 V
Configured voltage: 1.200 V
Handle 0x1300, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x0007FFFFFFF
Range Size: 2 GB
Physical Array Handle: 0x1000
Partition Width: 2
Handle 0x1301, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00100000000
Ending Address: 0x0307FFFFFFF
Range Size: 190 GB
Physical Array Handle: 0x1000
Partition Width: 2
Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected
Handle 0x2600, DMI type 38, 18 bytes
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA8 (I/O)
Register Spacing: 32-bit Boundaries
Interrupt Polarity: Active High
Interrupt Trigger Mode: Edge
Interrupt Number: a
Handle 0x2700, DMI type 39, 22 bytes
System Power Supply
Location: Not Specified
Name: PWR SPLY,1600W,RDNT,DELTA
Manufacturer: DELL
Serial Number: 4242
Asset Tag: Not Specified
Model Part Number: 0685W7A00
Revision: Not Specified
Max Power Capacity: 1600 W
Status: Present, Unknown
Type: Unknown
Input Voltage Range Switching: Unknown
Plugged: Yes
Hot Replaceable: Yes
Handle 0x2701, DMI type 39, 22 bytes
System Power Supply
Location: Not Specified
Name: PWR SPLY,1600W,RDNT,DELTA
Manufacturer: DELL
Serial Number: 4242
Asset Tag: Not Specified
Model Part Number: 0685W7A00
Revision: Not Specified
Max Power Capacity: 1600 W
Status: Present, Unknown
Type: Unknown
Input Voltage Range Switching: Unknown
Plugged: Yes
Hot Replaceable: Yes
Handle 0x2900, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Embedded Video
Type: Video
Status: Enabled
Type Instance: 1
Bus Address: 0000:0b:00.0
Handle 0x2901, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Embedded EHCI USB Controller 1
Type: Other
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:1d.0
Handle 0x2902, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Embedded EHCI USB Controller 2
Type: Other
Status: Enabled
Type Instance: 2
Bus Address: 0000:00:1a.0
Handle 0xB100, DMI type 177, 12 bytes
OEM-specific Type
Header and Data:
B1 0C 00 B1 00 02 00 00 00 00 00 00
Handle 0xD000, DMI type 208, 16 bytes
OEM-specific Type
Header and Data:
D0 10 00 D0 02 00 FE 00 B6 06 00 00 00 01 00 00
Handle 0xD200, DMI type 210, 12 bytes
OEM-specific Type
Header and Data:
D2 0C 00 D2 F8 02 03 03 06 80 04 05
Handle 0xD800, DMI type 216, 9 bytes
OEM-specific Type
Header and Data:
D8 09 00 D8 01 02 00 F0 03
Strings:
Matrox
{* Content TBD *}
Handle 0xDE00, DMI type 222, 16 bytes
OEM-specific Type
Header and Data:
DE 10 00 DE 00 40 FF FF 00 00 00 00 00 01 00 00
Handle 0xE100, DMI type 225, 13 bytes
OEM-specific Type
Header and Data:
E1 0D 00 E1 01 01 00 04 00 02 01 04 00
Strings:
CPU.Socket.1
CPU.Socket.2
Handle 0xE101, DMI type 225, 53 bytes
OEM-specific Type
Header and Data:
E1 35 01 E1 01 01 00 11 00 02 01 11 00 03 02 11
00 04 03 11 00 05 04 11 00 06 05 11 00 07 06 11
00 08 07 11 00 09 08 11 00 0A 09 11 00 0B 0A 11
00 0C 0B 11 00
Strings:
DIMM.Socket.A1
DIMM.Socket.A2
DIMM.Socket.A3
DIMM.Socket.A4
DIMM.Socket.A5
DIMM.Socket.A6
DIMM.Socket.A7
DIMM.Socket.A8
DIMM.Socket.B1
DIMM.Socket.B2
DIMM.Socket.B3
DIMM.Socket.B4
Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table

File diff suppressed because it is too large Load diff

1766
tests/fixtures/dmidecode/HP_BL460c_Gen10 vendored Normal file

File diff suppressed because it is too large Load diff

1709
tests/fixtures/dmidecode/HP_BL460c_Gen9 vendored Normal file

File diff suppressed because it is too large Load diff

1751
tests/fixtures/dmidecode/HP_DL380p_Gen8 vendored Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,921 @@
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
93 structures occupying 4311 bytes.
Table at 0x766AD000.
Handle 0x0000, DMI type 7, 19 bytes
Cache Information
Socket Designation: L1-Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 256 kB
Maximum Size: 256 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x0001, DMI type 7, 19 bytes
Cache Information
Socket Designation: L2-Cache
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Varies With Memory Address
Location: Internal
Installed Size: 1024 kB
Maximum Size: 1024 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 4-way Set-associative
Handle 0x0002, DMI type 7, 19 bytes
Cache Information
Socket Designation: L3-Cache
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Varies With Memory Address
Location: Internal
Installed Size: 8192 kB
Maximum Size: 8192 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 16-way Set-associative
Handle 0x0003, DMI type 4, 48 bytes
Processor Information
Socket Designation: Proc 1
Type: Central Processor
Family: Xeon
Manufacturer: Intel(R) Corporation
ID: E3 06 05 00 FF FB EB BF
Signature: Type 0, Family 6, Model 94, Stepping 3
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU E3-1585L v5 @ 3.00GHz
Voltage: 1.0 V
External Clock: 100 MHz
Max Speed: 3700 MHz
Current Speed: 3000 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0000
L2 Cache Handle: 0x0001
L3 Cache Handle: 0x0002
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 4
Core Enabled: 4
Thread Count: 8
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
Handle 0x0004, DMI type 0, 24 bytes
BIOS Information
Vendor: HP
Version: H07
Release Date: 05/23/2016
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16 MB
Characteristics:
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
ESCD support is available
Boot from CD is supported
Selectable boot is supported
EDD is supported
5.25"/360 kB floppy services are supported (int 13h)
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Function key-initiated network boot is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 1.0
Firmware Revision: 2.40
Handle 0x0005, DMI type 1, 27 bytes
System Information
Manufacturer: HP
Product Name: ProLiant m710x Server Cartridge
Version: Not Specified
Serial Number: CN66480BLA
UUID: CF6D6DE0-A5AB-512C-BCD4-5CF40EC490C1
Wake-up Type: Power Switch
SKU Number: 833105-B21
Family: ProLiant
Handle 0x0006, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 64 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x0007, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0006
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: PROC 1 DIMM 1
Bank Locator: Not Specified
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MT/s
Manufacturer: HP
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: 853289-091
Rank: 2
Configured Clock Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Handle 0x0008, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0006
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 1
Locator: PROC 1 DIMM 2
Bank Locator: Not Specified
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MT/s
Manufacturer: HP
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: 853289-091
Rank: 2
Configured Clock Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Handle 0x0009, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0006
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 2
Locator: PROC 1 DIMM 3
Bank Locator: Not Specified
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MT/s
Manufacturer: HP
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: 853289-091
Rank: 2
Configured Clock Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Handle 0x000A, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0006
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: 3
Locator: PROC 1 DIMM 4
Bank Locator: Not Specified
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MT/s
Manufacturer: HP
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: 853289-091
Rank: 2
Configured Clock Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Handle 0x000B, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x0007E7FFFFF
Range Size: 2024 MB
Physical Array Handle: 0x0006
Partition Width: 1
Handle 0x000C, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x0000000100000000k
Ending Address: 0x00000010817FFFFFk
Range Size: 63512 MB
Physical Array Handle: 0x0006
Partition Width: 1
Handle 0x000D, DMI type 211, 7 bytes
OEM-specific Type
Header and Data:
D3 07 0D 00 03 00 00
Handle 0x000E, DMI type 2, 17 bytes
Base Board Information
Manufacturer: HP
Product Name: ProLiant m710x Server Cartridge
Version: Not Specified
Serial Number: CN66480ANY
Asset Tag:
Features:
Board is a hosting board
Board is removable
Board is replaceable
Location In Chassis: c2n1
Chassis Handle: 0x0000
Type: Motherboard
Contained Object Handles: 0
Handle 0x000F, DMI type 3, 21 bytes
Chassis Information
Manufacturer: HP
Type: Multi-system
Lock: Not Present
Version: Not Specified
Serial Number: CZ3702MD5K
Asset Tag:
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: Unknown
OEM Information: 0x00000000
Height: 5 U
Number Of Power Cords: Unspecified
Contained Elements: 0
Handle 0x0010, DMI type 11, 5 bytes
OEM Strings
String 1: PSF:
String 2: Product ID: 833105-B21
String 3: CPN: HP Moonshot 1500 Chassis
String 4: OEM String:
Handle 0x0011, DMI type 38, 18 bytes
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA2 (I/O)
Register Spacing: Successive Byte Boundaries
Handle 0x0012, DMI type 193, 9 bytes
OEM-specific Type
Header and Data:
C1 09 12 00 00 01 00 02 03
Strings:
0/0000
Handle 0x0013, DMI type 194, 5 bytes
OEM-specific Type
Header and Data:
C2 05 13 00 10
Handle 0x0014, DMI type 195, 7 bytes
OEM-specific Type
Header and Data:
C3 07 14 00 01 12 01
Strings:
$0E110855
Handle 0x0015, DMI type 197, 16 bytes
OEM-specific Type
Header and Data:
C5 10 15 00 03 00 00 01 FF 01 2D 00 00 00 00 00
Handle 0x0016, DMI type 198, 14 bytes
OEM-specific Type
Header and Data:
C6 0E 16 00 17 00 00 00 00 00 01 0A FF FF
Handle 0x0017, DMI type 199, 28 bytes
OEM-specific Type
Header and Data:
C7 1C 17 00 2C 00 00 00 15 20 01 07 E2 06 05 00
88 00 00 00 16 20 16 03 E3 06 05 00
Handle 0x0018, DMI type 201, 16 bytes
OEM-specific Type
Header and Data:
C9 10 18 00 10 02 00 00 40 0D 01 00 0E 00 00 80
Handle 0x0019, DMI type 215, 6 bytes
OEM-specific Type
Header and Data:
D7 06 19 00 00 05
Handle 0x001A, DMI type 216, 23 bytes
OEM-specific Type
Header and Data:
D8 17 1A 00 01 00 01 02 07 01 00 05 17 E0 07 00
00 00 00 00 00 00 00
Strings:
System ROM
v1.00 (05/23/2016)
Handle 0x001B, DMI type 216, 23 bytes
OEM-specific Type
Header and Data:
D8 17 1B 00 04 00 01 02 04 00 00 00 00 00 00 00
00 00 00 00 00 00 00
Strings:
Power Management Controller Firmware
0.0
Handle 0x001C, DMI type 216, 23 bytes
OEM-specific Type
Header and Data:
D8 17 1C 00 05 00 01 02 02 60 00 00 00 00 00 00
00 00 00 00 00 00 00
Strings:
Power Management Controller FW Bootloader
6.0
Handle 0x001D, DMI type 216, 23 bytes
OEM-specific Type
Header and Data:
D8 17 1D 00 08 00 01 00 01 09 09 00 00 00 00 00
00 00 00 00 00 00 00
Strings:
System Programmable Logic Device
Handle 0x001E, DMI type 216, 23 bytes
OEM-specific Type
Header and Data:
D8 17 1E 00 09 00 01 00 03 04 00 00 00 03 00 96
00 0A 00 00 00 01 00
Strings:
Server Platform Services (SPS) Firmware
Handle 0x001F, DMI type 219, 32 bytes
HP ProLiant Information
Power Features: 0x000000df
Omega Features: 0x00000000
Misc. Features: 0x00009001
iCRU: Yes
UEFI: No
Handle 0x0020, DMI type 223, 11 bytes
OEM-specific Type
Header and Data:
DF 0B 20 00 66 46 70 00 00 00 00
Handle 0x0021, DMI type 224, 10 bytes
OEM-specific Type
Header and Data:
E0 0A 21 00 00 00 02 03 FE FF
Handle 0x0022, DMI type 226, 21 bytes
OEM-specific Type
Header and Data:
E2 15 22 00 38 33 33 31 30 35 43 4E 36 36 34 38
30 41 4E 59 01
Strings:
CN66480ANY
Handle 0x0023, DMI type 227, 22 bytes
OEM-specific Type
Header and Data:
E3 16 23 00 03 00 07 00 00 A0 01 00 FF FF FF FF
00 00 00 00 00 00
Handle 0x0024, DMI type 227, 22 bytes
OEM-specific Type
Header and Data:
E3 16 24 00 03 00 08 00 00 A2 01 00 FF FF FF FF
00 00 00 00 00 00
Handle 0x0025, DMI type 227, 22 bytes
OEM-specific Type
Header and Data:
E3 16 25 00 03 00 09 00 00 A4 01 00 FF FF FF FF
01 00 00 00 00 00
Handle 0x0026, DMI type 227, 22 bytes
OEM-specific Type
Header and Data:
E3 16 26 00 03 00 0A 00 00 A6 01 00 FF FF FF FF
01 00 00 00 00 00
Handle 0x0027, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 27 00 00 00 00 00 00 00 00 FF 00 00
Handle 0x0028, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 28 00 01 00 00 00 00 00 00 FF 00 00
Handle 0x0029, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 29 00 02 00 00 00 00 00 00 FF 00 00
Handle 0x002A, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 2A 00 03 00 00 00 00 00 00 FF 00 00
Handle 0x002B, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 2B 00 04 00 00 00 00 00 00 FF 00 00
Handle 0x002C, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 2C 00 05 00 00 00 00 00 00 FF 00 00
Handle 0x002D, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 2D 00 06 00 00 00 00 00 00 FF 00 00
Handle 0x002E, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 2E 00 07 00 00 00 00 00 00 FF 00 00
Handle 0x002F, DMI type 228, 14 bytes
OEM-specific Type
Header and Data:
E4 0E 2F 00 08 06 00 00 00 00 00 FF 01 00
Handle 0x0030, DMI type 229, 100 bytes
OEM-specific Type
Header and Data:
E5 64 30 00 24 4F 43 53 00 B0 F1 77 00 00 00 00
00 40 00 00 24 4F 43 42 00 50 F0 77 00 00 00 00
00 60 01 00 24 48 44 44 00 30 F0 77 00 00 00 00
00 20 00 00 24 57 48 45 00 20 EF 77 00 00 00 00
00 10 00 00 24 53 4D 56 98 2E F2 77 00 00 00 00
08 00 00 00 24 5A 58 54 00 10 EF 77 00 00 00 00
3B 00 00 00
Handle 0x0031, DMI type 232, 14 bytes
OEM-specific Type
Header and Data:
E8 0E 31 00 07 00 11 00 00 00 B0 04 B0 04
Handle 0x0032, DMI type 232, 14 bytes
OEM-specific Type
Header and Data:
E8 0E 32 00 08 00 11 00 00 00 B0 04 B0 04
Handle 0x0033, DMI type 232, 14 bytes
OEM-specific Type
Header and Data:
E8 0E 33 00 09 00 11 00 00 00 B0 04 B0 04
Handle 0x0034, DMI type 232, 14 bytes
OEM-specific Type
Header and Data:
E8 0E 34 00 0A 00 11 00 00 00 B0 04 B0 04
Handle 0x0035, DMI type 237, 9 bytes
OEM-specific Type
Header and Data:
ED 09 35 00 07 00 01 02 03
Strings:
Hynix
HMA82GS7AFR8N-UH
31F9E4B8
Handle 0x0036, DMI type 237, 9 bytes
OEM-specific Type
Header and Data:
ED 09 36 00 08 00 01 02 03
Strings:
Hynix
HMA82GS7AFR8N-UH
31F9E4B6
Handle 0x0037, DMI type 237, 9 bytes
OEM-specific Type
Header and Data:
ED 09 37 00 09 00 01 02 03
Strings:
Hynix
HMA82GS7AFR8N-UH
31F9E96B
Handle 0x0038, DMI type 237, 9 bytes
OEM-specific Type
Header and Data:
ED 09 38 00 0A 00 01 02 03
Strings:
Hynix
HMA82GS7AFR8N-UH
31F9E4B9
Handle 0x0039, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 2
Type: x4 PCI Express 2
Current Usage: Available
Length: Other
ID: 2
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:02:00.0
Handle 0x003A, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 1
Type: x1 PCI Express 2
Current Usage: Available
Length: Other
ID: 1
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:05:00.0
Handle 0x003B, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 5
Type: x2 PCI Express 2
Current Usage: Available
Length: Other
ID: 5
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:08:00.0
Handle 0x003C, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 0
Type: x1 PCI Express 3 x4
Current Usage: Available
Length: Unknown
ID: 0
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:fe:00.0
Handle 0x003D, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 0
Type: x1 PCI Express 3 x4
Current Usage: Available
Length: Unknown
ID: 0
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:fe:00.0
Handle 0x003E, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 4
Type: x4 PCI Express 2
Current Usage: Available
Length: Unknown
ID: 4
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:0b:00.0
Handle 0x003F, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 3
Type: x4 PCI Express 2
Current Usage: In Use
Length: Other
ID: 3
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:0e:00.0
Handle 0x0040, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 1
Type: x4 PCI Express 3 x4
Current Usage: Available
Length: Unknown
ID: 1
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:fe:00.0
Handle 0x0041, DMI type 9, 17 bytes
System Slot Information
Designation: PCI-E Slot 1
Type: x4 PCI Express 3 x4
Current Usage: Available
Length: Unknown
ID: 1
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:fe:00.0
Handle 0x0042, DMI type 233, 41 bytes
HP BIOS PXE NIC PCI and MAC Information
NIC 1: PCI device 11:00.0, MAC address 00:FD:45:50:6C:01
Handle 0x0043, DMI type 233, 41 bytes
HP BIOS PXE NIC PCI and MAC Information
NIC 2: PCI device 11:00.0, MAC address 00:FD:45:50:6C:02
Handle 0x0044, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected
Handle 0x0045, DMI type 196, 15 bytes
OEM-specific Type
Header and Data:
C4 0F 45 00 00 00 00 00 00 00 02 01 00 01 02
Handle 0x0046, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Embedded LOM 1 Port 1
Type: Ethernet
Status: Enabled
Type Instance: 1
Bus Address: 0000:11:00.0
Handle 0x0047, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Embedded LOM 1 Port 2
Type: Ethernet
Status: Enabled
Type Instance: 2
Bus Address: 0000:11:00.0
Handle 0x0048, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Embedded SATA Controller #1
Type: SATA Controller
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:17.0
Handle 0x0049, DMI type 202, 13 bytes
OEM-specific Type
Header and Data:
CA 0D 49 00 07 00 FF 01 01 01 00 00 00
Handle 0x004A, DMI type 202, 13 bytes
OEM-specific Type
Header and Data:
CA 0D 4A 00 08 00 FF 02 01 02 00 00 00
Handle 0x004B, DMI type 202, 13 bytes
OEM-specific Type
Header and Data:
CA 0D 4B 00 09 00 FF 03 01 03 00 00 00
Handle 0x004C, DMI type 202, 13 bytes
OEM-specific Type
Header and Data:
CA 0D 4C 00 0A 00 FF 04 01 04 00 00 00
Handle 0x004D, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 4D 00 39 00 FE FF FF FF FF FF FF FF FF FF
FF FF FE FF 00 00 09 0A 02 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)
PCI.Slot.2.1
Empty slot 2
Slot 2
Handle 0x004E, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 4E 00 3A 00 FE FF FF FF FF FF FF FF FF FF
FF FF FE FF 00 00 09 0A 01 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1D,0x5)/Pci(0x0,0x0)
PCI.Slot.1.1
Empty slot 1
Slot 1
Handle 0x004F, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 4F 00 3B 00 FE FF FF FF FF FF FF FF FF FF
FF FF FE FF 00 00 09 0A 05 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1C,0x0)/Pci(0x0,0x0)
PCI.Slot.5.1
Empty slot 5
Slot 5
Handle 0x0050, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 50 00 3C 00 FE FF FF FF FF FF FF FF FF FF
FF FF FE FF 00 00 09 0A 01 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1C,0x2)/Pci(0x0,0x0)
PCI.Slot.1.1
Unknown
Slot 0
Handle 0x0051, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 51 00 3D 00 FE FF FF FF FF FF FF FF FF FF
FF FF FE FF 00 00 09 0A 01 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1C,0x2)/Pci(0x0,0x0)
PCI.Slot.1.1
Unknown
Slot 0
Handle 0x0052, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 52 00 3E 00 FE FF FF FF FF FF FF FF FF FF
FF FF FE FF 00 00 09 0A 04 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)
PCI.Slot.4.1
Empty slot 4
Slot 4
Handle 0x0053, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 53 00 3F 00 FE FF 79 11 0F 01 79 11 01 00
01 08 FE FF 00 00 10 0A 03 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1B,0x0)/Pci(0x0,0x0)
NVMe.Slot.3.1
NVM Express Controller
Slot 3
Handle 0x0054, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 54 00 40 00 FE FF FF FF FF FF FF FF FF FF
FF FF FE FF 00 00 09 0A 01 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1C,0x2)/Pci(0x0,0x0)
PCI.Slot.1.1
Empty slot 1
Slot 0
Handle 0x0055, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 55 00 41 00 FE FF FF FF FF FF FF FF FF FF
FF FF FE FF 00 00 09 0A 01 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1C,0x2)/Pci(0x0,0x0)
PCI.Slot.1.1
Empty slot 1
Slot 0
Handle 0x0056, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 56 00 46 00 FE FF B3 15 07 10 90 15 04 22
02 00 FE FF 00 00 04 01 01 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Ctrl(0x1)
NIC.LOM.1.1
Port 1 - Mellanox Network Adapter
Embedded LOM 1
Handle 0x0057, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 57 00 47 00 FE FF B3 15 07 10 90 15 04 22
02 00 FE FF 00 00 04 01 01 02 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Ctrl(0x2)
NIC.LOM.1.2
Port 2 - Mellanox Network Adapter
Embedded LOM 1
Handle 0x0058, DMI type 203, 34 bytes
OEM-specific Type
Header and Data:
CB 22 58 00 48 00 FE FF 86 80 02 A1 3C 10 65 81
01 06 FE FF 00 00 06 08 01 01 FF FF 01 02 03 04
FE FF
Strings:
PciRoot(0x0)/Pci(0x17,0x0)
SATA.Emb.1.1
Embedded SATA Controller #1
Embedded SATA Controller #1
Handle 0x0059, DMI type 234, 16 bytes
OEM-specific Type
Header and Data:
EA 10 59 00 FE FF C0 00 01 A0 00 00 00 00 00 00
Handle 0x005A, DMI type 234, 12 bytes
OEM-specific Type
Header and Data:
EA 0C 5A 00 27 00 60 03 01 01 00 00
Handle 0x005B, DMI type 240, 39 bytes
OEM-specific Type
Header and Data:
F0 27 5B 00 56 00 18 1E 24 00 01 08 48 0D 00 00
00 00 00 0F 00 00 00 00 00 00 00 0B 00 00 00 00
00 00 00 02 00 00 00
Strings:
02.36.70.00
Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table

1364
tests/fixtures/dmidecode/HP_SL4540_Gen8 vendored Normal file

File diff suppressed because it is too large Load diff

526
tests/fixtures/dmidecode/QCT_X10E-9N vendored Normal file
View file

@ -0,0 +1,526 @@
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.0 present.
37 structures occupying 2615 bytes.
Table at 0x8F9C5000.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: S3E_3B09.02
Release Date: 02/23/2018
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 8192 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
Print screen service is supported (int 5h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 5.11
Firmware Revision: 3.20
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Quanta Cloud Technology Inc.
Product Name: QuantaMicro X10E-9N
Version: N/A
Serial Number: QTFCQ57140285
UUID: E1A3D1C8-0809-E711-B48A-A81E84729878
Wake-up Type: Power Switch
SKU Number: S3E
Family: Default string
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Quanta Cloud Technology Inc.
Product Name: S3E-MB
Version: 31S3EMB0010
Serial Number: CQ571000415
Asset Tag: N/A
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: 4
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Quanta Cloud Technology Inc.
Type: Rack Mount Chassis
Lock: Not Present
Version: 32S3ECAST00
Serial Number: QTFCQ571402FD
Asset Tag: N/A
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: 3 U
Number Of Power Cords: 2
Contained Elements: 0
SKU Number: Default string
Handle 0x0021, DMI type 11, 5 bytes
OEM Strings
String 1: Default string
String 2: Default string
String 3: Default string
String 4: Default string
String 5: Default string
Handle 0x0025, DMI type 38, 18 bytes
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA2 (I/O)
Register Spacing: Successive Byte Boundaries
Handle 0x0034, DMI type 7, 19 bytes
Cache Information
Socket Designation: L1 Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 256 kB
Maximum Size: 256 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Parity
System Type: Other
Associativity: 8-way Set-associative
Handle 0x0035, DMI type 7, 19 bytes
Cache Information
Socket Designation: L2 Cache
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 1024 kB
Maximum Size: 1024 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 4-way Set-associative
Handle 0x0036, DMI type 7, 19 bytes
Cache Information
Socket Designation: L3 Cache
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 8192 kB
Maximum Size: 8192 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Multi-bit ECC
System Type: Unified
Associativity: 16-way Set-associative
Handle 0x0037, DMI type 4, 48 bytes
Processor Information
Socket Designation: CPU
Type: Central Processor
Family: Xeon
Manufacturer: Intel(R) Corporation
ID: E9 06 09 00 FF FB EB BF
Signature: Type 0, Family 6, Model 158, Stepping 9
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU E3-1240 v6 @ 3.70GHz
Voltage: 1.0 V
External Clock: 100 MHz
Max Speed: 4100 MHz
Current Speed: 3700 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0034
L2 Cache Handle: 0x0035
L3 Cache Handle: 0x0036
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 4
Core Enabled: 4
Thread Count: 8
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
Handle 0x0038, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Single-bit ECC
Maximum Capacity: 64 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x0039, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0038
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMM A1
Bank Locator: CHANNEL A
Type: Unknown
Type Detail: None
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Clock Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x003A, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0038
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM A0
Bank Locator: CHANNEL A
Type: DDR4
Type Detail: Synchronous
Speed: 2133 MHz
Manufacturer: Samsung
Serial Number: 328CBA1D
Asset Tag: 9876543210
Part Number: M391A2K43BB1-CPB
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Handle 0x003B, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0038
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMM B1
Bank Locator: CHANNEL B
Type: Unknown
Type Detail: None
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Clock Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x003C, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0038
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM B0
Bank Locator: CHANNEL B
Type: DDR4
Type Detail: Synchronous
Speed: 2133 MHz
Manufacturer: Samsung
Serial Number: 328CB9DF
Asset Tag: 9876543210
Part Number: M391A2K43BB1-CPB
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Handle 0x003D, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x007FFFFFFFF
Range Size: 32 GB
Physical Array Handle: 0x0038
Partition Width: 2
Handle 0x003E, DMI type 221, 26 bytes
OEM-specific Type
Header and Data:
DD 1A 3E 00 03 01 00 04 01 00 08 00 02 00 00 00
00 84 00 03 00 01 03 00 00 00
Strings:
Reference Code - CPU
uCode Version
TXT ACM version
Handle 0x003F, DMI type 221, 68 bytes
OEM-specific Type
Header and Data:
DD 44 3F 00 09 01 00 04 01 00 08 00 02 03 FF FF
FF FF FF 04 00 FF FF FF 31 00 05 00 FF FF FF 31
00 06 00 FF FF FF FF FF 07 00 3E 00 00 00 00 08
00 34 00 00 00 00 09 00 3E 00 00 00 00 0A 00 34
00 00 00 00
Strings:
Reference Code - SKL PCH
PCH-CRID Status
Disabled
PCH-CRID Original Value
PCH-CRID New Value
OPROM - RST - RAID
SKL PCH H Bx Hsio Version
SKL PCH H Dx Hsio Version
SKL PCH LP Bx Hsio Version
SKL PCH LP Cx Hsio Version
Handle 0x0040, DMI type 221, 54 bytes
OEM-specific Type
Header and Data:
DD 36 40 00 07 01 00 04 01 00 08 00 02 00 04 01
00 08 00 03 00 04 01 00 00 00 04 05 FF FF FF FF
FF 06 00 FF FF FF 05 00 07 00 FF FF FF 05 00 08
00 FF FF FF 00 00
Strings:
Reference Code - SA - System Agent
Reference Code - MRC
SA - PCIe Version
SA-CRID Status
Disabled
SA-CRID Original Value
SA-CRID New Value
OPROM - VBIOS
Handle 0x0041, DMI type 221, 96 bytes
OEM-specific Type
Header and Data:
DD 60 41 00 0D 01 00 00 00 00 00 00 02 00 FF FF
FF FF FF 03 04 FF FF FF FF FF 05 06 FF FF FF FF
FF 07 08 FF FF FF FF FF 09 00 00 00 00 00 00 0A
00 FF FF FF FF FF 0B 00 FF FF 00 00 00 0C 00 FF
FF FF FF FF 0D 00 FF FF FF FF FF 0E 00 FF FF FF
FF FF 0F 00 FF FF FF FF FF 10 11 01 02 02 03 00
Strings:
Lan Phy Version
Sensor Firmware Version
Debug Mode Status
Disabled
Performance Mode Status
Disabled
Debug Use USB(Disabled:Serial)
Disabled
ICC Overclocking Version
UNDI Version
EC FW Version
GOP Version
BIOS Guard Version
Base EC FW Version
EC-EC Protocol Version
Royal Park Version
BP1.2.2.0_RP03
Handle 0x0043, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1:XDP CONN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0044, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: JP2:CPLD JTAG
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0045, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J7:HDD0
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: SATA
Handle 0x0046, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: J15:USB CONN_1
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x0047, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: J16:USB CONN_0
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x0048, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: JP10:SMBUS_HOST
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0049, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J20:TPM CONN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x004A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: JP13:SERIAL_A
Internal Connector Type: DB-9 male
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Serial Port XT/AT Compatible
Handle 0x004B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: J22:VGA_Conn
External Connector Type: DB-15 female
Port Type: Video Port
Handle 0x004C, DMI type 9, 17 bytes
System Slot Information
Designation: Mezz Slot(PCIex8 x4)
Type: x12 Proprietary
Current Usage: In Use
Length: Short
Characteristics:
3.3 V is provided
PME signal is supported
SMBus signal is supported
Bus Address: 0000:00:01.0
Handle 0x004D, DMI type 9, 17 bytes
System Slot Information
Designation: OCP Mezz Slot(PCIex4)
Type: x4 Proprietary
Current Usage: Available
Length: Short
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:00:1d.0
Handle 0x004E, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Intel(R) C236 chipset SATA Controller
Type: SATA Controller
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:17.0
Handle 0x004F, DMI type 41, 11 bytes
Onboard Device
Reference Designation: onboard VGA
Type: Video
Status: Enabled
Type Instance: 1
Bus Address: 0000:03:00.0
Handle 0x0050, DMI type 136, 6 bytes
OEM-specific Type
Header and Data:
88 06 50 00 00 00
Handle 0x0051, DMI type 14, 17 bytes
Group Associations
Name: Firmware Version Info
Items: 4
0x003E (<OUT OF SPEC>)
0x003F (<OUT OF SPEC>)
0x0040 (<OUT OF SPEC>)
0x0041 (<OUT OF SPEC>)
Handle 0x0052, DMI type 13, 22 bytes
BIOS Language Information
Language Description Format: Long
Installable Languages: 1
en|US|iso8859-1
Currently Installed Language: en|US|iso8859-1
Handle 0x0053, DMI type 127, 4 bytes
End Of Table

1242
tests/fixtures/dmidecode/SM_SSG-6028R vendored Normal file

File diff suppressed because it is too large Load diff

957
tests/fixtures/dmidecode/SM_SYS-6018R vendored Normal file
View file

@ -0,0 +1,957 @@
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.
Table at 0x000EC9B0.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: 2.0b
Release Date: 04/14/2017
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16384 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 5.6
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Supermicro
Product Name: SYS-6018R-TDTPR
Version: 0123456789
Serial Number: A177950X7709591
UUID: 00000000-0000-0000-0000-0CC47A4B18C0
Wake-up Type: Power Switch
SKU Number: Default string
Family: Default string
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Supermicro
Product Name: X10DRD-LTP
Version: 1.00
Serial Number: ZM152S007866
Asset Tag: Default string
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: Default string
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Supermicro
Type: Other
Lock: Not Present
Version: 0123456789
Serial Number: C8150LG15NH0008
Asset Tag: Default string
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: Unspecified
Number Of Power Cords: 1
Contained Elements: 0
SKU Number: Default string
Handle 0x0004, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1A1
Internal Connector Type: None
External Reference Designator: PS2Mouse
External Connector Type: PS/2
Port Type: Mouse Port
Handle 0x0005, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1A1
Internal Connector Type: None
External Reference Designator: Keyboard
External Connector Type: PS/2
Port Type: Keyboard Port
Handle 0x0006, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A1
Internal Connector Type: None
External Reference Designator: TV Out
External Connector Type: Mini Centronics Type-14
Port Type: Other
Handle 0x0007, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A2A
Internal Connector Type: None
External Reference Designator: COM A
External Connector Type: DB-9 male
Port Type: Serial Port 16550A Compatible
Handle 0x0008, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A2B
Internal Connector Type: None
External Reference Designator: Video
External Connector Type: DB-15 female
Port Type: Video Port
Handle 0x0009, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB1
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x000A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB2
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x000B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB3
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9A1 - TPM HDR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9C1 - PCIE DOCKING CONN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2B3 - CPU FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J6C2 - EXT HDMI
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0010, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3C1 - GMCH FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0011, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1D1 - ITP
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0012, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E2 - MDC INTPSR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0013, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E4 - MDC INTPSR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0014, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E3 - LPC HOT DOCKING
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0015, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E1 - SCAN MATRIX
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0016, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9G1 - LPC SIDE BAND
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0017, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J8F1 - UNIFIED
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0018, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J6F1 - LVDS
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x0019, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2F1 - LAI FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x001A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2G1 - GFX VID
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x001B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1G6 - AC JACK
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other
Handle 0x001C, DMI type 9, 17 bytes
System Slot Information
Designation: CPU1 SLOT4 PCI-E 3.0 X8
Type: x8 PCI Express 3 x8
Current Usage: Available
Length: Short
ID: 4
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:05:00.0
Handle 0x001D, DMI type 9, 17 bytes
System Slot Information
Designation: CPU1 SLOT5 PCI-E 3.0 X8
Type: x8 PCI Express 3 x8
Current Usage: Available
Length: Short
ID: 5
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:03:00.0
Handle 0x001E, DMI type 9, 17 bytes
System Slot Information
Designation: CPU1 SLOT6 PCI-E 3.0 X8
Type: x8 PCI Express 3 x8
Current Usage: In Use
Length: Short
ID: 6
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:04:00.0
Handle 0x001F, DMI type 9, 17 bytes
System Slot Information
Designation: CPU2 SLOT7 PCI-E 3.0 X8
Type: x8 PCI Express 3 x8
Current Usage: Available
Length: Short
ID: 7
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:ff:00.0
Handle 0x0020, DMI type 11, 5 bytes
OEM Strings
String 1: Intel Haswell/Wellsburg/Grantley
String 2: Supermicro motherboard-X10 Series
Handle 0x0021, DMI type 32, 20 bytes
System Boot Information
Status: No errors detected
Handle 0x0022, DMI type 39, 22 bytes
System Power Supply
Power Unit Group: 1
Location: PSU1
Name: PWS-504P-1R
Manufacturer: SUPERMICRO
Serial Number: P5041CG52ST0022
Asset Tag: N/A
Model Part Number: PWS-504P-1R
Revision: 1.4
Max Power Capacity: 500 W
Status: Present, OK
Type: Switching
Input Voltage Range Switching: Auto-switch
Plugged: Yes
Hot Replaceable: Yes
Handle 0x0023, DMI type 39, 22 bytes
System Power Supply
Power Unit Group: 2
Location: PSU2
Name: PWS-504P-1R
Manufacturer: SUPERMICRO
Serial Number: P5041CG52ST0021
Asset Tag: N/A
Model Part Number: PWS-504P-1R
Revision: 1.4
Max Power Capacity: 500 W
Status: Present, OK
Type: Switching
Input Voltage Range Switching: Auto-switch
Plugged: Yes
Hot Replaceable: Yes
Handle 0x0024, DMI type 41, 11 bytes
Onboard Device
Reference Designation: ASPEED Video AST2400
Type: Video
Status: Enabled
Type Instance: 1
Bus Address: 0000:09:00.0
Handle 0x0025, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Intel Ethernet 82599ES/EN SFP+ #1
Type: Ethernet
Status: Enabled
Type Instance: 1
Bus Address: 0000:06:00.0
Handle 0x0026, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Intel Ethernet 82599ES/EN SFP+ #2
Type: Ethernet
Status: Enabled
Type Instance: 2
Bus Address: 0000:06:00.1
Handle 0x0027, DMI type 38, 18 bytes
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA2 (I/O)
Register Spacing: Successive Byte Boundaries
Handle 0x002A, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 256 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x002B, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002A
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: P1-DIMMA1
Bank Locator: P0_Node0_Channel0_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MHz
Manufacturer: SK Hynix
Serial Number: 2AA5B8E9
Asset Tag: P1-DIMMA1_AssetTag (date:17/39)
Part Number: HMA42GR7AFR4N-UH
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x002C, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002A
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: P1-DIMMB1
Bank Locator: P0_Node0_Channel1_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MHz
Manufacturer: SK Hynix
Serial Number: 2AA5B923
Asset Tag: P1-DIMMB1_AssetTag (date:17/39)
Part Number: HMA42GR7AFR4N-UH
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x002D, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002A
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: P1-DIMMC1
Bank Locator: P0_Node0_Channel2_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: Unknown
Manufacturer: NO DIMM
Serial Number: NO DIMM
Asset Tag: NO DIMM
Part Number: NO DIMM
Rank: Unknown
Configured Clock Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x002E, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002A
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: P1-DIMMD1
Bank Locator: P0_Node0_Channel3_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: Unknown
Manufacturer: NO DIMM
Serial Number: NO DIMM
Asset Tag: NO DIMM
Part Number: NO DIMM
Rank: Unknown
Configured Clock Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x002F, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 256 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x0030, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002F
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: P2-DIMME1
Bank Locator: P1_Node1_Channel0_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MHz
Manufacturer: SK Hynix
Serial Number: 2AA5B88C
Asset Tag: P2-DIMME1_AssetTag (date:17/39)
Part Number: HMA42GR7AFR4N-UH
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0031, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002F
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: P2-DIMMF1
Bank Locator: P1_Node1_Channel1_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MHz
Manufacturer: SK Hynix
Serial Number: 2AA5B86B
Asset Tag: P2-DIMMF1_AssetTag (date:17/39)
Part Number: HMA42GR7AFR4N-UH
Rank: 2
Configured Clock Speed: 2133 MHz
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0032, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002F
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: P2-DIMMG1
Bank Locator: P1_Node1_Channel2_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: Unknown
Manufacturer: NO DIMM
Serial Number: NO DIMM
Asset Tag: NO DIMM
Part Number: NO DIMM
Rank: Unknown
Configured Clock Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0033, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002F
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: P2-DIMMH1
Bank Locator: P1_Node1_Channel3_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: Unknown
Manufacturer: NO DIMM
Serial Number: NO DIMM
Asset Tag: NO DIMM
Part Number: NO DIMM
Rank: Unknown
Configured Clock Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0034, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x007FFFFFFFF
Range Size: 32 GB
Physical Array Handle: 0x002A
Partition Width: 2
Handle 0x0035, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x003FFFFFFFF
Range Size: 16 GB
Physical Device Handle: 0x002B
Memory Array Mapped Address Handle: 0x0034
Partition Row Position: 1
Handle 0x0036, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00400000000
Ending Address: 0x007FFFFFFFF
Range Size: 16 GB
Physical Device Handle: 0x002C
Memory Array Mapped Address Handle: 0x0034
Partition Row Position: 1
Handle 0x0037, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00800000000
Ending Address: 0x00FFFFFFFFF
Range Size: 32 GB
Physical Array Handle: 0x002F
Partition Width: 2
Handle 0x0038, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00800000000
Ending Address: 0x00BFFFFFFFF
Range Size: 16 GB
Physical Device Handle: 0x0030
Memory Array Mapped Address Handle: 0x0037
Partition Row Position: 1
Handle 0x0039, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00C00000000
Ending Address: 0x00FFFFFFFFF
Range Size: 16 GB
Physical Device Handle: 0x0031
Memory Array Mapped Address Handle: 0x0037
Partition Row Position: 1
Handle 0x003A, DMI type 15, 73 bytes
System Event Log
Area Length: 65535 bytes
Header Start Offset: 0x0000
Header Length: 16 bytes
Data Start Offset: 0x0010
Access Method: Memory-mapped physical 32-bit address
Access Address: 0xFF540000
Status: Valid, Not Full
Change Token: 0x00000001
Header Format: Type 1
Supported Log Type Descriptors: 25
Descriptor 1: Single-bit ECC memory error
Data Format 1: Multiple-event handle
Descriptor 2: Multi-bit ECC memory error
Data Format 2: Multiple-event handle
Descriptor 3: Parity memory error
Data Format 3: None
Descriptor 4: Bus timeout
Data Format 4: None
Descriptor 5: I/O channel block
Data Format 5: None
Descriptor 6: Software NMI
Data Format 6: None
Descriptor 7: POST memory resize
Data Format 7: None
Descriptor 8: POST error
Data Format 8: POST results bitmap
Descriptor 9: PCI parity error
Data Format 9: Multiple-event handle
Descriptor 10: PCI system error
Data Format 10: Multiple-event handle
Descriptor 11: CPU failure
Data Format 11: None
Descriptor 12: EISA failsafe timer timeout
Data Format 12: None
Descriptor 13: Correctable memory log disabled
Data Format 13: None
Descriptor 14: Logging disabled
Data Format 14: None
Descriptor 15: System limit exceeded
Data Format 15: None
Descriptor 16: Asynchronous hardware timer expired
Data Format 16: None
Descriptor 17: System configuration information
Data Format 17: None
Descriptor 18: Hard disk information
Data Format 18: None
Descriptor 19: System reconfigured
Data Format 19: None
Descriptor 20: Uncorrectable CPU-complex error
Data Format 20: None
Descriptor 21: Log area reset/cleared
Data Format 21: None
Descriptor 22: System boot
Data Format 22: None
Descriptor 23: End of log
Data Format 23: None
Descriptor 24: OEM-specific
Data Format 24: OEM-specific
Descriptor 25: OEM-specific
Data Format 25: OEM-specific
Handle 0x003B, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L1
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 640 kB
Maximum Size: 640 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Parity
System Type: Other
Associativity: 8-way Set-associative
Handle 0x003C, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L2
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 2560 kB
Maximum Size: 2560 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x003D, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L3
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 25600 kB
Maximum Size: 25600 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 20-way Set-associative
Handle 0x003E, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU1
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: F1 06 04 00 FF FB EB BF
Signature: Type 0, Family 6, Model 79, Stepping 1
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
Voltage: 1.8 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 2200 MHz
Status: Populated, Enabled
Upgrade: Socket LGA2011-3
L1 Cache Handle: 0x003B
L2 Cache Handle: 0x003C
L3 Cache Handle: 0x003D
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 10
Core Enabled: 10
Thread Count: 20
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
Handle 0x003F, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L1
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 640 kB
Maximum Size: 640 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Parity
System Type: Other
Associativity: 8-way Set-associative
Handle 0x0040, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L2
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 2560 kB
Maximum Size: 2560 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x0041, DMI type 7, 19 bytes
Cache Information
Socket Designation: CPU Internal L3
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 25600 kB
Maximum Size: 25600 kB
Supported SRAM Types:
Unknown
Installed SRAM Type: Unknown
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 20-way Set-associative
Handle 0x0042, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU2
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: F1 06 04 00 FF FB EB BF
Signature: Type 0, Family 6, Model 79, Stepping 1
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
Voltage: 1.8 V
External Clock: 100 MHz
Max Speed: 4000 MHz
Current Speed: 2200 MHz
Status: Populated, Enabled
Upgrade: Socket LGA2011-3
L1 Cache Handle: 0x003F
L2 Cache Handle: 0x0040
L3 Cache Handle: 0x0041
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Core Count: 10
Core Enabled: 10
Thread Count: 20
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
Handle 0x0043, DMI type 40, 27 bytes
Additional Information 1
Handle 0x0044, DMI type 40, 27 bytes
Additional Information 1
Handle 0x0045, DMI type 40, 27 bytes
Additional Information 1
Handle 0x0046, DMI type 40, 27 bytes
Additional Information 1
Handle 0x0047, DMI type 127, 4 bytes
End Of Table

View file

@ -0,0 +1,536 @@
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 3.0 present.
32 structures occupying 2366 bytes.
Table at 0x6FB76000.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: 2.2
Release Date: 05/16/2018
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16 MB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 5.11
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Supermicro
Product Name: SYS-5039MS-H12TRF-OS012
Version: 0123456789
Serial Number: E235735X6B01665
UUID: 00000000-0000-0000-0000-0CC47AE14338
Wake-up Type: Power Switch
SKU Number: To be filled by O.E.M.
Family: To be filled by O.E.M.
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Supermicro
Product Name: X11SSE-F
Version: 1.01
Serial Number: ZM169S040205
Asset Tag: To be filled by O.E.M.
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: To be filled by O.E.M.
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Supermicro
Type: Other
Lock: Not Present
Version: 0123456789
Serial Number: C9390AF40A20098
Asset Tag: To be filled by O.E.M.
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: Unspecified
Number Of Power Cords: 1
Contained Elements: 0
SKU Number: To be filled by O.E.M.
Handle 0x0004, DMI type 9, 17 bytes
System Slot Information
Designation: CPU MICRO-LP PCI-E 3.0 X8
Type: x8 PCI Express 3 x8
Current Usage: In Use
Length: Short
ID: 1
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:01:00.0
Handle 0x0005, DMI type 11, 5 bytes
OEM Strings
String 1: Intel Skylake-S/Skylake-H/Greenlow
String 2: Supermicro motherboard-X11 Series
Handle 0x0006, DMI type 32, 20 bytes
System Boot Information
Status: No errors detected
Handle 0x0007, DMI type 39, 22 bytes
System Power Supply
Power Unit Group: 1
Location: PSU1
Name: PWS-2K04F-1R
Manufacturer: SUPERMICRO
Serial Number: P2K4FCG37KT0851
Asset Tag: N/A
Model Part Number: PWS-2K04F-1R
Revision: 1.0
Max Power Capacity: 2000 W
Status: Present, OK
Type: Switching
Input Voltage Range Switching: Auto-switch
Plugged: Yes
Hot Replaceable: No
Handle 0x0008, DMI type 39, 22 bytes
System Power Supply
Power Unit Group: 2
Location: PSU2
Name: PWS-2K04F-1R
Manufacturer: SUPERMICRO
Serial Number: P2K4FCG37KT0852
Asset Tag: N/A
Model Part Number: PWS-2K04F-1R
Revision: 1.0
Max Power Capacity: 2000 W
Status: Present, OK
Type: Switching
Input Voltage Range Switching: Auto-switch
Plugged: Yes
Hot Replaceable: No
Handle 0x0009, DMI type 41, 11 bytes
Onboard Device
Reference Designation: ASPEED Video AST2400
Type: Video
Status: Enabled
Type Instance: 1
Bus Address: 0000:04:00.0
Handle 0x000A, DMI type 38, 18 bytes
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA2 (I/O)
Register Spacing: Successive Byte Boundaries
Handle 0x000B, DMI type 7, 19 bytes
Cache Information
Socket Designation: L1 Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 128 kB
Maximum Size: 128 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Parity
System Type: Data
Associativity: 8-way Set-associative
Handle 0x000C, DMI type 7, 19 bytes
Cache Information
Socket Designation: L1 Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 128 kB
Maximum Size: 128 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Parity
System Type: Instruction
Associativity: 8-way Set-associative
Handle 0x000D, DMI type 7, 19 bytes
Cache Information
Socket Designation: L2 Cache
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 1024 kB
Maximum Size: 1024 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 4-way Set-associative
Handle 0x000E, DMI type 7, 19 bytes
Cache Information
Socket Designation: L3 Cache
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 8192 kB
Maximum Size: 8192 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Multi-bit ECC
System Type: Unified
Associativity: 16-way Set-associative
Handle 0x000F, DMI type 4, 48 bytes
Processor Information
Socket Designation: CPU
Type: Central Processor
Family: Xeon
Manufacturer: Intel(R) Corporation
ID: E3 06 05 00 FF FB EB BF
Signature: Type 0, Family 6, Model 94, Stepping 3
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz
Voltage: 1.1 V
External Clock: 100 MHz
Max Speed: 3900 MHz
Current Speed: 3500 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x000C
L2 Cache Handle: 0x000D
L3 Cache Handle: 0x000E
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 4
Core Enabled: 4
Thread Count: 8
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
Handle 0x0010, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Single-bit ECC
Maximum Capacity: 64 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x0011, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0010
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMMA1
Bank Locator: P0_Node0_Channel0_Dimm0
Type: Unknown
Type Detail: None
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Clock Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0012, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0010
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMMA2
Bank Locator: P0_Node0_Channel0_Dimm1
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MT/s
Manufacturer: Micron
Serial Number: 13DA8BB7
Asset Tag: DIMMA2_AssetTag(16/36)
Part Number: 18ADF2G72AZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Handle 0x0013, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0010
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: DIMMB1
Bank Locator: P0_Node0_Channel1_Dimm0
Type: Unknown
Type Detail: None
Speed: Unknown
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: Unknown
Configured Clock Speed: Unknown
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0014, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0010
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMMB2
Bank Locator: P0_Node0_Channel1_Dimm1
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MT/s
Manufacturer: Micron
Serial Number: 13DA8C08
Asset Tag: DIMMB2_AssetTag(16/36)
Part Number: 18ADF2G72AZ-2G3B1
Rank: 2
Configured Clock Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Handle 0x0015, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x007FFFFFFFF
Range Size: 32 GB
Physical Array Handle: 0x0010
Partition Width: 2
Handle 0x0016, DMI type 15, 73 bytes
System Event Log
Area Length: 65535 bytes
Header Start Offset: 0x0000
Header Length: 16 bytes
Data Start Offset: 0x0010
Access Method: Memory-mapped physical 32-bit address
Access Address: 0xFF610000
Status: Valid, Not Full
Change Token: 0x00000001
Header Format: Type 1
Supported Log Type Descriptors: 25
Descriptor 1: Single-bit ECC memory error
Data Format 1: Multiple-event handle
Descriptor 2: Multi-bit ECC memory error
Data Format 2: Multiple-event handle
Descriptor 3: Parity memory error
Data Format 3: None
Descriptor 4: Bus timeout
Data Format 4: None
Descriptor 5: I/O channel block
Data Format 5: None
Descriptor 6: Software NMI
Data Format 6: None
Descriptor 7: POST memory resize
Data Format 7: None
Descriptor 8: POST error
Data Format 8: POST results bitmap
Descriptor 9: PCI parity error
Data Format 9: Multiple-event handle
Descriptor 10: PCI system error
Data Format 10: Multiple-event handle
Descriptor 11: CPU failure
Data Format 11: None
Descriptor 12: EISA failsafe timer timeout
Data Format 12: None
Descriptor 13: Correctable memory log disabled
Data Format 13: None
Descriptor 14: Logging disabled
Data Format 14: None
Descriptor 15: System limit exceeded
Data Format 15: None
Descriptor 16: Asynchronous hardware timer expired
Data Format 16: None
Descriptor 17: System configuration information
Data Format 17: None
Descriptor 18: Hard disk information
Data Format 18: None
Descriptor 19: System reconfigured
Data Format 19: None
Descriptor 20: Uncorrectable CPU-complex error
Data Format 20: None
Descriptor 21: Log area reset/cleared
Data Format 21: None
Descriptor 22: System boot
Data Format 22: None
Descriptor 23: End of log
Data Format 23: None
Descriptor 24: OEM-specific
Data Format 24: OEM-specific
Descriptor 25: OEM-specific
Data Format 25: OEM-specific
Handle 0x0017, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x003FFFFFFFF
Range Size: 16 GB
Physical Device Handle: 0x0012
Memory Array Mapped Address Handle: 0x0015
Partition Row Position: Unknown
Interleave Position: 1
Interleaved Data Depth: 2
Handle 0x0018, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00400000000
Ending Address: 0x007FFFFFFFF
Range Size: 16 GB
Physical Device Handle: 0x0014
Memory Array Mapped Address Handle: 0x0015
Partition Row Position: Unknown
Interleave Position: 2
Interleaved Data Depth: 2
Handle 0x0019, DMI type 221, 26 bytes
OEM-specific Type
Header and Data:
DD 1A 19 00 03 01 00 04 01 00 08 00 02 00 00 00
00 C6 00 03 00 00 05 00 00 00
Strings:
Reference Code - CPU
uCode Version
TXT ACM version
Handle 0x001A, DMI type 221, 68 bytes
OEM-specific Type
Header and Data:
DD 44 1A 00 09 01 00 04 01 00 08 00 02 03 FF FF
FF FF FF 04 00 FF FF FF 31 00 05 00 FF FF FF 31
00 06 00 FF FF FF FF FF 07 00 3E 00 00 00 00 08
00 34 00 00 00 00 09 00 3E 00 00 00 00 0A 00 34
00 00 00 00
Strings:
Reference Code - SKL PCH
PCH-CRID Status
Disabled
PCH-CRID Original Value
PCH-CRID New Value
OPROM - RST - RAID
SKL PCH H Bx Hsio Version
SKL PCH H Dx Hsio Version
SKL PCH LP Bx Hsio Version
SKL PCH LP Cx Hsio Version
Handle 0x001B, DMI type 221, 54 bytes
OEM-specific Type
Header and Data:
DD 36 1B 00 07 01 00 04 01 00 08 00 02 00 02 01
00 00 00 03 00 04 01 00 00 00 04 05 FF FF FF FF
FF 06 00 FF FF FF 07 00 07 00 FF FF FF 07 00 08
00 FF FF FF 00 00
Strings:
Reference Code - SA - System Agent
Reference Code - MRC
SA - PCIe Version
SA-CRID Status
Disabled
SA-CRID Original Value
SA-CRID New Value
OPROM - VBIOS
Handle 0x001C, DMI type 40, 27 bytes
Additional Information 1
Handle 0x001D, DMI type 40, 27 bytes
Additional Information 1
Handle 0x001E, DMI type 136, 6 bytes
OEM-specific Type
Header and Data:
88 06 1E 00 00 00
Handle 0x001F, DMI type 127, 4 bytes
End Of Table

571
tests/fixtures/dmidecode/unknown.txt vendored Normal file
View file

@ -0,0 +1,571 @@
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
44 structures occupying 2055 bytes.
Table at 0x000E4E00.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Online Labs
Version: 00.00.00.0007
Release Date: 03/04/2016
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 6144 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)
Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
5.25"/360 kB floppy services are supported (int 13h)
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
8042 keyboard services are supported (int 9h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 0.0
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: Online Labs
Product Name: SR
Version: (^_^)
Serial Number: 42
UUID: 12345678-1234-5678-90AB-CDDEEFAABBCC
Wake-up Type: Power Switch
SKU Number: (^_^)
Family: Avoton
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Online Labs
Product Name: SR
Version: 42
Serial Number: 42
Asset Tag: 42
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: <BAD INDEX>
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Chassis Manufacturer
Type: Desktop
Lock: Not Present
Version: Chassis Version
Serial Number: Chassis Serial Number
Asset Tag: Chassis Asset Tag
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: Unspecified
Number Of Power Cords: 1
Contained Elements: 0
SKU Number: SKU Number
Handle 0x0004, DMI type 4, 42 bytes
Processor Information
Socket Designation: CPU0
Type: Central Processor
Family: Atom
Manufacturer: Intel(R) Corporation
ID: D8 06 04 00 FF FB EB BF
Signature: Type 0, Family 6, Model 77, Stepping 8
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Atom(TM) CPU C2750 @ 2.40GHz
Voltage: 1.6 V
External Clock: 100 MHz
Max Speed: 2400 MHz
Current Speed: 2400 MHz
Status: Populated, Enabled
Upgrade: Socket LGA775
L1 Cache Handle: 0x0005
L2 Cache Handle: 0x0006
L3 Cache Handle: Not Provided
Serial Number: Not Specified
Asset Tag: UNKNOWN
Part Number: Not Specified
Core Count: 8
Core Enabled: 8
Thread Count: 8
Characteristics:
64-bit capable
Handle 0x0005, DMI type 7, 19 bytes
Cache Information
Socket Designation: L1-Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 448 kB
Maximum Size: 448 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Instruction
Associativity: 8-way Set-associative
Handle 0x0006, DMI type 7, 19 bytes
Cache Information
Socket Designation: L2-Cache
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 4096 kB
Maximum Size: 4096 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: 16-way Set-associative
Handle 0x0007, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: EC5
Internal Connector Type: None
External Reference Designator: USB
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x0008, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: EC6
Internal Connector Type: None
External Reference Designator: USB
External Connector Type: Access Bus (USB)
Port Type: USB
Handle 0x0009, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: LAN1
Internal Connector Type: None
External Reference Designator: 1G Network
External Connector Type: RJ-45
Port Type: Network Port
Handle 0x000A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: LAN1
Internal Connector Type: None
External Reference Designator: 1G Network
External Connector Type: RJ-45
Port Type: Network Port
Handle 0x000B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: 10GLAN1
Internal Connector Type: None
External Reference Designator: 10G Network
External Connector Type: RJ-45
Port Type: Network Port
Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: 10GLAN2
Internal Connector Type: None
External Reference Designator: 10G Network
External Connector Type: RJ-45
Port Type: Network Port
Handle 0x000D, DMI type 9, 17 bytes
System Slot Information
Designation: PCI_E_1
Type: x8 PCI Express x8
Current Usage: Available
Length: Other
ID: 1
Characteristics:
PME signal is supported
Hot-plug devices are supported
Bus Address: 0000:00:01.0
Handle 0x000E, DMI type 9, 17 bytes
System Slot Information
Designation: PCI_E_2
Type: x4 PCI Express x4
Current Usage: Available
Length: Other
ID: 2
Characteristics:
PME signal is supported
Hot-plug devices are supported
Bus Address: 0000:00:02.0
Handle 0x000F, DMI type 9, 17 bytes
System Slot Information
Designation: PCI_E_3
Type: x4 PCI Express x4
Current Usage: Available
Length: Other
ID: 3
Characteristics:
PME signal is supported
Hot-plug devices are supported
Bus Address: 0000:04:08.0
Handle 0x0010, DMI type 9, 17 bytes
System Slot Information
Designation: PCI_E_4
Type: x16 PCI Express x16
Current Usage: Available
Length: Other
ID: 4
Characteristics:
PME signal is supported
Hot-plug devices are supported
Bus Address: 0000:04:09.0
Handle 0x0011, DMI type 11, 5 bytes
OEM Strings
String 1: OemString1
String 2: OemString2
String 3: OemString3
Handle 0x0012, DMI type 12, 5 bytes
System Configuration Options
Option 1: ConfigOptions1
Option 2: ConfigOptions2
Option 3: ConfigOptions3
Handle 0x0013, DMI type 13, 22 bytes
BIOS Language Information
Language Description Format: Long
Installable Languages: 4
en|US|iso8859-1,0
fr|CA|iso8859-1,0
zh|TW|unicode,0
ja|JP|unicode,0
Currently Installed Language: en|US|iso8859-1,0
Handle 0x0014, DMI type 15, 29 bytes
System Event Log
Area Length: 0 bytes
Header Start Offset: 0x0000
Header Length: 8192 bytes
Data Start Offset: 0x2000
Access Method: General-purpose non-volatile data functions
Access Address: 0x0000
Status: Valid, Not Full
Change Token: 0x12345678
Header Format: OEM-specific
Supported Log Type Descriptors: 3
Descriptor 1: POST memory resize
Data Format 1: None
Descriptor 2: POST error
Data Format 2: POST results bitmap
Descriptor 3: Log area reset/cleared
Data Format 3: None
Handle 0x0015, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 64 GB
Error Information Handle: No Error
Number Of Devices: 4
Handle 0x0016, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0015
Error Information Handle: No Error
Total Width: Unknown
Data Width: Unknown
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM0
Bank Locator: BANK 0
Type: DDR3
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 1600 MT/s
Manufacturer: Micron
Serial Number: 23115200
Asset Tag: 01
Part Number: DVM64453C DATARAM
Rank: 2
Configured Clock Speed: 1600 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0017, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0015
Error Information Handle: No Error
Total Width: Unknown
Data Width: Unknown
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM0
Bank Locator: BANK 1
Type: DDR3
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 1600 MT/s
Manufacturer: Micron
Serial Number: 00001639
Asset Tag: 02
Part Number: DVM64453C DATARAM
Rank: 2
Configured Clock Speed: 1600 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0018, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0015
Error Information Handle: No Error
Total Width: Unknown
Data Width: Unknown
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM1
Bank Locator: BANK 0
Type: DDR3
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 1600 MT/s
Manufacturer: Micron
Serial Number: 23115200
Asset Tag: 03
Part Number: DVM64453C DATARAM
Rank: 2
Configured Clock Speed: 1600 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x0019, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0015
Error Information Handle: No Error
Total Width: Unknown
Data Width: Unknown
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM1
Bank Locator: BANK 1
Type: DDR3
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 1600 MT/s
Manufacturer: Micron
Serial Number: 23115200
Asset Tag: 04
Part Number: DVM64453C DATARAM
Rank: 2
Configured Clock Speed: 1600 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: Unknown
Handle 0x001A, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x007FFFFFFFF
Range Size: 32 GB
Physical Array Handle: 0x0015
Partition Width: 4
Handle 0x001B, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x001FFFFFFFF
Range Size: 8 GB
Physical Device Handle: 0x0016
Memory Array Mapped Address Handle: 0x0015
Partition Row Position: Unknown
Handle 0x001C, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00200000000
Ending Address: 0x003FFFFFFFF
Range Size: 8 GB
Physical Device Handle: 0x0017
Memory Array Mapped Address Handle: 0x0015
Partition Row Position: Unknown
Handle 0x001D, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00400000000
Ending Address: 0x005FFFFFFFF
Range Size: 8 GB
Physical Device Handle: 0x0018
Memory Array Mapped Address Handle: 0x0015
Partition Row Position: Unknown
Handle 0x001E, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00600000000
Ending Address: 0x007FFFFFFFF
Range Size: 8 GB
Physical Device Handle: 0x0019
Memory Array Mapped Address Handle: 0x0015
Partition Row Position: Unknown
Handle 0x001F, DMI type 21, 7 bytes
Built-in Pointing Device
Type: Touch Pad
Interface: PS/2
Buttons: 4
Handle 0x0020, DMI type 22, 26 bytes
Portable Battery
Location: Fake
Manufacturer: -Virtual Battery 0-
Manufacture Date: 08/08/2010
Serial Number: Battery 0
Name: CRB Battery 0
Chemistry: Zinc Air
Design Capacity: Unknown
Design Voltage: Unknown
SBDS Version: LithiumPolymer
Maximum Error: Unknown
OEM-specific Information: 0x00000000
Handle 0x0021, DMI type 26, 24 bytes
Voltage Probe
Description: Voltage Probe Description
Location: Unknown
Status: Unknown
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00008000
Nominal Value: 0.000 V
Handle 0x0022, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x0023
Type: Fan
Status: OK
OEM-specific Information: 0x00000000
Nominal Speed: 8192 rpm
Description: Cooling Device Description
Handle 0x0023, DMI type 28, 24 bytes
Temperature Probe
Description: Temperature Probe Description
Location: Unknown
Status: Unknown
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00008000
Nominal Value: 0.0 deg C
Handle 0x0024, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected
Handle 0x0025, DMI type 39, 22 bytes
System Power Supply
Location: OEM Define 0
Name: OEM Define 1
Manufacturer: OEM Define 2
Serial Number: OEM Define 3
Asset Tag: OEM Define 4
Model Part Number: OEM Define 5
Revision: OEM Define 6
Max Power Capacity: 75 W
Status: Not Present
Type: Regulator
Input Voltage Range Switching: Auto-switch
Plugged: No
Hot Replaceable: No
Handle 0x0026, DMI type 40, 17 bytes
Additional Information 1
Referenced Handle: 0x000c
Referenced Offset: 0x05
String: PCIExpressx16
Value: 0xaa
Additional Information 2
Referenced Handle: 0x0000
Referenced Offset: 0x05
String: Compiler Version: VC 9.0
Value: 0x00
Handle 0x0027, DMI type 128, 8 bytes
OEM-specific Type
Header and Data:
80 08 27 00 55 AA 55 AA
Strings:
Oem Type 128 Test 1
Oem Type 128 Test 2
Handle 0x0028, DMI type 129, 8 bytes
OEM-specific Type
Header and Data:
81 08 28 00 01 01 02 01
Strings:
Insyde_ASF_001
Insyde_ASF_002
Handle 0x0029, DMI type 130, 20 bytes
OEM-specific Type
Header and Data:
82 14 29 00 24 41 4D 54 01 01 01 01 01 A5 1F 02
00 00 00 00
Handle 0x002A, DMI type 136, 6 bytes
OEM-specific Type
Header and Data:
88 06 2A 00 FF FF
Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table

16
tests/fixtures/inventory/nvme.json vendored Normal file
View file

@ -0,0 +1,16 @@
{
"Devices" : [
{
"DevicePath" : "/dev/nvme0n1",
"Firmware" : "10604103",
"Index" : 0,
"ModelNumber" : "KXG60ZNV1T02 NVMe TOSHIBA 1024GB",
"ProductName" : "Non-Volatile memory controller: Toshiba America Info Systems Device 0x011a",
"SerialNumber" : "19FA109SK07N",
"UsedBytes" : 1024209543168,
"MaximumLBA" : 2000409264,
"PhysicalSize" : 1024209543168,
"SectorSize" : 512
}
]
}

56
tests/fixtures/lldp/cumulus.txt vendored Normal file
View file

@ -0,0 +1,56 @@
lldp.eno1.via=LLDP
lldp.eno1.rid=4
lldp.eno1.age=35 days, 08:24:00
lldp.eno1.chassis.mac=e4:f0:04:b6:47:32
lldp.eno1.chassis.name=toto-chassis.dc42
lldp.eno1.chassis.descr=Cumulus Linux version 3.7.3 running on Dell EMC S4100
lldp.eno1.chassis.ttl=120
lldp.eno1.chassis.mgmt-ip=10.160.20.18
lldp.eno1.chassis.mgmt-ip=fe80::e6f0:4ff:feb6:4732
lldp.eno1.chassis.Bridge.enabled=on
lldp.eno1.chassis.Router.enabled=on
lldp.eno1.port.ifname=swp46
lldp.eno1.port.descr=BXVWNR2:lom2
lldp.eno1.port.auto-negotiation.supported=yes
lldp.eno1.port.auto-negotiation.enabled=no
lldp.eno1.port.auto-negotiation.current=10GigBaseLR - R fiber over 1310 nm optics
lldp.eno1.lldp-med.device-type=Network Connectivity Device
lldp.eno1.lldp-med.Capabilities.available=yes
lldp.eno1.lldp-med.Policy.available=yes
lldp.eno1.lldp-med.Location.available=yes
lldp.eno1.lldp-med.MDI/PSE.available=yes
lldp.eno1.lldp-med.MDI/PD.available=yes
lldp.eno1.lldp-med.Inventory.available=yes
lldp.eno1.lldp-med.inventory.software=3.7.3
lldp.eno1.lldp-med.inventory.firmware=5.6.5
lldp.eno1.lldp-med.inventory.serial=To be filled by O.E.M.
lldp.eno1.lldp-med.inventory.manufacturer=Dell EMC
lldp.eno1.lldp-med.inventory.model=S4100
lldp.eno2d1.via=LLDP
lldp.eno2d1.rid=3
lldp.eno2d1.age=35 days, 08:30:52
lldp.eno2d1.chassis.mac=e4:f0:04:b6:4e:32
lldp.eno1.chassis.name=toto-chassis.dc42
lldp.eno2d1.chassis.descr=Cumulus Linux version 3.7.5 running on Dell EMC S4100
lldp.eno2d1.chassis.ttl=120
lldp.eno2d1.chassis.mgmt-ip=10.160.20.17
lldp.eno2d1.chassis.mgmt-ip=fe80::e6f0:4ff:feb6:4e32
lldp.eno2d1.chassis.Bridge.enabled=on
lldp.eno2d1.chassis.Router.enabled=on
lldp.eno2d1.port.ifname=swp46
lldp.eno2d1.port.descr=BXVWNR2:lom1
lldp.eno2d1.port.auto-negotiation.supported=yes
lldp.eno2d1.port.auto-negotiation.enabled=no
lldp.eno2d1.port.auto-negotiation.current=10GigBaseLR - R fiber over 1310 nm optics
lldp.eno2d1.lldp-med.device-type=Network Connectivity Device
lldp.eno2d1.lldp-med.Capabilities.available=yes
lldp.eno2d1.lldp-med.Policy.available=yes
lldp.eno2d1.lldp-med.Location.available=yes
lldp.eno2d1.lldp-med.MDI/PSE.available=yes
lldp.eno2d1.lldp-med.MDI/PD.available=yes
lldp.eno2d1.lldp-med.Inventory.available=yes
lldp.eno2d1.lldp-med.inventory.software=3.7.5
lldp.eno2d1.lldp-med.inventory.firmware=5.6.5
lldp.eno2d1.lldp-med.inventory.serial=To be filled by O.E.M.
lldp.eno2d1.lldp-med.inventory.manufacturer=Dell EMC
lldp.eno2d1.lldp-med.inventory.model=S4100

8
tests/fixtures/lldp/dedibox1.txt vendored Normal file
View file

@ -0,0 +1,8 @@
lldp.enp1s0f0.via=LLDP
lldp.enp1s0f0.rid=1
lldp.enp1s0f0.age=145 days, 00:00:39
lldp.enp1s0f0.chassis.mac=00:07:cb:0b:6c:d7
lldp.enp1s0f0.chassis.name=s120-f3-2.itx4
lldp.enp1s0f0.chassis.mgmt-ip=10.48.16.15
lldp.enp1s0f0.port.ifname=RJ-9
lldp.enp1s0f0.port.ttl=120

25
tests/fixtures/lldp/dedibox2.txt vendored Normal file
View file

@ -0,0 +1,25 @@
lldp.eno1.via=LLDP
lldp.eno1.rid=1
lldp.eno1.age=1 day, 06:17:13
lldp.eno1.chassis.mac=38:20:56:67:90:80
lldp.eno1.chassis.name=s35-b12.dc3
lldp.eno1.chassis.descr=Cisco IOS Software, C2960X Software (C2960X-UNIVERSALK9-M), Version 15.0(2a)EX5, RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2015 by Cisco Systems, Inc.
Compiled Mon 16-Feb-15 08:16 by prod_rel_team
lldp.eno1.chassis.mgmt-ip=10.43.31.35
lldp.eno1.chassis.Bridge.enabled=on
lldp.eno1.chassis.Router.enabled=off
lldp.eno1.port.ifname=Gi1/0/29
lldp.eno1.port.descr=GigabitEthernet1/0/29
lldp.eno1.port.auto-negotiation.supported=yes
lldp.eno1.port.auto-negotiation.enabled=yes
lldp.eno1.port.auto-negotiation.10Base-T.hd=yes
lldp.eno1.port.auto-negotiation.10Base-T.fd=yes
lldp.eno1.port.auto-negotiation.100Base-TX.hd=yes
lldp.eno1.port.auto-negotiation.100Base-TX.fd=yes
lldp.eno1.port.auto-negotiation.1000Base-T.hd=no
lldp.eno1.port.auto-negotiation.1000Base-T.fd=yes
lldp.eno1.port.auto-negotiation.current=1000BaseTFD - Four-pair Category 5 UTP, full duplex mode
lldp.eno1.vlan.vlan-id=140
lldp.eno1.vlan.pvid=yes

38
tests/fixtures/lldp/qfx.txt vendored Normal file
View file

@ -0,0 +1,38 @@
lldp.eth0.via=LLDP
lldp.eth0.rid=1
lldp.eth0.age=163 days, 23:03:53
lldp.eth0.chassis.mac=40:a6:77:7a:72:00
lldp.eth0.chassis.name=sw-filer-f06.dc42
lldp.eth0.chassis.descr=Juniper Networks, Inc. qfx5100-48s-6q Ethernet Switch, kernel JUNOS 14.1X53-D43.7, Build date: 2017-04-28 02:22:48 UTC Copyright (c) 1996-2017 Juniper Networks, Inc.
lldp.eth0.chassis.mgmt-ip=10.192.192.116
lldp.eth0.chassis.Bridge.enabled=on
lldp.eth0.chassis.Router.enabled=on
lldp.eth0.port.local=512
lldp.eth0.port.descr=xe-0/0/1
lldp.eth0.port.mfs=1514
lldp.eth0.vlan.vlan-id=296
lldp.eth0.vlan.pvid=yes
lldp.eth0.vlan=vlan-296
lldp.eth0.unknown-tlvs.unknown-tlv.oui=00,90,69
lldp.eth0.unknown-tlvs.unknown-tlv.subtype=1
lldp.eth0.unknown-tlvs.unknown-tlv.len=12
lldp.eth0.unknown-tlvs.unknown-tlv=56,46,33,37,31,35,30,33,30,31,36,34
lldp.eth1.via=LLDP
lldp.eth1.rid=2
lldp.eth1.age=163 days, 23:03:51
lldp.eth1.chassis.mac=40:a6:77:7c:fb:20
lldp.eth1.chassis.name=sw-filer-f05.dc42
lldp.eth1.chassis.descr=Juniper Networks, Inc. qfx5100-48s-6q Ethernet Switch, kernel JUNOS 17.3R3-S3.3, Build date: 2019-01-10 19:17:42 UTC Copyright (c) 1996-2019 Juniper Networks, Inc.
lldp.eth1.chassis.mgmt-ip=10.192.192.115
lldp.eth1.chassis.Bridge.enabled=on
lldp.eth1.chassis.Router.enabled=on
lldp.eth1.port.local=512
lldp.eth1.port.descr=xe-0/0/1
lldp.eth1.port.mfs=1514
lldp.eth1.vlan.vlan-id=296
lldp.eth1.vlan.pvid=yes
lldp.eth1.vlan=vlan-296
lldp.eth1.unknown-tlvs.unknown-tlv.oui=00,90,69
lldp.eth1.unknown-tlvs.unknown-tlv.subtype=1
lldp.eth1.unknown-tlvs.unknown-tlv.len=12
lldp.eth1.unknown-tlvs.unknown-tlv=56,46,33,37,31,35,30,33,30,30,34,35

16
tests/fixtures/netbox_agent.conf1.ok vendored Normal file
View file

@ -0,0 +1,16 @@
netbox:
url: 'https://netbox.company.com'
token: xx
datacenter_location:
driver: "cmd:cat /etc/qualification | tr [A-Z] [a-z]"
regex: "datacenter: (?P<datacenter>[A-Za-z0-9]+)"
rack_location:
driver: 'cmd:lldpctl'
regex: 'SysName:[ ]+[A-Za-z]+-[A-Za-z]+-([A-Za-z0-9]+)'
network:
ignore_interfaces: "(dummy.*|docker.*)"
ignore_ips: (127\.0\.0\..*)
lldp: true

20
tests/network.py Normal file
View file

@ -0,0 +1,20 @@
from netbox_agent.lldp import LLDP
from tests.conftest import parametrize_with_fixtures
@parametrize_with_fixtures(
'lldp/', only_filenames=[
'dedibox1.txt',
])
def test_lldp_parse_with_port_desc(fixture):
lldp = LLDP(fixture)
assert lldp.get_switch_port('enp1s0f0') == 'RJ-9'
@parametrize_with_fixtures(
'lldp/', only_filenames=[
'qfx.txt',
])
def test_lldp_parse_without_ifname(fixture):
lldp = LLDP(fixture)
assert lldp.get_switch_port('eth0') == 'xe-0/0/1'

109
tests/server.py Normal file
View file

@ -0,0 +1,109 @@
from netbox_agent.dmidecode import parse
from netbox_agent.server import ServerBase
from netbox_agent.vendors.hp import HPHost
from netbox_agent.vendors.qct import QCTHost
from netbox_agent.vendors.supermicro import SupermicroHost
from tests.conftest import parametrize_with_fixtures
@parametrize_with_fixtures('dmidecode/')
def test_init(fixture):
dmi = parse(fixture)
server = ServerBase(dmi)
assert server
@parametrize_with_fixtures(
'dmidecode/', only_filenames=[
'HP_SL4540_Gen8',
'HP_BL460c_Gen9',
'HP_DL380p_Gen8',
'HP_SL4540_Gen8'
'HP_ProLiant_BL460c_Gen10_Graphics_Exp'
])
def test_hp_service_tag(fixture):
dmi = parse(fixture)
server = HPHost(dmi)
assert server.get_service_tag() == '4242'
@parametrize_with_fixtures(
'dmidecode/', only_filenames=[
'HP_ProLiant_m710x'
])
def test_moonshot_blade(fixture):
dmi = parse(fixture)
server = HPHost(dmi)
assert server.get_service_tag() == 'CN66480BLA'
assert server.get_chassis_service_tag() == 'CZ3702MD5K'
assert server.is_blade() is True
assert server.own_expansion_slot() is False
@parametrize_with_fixtures(
'dmidecode/', only_filenames=[
'SYS-5039MS-H12TRF-OS012.txt'
])
def test_supermicro_blade(fixture):
dmi = parse(fixture)
server = SupermicroHost(dmi)
assert server.get_service_tag() == 'E235735X6B01665'
assert server.get_chassis_service_tag() == 'C9390AF40A20098'
assert server.get_chassis() == 'SYS-5039MS-H12TRF-OS012'
assert server.is_blade() is True
@parametrize_with_fixtures(
'dmidecode/', only_filenames=[
'SM_SYS-6018R'
])
def test_supermicro_pizza(fixture):
dmi = parse(fixture)
server = SupermicroHost(dmi)
assert server.get_service_tag() == 'A177950X7709591'
assert server.get_chassis() == 'SYS-6018R-TDTPR'
assert server.is_blade() is False
@parametrize_with_fixtures(
'dmidecode/', only_filenames=[
'QCT_X10E-9N'
])
def test_qct_x10(fixture):
dmi = parse(fixture)
server = QCTHost(dmi)
assert server.get_service_tag() == 'QTFCQ57140285'
@parametrize_with_fixtures(
'dmidecode/', only_filenames=[
'unknown.txt'
])
def test_generic_host_service_tag(fixture):
dmi = parse(fixture)
server = ServerBase(dmi)
assert server.get_service_tag() == '42'
@parametrize_with_fixtures(
'dmidecode/', only_filenames=[
'unknown.txt'
])
def test_generic_host_product_name(fixture):
dmi = parse(fixture)
server = ServerBase(dmi)
assert server.get_product_name() == 'SR'
@parametrize_with_fixtures(
'dmidecode/', only_filenames=[
'HP_ProLiant_BL460c_Gen10_Graphics_Exp'
])
def test_hp_blade_with_gpu_expansion(fixture):
dmi = parse(fixture)
server = HPHost(dmi)
assert server.get_service_tag() == '4242'
assert server.get_chassis_service_tag() == '4343'
assert server.is_blade() is True
assert server.own_expansion_slot() is True
assert server.get_expansion_service_tag() == '4242 expansion'

17
tox.ini Normal file
View file

@ -0,0 +1,17 @@
[tox]
# These are the default environments that will be run
# when ``tox`` is run without arguments.
envlist =
pytest
flake8
skip_missing_interpreters = True
[testenv]
deps = -r{toxinidir}/dev-requirements.txt
whitelist_externals = bash
[testenv:pytest]
commands = bash tests.sh
[testenv:flake8]
commands = flake8

View file

@ -1,7 +0,0 @@
#!/bin/bash
cd /opt/hosterra/tools/netbox-agent
sudo git reset --hard HEAD
sudo git clean -f -d
sudo git pull
sudo chmod +x ./*.sh