Skip to content

Commit

Permalink
Cookie updated by NetworkToCode Cookie Drift Manager Tool
Browse files Browse the repository at this point in the history
Template:

```
{
    "template": "https://github.com/nautobot/cookiecutter-nautobot-app.git",
    "dir": "nautobot-app",
    "ref": "refs/tags/nautobot-app-v2.3.1",
    "path": null
}
```

Cookie:

```
{
    "remote": "https://github.com/nautobot/nautobot-app-chatops.git",
    "path": "/tmp/tmpw0l_410n/nautobot-app-chatops",
    "repository_path": "/tmp/tmpw0l_410n/nautobot-app-chatops",
    "dir": "",
    "branch_prefix": "drift-manager",
    "context": {
        "codeowner_github_usernames": "@glennmatthews @jvanderaa @smk4664 @whitej6",
        "full_name": "Network to Code, LLC",
        "email": "[email protected]",
        "github_org": "nautobot",
        "app_name": "nautobot_chatops",
        "verbose_name": "Nautobot ChatOps App",
        "app_slug": "nautobot-chatops",
        "project_slug": "nautobot-app-chatops",
        "repo_url": "https://github.com/nautobot/nautobot-app-chatops",
        "base_url": "chatops",
        "min_nautobot_version": "2.0.0",
        "max_nautobot_version": "2.9999",
        "camel_name": "NautobotChatOpsApp",
        "project_short_description": "Nautobot ChatOps App",
        "model_class_name": "None",
        "open_source_license": "Apache-2.0",
        "docs_base_url": "https://docs.nautobot.com",
        "docs_app_url": "https://docs.nautobot.com/projects/chatops/en/latest",
        "_template": "https://github.com/nautobot/cookiecutter-nautobot-app.git",
        "_output_dir": "/tmp/tmpw0l_410n",
        "_repo_dir": "/github/home/.cookiecutters/cookiecutter-nautobot-app/nautobot-app",
        "_checkout": "refs/tags/nautobot-app-v2.3.1"
    },
    "base_branch": "develop",
    "remote_name": "origin",
    "pull_request_strategy": "PullRequestStrategy.CREATE",
    "post_actions": [
        "PostAction.BLACK"
    ],
    "baked_commit_ref": "76744d296d468b03fb528c902f68c3dc230a9a3f",
    "draft": true
}
```

CLI Arguments:

```
{
    "cookie_dir": "",
    "input": false,
    "json_filename": "",
    "output_dir": "",
    "push": true,
    "template": "",
    "template_dir": "",
    "template_ref": "refs/tags/nautobot-app-v2.3.1",
    "pull_request": null,
    "post_action": [],
    "disable_post_actions": false,
    "draft": null
}
```
  • Loading branch information
bakebot committed Aug 26, 2024
1 parent ec8bfb2 commit 8746d4a
Show file tree
Hide file tree
Showing 11 changed files with 165 additions and 157 deletions.
4 changes: 2 additions & 2 deletions .cookiecutter.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@
"_drift_manager": {
"template": "https://github.com/nautobot/cookiecutter-nautobot-app.git",
"template_dir": "nautobot-app",
"template_ref": "refs/tags/nautobot-app-v2.3.0",
"template_ref": "refs/tags/nautobot-app-v2.3.1",
"cookie_dir": "",
"branch_prefix": "drift-manager",
"pull_request_strategy": "create",
"post_actions": [
"black"
],
"draft": true,
"baked_commit_ref": "76744d296d468b03fb528c902f68c3dc230a9a3f"
"baked_commit_ref": "e24f60e18572850b86d48f95e084c441cfed6c56"
}
}
}
16 changes: 11 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on: # yamllint disable-line rule:truthy rule:comments
pull_request: ~

env:
APP_NAME: "nautobot-app-chatops"
APP_NAME: "nautobot-chatops"

