Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cookie updated by NetworkToCode Cookie Drift Manager Tool #859

Merged
merged 2 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .cookiecutter.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"_drift_manager": {
"template": "https://github.com/nautobot/cookiecutter-nautobot-app.git",
"template_dir": "nautobot-app",
"template_ref": "refs/tags/nautobot-app-v2.4.0",
"template_ref": "refs/tags/nautobot-app-v2.4.1",
"cookie_dir": "",
"branch_prefix": "drift-manager",
"pull_request_strategy": "create",
Expand All @@ -30,7 +30,7 @@
"poetry"
],
"draft": false,
"baked_commit_ref": "69ab82f79f346d3e9e9cf62432bdd6d6b9c53e3f"
"baked_commit_ref": "baf8508b44f904c4c60e5d72dc19abc323508d8c"
}
}
}
Expand Down
16 changes: 16 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Linting: ruff format"
run: "poetry run invoke ruff --action format"
ruff-lint:
Expand All @@ -37,6 +39,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Linting: ruff"
run: "poetry run invoke ruff --action lint"
check-docs-build:
Expand All @@ -48,6 +52,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Check Docs Build"
run: "poetry run invoke build-and-check-docs"
poetry:
Expand All @@ -59,6 +65,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Checking: poetry lock file"
run: "poetry run invoke lock --check"
yamllint:
Expand All @@ -70,6 +78,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Linting: yamllint"
run: "poetry run invoke yamllint"
check-in-docker:
Expand All @@ -92,6 +102,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Constrain Nautobot version and regenerate lock file"
env:
INVOKE_NAUTOBOT_GOLDEN_CONFIG_LOCAL: "true"
Expand Down Expand Up @@ -147,6 +159,8 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Constrain Nautobot version and regenerate lock file"
env:
INVOKE_NAUTOBOT_GOLDEN_CONFIG_LOCAL: "true"
Expand Down Expand Up @@ -188,6 +202,8 @@ jobs:
fetch-depth: "0"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
- name: "Check for changelog entry"
run: |
git fetch --no-tags origin +refs/heads/${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }}
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Apache Software License 2.0

Copyright (c) 2024, Network to Code, LLC
Copyright (c) 2025, Network to Code, LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
1 change: 1 addition & 0 deletions changes/+nautobot-app-v2.4.1.housekeeping
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Rebaked from the cookie `nautobot-app-v2.4.1`.
6 changes: 4 additions & 2 deletions development/docker-compose.dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,12 @@ services:
volumes:
- "./nautobot_config.py:/opt/nautobot/nautobot_config.py"
- "../:/source"
# To expose postgres or redis to the host uncomment the following
# postgres:
# To expose postgres (5432), myql (3306) on db service or redis (6379) to the host uncomment the
# following. Ensure to match the 2 idented spaces which to have the service nested under services.
# db:
# ports:
# - "5432:5432"
# - "3306:3306"
# redis:
# ports:
# - "6379:6379"
7 changes: 7 additions & 0 deletions development/docker-compose.mysql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ services:
- "development.env"
- "creds.env"
- "development_mysql.env"
beat:
environment:
- "NAUTOBOT_DB_ENGINE=django.db.backends.mysql"
env_file:
- "development.env"
- "creds.env"
- "development_mysql.env"
db:
image: "mysql:8"
command:
Expand Down
14 changes: 3 additions & 11 deletions development/nautobot_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import sys

from nautobot.core.settings import * # noqa: F403 # pylint: disable=wildcard-import,unused-wildcard-import
from nautobot.core.settings_funcs import is_truthy, parse_redis_connection
from nautobot.core.settings_funcs import is_truthy

#
# Debug
Expand Down Expand Up @@ -65,16 +65,8 @@
#

# The django-redis cache is used to establish concurrent locks using Redis.
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": parse_redis_connection(redis_database=0),
"TIMEOUT": 300,
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
}
}
# Inherited from nautobot.core.settings
# CACHES = {....}

#
# Celery settings are not defined here because they can be overloaded with
Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ nav:
- Extending the App: "dev/extending.md"
- Contributing to the App: "dev/contributing.md"
- Development Environment: "dev/dev_environment.md"
- Release Checklist: "dev/release_checklist.md"
- Architecture Decision Records: "dev/arch_decision.md"
- Code Reference:
- "dev/code_reference/index.md"
Expand Down
12 changes: 7 additions & 5 deletions nautobot_golden_config/api/serializers.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
"""REST API serializer capabilities for graphql app."""
"""API serializers for nautobot_golden_config."""

# pylint: disable=too-many-ancestors
from nautobot.core.api.serializers import NautobotModelSerializer
from nautobot.apps.api import NautobotModelSerializer, TaggedModelSerializerMixin
from nautobot.dcim.api.serializers import DeviceSerializer
from nautobot.dcim.models import Device
from nautobot.extras.api.mixins import TaggedModelSerializerMixin
from rest_framework import serializers

from nautobot_golden_config import models
Expand All @@ -18,14 +17,17 @@ class GraphQLSerializer(serializers.Serializer): # pylint: disable=abstract-met


class ComplianceFeatureSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
"""Serializer for ComplianceFeature object."""
"""ComplianceFeature Serializer."""

class Meta:
"""Set Meta Data for ComplianceFeature, will serialize all fields."""
"""Meta attributes."""

model = models.ComplianceFeature
fields = "__all__"

# Option for disabling write for certain fields:
# read_only_fields = []


class ComplianceRuleSerializer(NautobotModelSerializer, TaggedModelSerializerMixin):
"""Serializer for ComplianceRule object."""
Expand Down
5 changes: 3 additions & 2 deletions nautobot_golden_config/api/urls.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
"""API for Custom Jobs ."""
"""Django API urlpatterns declaration for nautobot_golden_config app."""

from django.urls import path
from nautobot.core.api.routers import OrderedDefaultRouter
from nautobot.apps.api import OrderedDefaultRouter

from nautobot_golden_config.api import views

router = OrderedDefaultRouter()
# add the name of your api endpoint, usually hyphenated model name in plural, e.g. "my-model-classes"
router.APIRootView = views.GoldenConfigRootView
router.register("compliance-feature", views.ComplianceFeatureViewSet)
router.register("compliance-rule", views.ComplianceRuleViewSet)
Expand Down
7 changes: 5 additions & 2 deletions nautobot_golden_config/api/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""View for Golden Config APIs."""
"""API views for nautobot_golden_config."""

import datetime
import difflib
Expand All @@ -11,6 +11,7 @@
from drf_spectacular.types import OpenApiTypes
from drf_spectacular.utils import OpenApiParameter, extend_schema
from jinja2.exceptions import TemplateError, TemplateSyntaxError
from nautobot.apps.api import NautobotModelViewSet, NotesViewSetMixin
from nautobot.apps.utils import render_jinja2
from nautobot.core.api.views import (
BulkDestroyModelMixin,
Expand All @@ -19,7 +20,6 @@
NautobotAPIVersionMixin,
)
from nautobot.dcim.models import Device
from nautobot.extras.api.views import NautobotModelViewSet, NotesViewSetMixin
from nautobot.extras.datasources.git import ensure_git_repository
from nautobot.extras.models import GraphQLQuery
from nautobot_plugin_nornir.constants import NORNIR_SETTINGS
Expand Down Expand Up @@ -78,6 +78,9 @@ class ComplianceFeatureViewSet(NautobotModelViewSet): # pylint:disable=too-many
serializer_class = serializers.ComplianceFeatureSerializer
filterset_class = filters.ComplianceFeatureFilterSet

# Option for modifying the default HTTP methods:
# http_method_names = ["get", "post", "put", "patch", "delete", "head", "options", "trace"]


class ConfigComplianceViewSet(NautobotModelViewSet): # pylint:disable=too-many-ancestors
"""API viewset for interacting with ConfigCompliance objects."""
Expand Down
12 changes: 9 additions & 3 deletions nautobot_golden_config/filters.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
"""Filters for UI and API Views."""
"""Filtering for nautobot_golden_config."""

import django_filters
from nautobot.core.filters import MultiValueDateTimeFilter, SearchFilter, TreeNodeMultipleChoiceFilter
from nautobot.apps.filters import (
MultiValueDateTimeFilter,
NaturalKeyOrPKMultipleChoiceFilter,
NautobotFilterSet,
SearchFilter,
StatusFilter,
TreeNodeMultipleChoiceFilter,
)
from nautobot.dcim.models import Device, DeviceType, Location, Manufacturer, Platform, Rack, RackGroup
from nautobot.extras.filters import NaturalKeyOrPKMultipleChoiceFilter, NautobotFilterSet, StatusFilter
from nautobot.extras.models import JobResult, Role, Status
from nautobot.tenancy.models import Tenant, TenantGroup

Expand Down
9 changes: 6 additions & 3 deletions nautobot_golden_config/urls.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
"""Django urlpatterns declaration for config compliance app."""
"""Django urlpatterns declaration for nautobot_golden_config app."""

from django.templatetags.static import static
from django.urls import path
from django.views.generic import RedirectView
from nautobot.core.views.routers import NautobotUIViewSetRouter
from nautobot.apps.urls import NautobotUIViewSetRouter

from nautobot_golden_config import views

app_name = "nautobot_golden_config"

router = NautobotUIViewSetRouter()

router.register("compliance-feature", views.ComplianceFeatureUIViewSet)
router.register("compliance-rule", views.ComplianceRuleUIViewSet)
router.register("golden-config-setting", views.GoldenConfigSettingUIViewSet)
Expand All @@ -25,4 +26,6 @@
path("config-plan/bulk_deploy/", views.ConfigPlanBulkDeploy.as_view(), name="configplan_bulk-deploy"),
path("generate-intended-config/", views.GenerateIntendedConfigView.as_view(), name="generate_intended_config"),
path("docs/", RedirectView.as_view(url=static("nautobot_golden_config/docs/index.html")), name="docs"),
] + router.urls
]

urlpatterns += router.urls
Loading