diff --git a/README.md b/README.md index ed83796..774d0b2 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Each Plugin Version listed below has been tested with its corresponding NetBox V |:--------------:|:--------------:| | 3.2 | 1.0.1 | | 3.3 | 1.1.0 | -| 3.4 | 1.2.0 | +| 3.4 | 1.2.1 | ## Installing @@ -59,16 +59,20 @@ or by adding to your `local_requirements.txt` or `plugin_requirements.txt` (netb netbox-acls ``` +## Configuration + Enable the plugin in `/opt/netbox/netbox/netbox/configuration.py`, or if you use netbox-docker, your `/configuration/plugins.py` file : ```python PLUGINS = [ - 'netbox_acls' + "netbox_acls" ] PLUGINS_CONFIG = { - "netbox_acls": {}, + "netbox_acls": { + "top_level_menu": True # If set to True the plugin will add a top level menu item for the plugin. If set to False the plugin will add a menu item under the Plugins menu item. Default is set to True. + }, } ``` diff --git a/netbox_acls/navigation.py b/netbox_acls/navigation.py index 6d784f5..9790365 100644 --- a/netbox_acls/navigation.py +++ b/netbox_acls/navigation.py @@ -2,77 +2,79 @@ Define the plugin menu buttons & the plugin navigation bar enteries. """ +from django.conf import settings from extras.plugins import PluginMenu, PluginMenuButton, PluginMenuItem from utilities.choices import ButtonColorChoices +plugin_settings = settings.PLUGINS_CONFIG["netbox_acls"] + # # Define plugin menu buttons # - -menu = PluginMenu( - label="Access Lists", - groups=( - ( - "ACLs", - ( - PluginMenuItem( - link="plugins:netbox_acls:accesslist_list", - link_text="Access Lists", - permissions=["netbox_acls.view_accesslist"], - buttons=( - PluginMenuButton( - link="plugins:netbox_acls:accesslist_add", - title="Add", - icon_class="mdi mdi-plus-thick", - color=ButtonColorChoices.GREEN, - permissions=["netbox_acls.add_accesslist"], - ), - ), - ), - PluginMenuItem( - link="plugins:netbox_acls:aclstandardrule_list", - link_text="Standard Rules", - permissions=["netbox_acls.view_aclstandardrule"], - buttons=( - PluginMenuButton( - link="plugins:netbox_acls:aclstandardrule_add", - title="Add", - icon_class="mdi mdi-plus-thick", - color=ButtonColorChoices.GREEN, - permissions=["netbox_acls.add_aclstandardrule"], - ), - ), - ), - PluginMenuItem( - link="plugins:netbox_acls:aclextendedrule_list", - link_text="Extended Rules", - permissions=["netbox_acls.view_aclextendedrule"], - buttons=( - PluginMenuButton( - link="plugins:netbox_acls:aclextendedrule_add", - title="Add", - icon_class="mdi mdi-plus-thick", - color=ButtonColorChoices.GREEN, - permissions=["netbox_acls.add_aclextendedrule"], - ), - ), - ), - PluginMenuItem( - link="plugins:netbox_acls:aclinterfaceassignment_list", - link_text="Interface Assignments", - permissions=["netbox_acls.view_aclinterfaceassignment"], - buttons=( - PluginMenuButton( - link="plugins:netbox_acls:aclinterfaceassignment_add", - title="Add", - icon_class="mdi mdi-plus-thick", - color=ButtonColorChoices.GREEN, - permissions=["netbox_acls.add_aclinterfaceassignment"], - ), - ), - ), +menu_buttons = ( + PluginMenuItem( + link="plugins:netbox_acls:accesslist_list", + link_text="Access Lists", + permissions=["netbox_acls.view_accesslist"], + buttons=( + PluginMenuButton( + link="plugins:netbox_acls:accesslist_add", + title="Add", + icon_class="mdi mdi-plus-thick", + color=ButtonColorChoices.GREEN, + permissions=["netbox_acls.add_accesslist"], + ), + ), + ), + PluginMenuItem( + link="plugins:netbox_acls:aclstandardrule_list", + link_text="Standard Rules", + permissions=["netbox_acls.view_aclstandardrule"], + buttons=( + PluginMenuButton( + link="plugins:netbox_acls:aclstandardrule_add", + title="Add", + icon_class="mdi mdi-plus-thick", + color=ButtonColorChoices.GREEN, + permissions=["netbox_acls.add_aclstandardrule"], + ), + ), + ), + PluginMenuItem( + link="plugins:netbox_acls:aclextendedrule_list", + link_text="Extended Rules", + permissions=["netbox_acls.view_aclextendedrule"], + buttons=( + PluginMenuButton( + link="plugins:netbox_acls:aclextendedrule_add", + title="Add", + icon_class="mdi mdi-plus-thick", + color=ButtonColorChoices.GREEN, + permissions=["netbox_acls.add_aclextendedrule"], + ), + ), + ), + PluginMenuItem( + link="plugins:netbox_acls:aclinterfaceassignment_list", + link_text="Interface Assignments", + permissions=["netbox_acls.view_aclinterfaceassignment"], + buttons=( + PluginMenuButton( + link="plugins:netbox_acls:aclinterfaceassignment_add", + title="Add", + icon_class="mdi mdi-plus-thick", + color=ButtonColorChoices.GREEN, + permissions=["netbox_acls.add_aclinterfaceassignment"], ), ), ), - icon_class="mdi mdi-lock", ) + +if plugin_settings.get("top_level_menu"): + menu = PluginMenu( + label="Access Lists", + groups=(("ACLs", menu_buttons),), + icon_class="mdi mdi-lock", + ) +else: + menu_items = menu_buttons diff --git a/netbox_acls/version.py b/netbox_acls/version.py index c68196d..510956d 100644 --- a/netbox_acls/version.py +++ b/netbox_acls/version.py @@ -1 +1,4 @@ -__version__ = "1.2.0" +""" +Version information for netbox-acls. +""" +__version__ = "1.2.1"