# salt.modules.netbox

## NetBox

Module to query NetBox

codeauthor:

  Zach Moody <zmoody@do.co>

maturity:

  new

depends:

  pynetbox

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)>

Added in version 2018.3.0.

salt.modules.netbox.create_circuit(name, provider_id, circuit_type, description=None)

  Added 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"

salt.modules.netbox.create_circuit_provider(name, asn=None)

  Added 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

salt.modules.netbox.create_circuit_termination(circuit, interface, device, speed, xconnect_id=None, term_side='A')

  Added 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

salt.modules.netbox.create_circuit_type(name)

  Added 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

salt.modules.netbox.create_device(name, role, model, manufacturer, site)

  Added 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

salt.modules.netbox.create_device_role(role, color)

  Added 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

salt.modules.netbox.create_device_type(model, manufacturer)

  Added 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

salt.modules.netbox.create_interface(device_name, interface_name, mac_address=None, description=None, enabled=None, lag=None, lag_parent=None, form_factor=None)

  Added 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"

salt.modules.netbox.create_interface_connection(interface_a, interface_b)

  Added 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

salt.modules.netbox.create_inventory_item(device_name, item_name, manufacturer_name=None, serial='', part_id='', description='')

  Added 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

salt.modules.netbox.create_ipaddress(ip_address, family, device=None, interface=None)

  Added 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

salt.modules.netbox.create_manufacturer(name)

  Added 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

salt.modules.netbox.create_platform(platform)

  Added 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

salt.modules.netbox.create_site(site)

  Added 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

salt.modules.netbox.delete_interface(device_name, interface_name)

  Added 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

salt.modules.netbox.delete_inventory_item(item_id)

  Added 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

salt.modules.netbox.delete_ipaddress(ipaddr_id)

  Added 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

salt.modules.netbox.filter_(app, endpoint, **kwargs)

  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

salt.modules.netbox.get_(app, endpoint, id=None, **kwargs)

  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

salt.modules.netbox.get_circuit_provider(name, asn=None)

  Added 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

salt.modules.netbox.get_interfaces(device_name=None, **kwargs)

  Added 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"

salt.modules.netbox.get_ipaddresses(device_name=None, **kwargs)

  Added 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

salt.modules.netbox.make_interface_child(device_name, interface_name, parent_name)

  Added 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

salt.modules.netbox.make_interface_lag(device_name, interface_name)

  Added 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

salt.modules.netbox.openconfig_interfaces(device_name=None)

  Added 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

salt.modules.netbox.openconfig_lacp(device_name=None)

  Added 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` and `lacp_mode` keys have the values set as `SLOW` and `ACTIVE` 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

salt.modules.netbox.slugify(value)

  ' Slugify given value. Credit to Djangoproject https://docs.djangoproject.com/en/2.0/_modules/django/utils/text/#slugify

salt.modules.netbox.update_device(name, **kwargs)

  Added 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

salt.modules.netbox.update_interface(device_name, interface_name, **kwargs)

  Added 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