From aebeca3533c08c3fdbe384e0e8a57970cb750420 Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:32:32 -0500 Subject: [PATCH 1/9] Remove unnecessary changelog snippet --- changes/562.housekeeping | 1 - 1 file changed, 1 deletion(-) delete mode 100644 changes/562.housekeeping diff --git a/changes/562.housekeeping b/changes/562.housekeeping deleted file mode 100644 index 6026d5a3..00000000 --- a/changes/562.housekeeping +++ /dev/null @@ -1 +0,0 @@ -Cut release 3.0.1. \ No newline at end of file From 9ce0e6182b86ebb9d046b653128f5191edf7eb8a Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:32:55 -0500 Subject: [PATCH 2/9] Correct changelog snippet type to documentation. --- changes/{520.added => 520.documentation} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changes/{520.added => 520.documentation} (100%) diff --git a/changes/520.added b/changes/520.documentation similarity index 100% rename from changes/520.added rename to changes/520.documentation From 6192dce4470e3ae477e24013d67fc15324ddf2cd Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 14:29:44 -0500 Subject: [PATCH 3/9] =?UTF-8?q?docs:=20=F0=9F=93=9D=20Generate=20release?= =?UTF-8?q?=20notes=20with=20towncrier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changes/520.documentation | 1 - changes/521.fixed | 1 - changes/526.changed | 2 -- changes/527.added | 1 - changes/527.housekeeping | 1 - changes/528.added | 1 - changes/528.fixed | 2 -- changes/530.fixed | 1 - docs/admin/release_notes/version_3.1.md | 27 +++++++++++++++++++++++++ 9 files changed, 27 insertions(+), 10 deletions(-) delete mode 100644 changes/520.documentation delete mode 100644 changes/521.fixed delete mode 100644 changes/526.changed delete mode 100644 changes/527.added delete mode 100644 changes/527.housekeeping delete mode 100644 changes/528.added delete mode 100644 changes/528.fixed delete mode 100644 changes/530.fixed create mode 100644 docs/admin/release_notes/version_3.1.md diff --git a/changes/520.documentation b/changes/520.documentation deleted file mode 100644 index dd85a0f5..00000000 --- a/changes/520.documentation +++ /dev/null @@ -1 +0,0 @@ -Added instructions for enabling Infoblox integration. diff --git a/changes/521.fixed b/changes/521.fixed deleted file mode 100644 index 0a3552da..00000000 --- a/changes/521.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed generalized Exception with SecretsGroup and add custom Exception in case SecretsGroup not found on ExternalIntegration. \ No newline at end of file diff --git a/changes/526.changed b/changes/526.changed deleted file mode 100644 index 83c86d42..00000000 --- a/changes/526.changed +++ /dev/null @@ -1,2 +0,0 @@ -Updated the ExampleDataSource job to improve memory utilization with large data sets. -Changed memory profiling logging output to format bytes into KiB/MiB. diff --git a/changes/527.added b/changes/527.added deleted file mode 100644 index c738255f..00000000 --- a/changes/527.added +++ /dev/null @@ -1 +0,0 @@ -Added Python 3.12 support. diff --git a/changes/527.housekeeping b/changes/527.housekeeping deleted file mode 100644 index f3a07453..00000000 --- a/changes/527.housekeeping +++ /dev/null @@ -1 +0,0 @@ -Rebaked from the cookie 'nautobot-app-v2.3.2'. diff --git a/changes/528.added b/changes/528.added deleted file mode 100644 index 39399f9e..00000000 --- a/changes/528.added +++ /dev/null @@ -1 +0,0 @@ -Added DNA Center integration to _MIN_NAUTOBOT_VERSION as it requires Nautobot 2.2 for Controller object. \ No newline at end of file diff --git a/changes/528.fixed b/changes/528.fixed deleted file mode 100644 index a175192c..00000000 --- a/changes/528.fixed +++ /dev/null @@ -1,2 +0,0 @@ -Fixed bug preventing use of Nautobot 2.1 due to ACI requiring 2.2. -Fixed JobResult association to Sync object to CASCADE instead of PROTECT so Sync object is deleted when JobResult is instead of preventing deletion. \ No newline at end of file diff --git a/changes/530.fixed b/changes/530.fixed deleted file mode 100644 index 7fd6ab22..00000000 --- a/changes/530.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed Infoblox Configuration List Bug when on Nautobot 2.3 by disabling SSOTInfobloxConfig from being a saved view. diff --git a/docs/admin/release_notes/version_3.1.md b/docs/admin/release_notes/version_3.1.md new file mode 100644 index 00000000..abd2054a --- /dev/null +++ b/docs/admin/release_notes/version_3.1.md @@ -0,0 +1,27 @@ + +## [v3.1.0 (2024-09-06)](https://github.com/nautobot/nautobot-app-ssot/releases/tag/v3.1.0) + +### Added + +- [#527](https://github.com/nautobot/nautobot-app-ssot/issues/527) - Added Python 3.12 support. +- [#528](https://github.com/nautobot/nautobot-app-ssot/issues/528) - Added DNA Center integration to _MIN_NAUTOBOT_VERSION as it requires Nautobot 2.2 for Controller object. + +### Changed + +- [#526](https://github.com/nautobot/nautobot-app-ssot/issues/526) - Updated the ExampleDataSource job to improve memory utilization with large data sets. +- [#526](https://github.com/nautobot/nautobot-app-ssot/issues/526) - Changed memory profiling logging output to format bytes into KiB/MiB. + +### Fixed + +- [#521](https://github.com/nautobot/nautobot-app-ssot/issues/521) - Fixed generalized Exception with SecretsGroup and add custom Exception in case SecretsGroup not found on ExternalIntegration. +- [#528](https://github.com/nautobot/nautobot-app-ssot/issues/528) - Fixed bug preventing use of Nautobot 2.1 due to ACI requiring 2.2. +- [#528](https://github.com/nautobot/nautobot-app-ssot/issues/528) - Fixed JobResult association to Sync object to CASCADE instead of PROTECT so Sync object is deleted when JobResult is instead of preventing deletion. +- [#530](https://github.com/nautobot/nautobot-app-ssot/issues/530) - Fixed Infoblox Configuration List Bug when on Nautobot 2.3 by disabling SSOTInfobloxConfig from being a saved view. + +### Documentation + +- [#520](https://github.com/nautobot/nautobot-app-ssot/issues/520) - Added instructions for enabling Infoblox integration. + +### Housekeeping + +- [#527](https://github.com/nautobot/nautobot-app-ssot/issues/527) - Rebaked from the cookie 'nautobot-app-v2.3.2'. From a60b4f2dd685fce63157c1e6433eea13b3c5e84b Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 14:33:32 -0500 Subject: [PATCH 4/9] =?UTF-8?q?refactor:=20=E2=99=BB=EF=B8=8F=20Move=20=5F?= =?UTF-8?q?check=5Fmin=5Fnautobot=5Fversion=5Fmet=20to=20be=20done=20befor?= =?UTF-8?q?e=20integrations=20are=20added=20in=20Jobs=20dunder=20init.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nautobot_ssot/__init__.py | 27 +-------------------------- nautobot_ssot/jobs/__init__.py | 28 +++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/nautobot_ssot/__init__.py b/nautobot_ssot/__init__.py index 079966ca..bb805c22 100644 --- a/nautobot_ssot/__init__.py +++ b/nautobot_ssot/__init__.py @@ -4,12 +4,11 @@ import os from importlib import metadata -import packaging from django.conf import settings from nautobot.core.settings_funcs import is_truthy from nautobot.extras.plugins import NautobotAppConfig -from nautobot_ssot.integrations.utils import each_enabled_integration, each_enabled_integration_module +from nautobot_ssot.integrations.utils import each_enabled_integration_module logger = logging.getLogger("nautobot.ssot") __version__ = metadata.version(__name__) @@ -25,28 +24,6 @@ "nautobot_ssot_servicenow", ] -_MIN_NAUTOBOT_VERSION = { - "nautobot_ssot_aci": "2.2", - "nautobot_ssot_dna_center": "2.2", -} - - -def _check_min_nautobot_version_met(): - incompatible_apps_msg = [] - nautobot_version = metadata.version("nautobot") - enabled_integrations = list(each_enabled_integration()) - for app, nb_ver in _MIN_NAUTOBOT_VERSION.items(): - if app.replace("nautobot_ssot_", "") in enabled_integrations and packaging.version.parse( - nb_ver - ) > packaging.version.parse(nautobot_version): - incompatible_apps_msg.append(f"The `{app}` requires Nautobot version {nb_ver} or higher.\n") - - if incompatible_apps_msg: - raise RuntimeError( - f"This version of Nautobot ({nautobot_version}) does not meet minimum requirements for the following apps:\n {''.join(incompatible_apps_msg)}." - "See: https://docs.nautobot.com/projects/ssot/en/latest/admin/upgrade/#potential-apps-conflicts" - ) - def _check_for_conflicting_apps(): intersection = set(_CONFLICTING_APP_NAMES).intersection(set(settings.PLUGINS)) @@ -60,8 +37,6 @@ def _check_for_conflicting_apps(): if not is_truthy(os.getenv("NAUTOBOT_SSOT_ALLOW_CONFLICTING_APPS", "False")): _check_for_conflicting_apps() -_check_min_nautobot_version_met() - class NautobotSSOTAppConfig(NautobotAppConfig): """App configuration for the nautobot_ssot app.""" diff --git a/nautobot_ssot/jobs/__init__.py b/nautobot_ssot/jobs/__init__.py index 1825df8e..2d7ae96f 100644 --- a/nautobot_ssot/jobs/__init__.py +++ b/nautobot_ssot/jobs/__init__.py @@ -1,18 +1,26 @@ """App provision of Nautobot Job subclasses.""" import logging +from importlib import metadata +import packaging from django.conf import settings from nautobot.core.celery import register_jobs from nautobot.core.settings_funcs import is_truthy from nautobot.extras.models import Job -from nautobot_ssot.integrations.utils import each_enabled_integration_module +from nautobot_ssot.integrations.utils import each_enabled_integration, each_enabled_integration_module from nautobot_ssot.jobs.base import DataSource, DataTarget from nautobot_ssot.jobs.examples import ExampleDataSource, ExampleDataTarget logger = logging.getLogger("nautobot.ssot") +_MIN_NAUTOBOT_VERSION = { + "nautobot_ssot_aci": "2.2", + "nautobot_ssot_dna_center": "2.2", +} + + hide_jobs_setting = settings.PLUGINS_CONFIG["nautobot_ssot"].get("hide_example_jobs", False) if is_truthy(hide_jobs_setting): jobs = [] @@ -29,6 +37,23 @@ def __init__(self, message): super().__init__(self.message) +def _check_min_nautobot_version_met(): + incompatible_apps_msg = [] + nautobot_version = metadata.version("nautobot") + enabled_integrations = list(each_enabled_integration()) + for app, nb_ver in _MIN_NAUTOBOT_VERSION.items(): + if app.replace("nautobot_ssot_", "") in enabled_integrations and packaging.version.parse( + nb_ver + ) > packaging.version.parse(nautobot_version): + incompatible_apps_msg.append(f"The `{app}` requires Nautobot version {nb_ver} or higher.\n") + + if incompatible_apps_msg: + raise RuntimeError( + f"This version of Nautobot ({nautobot_version}) does not meet minimum requirements for the following apps:\n {''.join(incompatible_apps_msg)}." + "See: https://docs.nautobot.com/projects/ssot/en/latest/admin/upgrade/#potential-apps-conflicts" + ) + + def _add_integrations(): for module in each_enabled_integration_module("jobs"): for job in module.jobs: @@ -38,6 +63,7 @@ def _add_integrations(): jobs.append(job) +_check_min_nautobot_version_met() _add_integrations() register_jobs(*jobs) From 44c1d315ad114db3386486772f4305bd63e09cc5 Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 14:34:08 -0500 Subject: [PATCH 5/9] =?UTF-8?q?docs:=20=F0=9F=93=9D=20Add=20link=20in=20mk?= =?UTF-8?q?docs=20to=203.1=20release=20notes=20and=20update=20compatibilit?= =?UTF-8?q?y=20matrix.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/admin/compatibility_matrix.md | 1 + mkdocs.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/admin/compatibility_matrix.md b/docs/admin/compatibility_matrix.md index 013b7375..95475157 100644 --- a/docs/admin/compatibility_matrix.md +++ b/docs/admin/compatibility_matrix.md @@ -27,3 +27,4 @@ While that last supported version will not be strictly enforced--via the max_ver | 2.8.0 | 2.1.0 | 2.99.09 | | 3.0.0 | 2.1.0 | 2.99.09 | | 3.0.1 | 2.1.0 | 2.99.09 | +| 3.1.0 | 2.1.0 | 2.99.09 | diff --git a/mkdocs.yml b/mkdocs.yml index 68f26a38..a83afa16 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -135,6 +135,7 @@ nav: - Compatibility Matrix: "admin/compatibility_matrix.md" - Release Notes: - "admin/release_notes/index.md" + - v3.1: "admin/release_notes/version_3.1.md" - v3.0: "admin/release_notes/version_3.0.md" - v2.8: "admin/release_notes/version_2.8.md" - v2.7: "admin/release_notes/version_2.7.md" From 6f92f229b48c4cf5baa8212638a728d5cc334973 Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 14:45:39 -0500 Subject: [PATCH 6/9] =?UTF-8?q?docs:=20=F0=9F=93=9D=20Add=20changelog=20sn?= =?UTF-8?q?ippet=20for=20towncrier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changes/536.housekeeping | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/536.housekeeping diff --git a/changes/536.housekeeping b/changes/536.housekeeping new file mode 100644 index 00000000..0d9691c7 --- /dev/null +++ b/changes/536.housekeeping @@ -0,0 +1 @@ +Cut release for 3.1.0 \ No newline at end of file From a43942bf99930ebc9937fc7ba9a8b3c0fa0ccc91 Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:08:29 -0500 Subject: [PATCH 7/9] =?UTF-8?q?docs:=20=F0=9F=93=9D=20Fix=20compatibility?= =?UTF-8?q?=20matrix=20max=20version=20column.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/admin/compatibility_matrix.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/admin/compatibility_matrix.md b/docs/admin/compatibility_matrix.md index 95475157..40b13685 100644 --- a/docs/admin/compatibility_matrix.md +++ b/docs/admin/compatibility_matrix.md @@ -14,17 +14,17 @@ While that last supported version will not be strictly enforced--via the max_ver | 2.0.0-beta.2 | 2.0.0b2 | 2.0.0b2 | | 2.0.0-rc.1 | 2.0.0rc1 | 2.0.0rc1 | | 2.0.0-rc.2 | 2.0.0rc2 | 2.0.0rc99 | -| 2.0.0 | 2.0.0 | 2.99.09 | -| 2.0.1 | 2.0.0 | 2.99.09 | -| 2.0.2 | 2.0.0 | 2.99.09 | -| 2.1.0 | 2.0.0 | 2.99.09 | -| 2.2.0 | 2.0.0 | 2.99.09 | -| 2.3.0 | 2.1.0 | 2.99.09 | -| 2.4.0 | 2.1.0 | 2.99.09 | -| 2.5.0 | 2.1.0 | 2.99.09 | -| 2.6.0 | 2.1.0 | 2.99.09 | -| 2.7.0 | 2.1.0 | 2.99.09 | -| 2.8.0 | 2.1.0 | 2.99.09 | -| 3.0.0 | 2.1.0 | 2.99.09 | -| 3.0.1 | 2.1.0 | 2.99.09 | -| 3.1.0 | 2.1.0 | 2.99.09 | +| 2.0.0 | 2.0.0 | 2.99.99 | +| 2.0.1 | 2.0.0 | 2.99.99 | +| 2.0.2 | 2.0.0 | 2.99.99 | +| 2.1.0 | 2.0.0 | 2.99.99 | +| 2.2.0 | 2.0.0 | 2.99.99 | +| 2.3.0 | 2.1.0 | 2.99.99 | +| 2.4.0 | 2.1.0 | 2.99.99 | +| 2.5.0 | 2.1.0 | 2.99.99 | +| 2.6.0 | 2.1.0 | 2.99.99 | +| 2.7.0 | 2.1.0 | 2.99.99 | +| 2.8.0 | 2.1.0 | 2.99.99 | +| 3.0.0 | 2.1.0 | 2.99.99 | +| 3.0.1 | 2.1.0 | 2.99.99 | +| 3.1.0 | 2.1.0 | 2.99.99 | From bc8e8506961fc72070299597a5d9ebdcd68c09f0 Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:31:43 -0500 Subject: [PATCH 8/9] =?UTF-8?q?build:=20=F0=9F=94=96=20Bump=20version=20to?= =?UTF-8?q?=203.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- poetry.lock | 5 +---- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 58d7ceaa..b68480dc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alabaster" @@ -3520,7 +3520,6 @@ files = [ {file = "psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d"}, {file = "psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996"}, @@ -3529,8 +3528,6 @@ files = [ {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-win32.whl", hash = "sha256:64cf30263844fa208851ebb13b0732ce674d8ec6a0c86a4e160495d299ba3c93"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:81ff62668af011f9a48787564ab7eded4e9fb17a4a6a74af5ffa6a457400d2ab"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2293b001e319ab0d869d660a704942c9e2cce19745262a8aba2115ef41a0a42a"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77"}, diff --git a/pyproject.toml b/pyproject.toml index 3d8cd7c5..964af420 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "nautobot-ssot" -version = "3.0.1" +version = "3.1.0" description = "Nautobot Single Source of Truth" authors = ["Network to Code, LLC "] license = "Apache-2.0" From 774672c5e6bb2f9340e209f45ca7db10382ca14b Mon Sep 17 00:00:00 2001 From: Justin Drew <2396364+jdrew82@users.noreply.github.com> Date: Fri, 6 Sep 2024 16:12:09 -0500 Subject: [PATCH 9/9] build: Update version with prepatch per new release process. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 964af420..1b83287e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "nautobot-ssot" -version = "3.1.0" +version = "3.1.1a0" description = "Nautobot Single Source of Truth" authors = ["Network to Code, LLC "] license = "Apache-2.0"