jobs:
ruff-format:
Expand Down Expand Up @@ -91,6 +91,10 @@ jobs:
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
- name: "Constrain Nautobot version and regenerate lock file"
env:
INVOKE_NAUTOBOT_DEV_EXAMPLE_LOCAL: "true"
run: "poetry run invoke lock --constrain-nautobot-ver --constrain-python-ver"
- name: "Set up Docker Buildx"
id: "buildx"
uses: "docker/setup-buildx-action@v3"
Expand All @@ -108,6 +112,7 @@ jobs:
build-args: |
NAUTOBOT_VER=${{ matrix.nautobot-version }}
PYTHON_VER=${{ matrix.python-version }}
CI=true
- name: "Copy credentials"
run: "cp development/creds.example.env development/creds.env"
- name: "Linting: pylint"
Expand All @@ -122,14 +127,14 @@ jobs:
strategy:
fail-fast: true
matrix:
python-version: ["3.8", "3.11"]
python-version: ["3.8", "3.12"]
db-backend: ["postgresql"]
nautobot-version: ["stable"]
include:
- python-version: "3.11"
db-backend: "postgresql"
nautobot-version: "2.0.0"
- python-version: "3.11"
- python-version: "3.12"
db-backend: "mysql"
nautobot-version: "stable"
runs-on: "ubuntu-22.04"
Expand Down Expand Up @@ -158,6 +163,7 @@ jobs:
build-args: |
NAUTOBOT_VER=${{ matrix.nautobot-version }}
PYTHON_VER=${{ matrix.python-version }}
CI=true
- name: "Copy credentials"
run: "cp development/creds.example.env development/creds.env"
- name: "Use Mysql invoke settings when needed"
Expand Down Expand Up @@ -195,7 +201,7 @@ jobs:
- name: "Set up Python"
uses: "actions/setup-python@v5"
with:
python-version: "3.11"
python-version: "3.12"
- name: "Install Python Packages"
run: "pip install poetry"
- name: "Set env"
Expand Down Expand Up @@ -230,7 +236,7 @@ jobs:
- name: "Set up Python"
uses: "actions/setup-python@v5"
with:
python-version: "3.11"
python-version: "3.12"
- name: "Install Python Packages"
run: "pip install poetry"
- name: "Set env"
Expand Down
31 changes: 10 additions & 21 deletions development/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,29 +53,18 @@ RUN which poetry || curl -sSL https://install.python-poetry.org | python3 - && \
WORKDIR /source
COPY . /source

# Get container's installed Nautobot version as a forced constraint
# NAUTOBOT_VER may be a branch name and not a published release therefor we need to get the installed version
# so pip can use it to recognize local constraints.
RUN pip show nautobot | grep "^Version: " | sed -e 's/Version: /nautobot==/' > constraints.txt
# Build args must be declared in each stage
ARG PYTHON_VER

# Use Poetry to grab dev dependencies from the lock file
# Can be improved in Poetry 1.2 which allows `poetry install --only dev`
#
# We can't use the entire freeze as it takes forever to resolve with rigidly fixed non-direct dependencies,
# especially those that are only direct to Nautobot but the container included versions slightly mismatch
RUN poetry export -f requirements.txt --without-hashes --extras all --output poetry_freeze_base.txt
RUN poetry export -f requirements.txt --without-hashes --extras all --with dev --output poetry_freeze_all.txt
RUN sort poetry_freeze_base.txt poetry_freeze_all.txt | uniq -u > poetry_freeze_dev.txt

# Install all local project as editable, constrained on Nautobot version, to get any additional
# direct dependencies of the app
RUN --mount=type=cache,target="/root/.cache/pip",sharing=locked \
pip install -c constraints.txt -e .[all]
# Constrain the Nautobot version to NAUTOBOT_VER
# In CI, this should be done outside of the Dockerfile to prevent cross-compile build failures
ARG CI
RUN if [ -z "${CI+x}" ]; then \
INSTALLED_NAUTOBOT_VER=$(pip show nautobot | grep "^Version" | sed "s/Version: //"); \
poetry add --lock nautobot@${INSTALLED_NAUTOBOT_VER} --python ${PYTHON_VER}; fi

# Install any dev dependencies frozen from Poetry
# Can be improved in Poetry 1.2 which allows `poetry install --only dev`
RUN --mount=type=cache,target="/root/.cache/pip",sharing=locked \
pip install -c constraints.txt -r poetry_freeze_dev.txt
# Install the app
RUN poetry install --extras all --with dev

