Skip to content

Releases

v1.0.9

Choose a tag to compare

@andreypfau andreypfau released this 21 May 05:27
be8bd24

whole_dashboard_height_px: 'auto' fetches dashboard JSON from Grafana to compute exact iframe height. See CHANGELOG.

v1.0.8

Choose a tag to compare

@andreypfau andreypfau released this 21 May 05:27
2220b72

New per-embed toggles: hide_variables / hide_time_picker / hide_links for whole-dashboard mode. See CHANGELOG.

v1.0.7

Choose a tag to compare

@andreypfau andreypfau released this 21 May 05:27
6719f3b

Hotfix: forward kiosk_prefix to whole-dashboard iframe template. See CHANGELOG for details.

v1.0.6

Choose a tag to compare

@andreypfau andreypfau released this 21 May 04:23
3e5ee89

Added

  • New setting kiosk_mode (global default '', overridable per-embed)
    controls the value passed to Grafana's ?kiosk= URL param in
    whole-dashboard mode.

    Value Resulting URL fragment Grafana effect
    '' (default) ?kiosk Hides top nav + hamburger, keeps dashboard's own subnav.
    'tv' ?kiosk=tv Legacy alias for the same hide-top-nav behaviour.
    None / False (omitted) Embed shows full Grafana chrome (breadcrumb, search, etc.).
    other string ?kiosk=<value> Forwarded verbatim — for future Grafana kiosk values.

Changed

  • Whole-dashboard mode now defaults to ?kiosk (bare) instead of
    ?kiosk=tv.
    In Grafana 13 the two values are documented as
    equivalent but ?kiosk=tv still rendered the top breadcrumb +
    hamburger toggle inside the embedded iframe, while ?kiosk (bare,
    boolean true) hides them. The new default produces a much cleaner
    embed. Existing setups that prefer the v1.0.5 behaviour can opt
    back in with 'kiosk_mode': 'tv'.

Install

pip install git+https://github.com/AlphaCompute/netbox-grafana-embed.git@v1.0.6

v1.0.5

Choose a tag to compare

@andreypfau andreypfau released this 21 May 04:07
2a4efaa

Added

  • New per-embed option whole_dashboard: True renders the configured
    dashboard as a single iframe (/d/<uid>/<slug>?kiosk=tv&var-...)
    instead of one d-solo iframe per panel ID. One Grafana boot and
    one batch of Prometheus queries instead of 2 × len(stat_panels + timeseries_panels), at the cost of giving up per-panel height
    control and the stat-tile bootstrap row — Grafana lays the panels
    out using the dashboard's own grid.

  • New setting whole_dashboard_height_px (global default 800,
    overridable per-embed). Controls the iframe height in whole-
    dashboard mode. Default is short enough to not dominate the device
    page; the iframe scrolls internally for taller dashboards.

In whole-dashboard mode stat_panels and timeseries_panels are
ignored. The "Full dashboard" header button and the optional footer
behave as before. theme_sync still works (renders dual light + dark
iframes).

Install

pip install git+https://github.com/AlphaCompute/netbox-grafana-embed.git@v1.0.5

v1.0.4

Choose a tag to compare

@andreypfau andreypfau released this 18 May 04:26

Changed

  • __version__ in netbox_grafana_embed/__init__.py is now resolved
    at import time from the installed package's metadata via
    importlib.metadata.version('netbox-grafana-embed'), with a
    '0.0.0+unknown' fallback for source-checkout use. PluginConfig.version
    continues to wire to __version__, so /api/status/ shows both
    installed_apps[…] and plugins[…] correctly without anyone having
    to remember to bump a hardcoded string.

pyproject.toml's version field becomes the single source of truth
— future releases only need to bump it in one place.

Install

pip install git+https://github.com/AlphaCompute/netbox-grafana-embed.git@v1.0.4

v1.0.3

Choose a tag to compare

@andreypfau andreypfau released this 18 May 04:18

Fixed

  • __version__ in netbox_grafana_embed/__init__.py was still pinned
    to '1.0.0' while pyproject.toml had been bumped to 1.0.2 for
    the v1.0.1 and v1.0.2 releases. NetBox reports both
    /api/status/'s plugins[…] (via PluginConfig.version, wired to
    __version__) and installed_apps[…] (via
    getattr(app_module, '__version__')) from the plugin module's
    __version__ attribute — pyproject's version is only used by pip
    METADATA and is not surfaced by NetBox. So upgrading from v1.0.0 →
    v1.0.2 left /api/status/ still reporting 1.0.0 even though the
    iframe-URL fix from v1.0.2 was live in the container.

    This release just bumps __version__ and pyproject's version to
    1.0.3 so the two stay in sync. No code change.

Install

pip install git+https://github.com/AlphaCompute/netbox-grafana-embed.git@v1.0.3

v1.0.2

Choose a tag to compare

@andreypfau andreypfau released this 18 May 02:05

Fixed

  • Malformed iframe URLs: every embedded Grafana iframe was loading a
    URL missing both ? and panelId=N, e.g.
    /d-solo/<uid>/<slug>&var-device=.... Grafana responded with a 404
    whose default X-Frame-Options: deny made the browser show the
    iframe as <host> refused to connect, masquerading as a Grafana
    embedding/CSP problem.

    Root cause: in _iframe_pair.html, "?panelId="|add:panel_id|stringformat:"s"
    evaluated as stringformat(add("?panelId=", 3), "s"). Django's add
    filter, given a string and an int, fails both the int()+int() and
    str+str branches and returns the empty string, deleting the whole
    ?panelId=N prefix from the query string. Coerce panel_id to a
    string before feeding it into add.

  • URL-encode device_value and component_value in the iframe src
    so Device/component names containing spaces or & produce valid URLs.

Install

pip install git+https://github.com/AlphaCompute/netbox-grafana-embed.git@v1.0.2

v1.0.1

Choose a tag to compare

@andreypfau andreypfau released this 18 May 01:21

Fixed

  • Render error on dcim.device pages when stat_panels is configured.
    The device template tried to compute the Bootstrap column width via
    {{ 12|divisibleby:block.stat_panels|yesno:'4,4' }}, which raised
    TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list'. Column width is now computed in Python
    (mirroring the existing InventoryItem behaviour) and the template
    reads it as block.stat_col_md. (#1)

Install

pip install git+https://github.com/AlphaCompute/netbox-grafana-embed.git@v1.0.1

v1.0.0 — initial public release

Choose a tag to compare

@andreypfau andreypfau released this 13 May 04:17

Generic NetBox plugin embedding Grafana panels on dcim.device and dcim.inventoryitem pages.

See CHANGELOG.md for the full feature list.

Install

pip install git+https://github.com/AlphaCompute/netbox-grafana-embed.git@v1.0.0

Highlights

  • Configurable through PLUGINS_CONFIG['netbox_grafana_embed'] — no vendor names hard-coded
  • Theme-synced (NetBox dark ↔ Grafana dark), instant switch via dual iframe
  • Multiple device dashboards per page, per-role inventory item dashboards
  • Optional gates (custom-field checks), flexible variable mapping