Netbox plugin for Prophetess
Project description
🧙♀️ Prophetess Netbox Plugin
Prophetess plugin for loading data into Netbox
🚀 Installation
pip install prophetess-netbox
🔧 Configuration
NetboxLoader takes several required and optional configuration options. The full configuration break down is presented below:
host: 'http://localhost:8000'
api_key: 123key
update_method: update
endpoint: dcim
model: sites
pk:
- slug
- cf_id: "{site}"
fk:
region:
endpoint: dcim
model: regions
pk:
- cf_sf_id: "{region}"
Loader
Key | Values | Description |
---|---|---|
host | string | Fully qualified URL to root of Netbox install |
api_key | string | Valid API key for accessing Netbox resources |
update_method | (update, partial_update) | When updating existing records, which method to use. update will send all fields, partial_update will only submit changed values, or skip the update if no values have been updated |
endpoint | string | The root API group to use, eg: dcim, ipam, tenant, etc |
model | string | Which Model of the endpoint to manipulate |
pk | string or list (pk) | How to identify a unique record from endpoint and model. See PK |
fk | object (fk) | Mapping of any record fields that are related to other data models. See FK |
PK
PK, Primary Key(s), are a list of strings or dictionaries (objects) on how to check if a record to be loaded exists. When using a dictionary the key is used for lookup against the API and the value is a Python formatted string. This allows for flexibility in mapping parsed record to what Netbox assumes.
For example, given the parsed record of:
{
'slug': 'nb-slug',
'region': 'custom-field-lookup',
'name': 'test',
}
With a PK config of
- slug
- cf_region: '{region}'
The resulting lookup would be: ?slug=nb-slug&cf_region=custom-field-lookup
FK
FK, Forigen Key(s), allow for mapping of string values from an extractor to record ids in netbox. The are a dictionary of record key to a mapping of configuration for lookup. Records can be linked across any endpoint and model within a single Netbox instance.
Given the following record:
{
'slug': 'nb-slug',
'region': 'region-slug',
'name': 'test',
}
When parsed with the following FK configuration:
region:
endpoint: dcim
model: regions
pk:
- slug
Would produce, assuming there was a region with the slug region-slug
that had a record ID of 12:
{
'slug': 'nb-slug',
'region': 12,
'name': 'test',
}
If no FK record is found, None
is set instead.
Config
Key | Values | Description |
---|---|---|
endpoint | string | The root API group to use, eg: dcim, ipam, tenant, etc |
model | string | Which Model of the endpoint to manipulate |
pk | string or list (pk) | How to identify a unique record from endpoint and model. See PK |
🧰 Development
Please fork this project and create a new branch to submit any changes. While not required, it's highly recommended to first create an issue to propose the change you wish to make. Keep pull requests well scoped to one change / feature.
This project uses tox
+ pytest
to unit test and lint code. Use the following commands to validate your changes aren't breaking:
tox --cov-report term-missing
tox -e lint
🎉 Special Thanks
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for prophetess_netbox-0.3.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac93692b3e3bf9a040fa4ad2755ccd2714348bb5e71a65d73882bda90b289600 |
|
MD5 | 07b7b7e8af07834cc190ed319ef5c065 |
|
BLAKE2b-256 | 16658b76281ab08fe43c194f24f5cf37e9a3ad92942e518f624d3050f12f178e |