Skip to content

Commit

Permalink
Merge pull request #268 from smk4664/next-2.0
Browse files Browse the repository at this point in the history
v3.0.0rc2
  • Loading branch information
smk4664 authored Sep 25, 2023
2 parents 94fe2e4 + 3774ce6 commit 9816b74
Show file tree
Hide file tree
Showing 11 changed files with 99 additions and 16 deletions.
1 change: 0 additions & 1 deletion changes/223.fixed

This file was deleted.

13 changes: 13 additions & 0 deletions docs/admin/release_notes/version_2.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@
# v2.0 Release Notes

<!-- towncrier release notes start -->
## [v2.0.3 (2023-09-22)](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v2.0.3)

### Added

- [#227](https://github.com/nautobot/nautobot-plugin-chatops/issues/227) - Added some tests for VLAN chatops.

### Fixed

- [#227](https://github.com/nautobot/nautobot-plugin-chatops/issues/227) - Fixed parameters that should be set to None if they have not been defined yet by default.
- [#239](https://github.com/nautobot/nautobot-plugin-chatops/issues/239) - Updated IP Fabric Logo.
- [#241](https://github.com/nautobot/nautobot-plugin-chatops/issues/241) - Remove Grafana Navigation and urls if disabled.
- [#253](https://github.com/nautobot/nautobot-plugin-chatops/issues/253) - Sorted the ICMP types from IP Fabric diagrams package.

## [v2.0.2 (2023-08-11)](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v2.0.2)

### Changed
Expand Down
12 changes: 6 additions & 6 deletions nautobot_chatops/integrations/grafana/api/urls.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
"""Django urlpatterns declaration for nautobot_chatops.integrations.grafana plugin."""

# from django.urls import path
from django.conf import settings

from nautobot.apps.api import OrderedDefaultRouter
from nautobot_chatops.integrations.grafana.api.views.generic import NautobotPluginChatopsGrafanaRootView


urlpatterns = []
if settings.PLUGINS_CONFIG["nautobot_chatops"]["enable_grafana"]:
router = OrderedDefaultRouter()
router.APIRootView = NautobotPluginChatopsGrafanaRootView

router = OrderedDefaultRouter()
router.APIRootView = NautobotPluginChatopsGrafanaRootView
app_name = "nautobot_chatops.grafana-api"

app_name = "nautobot_chatops.grafana-api"

urlpatterns += router.urls
urlpatterns += router.urls
2 changes: 1 addition & 1 deletion nautobot_chatops/integrations/ipfabric/worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ def pathlookup_icmp(dispatcher, src_ip, dst_ip, icmp_type): # pylint: disable=t
"""Path simulation diagram lookup between source and target IP address."""
sub_cmd = "pathlookup-icmp"
icmp_type = icmp_type.upper() if isinstance(icmp_type, str) else icmp_type
icmp_types = [(icmp_type_name.upper(), icmp_type_name) for icmp_type_name in icmp.__all__]
icmp_types = sorted([(icmp_type_name.upper(), icmp_type_name) for icmp_type_name in icmp.__all__])

# identical to dialog_list in end-to-end-path; consolidate dialog_list if maintaining both cmds
dialog_list = [
Expand Down
6 changes: 5 additions & 1 deletion nautobot_chatops/navigation.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
"""Plugin additions to the Nautobot navigation menu."""

from django.conf import settings
from nautobot.apps.ui import NavMenuAddButton, NavMenuGroup, NavMenuItem, NavMenuTab

if settings.PLUGINS_CONFIG["nautobot_chatops"]["enable_grafana"]:
from .integrations.grafana.navigation import items as grafana_items
else:
grafana_items = ()

from .integrations.grafana.navigation import items as grafana_items

items = [
NavMenuItem(
Expand Down
Binary file not shown.
Binary file modified nautobot_chatops/static/ipfabric/ipfabric_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
62 changes: 62 additions & 0 deletions nautobot_chatops/tests/workers/test_nautobot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
"""Tests for the /nautobot chatops commands."""
from unittest.mock import MagicMock

from django.contrib.contenttypes.models import ContentType
from django.test import TestCase
from nautobot.dcim.models import Location, LocationType
from nautobot.ipam.models import VLAN
from nautobot.extras.models import Status
from nautobot_chatops.choices import CommandStatusChoices

from nautobot_chatops.dispatchers import Dispatcher
from nautobot_chatops.workers.nautobot import get_vlans


class IpamTestCase(TestCase):
"""Tests related to IPAM ChatOps commands."""

def setUp(self):
"""Per-test-case setup function."""
self.active_status = Status.objects.get(name="Active")
location_type, _ = LocationType.objects.get_or_create(name="Site")
location_type.content_types.add(ContentType.objects.get_for_model(VLAN))

self.location = Location.objects.create(location_type=location_type, name="site-1", status=self.active_status)
self.vlans, _ = VLAN.objects.get_or_create(
vid=1, name="vlan-1", status=self.active_status, location=self.location
)

# Mock the dispatcher
self.dispatcher = MagicMock(Dispatcher)

def test_get_vlans_initial_prompt(self):
"""Test get VLANs initial command."""
self.assertFalse(get_vlans(self.dispatcher))
self.dispatcher.send_error.assert_not_called()
self.dispatcher.prompt_from_menu.assert_called_with(
"nautobot get-vlans",
"select a vlan filter",
[
("VLAN ID", "id"),
("Group", "group"),
("Name", "name"),
("Role", "role"),
("Location", "location"),
("Status", "status"),
("Tenant", "tenant"),
("All (no filter)", "all"),
],
)

def test_get_vlans_filter_type_sent_filter_name(self):
"""Test get VLANs with filter type Name selected."""
self.assertFalse(get_vlans(self.dispatcher, "name"))
self.dispatcher.send_error.assert_not_called()
self.dispatcher.prompt_from_menu.assert_called_with(
"nautobot get-vlans name", "select a vlan name", [("vlan-1", "vlan-1")], offset=0
)

def test_get_vlans_filter_type_sent_filter_all(self):
"""Test get VLANs with filter type All selected."""
self.assertEqual(get_vlans(self.dispatcher, "all"), CommandStatusChoices.STATUS_SUCCEEDED)
self.dispatcher.send_error.assert_not_called()
15 changes: 10 additions & 5 deletions nautobot_chatops/urls.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Django urlpatterns declaration for nautobot_chatops plugin."""
import logging

from django.conf import settings
from django.urls import path

from nautobot.extras.views import ObjectChangeLogView
Expand All @@ -22,15 +23,19 @@
ChatOpsAccountLinkDeleteView,
)

try:
from nautobot_chatops.integrations.grafana.urls import urlpatterns as grafana_urlpatterns
# pylint: disable-next=broad-except
except Exception:
if settings.PLUGINS_CONFIG["nautobot_chatops"]["enable_grafana"]:
try:
from nautobot_chatops.integrations.grafana.urls import urlpatterns as grafana_urlpatterns
# pylint: disable-next=broad-except
except Exception:
grafana_urlpatterns = []
logger = logging.getLogger(__name__)
logger.warning("Grafana ChatOps integration is not available.", exc_info=True)
else:
grafana_urlpatterns = []
logger = logging.getLogger(__name__)
logger.warning("Grafana ChatOps integration is not available.", exc_info=True)


urlpatterns = [
path("", CommandLogListView.as_view(), name="commandlog_list"),
path("access/", AccessGrantListView.as_view(), name="accessgrant_list"),
Expand Down
2 changes: 1 addition & 1 deletion nautobot_chatops/workers/nautobot.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ def examine_termination_endpoints(circuit):

# pylint: disable=too-many-statements
@subcommand_of("nautobot")
def get_vlans(dispatcher, filter_type, filter_value_1):
def get_vlans(dispatcher, filter_type=None, filter_value_1=None):
"""Return a filtered list of VLANs based on filter type and/or `filter_value_1`."""
content_type = ContentType.objects.get_for_model(VLAN)
# pylint: disable=no-else-return
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "nautobot-chatops"
version = "3.0.0rc1"
version = "3.0.0rc2"
description = "A plugin providing chatbot capabilities for Nautobot"
authors = ["Network to Code, LLC <[email protected]>"]
readme = "README.md"
Expand Down

0 comments on commit 9816b74

Please sign in to comment.