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 - errorfield from the ramdisk, aborting inspection if it is not empty.
- validate-interfaces
- Validates network interfaces and stores the result in the - plugin_datain two fields:- all_interfaces- all interfaces that pass the basic functional check.
- valid_interfaces- interfaces that satisfy the configuration in the- inspector.add_portsoption.
 - 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_interfacesas set by the- validate-interfaceshook.- Deletes ports that don’t match the - inspector.keep_portssetting.
- architecture
- Populates the - cpu_archproperty on the node.
Optional hooks¶
- accelerators
- Populates the - acceleratorsproperty based on the reported PCI devices. The known accelerators are specified in the YAML file linked in the- inspector.known_acceleratorsoption. 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 - vendor_id: "10de" device_id: "2236" type: GPU device_info: NVIDIA Corporation A10 - vendor_id: "10de" device_id: "2235" type: GPU device_info: NVIDIA Corporation A40 - vendor_id: "10de" device_id: "26b9" type: GPU device_info: NVIDIA Corporation L40S - vendor_id: "10de" device_id: "26ba" type: GPU device_info: NVIDIA Corporation L20 
- boot-mode
- Sets the - boot_modecapability 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_capabilitiesfor the default mapping.
- extra-hardware
- Converts the data collected by python-hardware from its raw format into nested dictionaries under the - extraplugin data field.
- local-link-connection
- Uses the LLDP information from the ramdisk to populate the - local_link_connectionfield on ports with the physical switch information.
- memory
- Populates the - memory_mbproperty based on physical RAM information from DMI.
- parse-lldp
- Parses the raw binary LLDP information from the ramdisk and populates the - parsed_lldpdictionary 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_aliasoption.
- physical-network
- Populates the - physical_networkport field for Networking with the Bare Metal service based on the detected IP addresses. The mapping is provided by the- inspector.physical_network_cidr_mapoption.
- raid-device
- Detects the newly created RAID device and populates the - root_deviceproperty 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_gbproperty (taking the- inspector.disk_partitioning_spacingoption into account).
