Skip to content

Releases: bonzo81/netbox-librenms-plugin

v0.4.5

16 Apr 12:42
9350e33

Choose a tag to compare

Bug Fix Release

Fix for the VLAN group selection modal on the interface sync page not closing when clicking the close button, cancel button, save button, or clicking outside the modal. This was a bug in v0.4.4.

Fixes

  • Fix VLAN group modal not closing on dismiss/backdrop click (#271)
  • Align showModal()/hideModal() with ModalManager pattern from librenms_import.js — try Bootstrap 5 native first, fall back to manual DOM manipulation
  • Prevent stacking backdrop click handlers on repeated showModal() calls

Upgrade note

  • Remember to run the collectstatic command during the update process. No database migrations in this release.

All Changes

  • fix: VLAN group modal not closing on dismiss/backdrop click by @bonzo81 in #271

v0.4.4

15 Apr 10:54
565eba1

Choose a tag to compare

New Features

  • Multi-Server Custom Field Support
    • Track device origin per LibreNMS server with a new JSON-based librenms_id custom field.
    • Migration from legacy integer format handled automatically.
  • Auto-Create Custom Field
    • The librenms_id custom field is now automatically created via post_migrate signal — no manual setup needed.
  • LibreNMS Sync Page Naming Preferences
    • use_sysname and strip_domain settings are now applied to device name matching on sync pages.

Upgrade note

  • Remember to run the collectstatic and the migrate command during the update process.

Enhancements

  • VC Import Enhancements — Improved stack VC permission enforcement before import.
  • Cable Sync Improvements — Match by local_port_id instead of display name; strip stale fields on cable verify POST.
  • VM Sync — Skip device_type check for VMs; add sync_platform to VM supported actions.
  • Server-Key Propagation — UI polish and view hardening across the multi-server import pipeline.
  • Migration Simplification — Always revert to integer; gracefully handle non-integer custom field types.

Security

  • URL-encode server_key in redirects to prevent injection (#254)
  • Reject librenms_id <= 0 (#254)
  • CSRF safety improvements (#253)
  • XSS label escaping in cable verify (#242)

Fixes

  • Fix VC master detection, 0-based position correction, and import propagation (#257)
  • Fix VC verify view crash by using get_librenms_sync_device() in verify views (#247)
  • Fix cables view caching and interface_name_field per-request (#242)
  • Fix import validation, template bugs, and pagination (#259)
  • Guard dt_match None on ambiguous hardware match (#244)
  • Restore multi-key naming preferences and early-exit on missing name (#248)
  • Handle non-integer librenms_id custom field types in migrations (#256)

Internal / Development

  • Expanded test coverage with new test files and reorganized test structure (#253)
  • Smoke tests, integration tests, and mock LibreNMS server (#243)
  • Add pytest-cov coverage report — no gating (#241)
  • Updated pre-commit hooks, ruff config, and uv Dependabot (#241)
  • Bump GitHub Actions: upload-artifact, download-artifact, pypi-publish (#250, #263, #265

All Changes

  • feat: auto-create librenms_id custom field via post_migrate signal by @marcinpsk in #221
  • refactor: split import_utils.py into a package by @marcinpsk in #235
  • chore: update pre-commit hooks, ruff config, and add uv dependabot by @marcinpsk in #241
  • fix: cables view per-request interface_name_field, LibreNMSAPIMixin wiring, librenms_id normalization by @marcinpsk in #242
  • tests: add smoke tests, integration tests, and mock LibreNMS server by @marcinpsk in #243
  • fix: code quality, security hardening, and test coverage improvements by @marcinpsk in #244
  • feat: multi-server librenms_id — track device origin per LibreNMS server by @marcinpsk in #245
  • fix: vc verify views crash when no member has primary_ip by @bonzo81 in #247
  • Use naming preferences for device name matching on sync page by @bonzo81 in #248
  • chore(deps): bump actions/download-artifact in the github-actions group by @dependabot in #250
  • tests: expand test coverage (split 1/3 from #246) by @marcinpsk in #253
  • fix: security and correctness hardening (split 2/3 from #246) by @marcinpsk in #254
  • fix: server_key propagation, UI polish, and view hardening (split 3/3 from #246) by @marcinpsk in #255
  • fix(migrations): handle non-integer librenms_id custom field types by @marcinpsk in #256
  • fix: VC master detection, 0-based position correction, and import propagation by @bonzo81 in #257
  • refactor(js): extract showModal/hideModal helpers by @marcinpsk in #258
  • fix: code quality improvements and bug fixes by @marcinpsk in #259
  • Missing echo in docs - Update README.md by @sorano in #262
  • chore(deps): bump pypa/gh-action-pypi-publish in the github-actions group by @dependabot in #263
  • chore(deps): bump actions/upload-artifact in the github-actions group by @dependabot in #265
  • docs: update documentation for 0.4.4 release by @bonzo81 in #267

Contributors

  • Thanks @sorano for first contribution in #262
  • Thanks @marcinpsk for continued improvements and contributions

v0.4.3

03 Mar 13:25
ec4faa2

Choose a tag to compare

New Features

  • Plugin Permissions
    • The plugin now strictly adheres to Netbox user permissions for the creation or updating of Netbox objects.
    • New plugin-level (view / change) access control. Allow/restrict plugin use with 'view'. Allow/restrict ability to sync data via plugin with 'change'

Please read the permission docs to ensure any regular (non superusers) users have the correct access.

  • VLAN Sync
    • New VLANs tab to sync device VLAN data to Netbox objects with VLAN group selection.
    • Interface sync now includes VLAN data - tagged and untagged

Enhancements

  • Serial Number Matching & Conflict Resolution — Import detects serial
    number matches and guides users through device conflict resolution.
  • Per-User Preferences — Persistent user preferences for import
    toggles and interface name field selection.
  • Device Identity Mismatch Detection — Informational modal on sync
    pages when the device name differs between NetBox and LibreNMS.
  • SNMPv1 Support — SNMPv1 option added to the LibreNMS add-device form.
  • Empty State Cards — Friendly empty states on sync tabs when no data
    is available.
  • Naming Preferences in Validationuse_sysname and strip_domain
    settings are now honoured during import validation, with badge indicators.

Security

  • XSS escaping, input validation, and safety improvements (#225)
  • Open-redirect prevention via HTTP_REFERER validation (#213)
  • VC member validation hardening (#225)

Fixes

  • Fix KeyError for missing non-default server keys in LibreNMSAPI (#220)
  • Fix device name mismatch blocking sync (#230)
  • Restore browser credential saving on SNMP forms (#204)
  • Fix device redirect URL and inaccurate docstrings (#224)
  • Block import when validation issues are present; fix modal titles

Internal / Development

  • Comprehensive CI workflow with GitHub Actions, pytest, ruff (#208, #232)
  • GitHub Actions pinned to commit SHAs with Dependabot (#232)
  • Docstrings added across models, tables, views, forms, and API (#226)
  • Code deduplication and refactoring (#224)
  • DevContainer refactor with proxy/MITM support and diagnostic tooling (#218, #219, #234)

All Changes

  • Remove autocomplete=off from SNMP forms to restore browser credential saving by @bonzo81 in #204
  • Fix/formatting by @bonzo81 in #207
  • Test/ci workflow by @bonzo81 in #208
  • Feature/snmpv1-support by @bonzo81 in #209
  • chore: update copilot instructions with permission and background job patterns by @bonzo81 in #214
  • feat: add two-tier permission system with plugin and object-level access control by @bonzo81 in #213
  • docs: add docstrings to models, tables, views, forms, and API modules by @marcinpsk in #226
  • fix: raise KeyError for missing non-default server keys in LibreNMSAPI by @marcinpsk in #220
  • feat: add empty state cards for sync tabs by @marcinpsk in #223
  • feat: add proxy/MITM support for devcontainer by @marcinpsk in #218
  • feat: VLAN sync — Device VLAN sync with VLAN group selection and Interface sync VLAN data by @bonzo81 in #229
  • Fix: sync view mismatch by @marcinpsk in #230
  • fix: security hardening — XSS escaping, input validation, and safety … by @marcinpsk in #225
  • refactor: devcontainer script improvements and alias consolidation by @marcinpsk in #219
  • feat: per-user preference persistence for import toggles and interfac… by @marcinpsk in #222
  • develop to master release prep by @bonzo81 in #233
  • Fix/ci workflow by @marcinpsk in #232
  • refactor: code deduplication and minor bug fixes by @marcinpsk in #224
  • fix: devcontainer script hardening and cleanup by @marcinpsk in #234
  • feat: serial number matching and device conflict resolution by @marcinpsk in #227

New Contributors

Big thanks to @marcinpsk for considerable contributions

v0.4.2

16 Jan 14:12
ce491e2

Choose a tag to compare

What's Changed

  • Fix #199 NameError in get_device_id_by_ip method in PR #200
  • Fix endpoints that were incorrectly changed in commit 7c29c04 in PR #201
  • Fix #199 Device sync (create device in LibreNMS) not working after update in PR #202

v0.4.1

12 Jan 11:10
9e6e3ba

Choose a tag to compare

Bug fix

  • Bug fix: always use integer for librenms_id during import #196

Docs

  • docs: sync SUMMARY.md with mkdocs.yml structure for Gitbook navigation #193

v0.4.0

09 Jan 14:46
686a27a

Choose a tag to compare

NetBox LibreNMS Plugin v0.4.0

New Feature

This release introduces a new feature to simplify the process of onboarding LibreNMS devices into NetBox. Hopefully this helps your LibreNMS/NetBox integration and saves you time. It's been a big piece of work that I have tested extensively but as always, please report any bugs or use the Github discussions to suggest any improvements.

The new LibreNMS Import page has the following key features:

  • Filtering - Find devices in LibreNMS using flexible filter criteria including location, type, operating system, hostname, system name, and hardware model
  • Validation - Automatic matching of Sites, Device Types, and Platforms with clear visual feedback for missing objects
  • Device or VM Import - Import of physical devices requires Site, Device Type, Role or virtual machines requires Cluster
  • Virtual Chassis Detection - Automatic detection and creation of Virtual Chassis objects for stackable switches
  • Device Naming settings - Set naming conventions for devices and for virtual chassis members during import in plugin settings.
  • Background Job Processing - Large device imports can run as NetBox background jobs with cancellation support
  • Caching - Search results are cached for repeated use with expiration countdown timers and manual refresh controls

Upgrade note

There is a new javascript file for the LibreNMS import feature. Remember to run the collectstatic command during the update process.

What's Changed

  • Implement bulk import workflow with background job support #161
  • Refactor JavaScript file functionality and structure #162
  • Enhance VC detection and caching logic #163
  • refactor: Remove unused create_device_from_librenms function #166
  • Fix JavaScript initialization and HTMX event listener issues #167
  • Fix dropdown overflow in device import table #168
  • Improve filter instructions with background job notes #169
  • Enforce filter requirement on import search #170
  • Add background job support for device imports #172
  • Replace threshold-based background job system with user-controlled checkboxes #173
  • Feature/cache-expiration-countdown #175
  • Fix cache metadata storage and retrieval for countdown timer #176
  • feature/add-server-display-to-import-page #177
  • Extract cache key helper and fix multi-server cache isolation #178
  • refactor/dynamic-cache-timeout #179
  • feature/import-table-sorting #180
  • Fix import settings not saving when selected_server is invalid #181
  • Add hardware filter to LibreNMS device import #182
  • Add cached search management and code cleanup #184
  • Refactor settings page: replace fetch with HTMX and simplify JavaScript #185
  • Improve logging patterns and documentation #186
  • Cache Cluster and DeviceRole queries to prevent connection exhaustion #187
  • Refactor/remove-dead-import-result-view #189
  • Refactor modal management: eliminate duplication and remove jQuery #190

Documentation

  • docs: improve readability and organization #174
  • Docs/clarify-cache-includes-netbox-data #183
  • docs: improve import documentation for caching, search, and workflow #188

Development

  • Improve dev container process management #171
  • Added a `.github/copilot-instructions.md file #161
  • Devcontainer add RQ worker and script updates #161

v0.3.18

21 Nov 11:01
44c8885

Choose a tag to compare

Improvements

  • Add all LibreNMS SNMP fields to add device form, including force add and poller groups #155

v0.3.17

24 Oct 13:54
ddf2a3c

Choose a tag to compare

What's Changed

  • Improve device type matching with part number and substring matching #151

v0.3.16

24 Oct 10:46
f058a66

Choose a tag to compare

Release v0.3.16

Device Field Synchronization

You can now synchronize device information from LibreNMS to NetBox with side-by-side comparison and one-click sync:

  • Serial Number Sync - Pull device serial numbers from LibreNMS to NetBox
  • Device Type Matching - Match LibreNMS hardware strings to NetBox DeviceTypes (supports exact and slug matching)
  • Platform Sync - Match LibreNMS OS information to NetBox Platforms, with the ability to create new platforms on-the-fly
  • Virtual Chassis Serials - Retrieve all chassis serial numbers from LibreNMS inventory and assign them to individual virtual chassis members through an easy-to-use modal interface

Virtual Machine Enhancements

  • Enhanced the LibreNMS status card for Virtual Machines to display more information including OS, version, hardware, and features

Virtual Chassis Improvements

  • Fixed device matching for virtual chassis devices with VC member suffixes in their hostnames (#146)
  • Enhanced virtual chassis sync device selection logic with better priority handling
  • Improved member selection and validation throughout the plugin

Interface Mapping Improvements

  • Added the ability to bulk import interface type mappings, making it quicker to configure interface type mappings (#147)
  • Added description field to Interface mapping to help understand purpose of each mapping.

Bug Fixes

  • Fixed FieldError for librenms_status field on device and VM status pages that occurred in certain NetBox configurations (#141)

Development

  • GitHub DevContainer Setup - Added a complete development container configuration for quick setup (#140)
    • One-click development environment in VS Code or GitHub Codespaces
    • Pre-configured NetBox instance with PostgreSQL and Redis

Documentation

  • Updated README files with comprehensive documentation of the new device field sync features
  • Added temporary notice about LibreNMS location latitude/longitude sync API issue
  • Enhanced virtual chassis documentation with clearer usage instructions
  • Added example Interface Mapping YAML import

Pull Requests Included

  • #140 - Add GitHub DevContainer setup
  • #141 - Fix FieldError for librenms_status on device/VM status pages
  • #144 - Update develop branch
  • #146 - Fix Virtual Chassis device matching with LibreNMS for devices with VC member suffixes
  • #147 - Bulk Interface Mapping Import, Improve Virtual Chassis Logic, Docs Update
  • #148 - Add device field synchronization and VM information display
  • #149 - docs: update README with device field sync details

v0.3.15

12 Aug 14:38
bb13a5a

Choose a tag to compare

Improvements

  • Improve multi-server configuration handling and add connection testing #137