Installation v2.6 Release Notes

Release Date: 2019-04-29 // almost 5 years ago
  • WARNING: This is a beta release of NetBox intended for development use only. Do not rely on it for production
    use. A migration path forward to a stable release will not be provided; expect to ultimately lose any data input
    into this instance.

    ๐Ÿ†• New Features

    Power Panels and Feeds (#54)

    ๐Ÿ‘ NetBox now supports power supply modeling via two new models: power panels and power feeds. Power feeds are terminated
    to power panels and are optionally associated with individual racks. Each power feed defines a supply type (AC/DC),
    amperage, voltage, and phase. A power port can be connected directly to a power feed, but a power feed may have only one
    power port connected to it.

    โž• Additionally, the power port model has been extended to include fields denoting maximum and allocated draw, in watts.
    This allows a device (e.g. a PDU) to calculate its total load compared to its connected power feed.

    Caching (#2647)

    ๐ŸŽ To improve performance, NetBox now supports caching for most object and list views. Caching is implemented using Redis,
    which is now a required dependency. (Previously, Redis was required only if webhooks were enabled.)

    ๐Ÿ”ง A new configuration parameter is available to control the cache timeout:

    # Cache timeout (in seconds)
    CACHE_TIMEOUT = 900
    

    View Permissions (#323)

    Django 2.1 introduced the ability to enforce view-only permissions for different object types. NetBox now enforces
    0๏ธโƒฃ these by default. You can grant view permission to a user or group by assigning the "can view" permission for the
    desired object(s).

    To exempt certain object types from the enforcement of view permissions, so that any user (including anonymous users)
    can view them, add them to the new EXEMPT_VIEW_PERMISSIONS setting in configuration.py:

    EXEMPT_VIEW_PERMISSIONS = [
        'dcim.site',
        'ipam.prefix',
    ]
    

    To exclude all objects, effectively disabling view permissions, set:

    EXEMPT_VIEW_PERMISSIONS = ['*']
    

    Custom Links (#969)

    ๐Ÿ’ป Custom links are created under the admin UI and will be displayed on each object of the selected type. Link text and
    URLs can be formed from Jinja2 template code, with the viewed object passed as context data. For example, to link to an
    external NMS from the device view, you might create a custom link with the following URL:

    https://nms.example.com/nodes/?name={{ obj.name }}
    

    Custom links appear as buttons at the top of the object view. Grouped links will render as a dropdown menu beneath a
    single button.

    Prometheus Metrics (#3104)

    ๐Ÿ‘ NetBox now supports exposing native Prometheus metrics from the application. Prometheus is a
    popular time series metric platform used for monitoring. NetBox exposes metrics at the /metrics HTTP endpoint, e.g.
    ๐Ÿ”ง https://netbox.local/metrics. Metric exposition can be toggled with the METRICS_ENABLED configuration setting.
    0๏ธโƒฃ Metrics are exposed by default.

    NetBox makes use of the django-prometheus library to export a number of
    different types of metrics, including:

    • โšก๏ธ Per model insert, update, and delete counters
    • Per view request counters
    • ๐Ÿšค Per view request latency histograms
    • Request body size histograms
    • Response body size histograms
    • Response code counters
    • Database connection, execution, and error counters
    • Cache hit, miss, and invalidation counters
    • ๐Ÿšค Django middleware latency histograms
    • ๐Ÿ“‡ Other Django related metadata metrics

    For the exhaustive list of exposed metrics, visit the /metrics endpoint on your NetBox instance.

    ๐Ÿ”„ Changes

    ๐Ÿ†• New Dependency: Redis

    Redis is an in-memory data store similar to memcached. While Redis has been an optional component
    ๐Ÿ‘ of NetBox since the introduction of webhooks in version 2.4, it is now required to support NetBox's new caching
    ๐Ÿ“ฆ functionality (as well as other planned features). Redis can be installed via your platform's package manager: for
    example, sudo apt-get install redis-server on Ubuntu or sudo yum install redis on CentOS.

    ๐Ÿ”ง The Redis database is configured using a configuration setting similar to DATABASE in configuration.py:

    REDIS = {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': '',
        'DATABASE': 0,
        'CACHE_DATABASE': 1,
        'DEFAULT_TIMEOUT': 300,
        'SSL': False,
    }
    

    ๐Ÿš€ Note that if you were using these settings in a prior release with webhooks, the DATABASE setting remains the same but
    0๏ธโƒฃ an additional CACHE_DATABASE setting has been added with a default value of 1 to support the caching backend. The
    ๐Ÿš€ DATABASE setting will be renamed in a future release of NetBox to better relay the meaning of the setting. It is
    highly recommended to keep the webhook and cache databases seperate. Using the same database number for both may result
    in webhook processing data being lost during cache flushing events.

    ๐Ÿ‘ API Support for Specifying Related Objects by Attributes(#3077)

    Previously, specifying a related object in an API request required knowing the primary key (integer ID) of that object.
    For example, when creating a new device, its rack would be specified as an integer:

    {
        "name": "MyNewDevice",
        "rack": 123,
        ...
    }
    

    ๐Ÿ‘ The NetBox API now supports referencing related objects by a set of sufficiently unique attrbiutes. For example, a rack
    can be identified by its name and parent site:

    {
        "name": "MyNewDevice",
        "rack": {
            "site": {
                "name": "Equinix DC6"
            },
            "name": "R204"
        },
        ...
    }
    

    There is no limit to the depth of nested references. Note that if the provided parameters do not return exactly one
    object, a validation error is raised.

    0๏ธโƒฃ API Device/VM Config Context Included by Default (#2350)

    0๏ธโƒฃ The rendered config context for devices and VMs is now included by default in all API results (list and detail views).
    Previously, the rendered config context was available only in the detail view for individual objects. Users with large
    ๐ŸŽ amounts of context data may observe a performance drop when returning multiple objects. To combat this, in cases where
    the rendered config context is not needed, the query parameter ?exclude=config_context may be added to the request to
    exclude the config context data from the API response.

    ๐Ÿ”„ Changes to Tag Permissions

    NetBox now makes use of its own Tag model instead of the stock model which ships with django-taggit. This new model
    ๐Ÿ”ง lives in the extras app and thus any permissions that you may have configured using "Taggit | Tag" should be changed
    ๐Ÿšš to now use "Extras | Tag." Also note that the admin interface for tags has been removed as it was redundant to the
    ๐Ÿ’ป functionality provided by the front end UI.

    โœจ Enhancements

    • #166 - Add dns_name field to IPAddress
    • #1792 - Add CustomFieldChoices API endpoint at /api/extras/_custom_field_choices/
    • #1863 - Add child object counts to API representation of organizational objects
    • #2324 - Add color field for tags
    • #2643 - Add description field to console/power components and device bays
    • #2791 - Add comments field for tags
    • #2920 - Rename Interface form_factor to type (backward-compatible until v2.7)
    • ๐ŸŒฒ #2926 - Add change logging to the Tag model

    API Changes

    • ๐Ÿ†• New API endpoints for power modeling: /api/dcim/power-panels/ and /api/dcim/power-feeds/
    • New API endpoint for custom field choices: /api/extras/_custom_field_choices/
    • ForeignKey fields now accept either the related object PK or a dictionary of attributes describing the related object.
    • Organizational objects now include child object counts. For example, the Role serializer includes prefix_count and vlan_count.
    • โž• Added a description field for all device components.
    • dcim.Device: The devices list endpoint now includes rendered context data.
    • dcim.DeviceType: instance_count has been renamed to device_count.
    • dcim.Interface: form_factor has been renamed to type. Backward compatibility for form_factor will be maintained until NetBox v2.7.
    • dcim.Interface: The type filter has been renamed to kind.
    • dcim.Site: The count_* read-only fields have been renamed to *_count for consistency with other objects.
    • dcim.Site: Added the virtualmachine_count read-only field.
    • extras.Tag: Added color and comments fields to the Tag serializer.
    • virtualization.VirtualMachine: The virtual machines list endpoint now includes rendered context data.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ“š #2968 - Correct API documentation for SerializerMethodFields