COPY development/nautobot_config.py ${NAUTOBOT_ROOT}/nautobot_config.py
# !!! USE CAUTION WHEN MODIFYING LINES ABOVE
4 changes: 3 additions & 1 deletion development/app_config_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ def _main():
**SchemaBuilder().to_json_schema(app_config), # type: ignore
}
app_config = import_module(package_name).config
_enrich_object_schema(schema, app_config.default_settings, app_config.required_settings)
_enrich_object_schema(
schema, app_config.default_settings, app_config.required_settings
)
schema_path.write_text(json.dumps(schema, indent=4) + "\n")
print(f"\n==================\nGenerated schema:\n\n{schema_path}\n")
print(
Expand Down
12 changes: 9 additions & 3 deletions development/nautobot_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,12 @@

if "debug_toolbar" not in INSTALLED_APPS: # noqa: F405
INSTALLED_APPS.append("debug_toolbar") # noqa: F405
if "debug_toolbar.middleware.DebugToolbarMiddleware" not in MIDDLEWARE: # noqa: F405
MIDDLEWARE.insert(0, "debug_toolbar.middleware.DebugToolbarMiddleware") # noqa: F405
if (
"debug_toolbar.middleware.DebugToolbarMiddleware" not in MIDDLEWARE
): # noqa: F405
MIDDLEWARE.insert(
0, "debug_toolbar.middleware.DebugToolbarMiddleware"
) # noqa: F405

#
# Misc. settings
Expand Down Expand Up @@ -51,7 +55,9 @@
"NAUTOBOT_DB_PORT",
default_db_settings[nautobot_db_engine]["NAUTOBOT_DB_PORT"],
), # Database port, default to postgres
"CONN_MAX_AGE": int(os.getenv("NAUTOBOT_DB_TIMEOUT", "300")), # Database timeout
"CONN_MAX_AGE": int(
os.getenv("NAUTOBOT_DB_TIMEOUT", "300")
), # Database timeout
"ENGINE": nautobot_db_engine,
}
}
Expand Down
10 changes: 5 additions & 5 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
mkdocs==1.5.2
mkdocs-material==9.1.15
mkdocs==1.6.0
mkdocs-material==9.5.32
markdown-version-annotations==1.0.1
mkdocstrings-python==1.5.2
mkdocstrings==0.22.0
mkdocs-include-markdown-plugin==6.0.3
griffe==1.1.1
mkdocstrings-python==1.10.8
mkdocstrings==0.25.2
25 changes: 11 additions & 14 deletions invoke.example.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
---
nautobot_chatops:
project_name: "nautobot-chatops"
nautobot_ver: "2.0.0"
local: false
python_ver: "3.11"
compose_dir: "development"
compose_files:
- "docker-compose.base.yml"
- "docker-compose.redis.yml"
- "docker-compose.postgres.yml"
- "mattermost/docker-compose.yml"
- "ansible/docker-compose.yml"
- "docker-compose.dev.yml"
# Uncomment below if using Slack Socket Mode
# - "docker-compose.socket.yml"
# Uncomment below if using Microsoft Bot Framework Emulator
# - "docker-compose.bot-framework.yml"
# local: false
# compose_dir: "/full/path/to/nautobot-app-chatops/development"

# The following is an example of using MySQL as the database backend
# ---
# nautobot_chatops:
# compose_files:
# - "docker-compose.base.yml"
# - "docker-compose.redis.yml"
# - "docker-compose.mysql.yml"
# - "docker-compose.dev.yml"
2 changes: 1 addition & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
dev_addr: "127.0.0.1:8001"
edit_uri: "edit/main/nautobot-app-chatops/docs"
edit_uri: "edit/main/docs"
site_dir: "nautobot_chatops/static/nautobot_chatops/docs"
site_name: "Nautobot ChatOps App Documentation"
site_url: "https://docs.nautobot.com/projects/chatops/en/latest/"
Expand Down
18 changes: 14 additions & 4 deletions nautobot_chatops/tests/test_basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,21 @@ class TestDocsPackaging(unittest.TestCase):

