2021-02-27 13:25:47 +01:00
# NetBox Device Type Library
## About this Library
2019-09-25 20:49:47 +02:00
2019-12-19 19:41:22 +01:00
This library is intended to be used for populating device types in [NetBox ](https://github.com/netbox-community/netbox )
version 2.7 or later. It contains a set of device type definitions expressed in YAML and arranged by manufacturer. Each
file represents a discrete physical device type (e.g. make and model). These definitions can be loaded into NetBox to
obviate the need to create device types and their associated components manually.
2019-09-25 20:49:47 +02:00
2021-03-31 02:45:33 +02:00
If you would like to contribute to this library, please read through our [contributing guide ](CONTRIBUTING.md ) before
2019-12-19 18:20:22 +01:00
submitting content.
2019-12-11 20:05:11 +01:00
2021-03-31 02:45:33 +02:00
If you would like to automate the import of these devicetype template files, there is a **community based** python script
2021-06-19 00:40:41 +02:00
that will check for duplicates, allow you to selectively import vendors, etc. available here [minitriga/Netbox-Dvice-Type-Library-Import ](https://github.com/minitriga/Netbox-Device-Type-Library-Import ). **Note** : This is not related to NetBox in any official way and you will not get support for it here.
2021-02-27 15:32:48 +01:00
2021-02-27 13:25:47 +01:00
## Device Type Definitions
2019-09-25 20:49:47 +02:00
Each definition must include at minimum the following fields:
2021-02-27 13:25:47 +01:00
- `manufacturer` : The name of the manufacturer which produces this device type.
- `model` : The model number of the device type. This must be unique per manufacturer.
- `slug` : A URL-friendly representation of the model number. Like the model number, this must be unique per
2019-12-19 18:20:22 +01:00
manufacturer.
2019-09-25 20:49:47 +02:00
The following fields may optionally be declared:
2021-02-27 13:25:47 +01:00
- `part_number` : An alternative representation of the model number (e.g. a SKU).
- `u_height` : The height of the device type in rack units. (Default: 1)
- `is_full_depth` : A boolean which indicates whether the device type consumes both the front and rear rack faces.
2019-12-19 18:20:22 +01:00
(Default: true)
2021-02-27 13:25:47 +01:00
- `subdevice_role` : Indicates that this is a `parent` or `child` device. (Default: None)
2019-09-25 20:49:47 +02:00
2019-12-19 19:41:22 +01:00
For further detail on these attributes and those listed below, please reference the
[schema definition ](tests/schema.json ).
2021-02-27 13:25:47 +01:00
### Component Definitions
2019-09-25 20:49:47 +02:00
2019-12-19 18:20:22 +01:00
Valid component types are listed below. Each type of component must declare a list of the individual component templates
to be added.
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
- `console-ports`
- `console-server-ports`
- `power-ports`
- `power-outlets`
- `interfaces`
- `rear-ports`
- `front-ports`
- `device-bays`
2019-09-25 20:49:47 +02:00
The available fields for each type of component are listed below.
2021-02-27 13:25:47 +01:00
#### Console Ports
- `name` : Port name
- `type` : Port type slug (API value)
#### Console Server Ports
- `name` : Port name
- `type` : Port type slug (API value)
#### Power Ports
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
- `name` : Port name
- `type` : Port type slug (API value)
- `maximum_draw` : The port's maximum power draw, in watts (optional)
- `allocated_draw` : The port's allocated power draw, in watts (optional)
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
#### Power Outlets
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
- `name` : Outlet name
- `type` : Port type slug (API value)
- `power_port` : The name of the power port on the device which powers this outlet (optional)
- `feed_leg` : The phase (leg) of power to which this outlet is mapped; A, B, or C (optional)
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
#### Interfaces
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
- `name` : Interface name
- `type` : Interface type slug (API value)
- `mgmt_only` : A boolean which indicates whether this interface is used for management purposes only (default: false)
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
#### Front Ports
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
- `name` : Port name
- `type` : Port type slug (API value)
- `rear_port` : The name of the rear port on this device to which the front port maps
- `rear_port_position` : The corresponding position on the mapped rear port (default: 1)
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
#### Rear Ports
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
- `name` : Port name
- `type` : Port type slug (API value)
- `positions` : The number of front ports that can map to this rear port (default: 1)
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
#### Device Bays
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
- `name` : Bay name
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
## Data Validation / Commit Quality Checks
2019-09-25 20:49:47 +02:00
2021-02-27 13:25:47 +01:00
There are two ways this repo focuses on keeping quality device-type definitions:
2019-12-11 20:05:11 +01:00
2021-02-27 13:25:47 +01:00
- Pre-Commit Checks - Optional for helping to identify simple issues before committing. (trailing-whitespace, end-of-file-fixer, check-yaml, yamlfmt, yamllint)
- [Install pre-commit ](https://pre-commit.com/#install ) (or just use the requirements.txt file)
- To install the pre-commit script `pre-commit install`
- To run the pre-commit script on changed files `pre-commit run`
- To run the pre-commit script on all files `pre-commit run --all`
- To uninstall the pre-commit script `pre-commit uninstall`
- Learn more about [pre-commit ](https://pre-commit.com/ )
- GitHub Actions - Automatically run before a PR can be merged. Repeats yamllint & validates against NetBox Device-Type Schema.