Skip to content

feat: real Nautobot 3.x dev/test environment with CI integration - #11

Merged
Jackass4life merged 16 commits into
mainfrom
copilot/create-nautobot-env-for-testing
Mar 23, 2026
Merged

feat: real Nautobot 3.x dev/test environment with CI integration#11
Jackass4life merged 16 commits into
mainfrom
copilot/create-nautobot-env-for-testing

Conversation

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

The mock Nautobot server doesn't surface real API behavior differences, leading to bugs only caught against a live instance. Sets up a real Nautobot 3.x stack for local dev and CI validation.

development/ — Nautobot 3.x stack

  • docker-compose.yml — PostgreSQL 15 + Redis 7 + ghcr.io/nautobot/nautobot:3.0.9 on port 8080. Optional nautobot-maps service via --profile full.
  • entrypoint.sh — Waits for PG, runs migrations, creates admin superuser + deterministic API token (aaaa-bbbb-cccc-dddd-eeee), starts Django dev server.
  • seed_nautobot.py — Idempotent REST API seeder: 4 tenants, 4 location types, 8 locations with GPS, 14 devices, 9 ASNs. Mirrors demo/mock_nautobot.py data exactly.

tests/test_nautobot_live.py — live integration tests

21 tests covering locations, device detail, proximity search, and e2e flow. Skipped by default unless env var is set:

NAUTOBOT_LIVE_URL=http://localhost:8080 \
NAUTOBOT_LIVE_TOKEN=aaaa-bbbb-cccc-dddd-eeee \
python -m pytest tests/test_nautobot_live.py -v

.github/workflows/ci.yml — new integration-nautobot job

Runs in parallel with the existing mock-based matrix. Starts the real Nautobot 3.x stack via docker compose up -d --wait, seeds data, runs live tests. Dumps Nautobot logs on failure.

Doc/comment updates

  • README.md — Nautobot version recommendation updated to v3.x
  • app.py — Removed stale "Nautobot 2.x" comment on ipam/asns endpoint
Original prompt

This section details on the original issue you should resolve

<issue_title>feature: create real nautobot env for testing/validering</issue_title>
<issue_description>Some of the issues seeing have something to do with not a good enough test/dev env for nautobot for feature, issues.
Therefor we should setup a correct test/dev env up so we can test and dev new feature better.

Incoporat that in the CI.</issue_description>

Comments on the Issue (you are @copilot in this section)


📱 Kick off Copilot coding agent tasks wherever you are with GitHub Mobile, available on iOS and Android.

Copilot AI and others added 2 commits March 23, 2026 08:49
- development/docker-compose.yml: PostgreSQL + Redis + Nautobot 2.x stack
- development/entrypoint.sh: Nautobot initialization (migrations, superuser, API token)
- development/seed_nautobot.py: Seed script with test data matching mock
- development/README.md: Setup documentation
- tests/test_nautobot_live.py: Integration tests against real Nautobot (skipped by default)
- .github/workflows/ci.yml: New integration-nautobot CI job

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/1ead7c82-0f4e-4031-9ec3-e5184f3efe1a
…seed script, document env vars

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/1ead7c82-0f4e-4031-9ec3-e5184f3efe1a
Copilot AI changed the title [WIP] Create real Nautobot environment for testing and validation feat: real Nautobot dev/test environment with CI integration Mar 23, 2026
Copilot AI requested a review from Jackass4life March 23, 2026 08:53
- Docker image: ghcr.io/nautobot/nautobot:2-py3.11 → 3-py3.12
- CI integration job: Python 3.11 → 3.12
- All docs/comments updated to reference Nautobot 3.x

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/6c444010-1302-4480-ba9b-c96c3aa44fd1
Copilot AI changed the title feat: real Nautobot dev/test environment with CI integration feat: real Nautobot 3.x dev/test environment with CI integration Mar 23, 2026
@Jackass4life

Copy link
Copy Markdown
Owner

@Jackass4life
Jackass4life marked this pull request as ready for review March 23, 2026 09:08
@Jackass4life

Copy link
Copy Markdown
Owner

@copilot
Issue with CI / integration-nautobot (pull_request)
Not using correct image. use this:
docker pull ghcr.io/nautobot/nautobot:3.0.9

…3.0.9

The tag 3-py3.12 does not exist. Use the pinned 3.0.9 tag as specified.

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/4c9eee7e-70c9-4ccc-8fe0-3c1aa2255f21

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot
Issue with CI / integration-nautobot (pull_request)
Not using correct image....

Fixed in a3976d2 — changed the image from ghcr.io/nautobot/nautobot:3-py3.12 to ghcr.io/nautobot/nautobot:3.0.9 in both development/docker-compose.yml and development/README.md.

@Jackass4life

Copy link
Copy Markdown
Owner

Check faildes:

