Plugin/Script/Report Manager #5828

Closed
opened 2025-12-29 19:33:14 +01:00 by adam · 5 comments
Owner

Originally created by @schwos on GitHub (Dec 22, 2021).

NetBox version

v3.1.2

Feature type

New functionality

Proposed functionality

Have we considered a plugin/script/report integrated management tool. This improving the extensibility of NetBox. General plugin support is in place but having a process to load a plugin from within NetBox would enable for version validation, dependency installation/removal, etc. Don't know if this was in the works?

Use case

1.) User finds a new feature plugin for netbox 3.1.2 and loads it from within netbox gui
2.) User finds a old plugin but it isn't tested on the release; the netbox plugin gui pops up warning that it may break things or stops user from installing
3.) permits the plugin to perform the needed database updates to support its functionality; as well ability to backout.

Database changes

Plugin Dependent but prompts with warning to user.

External dependencies

No response

Originally created by @schwos on GitHub (Dec 22, 2021). ### NetBox version v3.1.2 ### Feature type New functionality ### Proposed functionality Have we considered a plugin/script/report integrated management tool. This improving the extensibility of NetBox. General plugin support is in place but having a process to load a plugin from within NetBox would enable for version validation, dependency installation/removal, etc. Don't know if this was in the works? ### Use case 1.) User finds a new feature plugin for netbox 3.1.2 and loads it from within netbox gui 2.) User finds a old plugin but it isn't tested on the release; the netbox plugin gui pops up warning that it may break things or stops user from installing 3.) permits the plugin to perform the needed database updates to support its functionality; as well ability to backout. ### Database changes Plugin Dependent but prompts with warning to user. ### External dependencies _No response_
adam added the type: featurepending closure labels 2025-12-29 19:33:14 +01:00
adam closed this issue 2025-12-29 19:33:14 +01:00
Author
Owner

@DanSheps commented on GitHub (Dec 23, 2021):

This isn't as easy as it seems unfortunately.

Often, plugins need to install python dependencies within the virtual environment. Likewise, most plugins are actually python files worth of python code and AFAIK there is no way to evaluate code from stored database entry easily.

@DanSheps commented on GitHub (Dec 23, 2021): This isn't as easy as it seems unfortunately. Often, plugins need to install python dependencies within the virtual environment. Likewise, most plugins are actually python files worth of python code and AFAIK there is no way to evaluate code from stored database entry **easily**.
Author
Owner

@schwos commented on GitHub (Dec 23, 2021):

Oh, don't get me wrong I wasn't implying it was easy, but it is possible when thought out. Examples like Joomla, Wordpress, and Drupal have clean plugin/module managers which handle installation of dependencies and the underlining plugin itself. Though if we approach this is steps; for example:

a.) Permit only allowing integrated modules/runtimes integrated with the docker build
b.) Next step would be adding ability to load dependencies; the Python Installation program which is already integrated within the docker build but as well will be available on the host should be able to load requirements files; we would have to create a table which stores all Netbox minimum dependences that can't be removed and as well insure that each module that is loaded registers the module loaded. If there are other plugins that require the module it will not remove it upon removal of the plugin but if it is the only plugin that uses it then it will remove it.

Just thinking it out.

@schwos commented on GitHub (Dec 23, 2021): Oh, don't get me wrong I wasn't implying it was easy, but it is possible when thought out. Examples like Joomla, Wordpress, and Drupal have clean plugin/module managers which handle installation of dependencies and the underlining plugin itself. Though if we approach this is steps; for example: a.) Permit only allowing integrated modules/runtimes integrated with the docker build b.) Next step would be adding ability to load dependencies; the Python Installation program which is already integrated within the docker build but as well will be available on the host should be able to load requirements files; we would have to create a table which stores all Netbox minimum dependences that can't be removed and as well insure that each module that is loaded registers the module loaded. If there are other plugins that require the module it will not remove it upon removal of the plugin but if it is the only plugin that uses it then it will remove it. Just thinking it out.
Author
Owner

@DanSheps commented on GitHub (Dec 23, 2021):

Oh, don't get me wrong I wasn't implying it was easy, but it is possible when thought out. Examples like Joomla, Wordpress, and Drupal have clean plugin/module managers which handle installation of dependencies and the underlining plugin itself. Though if we approach this is steps; for example:

Those all use PHP, which you can use eval() on. However, the big caveat with eval is it lets you do pretty much anything. Look at log4j to see how something like that can go horribly wrong (this is a gross oversimplification of the log4j exploit but it is similar)

IMO, I don't think this will happen honestly. If you need a plugin, it should be installed VIA pip on the command line.

a.) Permit only allowing integrated modules/runtimes integrated with the docker build

NetBox isn't using docker, even if we decided to allow some sort of dynamic load, we would not do anything to tie us to docker

@DanSheps commented on GitHub (Dec 23, 2021): > Oh, don't get me wrong I wasn't implying it was easy, but it is possible when thought out. Examples like Joomla, Wordpress, and Drupal have clean plugin/module managers which handle installation of dependencies and the underlining plugin itself. Though if we approach this is steps; for example: Those all use PHP, which you can use eval() on. However, the big caveat with eval is it lets you do pretty much anything. Look at log4j to see how something like that can go horribly wrong (this is a gross oversimplification of the log4j exploit but it is similar) IMO, I don't think this will happen honestly. If you need a plugin, it should be installed VIA pip on the command line. > a.) Permit only allowing integrated modules/runtimes integrated with the docker build NetBox isn't using docker, even if we decided to allow some sort of dynamic load, we would not do anything to tie us to docker
Author
Owner

@github-actions[bot] commented on GitHub (Feb 22, 2022):

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 (Feb 22, 2022): 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 (Mar 24, 2022):

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 (Mar 24, 2022): 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#5828