def test_version(self):
"""Verify that pyproject.toml dev dependencies have the same versions as in the docs requirements.txt."""
parent_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
parent_path = os.path.dirname(
os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
)
poetry_path = os.path.join(parent_path, "pyproject.toml")
poetry_details = toml.load(poetry_path)["tool"]["poetry"]["group"]["dev"]["dependencies"]
with open(f"{parent_path}/docs/requirements.txt", "r", encoding="utf-8") as file:
requirements = [line for line in file.read().splitlines() if (len(line) > 0 and not line.startswith("#"))]
poetry_details = toml.load(poetry_path)["tool"]["poetry"]["group"]["dev"][
"dependencies"
]
with open(
f"{parent_path}/docs/requirements.txt", "r", encoding="utf-8"
) as file:
requirements = [
line
for line in file.read().splitlines()
if (len(line) > 0 and not line.startswith("#"))
]
for pkg in requirements:
package_name = pkg
if len(pkg.split("==")) == 2: # noqa: PLR2004
Expand Down
58 changes: 19 additions & 39 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ classifiers = [
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
]
packages = [
{ include = "nautobot_chatops" },
Expand All @@ -39,22 +40,8 @@ include = [
"nso" = "nautobot_chatops.integrations.nso.worker:nso"

[tool.poetry.dependencies]
Markdown = "!=3.3.5"
PyJWT = "^2.1.0"
PyYAML = { version = "^6.0", optional = true }
aiodns = "^1.0"
aiohttp = "^3.7.3"
asgiref = "^3.4.1"
certifi = { version = ">=2021.5.30", optional = true }
cloudvision = { version = "^1.1", optional = true }
cvprac = { version = "^1.0.6", optional = true }
defusedxml = { version = "^0.7.1", optional = true }
diffsync = { version = "^1.3.0", optional = true }
ipaddr = { version = "^2.2.0", optional = true }
ipfabric = { version = "~6.0.9", optional = true }
ipfabric-diagrams = { version = "~6.0.2", optional = true }
isodate = { version = "^0.6.1", optional = true }
meraki = { version = ">=1.7.2,<=1.45.0", optional = true }
python = ">=3.8,<3.13"
# Used for local development
nautobot = "^2.0.0"
nautobot-capacity-metrics = "^3.0.0"
netmiko = { version = "^4.0.0", optional = true }
Expand All @@ -80,21 +67,13 @@ Markdown = "*"
# Render custom markdown for version added/changed/remove notes
markdown-version-annotations = "1.0.1"
# Rendering docs to HTML
mkdocs = "1.5.2"
mkdocs-include-markdown-plugin = "6.0.3"
mkdocs = "1.6.0"
# Material for MkDocs theme
mkdocs-material = "9.1.15"
mkdocs-material = "9.5.32"
# Automatic documentation from sources, for MkDocs
mkdocstrings = "0.22.0"
mkdocstrings-python = "1.5.2"
prybar = "*"
pylint = "*"
pylint-django = "*"
pylint-nautobot = "*"
requests-mock = "^1.9.3"
ruff = "0.5.5"
yamllint = "*"
toml = "*"
mkdocstrings = "0.25.2"
mkdocstrings-python = "1.10.8"
griffe = "1.1.1"
towncrier = "~23.6.0"
to-json-schema = "*"
jsonschema = "*"
Expand Down Expand Up @@ -160,12 +139,12 @@ nautobot = ["nautobot"]

[tool.pylint.master]
# Include the pylint_django plugin to avoid spurious warnings about Django patterns
load-plugins="pylint_django, pylint_nautobot"
ignore=".venv"
load-plugins = "pylint_django, pylint_nautobot"
ignore = ".venv"

[tool.pylint.basic]
# No docstrings required for private methods (Pylint default), or for test_ functions, or for inner Meta classes.
no-docstring-rgx="^(_|test_|Meta$)"
no-docstring-rgx = "^(_|test_|Meta$)"

[tool.pylint.messages_control]
disable = [
Expand Down Expand Up @@ -201,26 +180,27 @@ target-version = "py38"
select = [
"D", # pydocstyle
"F", "E", "W", # flake8
"PL", # pylint
"S", # bandit
"I", # isort
]
ignore = [
# warning: `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible.
"D203", # 1 blank line required before class docstring
"D203", # 1 blank line required before class docstring

# D212 is enabled by default in google convention, and complains if we have a docstring like:
# """
# My docstring is on the line after the opening quotes instead of on the same line as them.
# """
# We've discussed and concluded that we consider this to be a valid style choice.
"D212", # Multi-line docstring summary should start at the first line
"D213", # Multi-line docstring summary should start at the second line
"D212", # Multi-line docstring summary should start at the first line
"D213", # Multi-line docstring summary should start at the second line

# Produces a lot of issues in the current codebase.
"D401", # First line of docstring should be in imperative mood
"D407", # Missing dashed underline after section
"D416", # Section name ends in colon
"E501", # Line too long
"D401", # First line of docstring should be in imperative mood
"D407", # Missing dashed underline after section
"D416", # Section name ends in colon
"E501", # Line too long
]

[tool.ruff.lint.pydocstyle]
Expand Down
Loading

0 comments on commit 8746d4a

Please sign in to comment.