Support plugins as a delivery mechanism for reports and custom scripts #3633

Closed
opened 2025-12-29 18:30:16 +01:00 by adam · 7 comments
Owner

Originally created by @lampwins on GitHub (May 5, 2020).

Environment

  • Python version: 3.7
  • NetBox version: 2.8.1

Proposed Functionality

This proposal is to add two new interfaces to the plugins framework to support the packaging and delivery of reports and custom scripts through a plugin. This proposal does not intend to change in any way the existing API for either reports or custom scripts, just the ability to make them a part of a plugin.

The proposed mechanism follows plugin menu items and template content classes, whereby a new plugin interface will expose scripts and reports modules with the respective attribute lists.

While this new method is intended to replace the local reports and scripts directories, it is not necessary that we deprecate these means immediately, if ever. It would, however, allow us to reduce the instances of code that performs dynamic imports for one reason or another.

Use Case

With the addition of the plugins framework, NetBox now has three separate interfaces for extensibility: reports, custom scripts, and plugins. If a user wishes to make use of all three, they must navigate the different interfaces. Granted, reports and custom scripts are similar but require using different directories.

Allowing reports and custom scripts to be bundled in a plugin would offer a simplified delivery interface for users and developers.

There are two primary use cases this is born from:

  1. An organization that uses a plugin to contain org specific business logic and functionality, can bundle their reports and scripts into the same plugin for ease of development and management.
  2. Aid the publishing and reuse of reports and scripts by allowing them to be a part of python packages supported by a formal NetBox interface.

Database Changes

None

External Dependencies

None

Originally created by @lampwins on GitHub (May 5, 2020). <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.7 * NetBox version: 2.8.1 <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality This proposal is to add two new interfaces to the plugins framework to support the packaging and delivery of reports and custom scripts through a plugin. This proposal does not intend to change in any way the existing API for either reports or custom scripts, just the ability to make them a part of a plugin. The proposed mechanism follows plugin menu items and template content classes, whereby a new plugin interface will expose scripts and reports modules with the respective attribute lists. While this new method is intended to replace the local reports and scripts directories, it is not necessary that we deprecate these means immediately, if ever. It would, however, allow us to reduce the instances of code that performs dynamic imports for one reason or another. <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case With the addition of the plugins framework, NetBox now has three separate interfaces for extensibility: reports, custom scripts, and plugins. If a user wishes to make use of all three, they must navigate the different interfaces. Granted, reports and custom scripts are similar but require using different directories. Allowing reports and custom scripts to be bundled in a plugin would offer a simplified delivery interface for users and developers. There are two primary use cases this is born from: 1. An organization that uses a plugin to contain org specific business logic and functionality, can bundle their reports and scripts into the same plugin for ease of development and management. 2. Aid the publishing and reuse of reports and scripts by allowing them to be a part of python packages supported by a formal NetBox interface. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes None <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies None
adam added the type: featurestatus: needs ownerpending closuretopic: plugins labels 2025-12-29 18:30:16 +01:00
adam closed this issue 2025-12-29 18:30:16 +01:00
Author
Owner

@jeremystretch commented on GitHub (Jul 8, 2020):

Marking this as blocked by #4735. Should be easier to tackle once reports are no longer a thing.

@jeremystretch commented on GitHub (Jul 8, 2020): Marking this as blocked by #4735. Should be easier to tackle once reports are no longer a thing.
Author
Owner

@github-actions[bot] commented on GitHub (May 29, 2021):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.

@github-actions[bot] commented on GitHub (May 29, 2021): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md).
Author
Owner

@netsandbox commented on GitHub (May 31, 2021):

@lampwins , @jeremystretch and @glennmatthews any chances to go further with this?

I'm with @lampwins that if you write a plugin and also create scripts and reports,
it would simplify the deployment if you can package and install the scripts and reports with a plugin.

@netsandbox commented on GitHub (May 31, 2021): @lampwins , @jeremystretch and @glennmatthews any chances to go further with this? I'm with @lampwins that if you write a plugin and also create scripts and reports, it would simplify the deployment if you can package and install the scripts and reports with a plugin.
Author
Owner

@jeremystretch commented on GitHub (Jul 6, 2021):

@netsandbox are you interested in volunteering for this?

@jeremystretch commented on GitHub (Jul 6, 2021): @netsandbox are you interested in volunteering for this?
Author
Owner

@netsandbox commented on GitHub (Jul 13, 2021):

@jeremystretch sadly I'm not deep enough involved into Python and NetBox development, so I can't handle this.

@netsandbox commented on GitHub (Jul 13, 2021): @jeremystretch sadly I'm not deep enough involved into Python and NetBox development, so I can't handle this.
Author
Owner

@github-actions[bot] commented on GitHub (Sep 12, 2021):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.

@github-actions[bot] commented on GitHub (Sep 12, 2021): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md).
Author
Owner

@github-actions[bot] commented on GitHub (Oct 12, 2021):

This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.

@github-actions[bot] commented on GitHub (Oct 12, 2021): This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3633