Inspection hooks¶
Inspection hooks are a type of the Bare Metal service plug-ins responsible for processing data from in-band inspection. By configuring these hooks, an operator can fully customize the inspection processing phase. How the data is collected can be configured with inspection collectors.
Configuring hooks¶
Two configuration options are responsible for inspection hooks:
inspector.default_hooks
defines which hooks run by
default, while inspector.hooks
defines which hooks to run
in your deployment. Only the second option should be modified by operators,
while the first one is to provide the defaults without hardcoding them:
[inspector]
hooks = $default_hooks
To make a hook run after the default ones, append it to the list, e.g.
[inspector]
hooks = $default_hooks,extra-hardware
Default hooks¶
In the order they go in the inspector.default_hooks
option:
ramdisk-error
Processes the
error
field from the ramdisk, aborting inspection if it is not empty.validate-interfaces
Validates network interfaces and stores the result in the
plugin_data
in two fields:all_interfaces
- all interfaces that pass the basic sanity check.valid_interfaces
- interfaces that satisfy the configuration in theinspector.add_ports
option.
In both cases, interfaces get an addition field:
pxe_enabled
- whether PXE was enabled on this interface during the inspection boot.
ports
Creates ports for interfaces in
valid_interfaces
as set by thevalidate-interfaces
hook.Deletes ports that don’t match the
inspector.keep_ports
setting.architecture
Populates the
cpu_arch
property on the node.
Optional hooks¶
accelerators
Populates the
accelerators
property based on the reported PCI devices. The known accelerators are specified in the YAML file linked in theinspector.known_accelerators
option. The default file is the following:pci_devices: - vendor_id: "10de" device_id: "1eb8" type: GPU device_info: NVIDIA Corporation Tesla T4 - vendor_id: "10de" device_id: "1df6" type: GPU device_info: NVIDIA Corporation GV100GL
boot-mode
Sets the
boot_mode
capability based on the observed boot mode, see Boot mode support.cpu-capabilities
Uses the CPU flags to discover CPU capabilities. The exact mapping can be customized via configuration:
[inspector] cpu_capabilities = vmx:cpu_vt,svm:cpu_vt
See
inspector.cpu_capabilities
for the default mapping.extra-hardware
Converts the data collected by python-hardware from its raw format into nested dictionaries under the
extra
plugin data field.local-link-connection
Uses the LLDP information from the ramdisk to populate the
local_link_connection
field on ports with the physical switch information.memory
Populates the
memory_mb
property based on physical RAM information from DMI.parse-lldp
Parses the raw binary LLDP information from the ramdisk and populates the
parsed_lldp
dictionary in plugin data. The keys are network interface names, the values are dictionaries with LLDP values. Example:"parsed_lldp": { "eth0": { "switch_chassis_id": "11:22:33:aa:bb:cc", "switch_system_name": "sw01-dist-1b-b12" } }
pci-devices
Populates the capabilities based on PCI devices. The mapping is provided by the
inspector.pci_device_alias
option.physical-network
Populates the
physical_network
port field for Multi-tenancy in the Bare Metal service based on the detected IP addresses. The mapping is provided by theinspector.physical_network_cidr_map
option.raid-device
Detects the newly created RAID device and populates the
root_device
property used in root device hints. Requires two inspections: one before and one after the RAID creation.root-device
Uses root device hints on the node and the storage device information from the ramdisk to calculate the expected root device and populate the
local_gb
property (taking theinspector.disk_partitioning_spacing
option into account).