Field Serviceable Units
Field Serviceable Units are tracked assets that are not independent Devices, but may be installed in a Device or a spare in a storage Location.
There are ten FSU types available - CPU, Disk, Fan, GPU, GPU Baseboard, HBA, Mainboard, NIC, PSU, and RAM Module.
Info
The types listed above are supported directly as distinct FSUs, for other FSUs to be tracked there is an OtherFSU type.
FSU vs FSU Type vs FSU Template¶
Field Serviceable Units (FSUs) are made up of two models (FSU and FSU type), with a third (FSU template) that allows FSUs to be assigned to a DeviceType and created automatically with Devices based on that DeviceType.
FSU Type¶
Similar to a Nautobot DeviceType, an FSU type represents the individual FSU product, defined by the manufacturer, name, and part number. For example, a GPUType may be:
- Manufacturer: NVIDIA
- Name: H100 Tensor Core GPU
- Part Number: 699-21010-0200-xxx.
Some FSU types have additional product-specific fields:
- CPU type has fields for architecture, clock speed, number of cores, and the PCIe generation.
- Disk type has fields for the type of disk, e.g. NVME, and the size.
- GPU Baseboard type has a field for the number of GPU slots provided.
- Mainboard type has a field for the number of CPU sockets provided.
- NIC type has a field for the number of interfaces provided.
- PSU type has fields for the feed type (AC, DC, or Switchable), the power provided in Watts, the required voltage (e.g.
-40V - -72
for DC or100-240V
for AC), and whether the unit is hot-swappable. - RAM Module type has fields for the module type, e.g. UDIMM, the memory technology, e.g. DDR5, memory speed in MHz, memory size in GB, and the number of modules that are included in the part number.
FSU¶
A Field Serviceable Unit is a physical asset based on an FSU type being tracked in inventory. An FSU must be associated with either a storage location or a parent device, and each FSU in a storage location or device must have a unique name. Each FSU can also be assigned an asset tag, and a description. Common FSU state data items are serial number, firmware version, driver name, and driver version.
Some FSUs have additional options:
- CPUs can be connected to a parent Mainboard.
- Disks can connected to a parent HBA.
- GPUs have a field for their PCI slot ID, and can be connected to a parent GPU Baseboard.
- HBAs have a field for their PCI slot ID.
- NICs have a field for their PCI slot ID, and can be connected to the Device Interface components that they provide.
- PSUs can be set as redundant, and can be connected to the Device Power Port components that they provide.
- RAM Modules have a field for their memory slot ID.
FSU Template¶
Similar to Nautobot's component templates, FSU templates represent the FSU assets that are present in a particular DeviceType. They are added to a DeviceType, and when a new Device is added to the inventory based on a DeviceType with FSU templates, the FSUs for the Device are created automatically.
FSU templates can be added by using the Add FSUs menu on the details page of a DeviceType. The Name field supports alphanumeric ranges, so multiple FSUs can be added to a DeviceType at once. PCI slot ID fields, and the RAM Module memory slot ID field, also support alphanumeric ranges.
Filter Extensions¶
The FSUs app extends the filter sets for Devices, Locations, Interfaces, and Power Ports in Nautobot to allow filtering those objects on their associated FSUs.
Devices and Locations¶
Devices and Locations can be filtered based on the presence of FSUs. In the UI, the filter is available under the Advanced tab when configuring filtering. Set the filter field to the FSU you would like to filter on, e.g. Has GPUs, and the lookup type to is null. You can then select either Yes or No to filter for devices/locations that either have or do not have the chosen FSU.
The filter can also be used by attaching a query parameter to the request URL for the device or location lists. The parameters for filtering by FSUs on devices are:
device_has_cpus
device_has_disks
device_has_fans
device_has_gpus
device_has_gpubaseboards
device_has_hbas
device_has_mainboards
device_has_nics
device_has_otherfsus
device_has_psus
device_has_rammodules
For locations they are:
location_has_available_cpus
location_has_available_disks
location_has_available_fans
location_has_available_gpus
location_has_available_gpubaseboards
location_has_available_hbas
location_has_available_mainboards
location_has_available_nics
location_has_available_otherfsus
location_has_available_psus
location_has_available_rammodules
Set the parameter value to either True
or False
.
http://nautobot.server/dcim/devices/?device_has_gpus=True
http://nautobot.server/dcim/locations/?location_has_available_gpus=True
Interfaces¶
Device Interface components can be filtered either for those that have a parent NIC assigned, or those assigned to particular parent NICs. As with Device and Location filters, these filter options are available under the Advanced tab as Has a parent NIC and Parent NIC (Name or ID), and the request query parameters are:
interface_has_parent_nic
interface_parent_nic
As implied by the field name in the UI, the parent NIC filter matches on name or ID, so either can be used in a query parameter.
http://nautobot.server/dcim/interfaces/?interface_has_parent_nic=True
http://nautobot.server/dcim/interfaces/?interface_parent_nic=NIC_01
http://nautobot.server/dcim/interfaces/?interface_parent_nic=96999339-c462-4de2-96c4-751747d393b5
Power Ports¶
Device power port components can be filtered either for those that have a parent PSU assigned, or those assigned to particular parent PSUs. As with Interface filters, these filter options are available under the Advanced tab as Has a parent PSU and Parent PSU (Name or ID), and the request query parameters are:
powerport_has_parent_psu
powerport_parent_psu
As implied by the field name in the UI, the parent PSU filter matches on name or ID, so either can be used in a query parameter.
http://nautobot.server/dcim/power-ports/?powerport_has_parent_psu=True
http://nautobot.server/dcim/power-ports/?powerport_parent_psu=psu_0
http://nautobot.server/dcim/power-ports/?powerport_parent_psu=3b318448-399a-4322-8719-408982bc2fe3
Filtering¶
CPUs¶
CPUs can be filtered either for those tha have a parent Mainboard, or those that have a specific parent Mainboard. These filter options are available under the Advanced tab as Has a parent Mainboard and Parent Mainboard (Name or ID), and the request parameters are:
has_parent_mainboard
parent_mainboard
Disks¶
Disks can be filtered either for those tha have a parent HBA, or those that have a specific parent HBA. These filter options are available under the Advanced tab as Has a parent HBA and Parent HBA (Name or ID), and the request parameters are:
has_parent_hba
parent_hba
GPUs¶
GPUs can be filtered either for those that have a parent GPU Baseboard, or those that have a specific parent GPU Baseboard. These filter options are available under the Advanced tab as Has a parent GPU Baseboard and Parent GPU Baseboard (Name or ID), and the request parameters are:
has_parent_baseboard
parent_baseboard
GPU Baseboards¶
GPU Baseboards can be filtered for those that have child GPUs associated with them. The filter option is available under the Advanced tab as Has Child GPUs, and the request parameter is:
has_child_gpus
HBAs¶
HBAs can be filtered for those that have child Disks associated with them. The filter option is available under the Advanced tab as Has Child Disks, and the request parameter is:
has_child_disks
Mainboards¶
Mainboards can be filtered for those that have child CPUs associated with them. The filter option is available under the Advanced tab as Has Child CPUs, and the request parameter is:
has_child_cpus
NICs¶
NICs can be filtered for those that have child Interfaces associated with them. The filter option is available under the Advanced tab as Has Child Interfaces, and the request parameter is:
has_child_interfaces
PSUs¶
PSUs can be filtered for those that have child Power Ports associated with them. The filter option is available under the Advanced tab as Has Child Power Ports, and the request parameter is:
has_child_power_ports