2026-03-23T09:16:57.9706978Z Current runner version: '2.332.0'
2026-03-23T09:16:57.9731799Z ##[group]Runner Image Provisioner
2026-03-23T09:16:57.9732563Z Hosted Compute Agent
2026-03-23T09:16:57.9733189Z Version: 20260213.493
2026-03-23T09:16:57.9734029Z Commit: 5c115507f6dd24b8de37d8bbe0bb4509d0cc0fa3
2026-03-23T09:16:57.9734726Z Build Date: 2026-02-13T00:28:41Z
2026-03-23T09:16:57.9735457Z Worker ID: {25570c96-0f2b-496f-a178-99e1e1891236}
2026-03-23T09:16:57.9736121Z Azure Region: westus
2026-03-23T09:16:57.9736673Z ##[endgroup]
2026-03-23T09:16:57.9738010Z ##[group]Operating System
2026-03-23T09:16:57.9738701Z Ubuntu
2026-03-23T09:16:57.9739131Z 24.04.3
2026-03-23T09:16:57.9739605Z LTS
2026-03-23T09:16:57.9740099Z ##[endgroup]
2026-03-23T09:16:57.9740604Z ##[group]Runner Image
2026-03-23T09:16:57.9741138Z Image: ubuntu-24.04
2026-03-23T09:16:57.9741685Z Version: 20260309.50.1
2026-03-23T09:16:57.9742951Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260309.50/images/ubuntu/Ubuntu2404-Readme.md
2026-03-23T09:16:57.9744595Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260309.50
2026-03-23T09:16:57.9745449Z ##[endgroup]
2026-03-23T09:16:57.9746462Z ##[group]GITHUB_TOKEN Permissions
2026-03-23T09:16:57.9748244Z Contents: read
2026-03-23T09:16:57.9748825Z Metadata: read
2026-03-23T09:16:57.9749383Z ##[endgroup]
2026-03-23T09:16:57.9751488Z Secret source: Actions
2026-03-23T09:16:57.9752134Z Prepare workflow directory
2026-03-23T09:16:58.0077401Z Prepare all required actions
2026-03-23T09:16:58.0114756Z Getting action download info
2026-03-23T09:16:58.5017435Z Download action repository 'actions/checkout@v4' (SHA:34e114876b0b11c390a56381ad16ebd13914f8d5)
2026-03-23T09:16:58.6652313Z Download action repository 'actions/setup-python@v5' (SHA:a26af69be951a213d495a4c3e4e4022e16d87065)
2026-03-23T09:16:58.9020247Z Complete job name: integration-nautobot
2026-03-23T09:16:58.9746565Z ##[group]Run actions/checkout@v4
2026-03-23T09:16:58.9747493Z with:
2026-03-23T09:16:58.9747918Z repository: Jackass4life/Nautobot-maps
2026-03-23T09:16:58.9748617Z token: ***
2026-03-23T09:16:58.9748991Z ssh-strict: true
2026-03-23T09:16:58.9749366Z ssh-user: git
2026-03-23T09:16:58.9749758Z persist-credentials: true
2026-03-23T09:16:58.9750180Z clean: true
2026-03-23T09:16:58.9750561Z sparse-checkout-cone-mode: true
2026-03-23T09:16:58.9751019Z fetch-depth: 1
2026-03-23T09:16:58.9751394Z fetch-tags: false
2026-03-23T09:16:58.9751779Z show-progress: true
2026-03-23T09:16:58.9752172Z lfs: false
2026-03-23T09:16:58.9752528Z submodules: false
2026-03-23T09:16:58.9752950Z set-safe-directory: true
2026-03-23T09:16:58.9753610Z ##[endgroup]
2026-03-23T09:16:59.0872760Z Syncing repository: Jackass4life/Nautobot-maps
2026-03-23T09:16:59.0875248Z ##[group]Getting Git version info
2026-03-23T09:16:59.0876123Z Working directory is '/home/runner/work/Nautobot-maps/Nautobot-maps'
2026-03-23T09:16:59.0877219Z [command]/usr/bin/git version
2026-03-23T09:16:59.0953027Z git version 2.53.0
2026-03-23T09:16:59.0980293Z ##[endgroup]
2026-03-23T09:16:59.0996435Z Temporarily overriding HOME='/home/runner/work/_temp/516e3556-4d83-4de2-9be4-8cc1649cd85d' before making global git config changes
2026-03-23T09:16:59.0998766Z Adding repository directory to the temporary git global config as a safe directory
2026-03-23T09:16:59.1003115Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/Nautobot-maps/Nautobot-maps
2026-03-23T09:16:59.1043544Z Deleting the contents of '/home/runner/work/Nautobot-maps/Nautobot-maps'
2026-03-23T09:16:59.1047613Z ##[group]Initializing the repository
2026-03-23T09:16:59.1052396Z [command]/usr/bin/git init /home/runner/work/Nautobot-maps/Nautobot-maps
2026-03-23T09:16:59.1169243Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-03-23T09:16:59.1170622Z hint: will change to "main" in Git 3.0. To configure the initial branch name
2026-03-23T09:16:59.1171591Z hint: to use in all of your new repositories, which will suppress this warning,
2026-03-23T09:16:59.1173138Z hint: call:
2026-03-23T09:16:59.1173513Z hint:
2026-03-23T09:16:59.1174340Z hint: git config --global init.defaultBranch
2026-03-23T09:16:59.1175370Z hint:
2026-03-23T09:16:59.1176354Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-03-23T09:16:59.1177972Z hint: 'development'. The just-created branch can be renamed via this command:
2026-03-23T09:16:59.1179248Z hint:
2026-03-23T09:16:59.1179936Z hint: git branch -m
2026-03-23T09:16:59.1180723Z hint:
2026-03-23T09:16:59.1181716Z hint: Disable this message with "git config set advice.defaultBranchName false"
2026-03-23T09:16:59.1183494Z Initialized empty Git repository in /home/runner/work/Nautobot-maps/Nautobot-maps/.git/
2026-03-23T09:16:59.1187072Z [command]/usr/bin/git remote add origin https://github.com/Jackass4life/Nautobot-maps
2026-03-23T09:16:59.1222215Z ##[endgroup]
2026-03-23T09:16:59.1223405Z ##[group]Disabling automatic garbage collection
2026-03-23T09:16:59.1227495Z [command]/usr/bin/git config --local gc.auto 0
2026-03-23T09:16:59.1256968Z ##[endgroup]
2026-03-23T09:16:59.1258190Z ##[group]Setting up auth
2026-03-23T09:16:59.1264846Z [command]/usr/bin/git config --local --name-only --get-regexp core.sshCommand
2026-03-23T09:16:59.1297622Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-03-23T09:16:59.1646838Z [command]/usr/bin/git config --local --name-only --get-regexp http.https://github.com/.extraheader
2026-03-23T09:16:59.1679281Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http.https://github.com/.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-03-23T09:16:59.1927916Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf.gitdir:
2026-03-23T09:16:59.1960556Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-03-23T09:16:59.2198915Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-03-23T09:16:59.2235041Z ##[endgroup]
2026-03-23T09:16:59.2236275Z ##[group]Fetching the repository
2026-03-23T09:16:59.2244856Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +29ba507e1f134404253116bf8169b29613a8c06f:refs/remotes/pull/11/merge
2026-03-23T09:16:59.6576774Z From https://github.com/Jackass4life/Nautobot-maps
2026-03-23T09:16:59.6577825Z * [new ref] 29ba507 -> pull/11/merge
2026-03-23T09:16:59.6612900Z ##[endgroup]
2026-03-23T09:16:59.6614410Z ##[group]Determining the checkout info
2026-03-23T09:16:59.6616318Z ##[endgroup]
2026-03-23T09:16:59.6622290Z [command]/usr/bin/git sparse-checkout disable
2026-03-23T09:16:59.6667439Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-03-23T09:16:59.6697262Z ##[group]Checking out the ref
2026-03-23T09:16:59.6701457Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/11/merge
2026-03-23T09:16:59.6792874Z Note: switching to 'refs/remotes/pull/11/merge'.
2026-03-23T09:16:59.6794053Z
2026-03-23T09:16:59.6794560Z You are in 'detached HEAD' state. You can look around, make experimental
2026-03-23T09:16:59.6795656Z changes and commit them, and you can discard any commits you make in this
2026-03-23T09:16:59.6796716Z state without impacting any branches by switching back to a branch.
2026-03-23T09:16:59.6797430Z
2026-03-23T09:16:59.6798198Z If you want to create a new branch to retain commits you create, you may
2026-03-23T09:16:59.6799965Z do so (now or later) by using -c with the switch command. Example:
2026-03-23T09:16:59.6801058Z
2026-03-23T09:16:59.6801475Z git switch -c
2026-03-23T09:16:59.6802239Z
2026-03-23T09:16:59.6802670Z Or undo this operation with:
2026-03-23T09:16:59.6804085Z
2026-03-23T09:16:59.6804437Z git switch -
2026-03-23T09:16:59.6805001Z
2026-03-23T09:16:59.6805852Z Turn off this advice by setting config variable advice.detachedHead to false
2026-03-23T09:16:59.6807245Z
2026-03-23T09:16:59.6808942Z HEAD is now at 29ba507 Merge a3976d2 into ff45fc4
2026-03-23T09:16:59.6813188Z ##[endgroup]
2026-03-23T09:16:59.6843529Z [command]/usr/bin/git log -1 --format=%H
2026-03-23T09:16:59.6867208Z 29ba507
2026-03-23T09:16:59.7084716Z ##[group]Run docker compose up -d --wait --wait-timeout 300
2026-03-23T09:16:59.7086023Z �[36;1mdocker compose up -d --wait --wait-timeout 300�[0m
2026-03-23T09:16:59.7139686Z shell: /usr/bin/bash -e {0}
2026-03-23T09:16:59.7140330Z ##[endgroup]
2026-03-23T09:17:02.0843043Z redis Pulling
2026-03-23T09:17:02.0843566Z nautobot Pulling
2026-03-23T09:17:02.0846992Z postgres Pulling
2026-03-23T09:17:02.9504955Z ec781dee3f47 Pulling fs layer
2026-03-23T09:17:02.9505598Z b186029d0aef Pulling fs layer
2026-03-23T09:17:02.9506075Z e2a2a5e6ffbf Pulling fs layer
2026-03-23T09:17:02.9506557Z eecee41f47a6 Pulling fs layer
2026-03-23T09:17:02.9506982Z 1199932bbfa7 Pulling fs layer
2026-03-23T09:17:02.9507434Z eba0d7143395 Pulling fs layer
2026-03-23T09:17:02.9507910Z afdfc149a701 Pulling fs layer
2026-03-23T09:17:02.9508396Z 777dabb742bc Pulling fs layer
2026-03-23T09:17:02.9508875Z 5c8439ac5738 Pulling fs layer
2026-03-23T09:17:02.9509394Z dfa7d6478b2c Pulling fs layer
2026-03-23T09:17:02.9509933Z 10dce7fabc6d Pulling fs layer
2026-03-23T09:17:02.9510486Z 789581b3fcd9 Pulling fs layer
2026-03-23T09:17:02.9511218Z 5839e1e6e9b9 Pulling fs layer
2026-03-23T09:17:02.9511734Z d6809aa75ecd Pulling fs layer
2026-03-23T09:17:02.9512221Z 4f4fb700ef54 Pulling fs layer
2026-03-23T09:17:02.9512710Z 48b3257bc370 Pulling fs layer
2026-03-23T09:17:02.9513159Z dfa7d6478b2c Waiting
2026-03-23T09:17:02.9513663Z eecee41f47a6 Waiting
2026-03-23T09:17:02.9514341Z 1199932bbfa7 Waiting
2026-03-23T09:17:02.9514816Z 10dce7fabc6d Waiting
2026-03-23T09:17:02.9515260Z 789581b3fcd9 Waiting
2026-03-23T09:17:02.9515696Z 5839e1e6e9b9 Waiting
2026-03-23T09:17:02.9516135Z eba0d7143395 Waiting
2026-03-23T09:17:02.9516552Z 4f4fb700ef54 Waiting
2026-03-23T09:17:02.9516979Z afdfc149a701 Waiting
2026-03-23T09:17:02.9517399Z 48b3257bc370 Waiting
2026-03-23T09:17:02.9517873Z 777dabb742bc Waiting
2026-03-23T09:17:02.9518319Z d6809aa75ecd Waiting
2026-03-23T09:17:03.1081904Z b186029d0aef Downloading [> ] 13.78kB/1.293MB
2026-03-23T09:17:03.1134700Z b186029d0aef Verifying Checksum
2026-03-23T09:17:03.1135986Z b186029d0aef Download complete
2026-03-23T09:17:03.1148065Z ec781dee3f47 Downloading [> ] 311.3kB/29.78MB
2026-03-23T09:17:03.1292346Z e2a2a5e6ffbf Downloading [> ] 131.1kB/11.8MB
2026-03-23T09:17:03.1667835Z e2a2a5e6ffbf Verifying Checksum
2026-03-23T09:17:03.1668201Z e2a2a5e6ffbf Download complete
2026-03-23T09:17:03.2026688Z ec781dee3f47 Verifying Checksum
2026-03-23T09:17:03.2028049Z ec781dee3f47 Download complete
2026-03-23T09:17:03.2402153Z ec781dee3f47 Extracting [> ] 327.7kB/29.78MB
2026-03-23T09:17:03.2455494Z bc1da058f299 Pulling fs layer
2026-03-23T09:17:03.2455936Z 09a5a0c32a23 Pulling fs layer
2026-03-23T09:17:03.2456427Z bd53938b1271 Pulling fs layer
2026-03-23T09:17:03.2456846Z 9fe3744a2eac Pulling fs layer
2026-03-23T09:17:03.2457247Z 7ad54b3c4cef Pulling fs layer
2026-03-23T09:17:03.2457641Z 2a97533d89ca Pulling fs layer
2026-03-23T09:17:03.2458025Z 4f4fb700ef54 Pulling fs layer
2026-03-23T09:17:03.2458457Z 1c2c8d1ee428 Pulling fs layer
2026-03-23T09:17:03.2458828Z bc1da058f299 Waiting
2026-03-23T09:17:03.2459151Z 09a5a0c32a23 Waiting
2026-03-23T09:17:03.2459472Z bd53938b1271 Waiting
2026-03-23T09:17:03.2460256Z 9fe3744a2eac Waiting
2026-03-23T09:17:03.2460568Z 7ad54b3c4cef Waiting
2026-03-23T09:17:03.2460889Z 2a97533d89ca Waiting
2026-03-23T09:17:03.2461220Z 4f4fb700ef54 Waiting
2026-03-23T09:17:03.2461549Z 1c2c8d1ee428 Waiting
2026-03-23T09:17:03.2612132Z ec781dee3f47 Pulling fs layer
2026-03-23T09:17:03.2612552Z ce2467f2f21d Pulling fs layer
2026-03-23T09:17:03.2612961Z d4ced18622af Pulling fs layer
2026-03-23T09:17:03.2613346Z af73ff344a10 Pulling fs layer
2026-03-23T09:17:03.2614879Z 07cec992154a Pulling fs layer
2026-03-23T09:17:03.2615549Z ec781dee3f47 Extracting [> ] 327.7kB/29.78MB
2026-03-23T09:17:03.2616172Z ce2467f2f21d Waiting
2026-03-23T09:17:03.2620481Z fd0dcffac314 Pulling fs layer
2026-03-23T09:17:03.2627271Z bda354b903ce Pulling fs layer
2026-03-23T09:17:03.2627979Z fcd98f4944fb Pulling fs layer
2026-03-23T09:17:03.2628565Z 45e04ac2d7d2 Pulling fs layer
2026-03-23T09:17:03.2629278Z f1a2676f0017 Pulling fs layer
2026-03-23T09:17:03.2630185Z eab3f9a27af8 Pulling fs layer
2026-03-23T09:17:03.2630890Z d2c8c030ed3b Pulling fs layer
2026-03-23T09:17:03.2631305Z c2e686ef6906 Pulling fs layer
2026-03-23T09:17:03.2631912Z b2c40507d19c Pulling fs layer
2026-03-23T09:17:03.2632463Z bda354b903ce Waiting
2026-03-23T09:17:03.2632809Z fcd98f4944fb Waiting
2026-03-23T09:17:03.2633294Z 45e04ac2d7d2 Waiting
2026-03-23T09:17:03.2633628Z d2c8c030ed3b Waiting
2026-03-23T09:17:03.2634233Z c2e686ef6906 Waiting
2026-03-23T09:17:03.2634621Z b2c40507d19c Waiting
2026-03-23T09:17:03.2635133Z eab3f9a27af8 Waiting
2026-03-23T09:17:03.2635460Z f1a2676f0017 Waiting
2026-03-23T09:17:03.2635974Z d4ced18622af Waiting
2026-03-23T09:17:03.2636465Z af73ff344a10 Waiting
2026-03-23T09:17:03.2636810Z 07cec992154a Waiting
2026-03-23T09:17:03.2637295Z fd0dcffac314 Waiting
2026-03-23T09:17:03.3015583Z eecee41f47a6 Downloading [==================================================>] 250B/250B
2026-03-23T09:17:03.3020103Z eecee41f47a6 Verifying Checksum
2026-03-23T09:17:03.3023363Z eecee41f47a6 Download complete
2026-03-23T09:17:03.3475561Z ec781dee3f47 Extracting [===========> ] 6.881MB/29.78MB
2026-03-23T09:17:03.3476662Z ec781dee3f47 Extracting [===========> ] 6.881MB/29.78MB
2026-03-23T09:17:03.4533969Z 1199932bbfa7 Downloading [> ] 539.4kB/56.13MB
2026-03-23T09:17:03.4690256Z ec781dee3f47 Extracting [==================> ] 11.14MB/29.78MB
2026-03-23T09:17:03.4691277Z ec781dee3f47 Extracting [==================> ] 11.14MB/29.78MB
2026-03-23T09:17:03.5351245Z eba0d7143395 Downloading [> ] 57.54kB/5.699MB
2026-03-23T09:17:03.5695128Z afdfc149a701 Downloading [==================================================>] 1.194kB/1.194kB
2026-03-23T09:17:03.5695885Z afdfc149a701 Verifying Checksum
2026-03-23T09:17:03.5696334Z afdfc149a701 Download complete
2026-03-23T09:17:03.5736841Z ec781dee3f47 Extracting [============================> ] 17.04MB/29.78MB
2026-03-23T09:17:03.5738119Z ec781dee3f47 Extracting [============================> ] 17.04MB/29.78MB
2026-03-23T09:17:03.5832035Z 1199932bbfa7 Downloading [==========> ] 11.34MB/56.13MB
2026-03-23T09:17:03.6354810Z eba0d7143395 Downloading [==========================================> ] 4.848MB/5.699MB
2026-03-23T09:17:03.6756575Z ec781dee3f47 Extracting [=========================================> ] 24.9MB/29.78MB
2026-03-23T09:17:03.6758183Z ec781dee3f47 Extracting [=========================================> ] 24.9MB/29.78MB
2026-03-23T09:17:03.6909302Z eba0d7143395 Verifying Checksum
2026-03-23T09:17:03.6912362Z eba0d7143395 Download complete
2026-03-23T09:17:03.7153400Z 1199932bbfa7 Downloading [===================> ] 21.49MB/56.13MB
2026-03-23T09:17:03.8148139Z 777dabb742bc Downloading [=================================================> ] 1.378kB/1.402kB
2026-03-23T09:17:03.8149077Z 777dabb742bc Downloading [==================================================>] 1.402kB/1.402kB
2026-03-23T09:17:03.8149701Z 777dabb742bc Verifying Checksum
2026-03-23T09:17:03.8150136Z 777dabb742bc Download complete
2026-03-23T09:17:03.8202386Z 1199932bbfa7 Downloading [==========================> ] 30.06MB/56.13MB
2026-03-23T09:17:03.8473520Z ec781dee3f47 Extracting [============================================> ] 26.21MB/29.78MB
2026-03-23T09:17:03.9245210Z ec781dee3f47 Extracting [============================================> ] 26.21MB/29.78MB
2026-03-23T09:17:03.9246031Z 1199932bbfa7 Downloading [==================================> ] 38.63MB/56.13MB
2026-03-23T09:17:03.9331991Z 5c8439ac5738 Downloading [> ] 539.4kB/56.36MB
2026-03-23T09:17:03.9521172Z ec781dee3f47 Extracting [===============================================> ] 28.51MB/29.78MB
2026-03-23T09:17:03.9522069Z ec781dee3f47 Extracting [===============================================> ] 28.51MB/29.78MB
2026-03-23T09:17:04.0295880Z 1199932bbfa7 Downloading [==========================================> ] 47.19MB/56.13MB
2026-03-23T09:17:04.0348995Z 5c8439ac5738 Downloading [=========> ] 10.26MB/56.36MB
2026-03-23T09:17:04.0425888Z dfa7d6478b2c Downloading [============================================> ] 1.378kB/1.564kB
2026-03-23T09:17:04.0431095Z dfa7d6478b2c Downloading [==================================================>] 1.564kB/1.564kB
2026-03-23T09:17:04.0431789Z dfa7d6478b2c Verifying Checksum
2026-03-23T09:17:04.0432592Z dfa7d6478b2c Download complete
2026-03-23T09:17:04.1338204Z 1199932bbfa7 Downloading [=================================================> ] 55.74MB/56.13MB
2026-03-23T09:17:04.1353077Z 5c8439ac5738 Downloading [=================> ] 19.36MB/56.36MB
2026-03-23T09:17:04.1406745Z 1199932bbfa7 Verifying Checksum
2026-03-23T09:17:04.1407575Z 1199932bbfa7 Download complete
2026-03-23T09:17:04.1505351Z ec781dee3f47 Extracting [================================================> ] 29.16MB/29.78MB
2026-03-23T09:17:04.1507354Z ec781dee3f47 Extracting [================================================> ] 29.16MB/29.78MB
2026-03-23T09:17:04.2366789Z 5c8439ac5738 Downloading [=========================> ] 28.47MB/56.36MB
2026-03-23T09:17:04.2458864Z ec781dee3f47 Extracting [==================================================>] 29.78MB/29.78MB
2026-03-23T09:17:04.2459929Z ec781dee3f47 Extracting [==================================================>] 29.78MB/29.78MB
2026-03-23T09:17:04.2765308Z ec781dee3f47 Pull complete
2026-03-23T09:17:04.2765790Z ec781dee3f47 Pull complete
2026-03-23T09:17:04.2768093Z b186029d0aef Extracting [=> ] 32.77kB/1.293MB
2026-03-23T09:17:04.3311133Z 10dce7fabc6d Downloading [> ] 539.4kB/96.84MB
2026-03-23T09:17:04.3410179Z 5c8439ac5738 Downloading [=================================> ] 38.11MB/56.36MB
2026-03-23T09:17:04.3834084Z b186029d0aef Extracting [===================================> ] 917.5kB/1.293MB
2026-03-23T09:17:04.3989025Z b186029d0aef Extracting [==================================================>] 1.293MB/1.293MB
2026-03-23T09:17:04.3996504Z b186029d0aef Extracting [==================================================>] 1.293MB/1.293MB
2026-03-23T09:17:04.4175427Z 789581b3fcd9 Downloading [=======> ] 1.378kB/9.45kB
2026-03-23T09:17:04.4177768Z 789581b3fcd9 Downloading [==================================================>] 9.45kB/9.45kB
2026-03-23T09:17:04.4178814Z 789581b3fcd9 Verifying Checksum
2026-03-23T09:17:04.4180265Z 789581b3fcd9 Download complete
2026-03-23T09:17:04.4450803Z 5c8439ac5738 Downloading [==========================================> ] 47.76MB/56.36MB
2026-03-23T09:17:04.4631307Z 10dce7fabc6d Downloading [=====> ] 11.32MB/96.84MB
2026-03-23T09:17:04.5387817Z 5c8439ac5738 Verifying Checksum
2026-03-23T09:17:04.5388284Z 5c8439ac5738 Download complete
2026-03-23T09:17:04.5665535Z 10dce7fabc6d Downloading [==========> ] 20.48MB/96.84MB
2026-03-23T09:17:04.6671972Z 10dce7fabc6d Downloading [==============> ] 29.04MB/96.84MB
2026-03-23T09:17:04.6902662Z 5839e1e6e9b9 Downloading [> ] 539.4kB/52.61MB
2026-03-23T09:17:04.7590839Z b186029d0aef Pull complete
2026-03-23T09:17:04.7623354Z e2a2a5e6ffbf Extracting [> ] 131.1kB/11.8MB
2026-03-23T09:17:04.7677160Z 10dce7fabc6d Downloading [===================> ] 37.6MB/96.84MB
2026-03-23T09:17:04.7932749Z 5839e1e6e9b9 Downloading [=========> ] 10.24MB/52.61MB
2026-03-23T09:17:04.7975065Z d6809aa75ecd Downloading [==================> ] 1.378kB/3.664kB
2026-03-23T09:17:04.7976223Z d6809aa75ecd Downloading [==================================================>] 3.664kB/3.664kB
2026-03-23T09:17:04.7976931Z d6809aa75ecd Verifying Checksum
2026-03-23T09:17:04.7977355Z d6809aa75ecd Download complete
2026-03-23T09:17:04.8691639Z 10dce7fabc6d Downloading [=======================> ] 46.17MB/96.84MB
2026-03-23T09:17:04.8707359Z e2a2a5e6ffbf Extracting [====> ] 1.049MB/11.8MB
2026-03-23T09:17:04.8960915Z 5839e1e6e9b9 Downloading [==================> ] 19.87MB/52.61MB
2026-03-23T09:17:04.9698317Z 10dce7fabc6d Downloading [============================> ] 54.75MB/96.84MB
2026-03-23T09:17:04.9699666Z 4f4fb700ef54 Downloading [==================================================>] 32B/32B
2026-03-23T09:17:04.9700358Z 4f4fb700ef54 Verifying Checksum
2026-03-23T09:17:04.9700807Z 4f4fb700ef54 Download complete
2026-03-23T09:17:04.9807459Z e2a2a5e6ffbf Extracting [================> ] 3.801MB/11.8MB
2026-03-23T09:17:04.9976363Z 5839e1e6e9b9 Downloading [============================> ] 29.52MB/52.61MB
2026-03-23T09:17:05.0707619Z 10dce7fabc6d Downloading [================================> ] 63.33MB/96.84MB
2026-03-23T09:17:05.0812054Z e2a2a5e6ffbf Extracting [============================> ] 6.816MB/11.8MB
2026-03-23T09:17:05.0998517Z 5839e1e6e9b9 Downloading [=====================================> ] 39.12MB/52.61MB
2026-03-23T09:17:05.1720951Z 10dce7fabc6d Downloading [=====================================> ] 71.91MB/96.84MB
2026-03-23T09:17:05.1988019Z e2a2a5e6ffbf Extracting [=======================================> ] 9.306MB/11.8MB
2026-03-23T09:17:05.2013622Z 5839e1e6e9b9 Downloading [==============================================> ] 48.74MB/52.61MB
2026-03-23T09:17:05.2319136Z 48b3257bc370 Download complete
2026-03-23T09:17:05.2430499Z 5839e1e6e9b9 Verifying Checksum
2026-03-23T09:17:05.2436508Z 5839e1e6e9b9 Download complete
2026-03-23T09:17:05.2728699Z 10dce7fabc6d Downloading [=========================================> ] 80.49MB/96.84MB
2026-03-23T09:17:05.3067590Z e2a2a5e6ffbf Extracting [============================================> ] 10.62MB/11.8MB
2026-03-23T09:17:05.3731364Z 10dce7fabc6d Downloading [=============================================> ] 89.07MB/96.84MB
2026-03-23T09:17:05.4064912Z e2a2a5e6ffbf Extracting [==================================================>] 11.8MB/11.8MB
2026-03-23T09:17:05.4701171Z 10dce7fabc6d Download complete
2026-03-23T09:17:05.4862118Z bc1da058f299 Downloading [> ] 37.26kB/3.644MB
2026-03-23T09:17:05.4872730Z 09a5a0c32a23 Downloading [=====================> ] 409B/948B
2026-03-23T09:17:05.4887185Z 09a5a0c32a23 Downloading [==================================================>] 948B/948B
2026-03-23T09:17:05.4889500Z 09a5a0c32a23 Verifying Checksum
2026-03-23T09:17:05.4890261Z 09a5a0c32a23 Download complete
2026-03-23T09:17:05.4995629Z bc1da058f299 Verifying Checksum
2026-03-23T09:17:05.4996307Z bc1da058f299 Download complete
2026-03-23T09:17:05.5006936Z bc1da058f299 Extracting [> ] 65.54kB/3.644MB
2026-03-23T09:17:05.5478557Z e2a2a5e6ffbf Pull complete
2026-03-23T09:17:05.5496805Z eecee41f47a6 Extracting [==================================================>] 250B/250B
2026-03-23T09:17:05.5500929Z eecee41f47a6 Extracting [==================================================>] 250B/250B
2026-03-23T09:17:05.5692784Z eecee41f47a6 Pull complete
2026-03-23T09:17:05.5872710Z 1199932bbfa7 Extracting [> ] 557.1kB/56.13MB
2026-03-23T09:17:05.6068415Z bc1da058f299 Extracting [===================> ] 1.442MB/3.644MB
2026-03-23T09:17:05.6413482Z bc1da058f299 Extracting [==================================================>] 3.644MB/3.644MB
2026-03-23T09:17:05.6659571Z bc1da058f299 Pull complete
2026-03-23T09:17:05.6679497Z 09a5a0c32a23 Extracting [==================================================>] 948B/948B
2026-03-23T09:17:05.6683586Z 09a5a0c32a23 Extracting [==================================================>] 948B/948B
2026-03-23T09:17:05.6942872Z 09a5a0c32a23 Pull complete
2026-03-23T09:17:05.7216207Z bd53938b1271 Downloading [> ] 1.775kB/173.4kB
2026-03-23T09:17:05.7248201Z bd53938b1271 Verifying Checksum
2026-03-23T09:17:05.7248927Z bd53938b1271 Download complete
2026-03-23T09:17:05.7252118Z bd53938b1271 Extracting [=========> ] 32.77kB/173.4kB
2026-03-23T09:17:05.7275505Z bd53938b1271 Extracting [==================================================>] 173.4kB/173.4kB
2026-03-23T09:17:05.7408552Z 9fe3744a2eac Downloading [> ] 11.36kB/1.003MB
2026-03-23T09:17:05.7462802Z 7ad54b3c4cef Downloading [> ] 127kB/12.41MB
2026-03-23T09:17:05.7479335Z 9fe3744a2eac Verifying Checksum
2026-03-23T09:17:05.7479762Z 9fe3744a2eac Download complete
2026-03-23T09:17:05.7497415Z 1199932bbfa7 Extracting [====> ] 5.571MB/56.13MB
2026-03-23T09:17:05.7632021Z bd53938b1271 Extracting [==================================================>] 173.4kB/173.4kB
2026-03-23T09:17:05.7903118Z 7ad54b3c4cef Verifying Checksum
2026-03-23T09:17:05.7911563Z 7ad54b3c4cef Download complete
2026-03-23T09:17:05.9214825Z bd53938b1271 Pull complete
2026-03-23T09:17:05.9228369Z 9fe3744a2eac Extracting [=> ] 32.77kB/1.003MB
2026-03-23T09:17:05.9462502Z 9fe3744a2eac Extracting [==================================================>] 1.003MB/1.003MB
2026-03-23T09:17:05.9467146Z 9fe3744a2eac Extracting [==================================================>] 1.003MB/1.003MB
2026-03-23T09:17:05.9604727Z 9fe3744a2eac Pull complete
2026-03-23T09:17:05.9629992Z 1199932bbfa7 Extracting [=====> ] 6.685MB/56.13MB
2026-03-23T09:17:05.9636484Z 7ad54b3c4cef Extracting [> ] 131.1kB/12.41MB
2026-03-23T09:17:05.9901311Z 2a97533d89ca Downloading [==================================================>] 100B/100B
2026-03-23T09:17:05.9905798Z 2a97533d89ca Verifying Checksum
2026-03-23T09:17:05.9906568Z 2a97533d89ca Download complete
2026-03-23T09:17:06.0102321Z 4f4fb700ef54 Downloading [==================================================>] 32B/32B
2026-03-23T09:17:06.0104875Z 4f4fb700ef54 Verifying Checksum
2026-03-23T09:17:06.0105521Z 4f4fb700ef54 Download complete
2026-03-23T09:17:06.0510815Z 1c2c8d1ee428 Downloading [===================================> ] 408B/576B
2026-03-23T09:17:06.0511697Z 1c2c8d1ee428 Downloading [==================================================>] 576B/576B
2026-03-23T09:17:06.0512676Z 1c2c8d1ee428 Verifying Checksum
2026-03-23T09:17:06.0514917Z 1c2c8d1ee428 Download complete
2026-03-23T09:17:06.0644240Z 7ad54b3c4cef Extracting [=====================> ] 5.374MB/12.41MB
2026-03-23T09:17:06.1413605Z 1199932bbfa7 Extracting [======> ] 7.242MB/56.13MB
2026-03-23T09:17:06.1604071Z 7ad54b3c4cef Extracting [==================================================>] 12.41MB/12.41MB
2026-03-23T09:17:06.1916157Z 7ad54b3c4cef Pull complete
2026-03-23T09:17:06.1933574Z 2a97533d89ca Extracting [==================================================>] 100B/100B
2026-03-23T09:17:06.1937785Z 2a97533d89ca Extracting [==================================================>] 100B/100B
2026-03-23T09:17:06.2022564Z 2a97533d89ca Pull complete
2026-03-23T09:17:06.2038399Z 4f4fb700ef54 Extracting [==================================================>] 32B/32B
2026-03-23T09:17:06.2042825Z 4f4fb700ef54 Extracting [==================================================>] 32B/32B
2026-03-23T09:17:06.2141868Z 4f4fb700ef54 Pull complete
2026-03-23T09:17:06.2165919Z 1c2c8d1ee428 Extracting [==================================================>] 576B/576B
2026-03-23T09:17:06.2172846Z 1c2c8d1ee428 Extracting [==================================================>] 576B/576B
2026-03-23T09:17:06.2260817Z ce2467f2f21d Downloading [=================> ] 408B/1.166kB
2026-03-23T09:17:06.2263141Z ce2467f2f21d Downloading [==================================================>] 1.166kB/1.166kB
2026-03-23T09:17:06.2264040Z ce2467f2f21d Verifying Checksum
2026-03-23T09:17:06.2264472Z ce2467f2f21d Download complete
2026-03-23T09:17:06.2274738Z ce2467f2f21d Extracting [==================================================>] 1.166kB/1.166kB
2026-03-23T09:17:06.2275615Z ce2467f2f21d Extracting [==================================================>] 1.166kB/1.166kB
2026-03-23T09:17:06.2380343Z 1c2c8d1ee428 Pull complete
2026-03-23T09:17:06.2466565Z ce2467f2f21d Pull complete
2026-03-23T09:17:06.2476074Z redis Pulled
2026-03-23T09:17:06.2694265Z d4ced18622af Downloading [> ] 67.79kB/6.441MB
2026-03-23T09:17:06.2917627Z d4ced18622af Download complete
2026-03-23T09:17:06.2926355Z d4ced18622af Extracting [> ] 65.54kB/6.441MB
2026-03-23T09:17:06.3009676Z af73ff344a10 Downloading [> ] 12.66kB/1.257MB
2026-03-23T09:17:06.3082574Z af73ff344a10 Download complete
2026-03-23T09:17:06.3928370Z d4ced18622af Extracting [=============================================> ] 5.833MB/6.441MB
2026-03-23T09:17:06.4230682Z d4ced18622af Extracting [==================================================>] 6.441MB/6.441MB
2026-03-23T09:17:06.4485868Z 1199932bbfa7 Extracting [=======> ] 8.356MB/56.13MB
2026-03-23T09:17:06.4821312Z 07cec992154a Downloading [> ] 84.3kB/8.204MB
2026-03-23T09:17:06.5266432Z 07cec992154a Download complete
2026-03-23T09:17:06.5271066Z d4ced18622af Pull complete
2026-03-23T09:17:06.5289468Z af73ff344a10 Extracting [=> ] 32.77kB/1.257MB
2026-03-23T09:17:06.5488570Z 1199932bbfa7 Extracting [========> ] 9.47MB/56.13MB
2026-03-23T09:17:06.5491905Z fd0dcffac314 Downloading [> ] 14.07kB/1.312MB
2026-03-23T09:17:06.5567629Z af73ff344a10 Extracting [==================================================>] 1.257MB/1.257MB
2026-03-23T09:17:06.5605309Z fd0dcffac314 Verifying Checksum
2026-03-23T09:17:06.5605789Z fd0dcffac314 Download complete
2026-03-23T09:17:06.5722786Z bda354b903ce Downloading [==================================================>] 116B/116B
2026-03-23T09:17:06.5723972Z bda354b903ce Verifying Checksum
2026-03-23T09:17:06.5725355Z bda354b903ce Download complete
2026-03-23T09:17:06.5834803Z af73ff344a10 Pull complete
2026-03-23T09:17:06.5857493Z 07cec992154a Extracting [> ] 98.3kB/8.204MB
2026-03-23T09:17:06.6551442Z 1199932bbfa7 Extracting [==============> ] 16.15MB/56.13MB
2026-03-23T09:17:06.6878042Z 07cec992154a Extracting [===================> ] 3.244MB/8.204MB
2026-03-23T09:17:06.7812084Z fcd98f4944fb Downloading [======> ] 408B/3.14kB
2026-03-23T09:17:06.7813011Z fcd98f4944fb Downloading [==================================================>] 3.14kB/3.14kB
2026-03-23T09:17:06.7813696Z fcd98f4944fb Verifying Checksum
2026-03-23T09:17:06.7814288Z fcd98f4944fb Download complete
2026-03-23T09:17:06.7892631Z 07cec992154a Extracting [===============================> ] 5.112MB/8.204MB
2026-03-23T09:17:06.8316842Z 45e04ac2d7d2 Downloading [> ] 527.4kB/111MB
2026-03-23T09:17:06.8333518Z f1a2676f0017 Downloading [=> ] 376B/9.882kB
2026-03-23T09:17:06.8335514Z f1a2676f0017 Downloading [==================================================>] 9.882kB/9.882kB
2026-03-23T09:17:06.8342398Z f1a2676f0017 Download complete
2026-03-23T09:17:06.8909000Z 07cec992154a Extracting [========================================> ] 6.685MB/8.204MB
2026-03-23T09:17:06.8935026Z 1199932bbfa7 Extracting [===================> ] 21.73MB/56.13MB
2026-03-23T09:17:06.9319858Z 45e04ac2d7d2 Downloading [=============> ] 29.53MB/111MB
2026-03-23T09:17:06.9500429Z 07cec992154a Extracting [==================================================>] 8.204MB/8.204MB
2026-03-23T09:17:07.0007353Z 1199932bbfa7 Extracting [====================> ] 23.4MB/56.13MB
2026-03-23T09:17:07.0336765Z 45e04ac2d7d2 Downloading [========================> ] 53.62MB/111MB
2026-03-23T09:17:07.0437649Z 07cec992154a Pull complete
2026-03-23T09:17:07.0461566Z fd0dcffac314 Extracting [=> ] 32.77kB/1.312MB
2026-03-23T09:17:07.0528520Z eab3f9a27af8 Downloading [==================================================>] 128B/128B
2026-03-23T09:17:07.0534296Z eab3f9a27af8 Verifying Checksum
2026-03-23T09:17:07.0536052Z eab3f9a27af8 Download complete
2026-03-23T09:17:07.0845791Z d2c8c030ed3b Downloading [==================================================>] 167B/167B
2026-03-23T09:17:07.0858402Z d2c8c030ed3b Verifying Checksum
2026-03-23T09:17:07.0859257Z d2c8c030ed3b Download complete
2026-03-23T09:17:07.1046540Z 1199932bbfa7 Extracting [========================> ] 27.3MB/56.13MB
2026-03-23T09:17:07.1307596Z fd0dcffac314 Extracting [==================================================>] 1.312MB/1.312MB
2026-03-23T09:17:07.1337377Z 45e04ac2d7d2 Downloading [=====================================> ] 83.57MB/111MB
2026-03-23T09:17:07.1895381Z fd0dcffac314 Pull complete
2026-03-23T09:17:07.1950693Z bda354b903ce Extracting [==================================================>] 116B/116B
2026-03-23T09:17:07.1955866Z bda354b903ce Extracting [==================================================>] 116B/116B
2026-03-23T09:17:07.2064471Z 1199932bbfa7 Extracting [============================> ] 31.75MB/56.13MB
2026-03-23T09:17:07.2121704Z bda354b903ce Pull complete
2026-03-23T09:17:07.2151956Z fcd98f4944fb Extracting [==================================================>] 3.14kB/3.14kB
2026-03-23T09:17:07.2164388Z fcd98f4944fb Extracting [==================================================>] 3.14kB/3.14kB
2026-03-23T09:17:07.2320625Z fcd98f4944fb Pull complete
2026-03-23T09:17:07.2346409Z 45e04ac2d7d2 Downloading [================================================> ] 107.1MB/111MB
2026-03-23T09:17:07.2470199Z 45e04ac2d7d2 Verifying Checksum
2026-03-23T09:17:07.2470704Z 45e04ac2d7d2 Download complete
2026-03-23T09:17:07.3090910Z c2e686ef6906 Downloading [===> ] 408B/5.837kB
2026-03-23T09:17:07.3091631Z c2e686ef6906 Verifying Checksum
2026-03-23T09:17:07.3094326Z c2e686ef6906 Download complete
2026-03-23T09:17:07.3146318Z 1199932bbfa7 Extracting [=================================> ] 37.88MB/56.13MB
2026-03-23T09:17:07.3342278Z 45e04ac2d7d2 Extracting [> ] 557.1kB/111MB
2026-03-23T09:17:07.3351827Z b2c40507d19c Downloading [==================================================>] 185B/185B
2026-03-23T09:17:07.3355976Z b2c40507d19c Verifying Checksum
2026-03-23T09:17:07.3356438Z b2c40507d19c Download complete
2026-03-23T09:17:07.4248017Z 1199932bbfa7 Extracting [=======================================> ] 44.56MB/56.13MB
2026-03-23T09:17:07.4365558Z 45e04ac2d7d2 Extracting [==> ] 5.571MB/111MB
2026-03-23T09:17:07.5499872Z 45e04ac2d7d2 Extracting [====> ] 8.913MB/111MB
2026-03-23T09:17:07.5586258Z 1199932bbfa7 Extracting [==========================================> ] 47.35MB/56.13MB
2026-03-23T09:17:07.6673544Z 45e04ac2d7d2 Extracting [=====> ] 12.26MB/111MB
2026-03-23T09:17:07.7512357Z 1199932bbfa7 Extracting [=============================================> ] 51.25MB/56.13MB
2026-03-23T09:17:07.7679857Z 45e04ac2d7d2 Extracting [=======> ] 15.6MB/111MB
2026-03-23T09:17:07.8750293Z 1199932bbfa7 Extracting [===============================================> ] 52.92MB/56.13MB
2026-03-23T09:17:07.8830041Z 45e04ac2d7d2 Extracting [=========> ] 20.05MB/111MB
2026-03-23T09:17:07.9882001Z 45e04ac2d7d2 Extracting [===========> ] 25.62MB/111MB
2026-03-23T09:17:08.0095387Z 1199932bbfa7 Extracting [================================================> ] 54.03MB/56.13MB
2026-03-23T09:17:08.0943102Z 45e04ac2d7d2 Extracting [===============> ] 33.98MB/111MB
2026-03-23T09:17:08.1365145Z 1199932bbfa7 Extracting [=================================================> ] 55.71MB/56.13MB
2026-03-23T09:17:08.1967560Z 45e04ac2d7d2 Extracting [===================> ] 42.34MB/111MB
2026-03-23T09:17:08.2972931Z 45e04ac2d7d2 Extracting [======================> ] 50.69MB/111MB
2026-03-23T09:17:08.3741317Z 1199932bbfa7 Extracting [==================================================>] 56.13MB/56.13MB
2026-03-23T09:17:08.4025642Z 45e04ac2d7d2 Extracting [========================> ] 55.15MB/111MB
2026-03-23T09:17:08.5073064Z 45e04ac2d7d2 Extracting [===========================> ] 60.16MB/111MB
2026-03-23T09:17:08.6995826Z 45e04ac2d7d2 Extracting [===========================> ] 61.28MB/111MB
2026-03-23T09:17:08.8046598Z 45e04ac2d7d2 Extracting [==============================> ] 66.85MB/111MB
2026-03-23T09:17:08.8171697Z 1199932bbfa7 Pull complete
2026-03-23T09:17:08.8191435Z eba0d7143395 Extracting [> ] 65.54kB/5.699MB
2026-03-23T09:17:08.9076346Z 45e04ac2d7d2 Extracting [=================================> ] 75.2MB/111MB
2026-03-23T09:17:08.9228978Z eba0d7143395 Extracting [=================> ] 1.966MB/5.699MB
2026-03-23T09:17:09.0105334Z 45e04ac2d7d2 Extracting [=====================================> ] 82.44MB/111MB
2026-03-23T09:17:09.0236415Z eba0d7143395 Extracting [======================> ] 2.621MB/5.699MB
2026-03-23T09:17:09.1139822Z 45e04ac2d7d2 Extracting [========================================> ] 90.8MB/111MB
2026-03-23T09:17:09.1298525Z eba0d7143395 Extracting [=================================> ] 3.867MB/5.699MB
2026-03-23T09:17:09.2246117Z 45e04ac2d7d2 Extracting [==========================================> ] 95.26MB/111MB
2026-03-23T09:17:09.2331386Z eba0d7143395 Extracting [==========================================> ] 4.85MB/5.699MB
2026-03-23T09:17:09.3406783Z 45e04ac2d7d2 Extracting [============================================> ] 98.6MB/111MB
2026-03-23T09:17:09.3536038Z eba0d7143395 Extracting [=================================================> ] 5.636MB/5.699MB
2026-03-23T09:17:09.3659285Z eba0d7143395 Extracting [==================================================>] 5.699MB/5.699MB
2026-03-23T09:17:09.3692021Z eba0d7143395 Extracting [==================================================>] 5.699MB/5.699MB
2026-03-23T09:17:09.4458443Z 45e04ac2d7d2 Extracting [============================================> ] 99.71MB/111MB
2026-03-23T09:17:09.4879783Z eba0d7143395 Pull complete
2026-03-23T09:17:09.4893226Z afdfc149a701 Extracting [==================================================>] 1.194kB/1.194kB
2026-03-23T09:17:09.4897649Z afdfc149a701 Extracting [==================================================>] 1.194kB/1.194kB
2026-03-23T09:17:09.5090235Z afdfc149a701 Pull complete
2026-03-23T09:17:09.5105588Z 777dabb742bc Extracting [==================================================>] 1.402kB/1.402kB
2026-03-23T09:17:09.5112944Z 777dabb742bc Extracting [==================================================>] 1.402kB/1.402kB
2026-03-23T09:17:09.5204470Z 777dabb742bc Pull complete
2026-03-23T09:17:09.5534052Z 45e04ac2d7d2 Extracting [==============================================> ] 102.5MB/111MB
2026-03-23T09:17:09.5600026Z 5c8439ac5738 Extracting [> ] 557.1kB/56.36MB
2026-03-23T09:17:09.7067609Z 45e04ac2d7d2 Extracting [===============================================> ] 105.3MB/111MB
2026-03-23T09:17:09.7165266Z 5c8439ac5738 Extracting [==> ] 3.342MB/56.36MB
2026-03-23T09:17:09.8218155Z 5c8439ac5738 Extracting [====> ] 5.014MB/56.36MB
2026-03-23T09:17:09.8378319Z 45e04ac2d7d2 Extracting [================================================> ] 107MB/111MB
2026-03-23T09:17:09.9554887Z 5c8439ac5738 Extracting [=======> ] 8.913MB/56.36MB
2026-03-23T09:17:09.9605817Z 45e04ac2d7d2 Extracting [================================================> ] 108.1MB/111MB
2026-03-23T09:17:10.0852352Z 5c8439ac5738 Extracting [========> ] 10.03MB/56.36MB
2026-03-23T09:17:10.1854951Z 5c8439ac5738 Extracting [=========> ] 10.58MB/56.36MB
2026-03-23T09:17:10.2439560Z 45e04ac2d7d2 Extracting [=================================================> ] 109.7MB/111MB
2026-03-23T09:17:10.3459753Z 45e04ac2d7d2 Extracting [=================================================> ] 110.9MB/111MB
2026-03-23T09:17:10.3932934Z 45e04ac2d7d2 Extracting [==================================================>] 111MB/111MB
2026-03-23T09:17:10.4890705Z 5c8439ac5738 Extracting [==========> ] 11.7MB/56.36MB
2026-03-23T09:17:10.5435179Z 45e04ac2d7d2 Pull complete
2026-03-23T09:17:10.5456852Z f1a2676f0017 Extracting [==================================================>] 9.882kB/9.882kB
2026-03-23T09:17:10.5460887Z f1a2676f0017 Extracting [==================================================>] 9.882kB/9.882kB
2026-03-23T09:17:10.5665706Z f1a2676f0017 Pull complete
2026-03-23T09:17:10.5682754Z eab3f9a27af8 Extracting [==================================================>] 128B/128B
2026-03-23T09:17:10.5687110Z eab3f9a27af8 Extracting [==================================================>] 128B/128B
2026-03-23T09:17:10.5836671Z eab3f9a27af8 Pull complete
2026-03-23T09:17:10.5852398Z d2c8c030ed3b Extracting [==================================================>] 167B/167B
2026-03-23T09:17:10.5856757Z d2c8c030ed3b Extracting [==================================================>] 167B/167B
2026-03-23T09:17:10.5982559Z d2c8c030ed3b Pull complete
2026-03-23T09:17:10.6000227Z c2e686ef6906 Extracting [==================================================>] 5.837kB/5.837kB
2026-03-23T09:17:10.6003494Z c2e686ef6906 Extracting [==================================================>] 5.837kB/5.837kB
2026-03-23T09:17:10.6121140Z c2e686ef6906 Pull complete
2026-03-23T09:17:10.6139649Z b2c40507d19c Extracting [==================================================>] 185B/185B
2026-03-23T09:17:10.6141255Z b2c40507d19c Extracting [==================================================>] 185B/185B
2026-03-23T09:17:10.6237879Z b2c40507d19c Pull complete
2026-03-23T09:17:10.6304678Z postgres Pulled
2026-03-23T09:17:10.9046500Z 5c8439ac5738 Extracting [==========> ] 12.26MB/56.36MB
2026-03-23T09:17:11.2515220Z 5c8439ac5738 Extracting [===========> ] 12.81MB/56.36MB
2026-03-23T09:17:11.4758401Z 5c8439ac5738 Extracting [============> ] 13.93MB/56.36MB
2026-03-23T09:17:11.5893001Z 5c8439ac5738 Extracting [==============> ] 16.71MB/56.36MB
2026-03-23T09:17:11.7058637Z 5c8439ac5738 Extracting [===============> ] 17.83MB/56.36MB
2026-03-23T09:17:11.8130394Z 5c8439ac5738 Extracting [================> ] 18.38MB/56.36MB
2026-03-23T09:17:11.9243224Z 5c8439ac5738 Extracting [================> ] 18.94MB/56.36MB
2026-03-23T09:17:12.0561035Z 5c8439ac5738 Extracting [=================> ] 19.5MB/56.36MB
2026-03-23T09:17:12.1939166Z 5c8439ac5738 Extracting [=================> ] 20.05MB/56.36MB
2026-03-23T09:17:12.3001457Z 5c8439ac5738 Extracting [=========================> ] 28.41MB/56.36MB
2026-03-23T09:17:12.4735897Z 5c8439ac5738 Extracting [=============================> ] 32.87MB/56.36MB
2026-03-23T09:17:12.5918185Z 5c8439ac5738 Extracting [===============================> ] 35.09MB/56.36MB
2026-03-23T09:17:12.8526080Z 5c8439ac5738 Extracting [================================> ] 36.77MB/56.36MB
2026-03-23T09:17:12.9528846Z 5c8439ac5738 Extracting [====================================> ] 41.22MB/56.36MB
2026-03-23T09:17:13.0562410Z 5c8439ac5738 Extracting [=======================================> ] 44.56MB/56.36MB
2026-03-23T09:17:13.1747733Z 5c8439ac5738 Extracting [==========================================> ] 47.91MB/56.36MB
2026-03-23T09:17:13.2802830Z 5c8439ac5738 Extracting [===========================================> ] 49.02MB/56.36MB
2026-03-23T09:17:13.3910930Z 5c8439ac5738 Extracting [============================================> ] 50.14MB/56.36MB
2026-03-23T09:17:13.5406935Z 5c8439ac5738 Extracting [=============================================> ] 51.81MB/56.36MB
2026-03-23T09:17:13.6556225Z 5c8439ac5738 Extracting [===============================================> ] 54.03MB/56.36MB
2026-03-23T09:17:13.7947519Z 5c8439ac5738 Extracting [================================================> ] 54.59MB/56.36MB
2026-03-23T09:17:13.9714671Z 5c8439ac5738 Extracting [================================================> ] 55.15MB/56.36MB
2026-03-23T09:17:14.0985448Z 5c8439ac5738 Extracting [=================================================> ] 55.71MB/56.36MB
2026-03-23T09:17:14.1080803Z 5c8439ac5738 Extracting [==================================================>] 56.36MB/56.36MB
2026-03-23T09:17:14.4554803Z 5c8439ac5738 Pull complete
2026-03-23T09:17:14.4568291Z dfa7d6478b2c Extracting [==================================================>] 1.564kB/1.564kB
2026-03-23T09:17:14.4573497Z dfa7d6478b2c Extracting [==================================================>] 1.564kB/1.564kB
2026-03-23T09:17:14.4780006Z dfa7d6478b2c Pull complete
2026-03-23T09:17:14.4898566Z 10dce7fabc6d Extracting [> ] 557.1kB/96.84MB
2026-03-23T09:17:14.5916152Z 10dce7fabc6d Extracting [==============> ] 27.85MB/96.84MB
2026-03-23T09:17:14.6925725Z 10dce7fabc6d Extracting [============================> ] 55.15MB/96.84MB
2026-03-23T09:17:14.7941553Z 10dce7fabc6d Extracting [==========================================> ] 83MB/96.84MB
2026-03-23T09:17:14.8446785Z 10dce7fabc6d Extracting [==================================================>] 96.84MB/96.84MB
2026-03-23T09:17:14.8710932Z 10dce7fabc6d Pull complete
2026-03-23T09:17:14.8789545Z 789581b3fcd9 Extracting [==================================================>] 9.45kB/9.45kB
2026-03-23T09:17:14.8793042Z 789581b3fcd9 Extracting [==================================================>] 9.45kB/9.45kB
2026-03-23T09:17:14.8899301Z 789581b3fcd9 Pull complete
2026-03-23T09:17:14.9689983Z 5839e1e6e9b9 Extracting [> ] 557.1kB/52.61MB
2026-03-23T09:17:15.0891167Z 5839e1e6e9b9 Extracting [=> ] 1.671MB/52.61MB
2026-03-23T09:17:15.2090392Z 5839e1e6e9b9 Extracting [==> ] 2.785MB/52.61MB
2026-03-23T09:17:15.3866761Z 5839e1e6e9b9 Extracting [====> ] 4.456MB/52.61MB
2026-03-23T09:17:15.5224293Z 5839e1e6e9b9 Extracting [=====> ] 5.571MB/52.61MB
2026-03-23T09:17:15.6266222Z 5839e1e6e9b9 Extracting [===========> ] 11.7MB/52.61MB
2026-03-23T09:17:15.7557673Z 5839e1e6e9b9 Extracting [==============> ] 15.04MB/52.61MB
2026-03-23T09:17:15.8594453Z 5839e1e6e9b9 Extracting [=================> ] 18.38MB/52.61MB
2026-03-23T09:17:15.9649162Z 5839e1e6e9b9 Extracting [=======================> ] 24.51MB/52.61MB
2026-03-23T09:17:16.0834346Z 5839e1e6e9b9 Extracting [=========================> ] 27.3MB/52.61MB
2026-03-23T09:17:16.1865086Z 5839e1e6e9b9 Extracting [================================> ] 33.98MB/52.61MB
2026-03-23T09:17:16.2881608Z 5839e1e6e9b9 Extracting [============================================> ] 46.79MB/52.61MB
2026-03-23T09:17:16.3941571Z 5839e1e6e9b9 Extracting [================================================> ] 51.25MB/52.61MB
2026-03-23T09:17:16.5210776Z 5839e1e6e9b9 Extracting [==================================================>] 52.61MB/52.61MB
2026-03-23T09:17:16.7222005Z 5839e1e6e9b9 Pull complete
2026-03-23T09:17:16.7237013Z d6809aa75ecd Extracting [==================================================>] 3.664kB/3.664kB
2026-03-23T09:17:16.7240941Z d6809aa75ecd Extracting [==================================================>] 3.664kB/3.664kB
2026-03-23T09:17:16.7369604Z d6809aa75ecd Pull complete
2026-03-23T09:17:16.7386945Z 4f4fb700ef54 Extracting [==================================================>] 32B/32B
2026-03-23T09:17:16.7391345Z 4f4fb700ef54 Extracting [==================================================>] 32B/32B
2026-03-23T09:17:16.7486522Z 4f4fb700ef54 Pull complete
2026-03-23T09:17:16.7503472Z 48b3257bc370 Extracting [==================================================>] 1.311kB/1.311kB
2026-03-23T09:17:16.7508474Z 48b3257bc370 Extracting [==================================================>] 1.311kB/1.311kB
2026-03-23T09:17:16.7608299Z 48b3257bc370 Pull complete
2026-03-23T09:17:16.7690776Z nautobot Pulled
2026-03-23T09:17:16.7710558Z Network development_default Creating
2026-03-23T09:17:16.8113933Z Network development_default Created
2026-03-23T09:17:16.8193126Z Volume "development_nautobot_postgres_data" Creating
2026-03-23T09:17:16.8208141Z Volume "development_nautobot_postgres_data" Created
2026-03-23T09:17:16.8213102Z Container development-postgres-1 Creating
2026-03-23T09:17:16.8213745Z Container development-redis-1 Creating
2026-03-23T09:17:16.8489548Z Container development-postgres-1 Created
2026-03-23T09:17:16.8490116Z Container development-redis-1 Created
2026-03-23T09:17:16.8490617Z Container development-nautobot-1 Creating
2026-03-23T09:17:16.8631918Z Container development-nautobot-1 Created
2026-03-23T09:17:16.8644808Z Container development-redis-1 Starting
2026-03-23T09:17:16.8645905Z Container development-postgres-1 Starting
2026-03-23T09:17:17.0714448Z Container development-postgres-1 Started
2026-03-23T09:17:17.0715001Z Container development-redis-1 Started
2026-03-23T09:17:17.0715585Z Container development-redis-1 Waiting
2026-03-23T09:17:17.0716286Z Container development-postgres-1 Waiting
2026-03-23T09:17:22.5735114Z Container development-redis-1 Healthy
2026-03-23T09:17:22.5735715Z Container development-postgres-1 Healthy
2026-03-23T09:17:22.5736270Z Container development-nautobot-1 Starting
2026-03-23T09:17:22.8094692Z Container development-nautobot-1 Started
2026-03-23T09:17:22.8095261Z Container development-redis-1 Waiting
2026-03-23T09:17:22.8095772Z Container development-nautobot-1 Waiting
2026-03-23T09:17:22.8096249Z Container development-postgres-1 Waiting
2026-03-23T09:17:23.3113181Z Container development-postgres-1 Healthy
2026-03-23T09:17:23.3113984Z Container development-redis-1 Healthy
2026-03-23T09:17:30.3115096Z container development-nautobot-1 exited (2)
2026-03-23T09:17:30.3166857Z ##[error]Process completed with exit code 1.
2026-03-23T09:17:30.3247077Z ##[group]Run docker compose logs nautobot --tail=200
2026-03-23T09:17:30.3247464Z �[36;1mdocker compose logs nautobot --tail=200�[0m
2026-03-23T09:17:30.3297853Z shell: /usr/bin/bash -e {0}
2026-03-23T09:17:30.3298090Z ##[endgroup]
2026-03-23T09:17:30.4096106Z nautobot-1 | ▶ Waiting for PostgreSQL at postgres:5432 …
2026-03-23T09:17:30.4098571Z nautobot-1 | ✔ PostgreSQL is accepting connections
2026-03-23T09:17:30.4099243Z nautobot-1 | ▶ Running database migrations …
2026-03-23T09:17:30.4099968Z nautobot-1 | usage: nautobot-server post_upgrade [-h] [--version] [-v {0,1,2,3}]
2026-03-23T09:17:30.4100734Z nautobot-1 | [--settings SETTINGS]
2026-03-23T09:17:30.4101393Z nautobot-1 | [--pythonpath PYTHONPATH] [--traceback]
2026-03-23T09:17:30.4102082Z nautobot-1 | [--no-color] [--force-color]
2026-03-23T09:17:30.4102797Z nautobot-1 | [--skip-checks] [--no-clearsessions]
2026-03-23T09:17:30.4103474Z nautobot-1 | [--no-collectstatic] [--no-migrate]
2026-03-23T09:17:30.4104377Z nautobot-1 | [--no-remove-stale-contenttypes]
2026-03-23T09:17:30.4105030Z nautobot-1 | [--no-trace-paths]
2026-03-23T09:17:30.4105657Z nautobot-1 | [--no-send-installation-metrics]
2026-03-23T09:17:30.4106347Z nautobot-1 | [--no-refresh-content-type-cache]
2026-03-23T09:17:30.4107338Z nautobot-1 | [--no-refresh-dynamic-group-member-caches]
2026-03-23T09:17:30.4108208Z nautobot-1 | nautobot-server post_upgrade: error: unrecognized arguments: --no-input
2026-03-23T09:17:30.4222082Z Post job cleanup.
2026-03-23T09:17:30.5184679Z [command]/usr/bin/git version
2026-03-23T09:17:30.5231018Z git version 2.53.0
2026-03-23T09:17:30.5276402Z Temporarily overriding HOME='/home/runner/work/_temp/54f9aa18-2af0-4a49-9ae0-c808ac711fe2' before making global git config changes
2026-03-23T09:17:30.5277803Z Adding repository directory to the temporary git global config as a safe directory
2026-03-23T09:17:30.5282895Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/Nautobot-maps/Nautobot-maps
2026-03-23T09:17:30.5319597Z [command]/usr/bin/git config --local --name-only --get-regexp core.sshCommand
2026-03-23T09:17:30.5355258Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-03-23T09:17:30.5604808Z [command]/usr/bin/git config --local --name-only --get-regexp http.https://github.com/.extraheader
2026-03-23T09:17:30.5627585Z http.https://github.com/.extraheader
2026-03-23T09:17:30.5641162Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-03-23T09:17:30.5675885Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http.https://github.com/.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-03-23T09:17:30.5910387Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf.gitdir:
2026-03-23T09:17:30.5943401Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-03-23T09:17:30.6301532Z Cleaning up orphan processes
2026-03-23T09:17:30.6806341Z ##[warning]Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
@copilot

Nautobot 3.0.9 post_upgrade command does not accept --no-input.
The container was exiting with code 2 due to unrecognized argument.

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/19540338-796d-478b-8286-7f736e39681c

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

Check faildes:

2026-03-23T09:16:57.9706978Z Current runner version: '2.332.0'
...

The failure was nautobot-server post_upgrade: error: unrecognized arguments: --no-input — Nautobot 3.0.9's post_upgrade command doesn't accept that flag. Fixed in dbaed1e by removing --no-input from the entrypoint.

@Jackass4life

Copy link
Copy Markdown
Owner

@copilot

New error at failing checks

[CI / integration-nautobot (pull_request)](https://github.com/Jackass4life/Nautobot-maps/actions/runs/23430061558/job/68154473112?pr=11)
CI / integration-nautobot (pull_request)

↳ created dcim/platforms/ {'name': 'NX-OS'}
File "/home/runner/work/Nautobot-maps/Nautobot-maps/development/seed_nautobot.py", line 379, in
seed()
File "/home/runner/work/Nautobot-maps/Nautobot-maps/development/seed_nautobot.py", line 345, in seed
get_or_create("dcim/devices/", dev_data)
File "/home/runner/work/Nautobot-maps/Nautobot-maps/development/seed_nautobot.py", line 97, in get_or_create
obj = _post(endpoint, data)
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/Nautobot-maps/Nautobot-maps/development/seed_nautobot.py", line 81, in _post
resp.raise_for_status()
File "/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/requests/models.py", line 1024, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://localhost:8080/api/dcim/devices/
Error: Process completed with exit code 1.

In Nautobot 3.x, location types must declare which content types they
allow. Without "dcim.device" in content_types, assigning a device to a
location of that type fails with 400. Also add response body logging to
_post() so future errors are easier to diagnose.

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/3eb971f6-8300-4f86-93dc-943adfe0643c

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot New error see attached file
Uploading logs_61620798339.zip…

Fixed in 5090e44. The 3 failures were all caused by the same root cause: Nautobot 3.x returns nested related objects with a display key for the human-readable name, whereas the code (and mock fixtures) used name/label.

  • tenant → Nautobot 3.x returns {"display": "Acme Corp", "id": "..."} (no name)
  • status → Nautobot 3.x returns {"display": "Planned", "id": "..."} (no label)
  • manufacturer → same pattern inside device_type

Added a _nested_str(obj, *keys) helper that tries each key in order and returns the first non-empty match. All field extractions now try name/label first (for backward compatibility with mocks), then fall back to display (for real Nautobot 3.x). All 61 existing tests still pass.

@Jackass4life

Copy link
Copy Markdown
Owner

New issue.

nautobot-1 | 11:34:59.635 INFO django.server :
nautobot-1 | "GET /api/extras/roles/?name=Load+Balancer HTTP/1.1" 200 52
nautobot-1 | 11:34:59.687 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new role
nautobot-1 | 11:34:59.712 INFO django.server :
nautobot-1 | "POST /api/extras/roles/ HTTP/1.1" 201 564
nautobot-1 | 11:34:59.783 INFO django.server :
nautobot-1 | "GET /api/dcim/platforms/?name=IOS-XE HTTP/1.1" 200 52
nautobot-1 | 11:34:59.839 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new platform
nautobot-1 | 11:34:59.859 INFO django.server :
nautobot-1 | "POST /api/dcim/platforms/ HTTP/1.1" 201 593
nautobot-1 | 11:34:59.923 INFO django.server :
nautobot-1 | "GET /api/dcim/platforms/?name=PAN-OS HTTP/1.1" 200 52
nautobot-1 | 11:34:59.974 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new platform
nautobot-1 | 11:34:59.986 INFO django.server :
nautobot-1 | "POST /api/dcim/platforms/ HTTP/1.1" 201 593
nautobot-1 | 11:35:00.051 INFO django.server :
nautobot-1 | "GET /api/dcim/platforms/?name=Junos HTTP/1.1" 200 52
nautobot-1 | 11:35:00.102 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new platform
nautobot-1 | 11:35:00.115 INFO django.server :
nautobot-1 | "POST /api/dcim/platforms/ HTTP/1.1" 201 590
nautobot-1 | 11:35:00.180 INFO django.server :
nautobot-1 | "GET /api/dcim/platforms/?name=IOS-XR HTTP/1.1" 200 52
nautobot-1 | 11:35:00.235 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new platform
nautobot-1 | 11:35:00.251 INFO django.server :
nautobot-1 | "POST /api/dcim/platforms/ HTTP/1.1" 201 593
nautobot-1 | 11:35:00.317 INFO django.server :
nautobot-1 | "GET /api/dcim/platforms/?name=SR+OS HTTP/1.1" 200 52
nautobot-1 | 11:35:00.368 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new platform
nautobot-1 | 11:35:00.385 INFO django.server :
nautobot-1 | "POST /api/dcim/platforms/ HTTP/1.1" 201 590
nautobot-1 | 11:35:00.452 INFO django.server :
nautobot-1 | "GET /api/dcim/platforms/?name=NX-OS HTTP/1.1" 200 52
nautobot-1 | 11:35:00.504 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new platform
nautobot-1 | 11:35:00.517 INFO django.server :
nautobot-1 | "POST /api/dcim/platforms/ HTTP/1.1" 201 590
nautobot-1 | 11:35:00.641 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=cph-core-rt01 HTTP/1.1" 200 52
nautobot-1 | 11:35:00.718 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:00.803 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2116
nautobot-1 | 11:35:00.869 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=cph-dist-sw01 HTTP/1.1" 200 52
nautobot-1 | 11:35:00.938 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:01.006 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2116
nautobot-1 | 11:35:01.071 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=cph-fw01 HTTP/1.1" 200 52
nautobot-1 | 11:35:01.140 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:01.213 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2102
nautobot-1 | 11:35:01.278 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=cph2-edge-rt01 HTTP/1.1" 200 52
nautobot-1 | 11:35:01.351 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:01.427 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2129
nautobot-1 | 11:35:01.499 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=sto-core-rt01 HTTP/1.1" 200 52
nautobot-1 | 11:35:01.568 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:01.639 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2116
nautobot-1 | 11:35:01.707 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=ams-rt01 HTTP/1.1" 200 52
nautobot-1 | 11:35:02.060 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:02.129 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2108
nautobot-1 | 11:35:02.194 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=ams-rt02 HTTP/1.1" 200 52
nautobot-1 | 11:35:02.262 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:02.331 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2109
nautobot-1 | 11:35:02.401 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=ams-sw01 HTTP/1.1" 200 52
nautobot-1 | 11:35:02.469 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:02.536 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2113
nautobot-1 | 11:35:02.607 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=fra-core-rt01 HTTP/1.1" 200 52
nautobot-1 | 11:35:02.679 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:02.756 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2122
nautobot-1 | 11:35:02.827 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=fra-sw01 HTTP/1.1" 200 52
nautobot-1 | 11:35:02.895 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:02.965 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2106
nautobot-1 | 11:35:03.032 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=par-rt01 HTTP/1.1" 200 52
nautobot-1 | 11:35:03.108 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:03.185 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2097
nautobot-1 | 11:35:03.247 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=lon-core-rt01 HTTP/1.1" 200 52
nautobot-1 | 11:35:03.316 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:03.383 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2112
nautobot-1 | 11:35:03.450 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=lon-fw01 HTTP/1.1" 200 52
nautobot-1 | 11:35:03.518 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:03.585 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 2098
nautobot-1 | 11:35:03.652 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?name=lon-lb01 HTTP/1.1" 200 52
nautobot-1 | 11:35:03.719 INFO nautobot.core.api.views.ModelViewSet :
nautobot-1 | Creating new device
nautobot-1 | 11:35:03.785 INFO django.server :
nautobot-1 | "POST /api/dcim/devices/ HTTP/1.1" 201 1940
nautobot-1 | 11:35:05.001 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:05.103 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:05.200 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:05.295 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:05.391 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:05.531 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:05.639 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:05.743 WARNING django.request :
nautobot-1 | Forbidden: /api/
nautobot-1 | 11:35:05.743 WARNING django.server :
nautobot-1 | "GET /api/ HTTP/1.1" 403 58
nautobot-1 | 11:35:05.902 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?location=1dfd5898-8af9-4e03-b736-92ca0b0fba4b&limit=200&offset=0 HTTP/1.1" 200 6208
nautobot-1 | 11:35:05.916 WARNING django.request :
nautobot-1 | Not Found: /api/ipam/asns/
nautobot-1 | 11:35:05.916 WARNING django.server :
nautobot-1 | "GET /api/ipam/asns/?location_id=1dfd5898-8af9-4e03-b736-92ca0b0fba4b&limit=200&offset=0 HTTP/1.1" 404 24
nautobot-1 | 11:35:06.011 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:06.265 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?location=1dfd5898-8af9-4e03-b736-92ca0b0fba4b&limit=200&offset=0 HTTP/1.1" 200 6208
nautobot-1 | 11:35:06.279 WARNING django.request :
nautobot-1 | Not Found: /api/ipam/asns/
nautobot-1 | 11:35:06.279 WARNING django.server :
nautobot-1 | "GET /api/ipam/asns/?location_id=1dfd5898-8af9-4e03-b736-92ca0b0fba4b&limit=200&offset=0 HTTP/1.1" 404 24
nautobot-1 | 11:35:06.374 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:06.625 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?location=1dfd5898-8af9-4e03-b736-92ca0b0fba4b&limit=200&offset=0 HTTP/1.1" 200 6208
nautobot-1 | 11:35:06.639 WARNING django.request :
nautobot-1 | Not Found: /api/ipam/asns/
nautobot-1 | 11:35:06.639 WARNING django.server :
nautobot-1 | "GET /api/ipam/asns/?location_id=1dfd5898-8af9-4e03-b736-92ca0b0fba4b&limit=200&offset=0 HTTP/1.1" 404 24
nautobot-1 | 11:35:06.740 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:06.830 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?location=096560c9-1f83-4c27-ac69-6dc9b7ad1709&limit=200&offset=0 HTTP/1.1" 200 52
nautobot-1 | 11:35:06.844 WARNING django.request :
nautobot-1 | Not Found: /api/ipam/asns/
nautobot-1 | 11:35:06.845 WARNING django.server :
nautobot-1 | "GET /api/ipam/asns/?location_id=096560c9-1f83-4c27-ac69-6dc9b7ad1709&limit=200&offset=0 HTTP/1.1" 404 24
nautobot-1 | 11:35:06.940 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:07.195 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?location=be1d3780-526d-4ec7-893e-db70007ab8e1&limit=200&offset=0 HTTP/1.1" 200 6024
nautobot-1 | 11:35:07.208 WARNING django.request :
nautobot-1 | Not Found: /api/ipam/asns/
nautobot-1 | 11:35:07.209 WARNING django.server :
nautobot-1 | "GET /api/ipam/asns/?location_id=be1d3780-526d-4ec7-893e-db70007ab8e1&limit=200&offset=0 HTTP/1.1" 404 24
nautobot-1 | 11:35:07.309 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:07.414 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:07.515 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:07.932 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:08.026 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:08.135 INFO django.server :
nautobot-1 | "GET /api/dcim/locations/?limit=200&offset=0 HTTP/1.1" 200 11625
nautobot-1 | 11:35:08.387 INFO django.server :
nautobot-1 | "GET /api/dcim/devices/?location=1dfd5898-8af9-4e03-b736-92ca0b0fba4b&limit=200&offset=0 HTTP/1.1" 200 6208
nautobot-1 | 11:35:08.400 WARNING django.request :
nautobot-1 | Not Found: /api/ipam/asns/
nautobot-1 | 11:35:08.401 WARNING django.server :
nautobot-1 | "GET /api/ipam/asns/?location_id=1dfd5898-8af9-4e03-b736-92ca0b0fba4b&limit=200&offset=0 HTTP/1.1" 404 24
@copilot

Nautobot 3.0.9 may return brief nested objects (tenant, status, manufacturer)
that only contain id+url without a human-readable name/display field.
_nested_str() handles the common cases but cannot extract a name when the
object has no text key at all.

Add _build_id_name_map() to pre-fetch all tenants/statuses/manufacturers
and build UUID→name maps. get_locations() and get_location_detail() now
fall back to these maps when _nested_str() returns empty. Also make
_nested_str() handle plain-string inputs gracefully.

All 61 existing tests still pass; mock tests get empty fallback maps
(correct since mock data already has name/label keys).

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/4795cfa8-315f-4cbc-9e95-b251b190f08a

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

New issue.

...

Fixed in 753080f. The seeding is working (confirmed from the Nautobot logs you shared). The 3 test failures (tenant='', status='', manufacturer='') are caused by Nautobot 3.0.9 returning brief nested objects that may not include a name/display field.

The fix adds _build_id_name_map() which pre-fetches all tenants, statuses, and manufacturers at request time and builds UUID→name lookup maps. get_locations() and get_location_detail() now fall back to these maps when _nested_str() can't extract a name from the nested object. All 61 existing tests still pass.

@Jackass4life

Copy link
Copy Markdown
Owner

One more issue but think we are closed now.

=================================== FAILURES ===================================
_____________ TestLiveLocationDetail.test_device_fields_populated ______________

self = <tests.test_nautobot_live.TestLiveLocationDetail object at 0x7fc02b601430>
live_client = <FlaskClient <Flask 'app'>>

def test_device_fields_populated(self, live_client):
    loc_id = self._location_id(live_client, "Copenhagen DC")
    data = live_client.get(f"/api/locations/{loc_id}/detail").get_json()
    router = next(
        (d for d in data["devices"] if d["name"] == "cph-core-rt01"),
        None,
    )
    assert router is not None
  assert router["manufacturer"] == "Cisco"

E AssertionError: assert '' == 'Cisco'
E
E - Cisco

tests/test_nautobot_live.py:183: AssertionError
------------------------------ Captured log call -------------------------------
WARNING app:app.py:274 Could not fetch ASNs for location 1450be40-c98c-4c54-8887-dcb8b30109d0: 404 Client Error: Not Found for url: http://localhost:8080/api/ipam/asns/?location_id=1450be40-c98c-4c54-8887-dcb8b30109d0&limit=200&offset=0
=========================== short test summary info ============================
FAILED tests/test_nautobot_live.py::TestLiveLocationDetail::test_device_fields_populated - AssertionError: assert '' == 'Cisco'

…anufacturer lookup

In Nautobot 3.x, the brief nested device_type object inside device list
responses does not include a manufacturer sub-object. This caused
mfr_name to always be empty because dt.get("manufacturer") returned None.

Add _build_device_type_manufacturer_map() which pre-fetches all device
types once and returns a {device_type_id: manufacturer_name} map.
get_location_detail() now uses this map as a third-tier fallback:
  1. _nested_str(mfr_obj, ...) - direct extraction if mfr is in device_type
  2. mfr_map.get(mfr_id) - lookup by manufacturer UUID
  3. dt_mfr_map.get(dt_id) - lookup via device type UUID (new, Nautobot 3.x)

All 61 existing tests still pass.

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/8e4cb0a6-fe51-4b98-b12d-dc0ebc01a7c1

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

One more issue but think we are closed now.

=================================== FAILURES ===================================
...

Fixed in 792c432.

Root cause: in Nautobot 3.x, the brief nested device_type object inside device list responses omits the manufacturer sub-object entirely — so dt.get("manufacturer") always returned None and all lookups fell through to empty string.

Added _build_device_type_manufacturer_map() which pre-fetches all device types once and returns a {device_type_id: manufacturer_name} map. The manufacturer resolution now has three tiers:

  1. Direct extraction from mfr_obj (if Nautobot includes it)
  2. UUID lookup in the manufacturers map
  3. UUID lookup via device type (new — covers Nautobot 3.x brief device_type objects)

@Jackass4life

Jackass4life commented Mar 23, 2026

Copy link
Copy Markdown
Owner

@copilot

=================================== FAILURES ===================================
_____________ TestLiveLocationDetail.test_device_fields_populated ______________

self = <tests.test_nautobot_live.TestLiveLocationDetail object at 0x7efc219994c0>
live_client = <FlaskClient <Flask 'app'>>

def test_device_fields_populated(self, live_client):
    loc_id = self._location_id(live_client, "Copenhagen DC")
    data = live_client.get(f"/api/locations/{loc_id}/detail").get_json()
    router = next(
        (d for d in data["devices"] if d["name"] == "cph-core-rt01"),
        None,
    )
    assert router is not None
  assert router["manufacturer"] == "Cisco"

E AssertionError: assert '' == 'Cisco'
E
E - Cisco

tests/test_nautobot_live.py:183: AssertionError
------------------------------ Captured log call -------------------------------
WARNING app:app.py:305 Could not fetch ASNs for location f5ad44f3-def0-491f-bb4e-0153c24b1496: 404 Client Error: Not Found for url: http://localhost:8080/api/ipam/asns/?location_id=f5ad44f3-def0-491f-bb4e-0153c24b1496&limit=200&offset=0
=========================== short test summary info ============================
FAILED tests/test_nautobot_live.py::TestLiveLocationDetail::test_device_fields_populated - AssertionError: assert '' == 'Cisco'

  • Cisco
    ========================= 1 failed, 20 passed in 6.42s =========================
    Error: Process completed with exit code 1.

@Jackass4life

Copy link
Copy Markdown
Owner

@copilot

Following error:

=================================== FAILURES ===================================
_____________ TestLiveLocationDetail.test_device_fields_populated ______________

self = <tests.test_nautobot_live.TestLiveLocationDetail object at 0x7efc219994c0>
live_client = <FlaskClient <Flask 'app'>>

def test_device_fields_populated(self, live_client):
    loc_id = self._location_id(live_client, "Copenhagen DC")
    data = live_client.get(f"/api/locations/{loc_id}/detail").get_json()
    router = next(
        (d for d in data["devices"] if d["name"] == "cph-core-rt01"),
        None,
    )
    assert router is not None
  assert router["manufacturer"] == "Cisco"

E AssertionError: assert '' == 'Cisco'
E
E - Cisco

tests/test_nautobot_live.py:183: AssertionError
------------------------------ Captured log call -------------------------------
WARNING app:app.py:305 Could not fetch ASNs for location f5ad44f3-def0-491f-bb4e-0153c24b1496: 404 Client Error: Not Found for url: http://localhost:8080/api/ipam/asns/?location_id=f5ad44f3-def0-491f-bb4e-0153c24b1496&limit=200&offset=0
=========================== short test summary info ============================
FAILED tests/test_nautobot_live.py::TestLiveLocationDetail::test_device_fields_populated - AssertionError: assert '' == 'Cisco'

  • Cisco
    ========================= 1 failed, 20 passed in 6.42s =========================
    Error: Process completed with exit code 1.

…builder

In Nautobot 3.0.9, the manufacturer sub-object returned inside
/api/dcim/device-types/ list responses is itself a brief nested object
containing only id+url (no name, no display). This caused
_build_device_type_manufacturer_map() to store empty strings and the
manufacturer field to remain '' even after the device-type lookup fix.

Updated _build_device_type_manufacturer_map() to also call
_build_id_name_map("dcim/manufacturers/") and use it as a fallback
when _nested_str() can't find a name directly in the manufacturer
sub-object. Now the resolution chain is:
  1. _nested_str(mfr_obj, "name", "display") — inline in device_type
  2. mfr_map.get(mfr_id) — UUID lookup via manufacturer endpoint
  3. dt_mfr_map.get(dt_id) — device_type UUID → manufacturer name

All 61 existing tests still pass.

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/315bcc3d-b421-43f0-8ad1-f3cfa141e983

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot

Following error:
...

Fixed in b79ffae.

The previous fix resolved the device-type → manufacturer mapping but missed a secondary issue: Nautobot 3.0.9 also returns the manufacturer field inside /api/dcim/device-types/ list responses as a brief object (only id+url, no name/display). So _build_device_type_manufacturer_map() was storing empty strings.

Updated the function to also build a mfr_map from /api/dcim/manufacturers/ and use it as an inner fallback, giving a complete four-tier resolution chain:

  1. Inline name/display from the manufacturer object inside the device response
  2. UUID lookup via the manufacturer list
  3. UUID lookup via the device-type → manufacturer map (now correctly populated)

@Jackass4life

Copy link
Copy Markdown
Owner

New error:

=================================== FAILURES ===================================
_____________ TestLiveLocationDetail.test_device_fields_populated ______________

self = <tests.test_nautobot_live.TestLiveLocationDetail object at 0x7f233d2dd850>
live_client = <FlaskClient <Flask 'app'>>

def test_device_fields_populated(self, live_client):
    loc_id = self._location_id(live_client, "Copenhagen DC")
    data = live_client.get(f"/api/locations/{loc_id}/detail").get_json()
    router = next(
        (d for d in data["devices"] if d["name"] == "cph-core-rt01"),
        None,
    )
    assert router is not None
    assert router["manufacturer"] == "Cisco"
  assert router["device_type"] == "ASR1001-X"

E AssertionError: assert '' == 'ASR1001-X'
E
E - ASR1001-X

tests/test_nautobot_live.py:184: AssertionError
------------------------------ Captured log call -------------------------------
WARNING app:app.py:315 Could not fetch ASNs for location 0e8da9a8-5f31-4c72-aac3-ce9254aac50f: 404 Client Error: Not Found for url: http://localhost:8080/api/ipam/asns/?location_id=0e8da9a8-5f31-4c72-aac3-ce9254aac50f&limit=200&offset=0
=========================== short test summary info ============================
FAILED tests/test_nautobot_live.py::TestLiveLocationDetail::test_device_fields_populated - AssertionError: assert '' == 'ASR1001-X'

  • ASR1001-X
    ========================= 1 failed, 20 passed in 6.33s =========================
    Error: Process completed with exit code 1.
    @copilot

Nautobot 3.0.9 returns brief nested device_type objects (id+url only)
inside device list responses, so _nested_str(device_type, "model",
"display") always returned "".

Renamed _build_device_type_manufacturer_map() to _build_device_type_maps()
which now returns a tuple (dt_mfr_map, dt_model_map) by reading the
"model" field from each device-type entry in /api/dcim/device-types/.

The device_type field in get_location_detail() now falls back to
dt_model_map.get(dt_id) after _nested_str(), completing the resolution:
  1. _nested_str(dt, "model", "display") — inline in device response
  2. dt_model_map.get(dt_id)             — UUID lookup via device-types

All 61 existing tests still pass.

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/4476f3b2-6bc6-4afe-849d-c8eeb2c1bcee

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

New error:

=================================== FAILURES ===================================
...

Fixed in 647f6d4.

Same root cause as manufacturer: Nautobot 3.0.9 returns brief device_type objects (only id+url, no model field) inside device list responses.

Renamed _build_device_type_manufacturer_map() to _build_device_type_maps() which now returns a (dt_mfr_map, dt_model_map) tuple, reading the model field from /api/dcim/device-types/. The device_type field now falls back to dt_model_map.get(dt_id) when _nested_str() finds nothing inline. All 61 existing tests still pass.

@Jackass4life

Copy link
Copy Markdown
Owner

@copilot
logs_61632978527.zip
Look at the errors.

… in devices

Co-authored-by: Jackass4life <94110786+Jackass4life@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Jackass4life/Nautobot-maps/sessions/4dd7254d-f6bf-4899-9ed8-15af35e75927

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot
logs_61632978527.zip
Look at the errors.

Fixed in ffbf5ea.

Same pattern as manufacturer/device_type: Nautobot 3.0.9 returns the role nested object inside device list responses as a brief object (only id+url, no name/display). Added role_map = _build_id_name_map("extras/roles/") and a fallback lookup for the role field — matching the same pattern already used for manufacturer, tenant, and status.

@Jackass4life
Jackass4life merged commit 230ccf3 into main Mar 23, 2026
3 checks passed
@Jackass4life
Jackass4life deleted the copilot/create-nautobot-env-for-testing branch March 24, 2026 07:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feature: create real nautobot env for testing/validering

2 participants