1
0
Fork 0

Upload files to "dnac_integration"

This commit is contained in:
Justin Parsell 2024-02-15 17:48:37 +00:00
parent 95bed3a0c0
commit 0b1fe631fc
5 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,19 @@
from extras.plugins import PluginMenuItem, PluginMenuButton
from utilities.choices import ButtonColorChoices
dnacserver_buttons = [
PluginMenuButton(
link='plugins:dnac_integration:dnac_server_add',
title='Add',
icon_class='mdi mdi-plus-thick',
color=ButtonColorChoices.GREEN
)
]
menu_items = (
PluginMenuItem(
link='plugins:dnac_integration:dnac_server_list',
link_text='DNAC Servers',
buttons=dnacserver_buttons
),
)

View File

@ -0,0 +1,11 @@
from netbox.search import SearchIndex, register_search
from . import models
@register_search
class dnacServerIndex(SearchIndex):
model = models.dnacServer
fields = (
('hostname', 100),
('username', 500),
('version', 1000),
)

View File

@ -0,0 +1,29 @@
import django_tables2 as tables
from django.utils.safestring import mark_safe
from netbox.tables import NetBoxTable
from .models import dnacServer
# Hide password from being viewed
# TODO: add custom view to base64, aes256 encrypt passwords
class MaskedPassword(tables.Column):
def render(self, value):
value = "*****"
return mark_safe(value)
class dnacServerTable(NetBoxTable):
# Define the type of fields to display for a table
hostname = tables.Column(
linkify=True
)
username = tables.Column()
password = MaskedPassword()
version = tables.Column()
verify = tables.BooleanColumn()
status = tables.BooleanColumn()
default_filter_action = tables.BooleanColumn()
# Setup table ordering
class Meta(NetBoxTable.Meta):
model = dnacServer
fields = ('pk', 'id', 'hostname', 'username', 'password', 'version', 'verify', 'status', 'default_filter_action', 'actions')
default_columns = ('hostname', 'version', 'verify', 'status')

12
dnac_integration/urls.py Normal file
View File

@ -0,0 +1,12 @@
from django.urls import path
from netbox.views.generic import ObjectChangeLogView
from . import models, views
urlpatterns = [
path('servers/', views.dnacServerListView.as_view(), name='dnac_server_list'),
path('servers/add/', views.dnacServerEditView.as_view(), name='dnac_server_add'),
path('servers/<int:pk>/', views.dnacServerView.as_view(), name='dnac_server'),
path('servers/<int:pk>/edit/', views.dnacServerEditView.as_view(), name='dnac_server_edit'),
path('servers/<int:pk>/delete/', views.dnacServerDeleteView.as_view(), name='dnac_server_delete'),
path('servers/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='dnac_server_changelog', kwargs={'model': models.dnacServer}),
]

17
dnac_integration/views.py Normal file
View File

@ -0,0 +1,17 @@
from netbox.views import generic
from django.db.models import Count
from . import forms, models, tables, filtersets
class dnacServerView(generic.ObjectView):
queryset = models.dnacServer.objects.all()
class dnacServerListView(generic.ObjectListView):
queryset = models.dnacServer.objects.all()
table = tables.dnacServerTable
class dnacServerEditView(generic.ObjectEditView):
queryset = models.dnacServer.objects.all()
form = forms.dnacServerForm
class dnacServerDeleteView(generic.ObjectDeleteView):
queryset = models.dnacServer.objects.all()