Skip to content

Releases: linuxserver/docker-netbox

v3.0.0-ls38

30 Aug 19:35
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

WARNING: Upgrading an existing NetBox deployment to version 3.0 must be done from version 2.11.0 or later. If attempting to upgrade a deployment of NetBox v2.10 or earlier, first upgrade to a NetBox v2.11 release, and then upgrade from v2.11 to v3.0. This will avoid any problems with the database migration optimizations implemented in version 3.0. (This is not necessary for new installations.)

Breaking Changes

  • Python 3.6 is no longer supported. NetBox v3.0 supports Python 3.7, 3.8, and 3.9.
  • The secrets functionality present in prior releases of NetBox has been removed. The NetBox maintainers strongly recommend the adoption of Hashicorp Vault in place of this feature. Development of a NetBox plugin to replace the legacy secrets functionality is also underway.
  • The default CSV export format for all objects now includes all available data from the object list. Additionally, the CSV headers now use human-friendly titles rather than raw field names. If backward compatibility with the old format is desired, export templates can be written to reproduce it.
  • The invalidate management command (which clears cached database queries) is no longer needed and has been removed (see #6639).
  • Support for queryset caching configuration (caching_config) has been removed from the plugins API (see #6639).
  • The cacheops_* metrics have been removed from the Prometheus exporter (see #6639).
  • The display_field keyword argument has been removed from custom script ObjectVar and MultiObjectVar fields. These widgets will use the display value provided by the REST API.
  • The deprecated display_name field has been removed from all REST API serializers. (API clients should reference the display field instead.)
  • The redundant REST API endpoints for console, power, and interface connections have been removed. The same data can be retrieved by querying the respective model endpoints with the ?connected=True filter applied.

New Features

Updated User Interface (#5893)

The NetBox user interface has been completely overhauled with a fresh new look! Beyond the cosmetic improvements, this initiative has allowed us to modernize the entire front end, upgrading from Bootstrap 3 to Bootstrap 5, and eliminating dependencies on outdated libraries such as jQuery and jQuery-UI. The new user interface also features a dark mode option.

A huge thank you to NetBox maintainer Matt Love for his tremendous work on this!

GraphQL API (#2007)

A new GraphQL API has been added to complement NetBox's REST API. GraphQL allows the client to specify which fields of the available data to return in each request. NetBox's implementation, which employs Graphene, also includes a user-friendly query interface known as GraphiQL.

Here's an example GraphQL request:

{
  circuit_list {
    cid
    provider {
      name
    }
    termination_a {
      id
    }
    termination_z {
      id
    }
  }
}

And the response:

{
  "data": {
    "circuit_list": [
      {
        "cid": "1002840283",
        "provider": {
          "name": "CenturyLink"
        },
        "termination_a": null,
        "termination_z": {
          "id": "23"
        }
      },
...

All GraphQL requests are made at the /graphql URL (which also serves the GraphiQL UI). The API is currently read-only, however users who wish to disable it until needed can do so by setting the GRAPHQL_ENABLED configuration parameter to False. For more detail on NetBox's GraphQL implementation, see the GraphQL API documentation.

IP Ranges (#834)

NetBox now supports modeling arbitrary IP ranges, which are defined by specifying a starting and ending IP address (e.g. to denote DHCP pools). Similar to prefixes, each IP range may optionally be assigned to a VRF and/or tenant, and can be assigned a functional role. An IP range must be assigned a status of active, reserved, or deprecated. The REST API implementation for this model also includes an "available IPs" endpoint which functions similarly to the endpoint for prefixes.

More information about IP ranges is available in the documentation.

Custom Model Validation (#5963)

This release introduces the CUSTOM_VALIDATORS configuration parameter, which allows administrators to map NetBox models to custom validator classes to enforce custom validation logic. For example, the following configuration requires every site to have a name of at least ten characters and a description:

from extras.validators import CustomValidator

CUSTOM_VALIDATORS = {
    'dcim.site': (
        CustomValidator({
            'name': {
                'min_length': 10,
            },
            'description': {
                'required': True,
            }
        }),
    )
}

CustomValidator can also be subclassed to enforce more complex logic by overriding its validate() method. See the custom validation documentation for more details.

SVG Cable Traces (#6000)

Cable trace diagrams are now rendered as atomic SVG images, similar to rack elevations. These images are embedded in the UI and can be easily downloaded for use outside NetBox. SVG images can also be generated directly through the REST API, by specifying SVG as the render format for the trace endpoint on a cable termination:

GET /api/dcim/interfaces/<ID>>/trace/?render=svg

The width of the rendered image in pixels may optionally be specified by appending the &width=<width> parameter to the request. The default width is 400px.

New Views for Models Previously Under the Admin UI (#6466)

New UI views have been introduced to manage the following models:

  • Custom fields
  • Custom links
  • Export templates
  • Webhooks

These models were previously managed under the admin section of the UI. Moving them to dedicated views ensures a more consistent and convenient user experience.

REST API Token Provisioning (#5264)

The new REST API endpoint /api/users/tokens/ has been added, which includes a child endpoint for provisioning new REST API tokens using a username and password. This allows a user to gain REST API access without needing to first create a token via the web UI.

$ curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json; indent=4" \
https://netbox/api/users/tokens/provision/ \
--data '{
    "username": "hankhill",
    "password: "I<3C3H8",
}'

If the supplied credentials are valid, NetBox will create and return a new token for the user.

New Housekeeping Command (#6590)

A new management command has been added: manage.py housekeeping. This command is intended to be run nightly via a system cron job. It performs the following tasks:

  • Clear expired authentication sessions from the database
  • Delete change log records which have surpassed the configured retention period (if configured)
  • Check for new NetBox releases (if enabled)

A convenience script for calling this command via an automated scheduler has been included at /contrib/netbox-housekeeping.sh. Please see the housekeeping documentation for further details.

Custom Queue Support for Plugins (#6651)

NetBox uses Redis and Django-RQ for background task queuing. Whereas previous releases employed only a single default queue, NetBox now provides a high-, medium- (default), and low-priority queue for use by plugins. (These will also likely be used internally as new functionality is added in future releases.)

Plugins can also now create their own custom queues by defining a queues list within their PluginConfig class:

class MyPluginConfig(PluginConfig):
    name = 'myplugin'
    ...
    queues = [
        'queue1',
        'queue2',
        'queue-whatever-the-name'
    ]

Note that NetBox's rqworker process will not service custom queues by default, since it has no way to infer the priority of each queue. Plugin authors should be diligent in including instructions for proper worker configuration in their plugin's documentation.

Enhancements

  • #2434 - Add option to assign IP address upon creating a new interface
  • #3665 - Enable rendering export templates via REST API
  • #3682 - Add color field to front and rear ports
  • #4609 - Allow marking prefixes as fully utilized
  • #5203 - Remember user preference when toggling display of device images in rack elevations
  • #5806 ...
Read more

v2.11.12-ls38

27 Aug 10:13
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Enhancements

  • #6748 - Add site group filter to devices list
  • #6790 - Recognize a /32 IPv4 address as a child of a /32 IPv4 prefix
  • #6872 - Add table configuration button to child prefixes view
  • #6929 - Introduce LOGIN_PERSISTENCE configuration parameter to persist user sessions
  • #7011 - Add search field to VM interfaces filter form

Bug Fixes

  • #5968 - Model forms should save empty custom field values as null
  • #6326 - Enable filtering assigned VLANs by group in interface edit form
  • #6686 - Force assignment of null custom field values to objects
  • #6776 - Fix erroneous webhook dispatch on failure to save objects
  • #6974 - Show contextual label for IP address role
  • #7012 - Fix hidden "add components" dropdown on devices list

v2.11.12-ls37

23 Aug 20:45
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Enhancements

  • #6748 - Add site group filter to devices list
  • #6790 - Recognize a /32 IPv4 address as a child of a /32 IPv4 prefix
  • #6872 - Add table configuration button to child prefixes view
  • #6929 - Introduce LOGIN_PERSISTENCE configuration parameter to persist user sessions
  • #7011 - Add search field to VM interfaces filter form

Bug Fixes

  • #5968 - Model forms should save empty custom field values as null
  • #6326 - Enable filtering assigned VLANs by group in interface edit form
  • #6686 - Force assignment of null custom field values to objects
  • #6776 - Fix erroneous webhook dispatch on failure to save objects
  • #6974 - Show contextual label for IP address role
  • #7012 - Fix hidden "add components" dropdown on devices list

v2.11.11-ls37

20 Aug 10:19
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Enhancements

  • #6883 - Add C21 & C22 power types
  • #6921 - Employ a sandbox when rendering Jinja2 code for increased security

Bug Fixes

  • #6740 - Add import button to VM interfaces list
  • #6892 - Fix validation of unit ranges when creating a rack reservation
  • #6896 - Fix validation of IP address assigned as device/VM primary via NAT relation
  • #6902 - Populate device field when cloning device components
  • #6908 - Allow assignment of scope to VLAN groups upon import
  • #6909 - Remove extraneous site column from VLAN group import form
  • #6910 - Fix exception on invalid CSV import column name
  • #6918 - Fix return URL persistence when adding multiple objects sequentially
  • #6935 - Remove extraneous columns from inventory item and device bay tables
  • #6936 - Add missing parent column to inventory item import form

v2.11.11-ls36

12 Aug 17:08
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Enhancements

  • #6883 - Add C21 & C22 power types
  • #6921 - Employ a sandbox when rendering Jinja2 code for increased security

Bug Fixes

  • #6740 - Add import button to VM interfaces list
  • #6892 - Fix validation of unit ranges when creating a rack reservation
  • #6896 - Fix validation of IP address assigned as device/VM primary via NAT relation
  • #6902 - Populate device field when cloning device components
  • #6908 - Allow assignment of scope to VLAN groups upon import
  • #6909 - Remove extraneous site column from VLAN group import form
  • #6910 - Fix exception on invalid CSV import column name
  • #6918 - Fix return URL persistence when adding multiple objects sequentially
  • #6935 - Remove extraneous columns from inventory item and device bay tables
  • #6936 - Add missing parent column to inventory item import form

v2.11.10-ls35

06 Aug 10:14
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Enhancements

  • #6560 - Enable CSV import via uploaded file
  • #6644 - Add 6P/4P pass-through port types
  • #6771 - Add count of inventory items to manufacturer view
  • #6785 - Add "hardwired" type for power port types

Bug Fixes

  • #5442 - Fix assignment of permissions based on LDAP groups
  • #5627 - Fix filtering of interface connections list
  • #6759 - Fix assignment of parent interfaces for bulk import
  • #6773 - Add missing display field to rack unit serializer
  • #6774 - Fix A/Z assignment when swapping circuit terminations
  • #6777 - Fix default value validation for custom text fields
  • #6778 - Rack reservation should display rack's location
  • #6780 - Include rack location in navigation breadcrumbs
  • #6794 - Fix device name display on device status view
  • #6812 - Limit reported prefix utilization to 100%
  • #6822 - Use consistent maximum value for interface MTU

Other Changes

  • #6781 - Database query caching is now disabled by default

v2.11.10-ls34

28 Jul 20:48
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Enhancements

  • #6560 - Enable CSV import via uploaded file
  • #6644 - Add 6P/4P pass-through port types
  • #6771 - Add count of inventory items to manufacturer view
  • #6785 - Add "hardwired" type for power port types

Bug Fixes

  • #5442 - Fix assignment of permissions based on LDAP groups
  • #5627 - Fix filtering of interface connections list
  • #6759 - Fix assignment of parent interfaces for bulk import
  • #6773 - Add missing display field to rack unit serializer
  • #6774 - Fix A/Z assignment when swapping circuit terminations
  • #6777 - Fix default value validation for custom text fields
  • #6778 - Rack reservation should display rack's location
  • #6780 - Include rack location in navigation breadcrumbs
  • #6794 - Fix device name display on device status view
  • #6812 - Limit reported prefix utilization to 100%
  • #6822 - Use consistent maximum value for interface MTU

Other Changes

  • #6781 - Database query caching is now disabled by default

v2.11.9-ls33

08 Jul 13:58
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Bug Fixes

  • #6456 - API schema type should be boolean for _occupied on cable termination models
  • #6710 - Fix assignment of VM interface parent via REST API
  • #6714 - Fix rendering of device type component creation forms

v2.11.8-ls33

06 Jul 15:54
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Enhancements

  • #5503 - Annotate short date & time fields with their longer form
  • #6138 - Add an empty filter modifier for character fields
  • #6200 - Add rack reservations to global search
  • #6368 - Enable virtual chassis assignment during bulk import of devices
  • #6620 - Show assigned VMs count under device role view
  • #6666 - Show management-only status under interface detail view
  • #6667 - Display VM memory as GB/TB as appropriate

Bug Fixes

  • #6626 - Fix site field on VM search form; add site group
  • #6637 - Fix group assignment in "available VLANs" link under VLAN group view
  • #6640 - Disallow numeric values in custom text fields
  • #6652 - Fix exception when adding components in bulk to multiple devices
  • #6676 - Fix device/VM counts per cluster under cluster type/group views
  • #6680 - Allow setting custom field values for VM interfaces on initial creation
  • #6695 - Fix exception when importing device type with invalid front port definition

v2.11.7-ls33

02 Jul 10:37
Compare
Choose a tag to compare

LinuxServer Changes:

Added Redis database environment variables.

netbox Changes:

Enhancements

  • #6455 - Permit /32 IPv4 and /128 IPv6 prefixes
  • #6493 - Show change log diff for non-atomic (pre-2.11) changes
  • #6564 - Add N connector type for pass-through ports
  • #6588 - Add support for webp files as front/rear device type images
  • #6589 - Standardize breadcrumb navigation for power panels and feeds

Bug Fixes

  • #6553 - ProviderNetwork search should match on name
  • #6562 - Disable ordering of secrets by assigned object
  • #6563 - Fix filtering by location for cable connection forms
  • #6584 - Fix ordering of nested inventory items
  • #6602 - Fix deletion of devices with cables attached