* Skip incompatible plugins during startup and remove from PLUGINS * Handle exceptions on request processors in incompatible plugins, and display status in Plugins page * Revert "Handle exceptions on request processors in incompatible plugins, and display status in Plugins page" This reverts commit d97bf2ab146114cc13d751878a17a383de0fd5f8. * Resolve merge conflicts * Skip incompatible plugins during startup and remove from PLUGINS * Rename Installed column to Active, and add custom PluginActiveColumn with tooltip * Fix is_installed * Simplify plugin_config.validate syntax Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com> * Merge feature * Revert "Merge feature" This reverts commit d1ea60f08270b9e79d30b9fa9859049aa371f4c6. * Undo simplification * Add failed_to_load logic * Use a TemplateColumn for is_installed * Remove custom column class * Remove merge vestige * Simplify plugin attributes for is_installed column * Use placeholders for false values to increase legibility of the plugins table --------- Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
@@ -65,9 +65,11 @@ class Plugin:
|
||||
is_certified: bool = False
|
||||
release_latest: PluginVersion = field(default_factory=PluginVersion)
|
||||
release_recent_history: list[PluginVersion] = field(default_factory=list)
|
||||
is_local: bool = False # extra field for locally installed plugins
|
||||
is_installed: bool = False
|
||||
is_local: bool = False # Indicates that the plugin is listed in settings.PLUGINS (i.e. installed)
|
||||
is_loaded: bool = False # Indicates whether the plugin successfully loaded at launch
|
||||
installed_version: str = ''
|
||||
netbox_min_version: str = ''
|
||||
netbox_max_version: str = ''
|
||||
|
||||
|
||||
def get_local_plugins(plugins=None):
|
||||
@@ -78,7 +80,7 @@ def get_local_plugins(plugins=None):
|
||||
local_plugins = {}
|
||||
|
||||
# Gather all locally-installed plugins
|
||||
for plugin_name in registry['plugins']['installed']:
|
||||
for plugin_name in settings.PLUGINS:
|
||||
plugin = importlib.import_module(plugin_name)
|
||||
plugin_config: PluginConfig = plugin.config
|
||||
installed_version = plugin_config.version
|
||||
@@ -92,15 +94,17 @@ def get_local_plugins(plugins=None):
|
||||
tag_line=plugin_config.description,
|
||||
description_short=plugin_config.description,
|
||||
is_local=True,
|
||||
is_installed=True,
|
||||
is_loaded=plugin_name in registry['plugins']['installed'],
|
||||
installed_version=installed_version,
|
||||
netbox_min_version=plugin_config.min_version,
|
||||
netbox_max_version=plugin_config.max_version,
|
||||
)
|
||||
|
||||
# Update catalog entries for local plugins, or add them to the list if not listed
|
||||
for k, v in local_plugins.items():
|
||||
if k in plugins:
|
||||
plugins[k].is_local = True
|
||||
plugins[k].is_installed = True
|
||||
plugins[k].is_local = v.is_local
|
||||
plugins[k].is_loaded = v.is_loaded
|
||||
plugins[k].installed_version = v.installed_version
|
||||
else:
|
||||
plugins[k] = v
|
||||
|
Reference in New Issue
Block a user