NetBox Execution Module¶
NetBox¶
Module to query NetBox
codeauthor: | Zach Moody <zmoody@do.co> |
---|---|
maturity: | new |
depends: | pynetbox |
Note
This code, distributed as part of salt-sproxy
, has been copied from the
main Salt project, maintained by SaltStack, to provide various enhancements
and fixes to the original module.
The following config should be in the minion config file. In order to
work with secrets
you should provide a token and path to your
private key file:
netbox:
url: <NETBOX_URL>
token: <NETBOX_USERNAME_API_TOKEN (OPTIONAL)>
keyfile: </PATH/TO/NETBOX/KEY (OPTIONAL)>
New in version 2018.3.0: This module has been introduced in Salt release 2018.3.0.
In salt-sproxy
, this module has been included beginning with version
2019.10.0.
-
_modules.netbox.
create_circuit
(name, provider_id, circuit_type, description=None)[source]¶ New in version 2019.2.0.
Create a new Netbox circuit
- name
- Name of the circuit
- provider_id
- The netbox id of the circuit provider
- circuit_type
- The name of the circuit type
- asn
- The ASN of the circuit provider
- description
- The description of the circuit
CLI Example:
salt myminion netbox.create_circuit NEW_CIRCUIT_01 Telia Transit 1299 "New Telia circuit"
-
_modules.netbox.
create_circuit_provider
(name, asn=None)[source]¶ New in version 2019.2.0.
Create a new Netbox circuit provider
- name
- The name of the circuit provider
- asn
- The ASN of the circuit provider
CLI Example:
salt myminion netbox.create_circuit_provider Telia 1299
-
_modules.netbox.
create_circuit_termination
(circuit, interface, device, speed, xconnect_id=None, term_side='A')[source]¶ New in version 2019.2.0.
Terminate a circuit on an interface
- circuit
- The name of the circuit
- interface
- The name of the interface to terminate on
- device
- The name of the device the interface belongs to
- speed
- The speed of the circuit, in Kbps
- xconnect_id
- The cross-connect identifier
- term_side
- The side of the circuit termination
CLI Example:
salt myminion netbox.create_circuit_termination NEW_CIRCUIT_01 xe-0/0/1 myminion 10000 xconnect_id=XCON01
-
_modules.netbox.
create_circuit_type
(name)[source]¶ New in version 2019.2.0.
Create a new Netbox circuit type.
- name
- The name of the circuit type
CLI Example:
salt myminion netbox.create_circuit_type Transit
-
_modules.netbox.
create_device
(name, role, model, manufacturer, site)[source]¶ New in version 2019.2.0.
Create a new device with a name, role, model, manufacturer and site. All these components need to be already in Netbox.
- name
- The name of the device, e.g.,
edge_router
- role
- String of device role, e.g.,
router
- model
- String of device model, e.g.,
MX480
- manufacturer
- String of device manufacturer, e.g.,
Juniper
- site
- String of device site, e.g.,
BRU
CLI Example:
salt myminion netbox.create_device edge_router router MX480 Juniper BRU
-
_modules.netbox.
create_device_role
(role, color)[source]¶ New in version 2019.2.0.
Create a device role
- role
- String of device role, e.g.,
router
CLI Example:
salt myminion netbox.create_device_role router
-
_modules.netbox.
create_device_type
(model, manufacturer)[source]¶ New in version 2019.2.0.
Create a device type. If the manufacturer doesn’t exist, create a new manufacturer.
- model
- String of device model, e.g.,
MX480
- manufacturer
- String of device manufacturer, e.g.,
Juniper
CLI Example:
salt myminion netbox.create_device_type MX480 Juniper
-
_modules.netbox.
create_interface
(device_name, interface_name, mac_address=None, description=None, enabled=None, lag=None, lag_parent=None, form_factor=None)[source]¶ New in version 2019.2.0.
Attach an interface to a device. If not all arguments are provided, they will default to Netbox defaults.
- device_name
- The name of the device, e.g.,
edge_router
- interface_name
- The name of the interface, e.g.,
TenGigE0/0/0/0
- mac_address
- String of mac address, e.g.,
50:87:89:73:92:C8
- description
- String of interface description, e.g.,
NTT
- enabled
- String of boolean interface status, e.g.,
True
- lag:
- Boolean of interface lag status, e.g.,
True
- lag_parent
- String of interface lag parent name, e.g.,
ae13
- form_factor
- Integer of form factor id, obtained through _choices API endpoint, e.g.,
200
CLI Example:
salt myminion netbox.create_interface edge_router ae13 description="Core uplink"
-
_modules.netbox.
create_interface_connection
(interface_a, interface_b)[source]¶ New in version 2019.2.0.
Create an interface connection between 2 interfaces
- interface_a
- Interface id for Side A
- interface_b
- Interface id for Side B
CLI Example:
salt myminion netbox.create_interface_connection 123 456
-
_modules.netbox.
create_inventory_item
(device_name, item_name, manufacturer_name=None, serial='', part_id='', description='')[source]¶ New in version 2019.2.0.
Add an inventory item to an existing device.
- device_name
- The name of the device, e.g.,
edge_router
. - item_name
- String of inventory item name, e.g.,
Transceiver
. - manufacturer_name
- String of inventory item manufacturer, e.g.,
Fiberstore
. - serial
- String of inventory item serial, e.g.,
FS1238931
. - part_id
- String of inventory item part id, e.g.,
740-01234
. - description
- String of inventory item description, e.g.,
SFP+-10G-LR
.
CLI Example:
salt myminion netbox.create_inventory_item edge_router Transceiver part_id=740-01234
-
_modules.netbox.
create_ipaddress
(ip_address, family, device=None, interface=None)[source]¶ New in version 2019.2.0.
Add an IP address, and optionally attach it to an interface.
- ip_address
- The IP address and CIDR, e.g.,
192.168.1.1/24
- family
- Integer of IP family, e.g.,
4
- device
- The name of the device to attach IP to, e.g.,
edge_router
- interface
- The name of the interface to attach IP to, e.g.,
ae13
CLI Example:
salt myminion netbox.create_ipaddress 192.168.1.1/24 4 device=edge_router interface=ae13
-
_modules.netbox.
create_manufacturer
(name)[source]¶ New in version 2019.2.0.
Create a device manufacturer.
- name
- The name of the manufacturer, e.g.,
Juniper
CLI Example:
salt myminion netbox.create_manufacturer Juniper
-
_modules.netbox.
create_platform
(platform)[source]¶ New in version 2019.2.0.
Create a new device platform
- platform
- String of device platform, e.g.,
junos
CLI Example:
salt myminion netbox.create_platform junos
-
_modules.netbox.
create_site
(site)[source]¶ New in version 2019.2.0.
Create a new device site
- site
- String of device site, e.g.,
BRU
CLI Example:
salt myminion netbox.create_site BRU
-
_modules.netbox.
delete_interface
(device_name, interface_name)[source]¶ New in version 2019.2.0.
Delete an interface from a device.
- device_name
- The name of the device, e.g.,
edge_router
. - interface_name
- The name of the interface, e.g.,
ae13
CLI Example:
salt myminion netbox.delete_interface edge_router ae13
-
_modules.netbox.
delete_inventory_item
(item_id)[source]¶ New in version 2019.2.0.
Remove an item from a devices inventory. Identified by the netbox id
- item_id
- Integer of item to be deleted
CLI Example:
salt myminion netbox.delete_inventory_item 1354
-
_modules.netbox.
delete_ipaddress
(ipaddr_id)[source]¶ New in version 2019.2.0.
Delete an IP address. IP addresses in Netbox are a combination of address and the interface it is assigned to.
- id
- The Netbox id for the IP address.
CLI Example:
salt myminion netbox.delete_ipaddress 9002
-
_modules.netbox.
filter_
(app, endpoint, **kwargs)[source]¶ Get a list of items from NetBox.
- app
- String of netbox app, e.g.,
dcim
,circuits
,ipam
- endpoint
- String of app endpoint, e.g.,
sites
,regions
,devices
- kwargs
- Optional arguments that can be used to filter.
All filter keywords are available in Netbox,
which can be found by surfing to the corresponding API endpoint,
and clicking Filters. e.g.,
role=router
Returns a list of dictionaries
salt myminion netbox.filter dcim devices status=1 role=router
-
_modules.netbox.
get_
(app, endpoint, id=None, **kwargs)[source]¶ Get a single item from NetBox.
- app
- String of netbox app, e.g.,
dcim
,circuits
,ipam
- endpoint
- String of app endpoint, e.g.,
sites
,regions
,devices
Returns a single dictionary
To get an item based on ID.
salt myminion netbox.get dcim devices id=123
Or using named arguments that correspond with accepted filters on the NetBox endpoint.
salt myminion netbox.get dcim devices name=my-router
-
_modules.netbox.
get_circuit_provider
(name, asn=None)[source]¶ New in version 2019.2.0.
Get a circuit provider with a given name and optional ASN.
- name
- The name of the circuit provider
- asn
- The ASN of the circuit provider
CLI Example:
salt myminion netbox.get_circuit_provider Telia 1299
-
_modules.netbox.
get_interfaces
(device_name=None, **kwargs)[source]¶ New in version 2019.2.0.
Returns interfaces for a specific device using arbitrary netbox filters
- device_name
- The name of the device, e.g.,
edge_router
- kwargs
- Optional arguments to be used for filtering
CLI Example:
salt myminion netbox.get_interfaces edge_router name="et-0/0/5"
-
_modules.netbox.
get_ipaddresses
(device_name=None, **kwargs)[source]¶ New in version 2019.2.0.
Filters for an IP address using specified filters
- device_name
- The name of the device to check for the IP address
- kwargs
- Optional arguments that can be used to filter, e.g.,
family=4
CLI Example:
salt myminion netbox.get_ipaddresses device_name family=4
-
_modules.netbox.
make_interface_child
(device_name, interface_name, parent_name)[source]¶ New in version 2019.2.0.
Set an interface as part of a LAG.
- device_name
- The name of the device, e.g.,
edge_router
. - interface_name
- The name of the interface to be attached to LAG, e.g.,
xe-1/0/2
. - parent_name
- The name of the LAG interface, e.g.,
ae13
.
CLI Example:
salt myminion netbox.make_interface_child xe-1/0/2 ae13
-
_modules.netbox.
make_interface_lag
(device_name, interface_name)[source]¶ New in version 2019.2.0.
Update an interface to be a LAG.
- device_name
- The name of the device, e.g.,
edge_router
. - interface_name
- The name of the interface, e.g.,
ae13
.
CLI Example:
salt myminion netbox.make_interface_lag edge_router ae13
-
_modules.netbox.
openconfig_interfaces
(device_name=None)[source]¶ New in version 2019.2.0.
Return a dictionary structured as standardised in the openconfig-interfaces YANG model, containing physical and configuration data available in Netbox, e.g., IP addresses, MTU, enabled / disabled, etc.
- device_name:
None
- The name of the device to query the interface data for. If not provided, will use the Minion ID.
CLI Example:
salt '*' netbox.openconfig_interfaces salt '*' netbox.openconfig_interfaces device_name=cr1.thn.lon
- device_name:
-
_modules.netbox.
openconfig_lacp
(device_name=None)[source]¶ New in version 2019.2.0.
Return a dictionary structured as standardised in the openconfig-lacp YANG model, with configuration data for Link Aggregation Control Protocol (LACP) for aggregate interfaces.
Note
The
interval
andlacp_mode
keys have the values set asSLOW
andACTIVE
respectively, as this data is not currently available in Netbox, therefore defaulting to the values defined in the standard. See interval and lacp-mode for further details.- device_name:
None
- The name of the device to query the LACP information for. If not provided, will use the Minion ID.
CLI Example:
salt '*' netbox.openconfig_lacp salt '*' netbox.openconfig_lacp device_name=cr1.thn.lon
- device_name:
-
_modules.netbox.
slugify
(value)[source]¶ ‘ Slugify given value. Credit to Djangoproject https://docs.djangoproject.com/en/2.0/_modules/django/utils/text/#slugify
-
_modules.netbox.
update_device
(name, **kwargs)[source]¶ New in version 2019.2.0.
Add attributes to an existing device, identified by name.
- name
- The name of the device, e.g.,
edge_router
- kwargs
- Arguments to change in device, e.g.,
serial=JN2932930
CLI Example:
salt myminion netbox.update_device edge_router serial=JN2932920
-
_modules.netbox.
update_interface
(device_name, interface_name, **kwargs)[source]¶ New in version 2019.2.0.
Update an existing interface with new attributes.
- device_name
- The name of the device, e.g.,
edge_router
- interface_name
- The name of the interface, e.g.,
ae13
- kwargs
- Arguments to change in interface, e.g.,
mac_address=50:87:69:53:32:D0
CLI Example:
salt myminion netbox.update_interface edge_router ae13 mac_address=50:87:69:53:32:D0