Skip to content

fix(launcher): verify service tags after the launcher PATCH - #60

Merged
github-actions[bot] merged 1 commit into
mainfrom
fix/255-verified-service-tag-patch
Nov 6, 2026
Merged

github-actions[bot] merged 1 commit into
mainfrom
fix/255-verified-service-tag-patch

Conversation

@znerol2

@znerol2 znerol2 commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The launcher stages for mxl, nmos-cpp and nmos-crosspoint now write NetBox service tags through one shared task, roles/netbox_catalog_common/tasks/patch_service_tags_verified.yml. The task:

  1. PATCHes the service's tags and custom fields.
  2. Reads the service back.
  3. Fails when the owned tag set on the record differs from the set it wrote.

This way, a concurrent change to owned tags after the PATCH becomes a loud failure instead of a silent wrong result.

Known limitation

A tag change between the stage read and the PATCH is still lost, and the task passes. Closing that gap needs a conditional write, and NetBox v4.5.0, the version the platform runs, has none. Scenario 5 of the new test documents the limitation, so a change that closes the gap has to flip that expectation on purpose. dmfdeploy/dmfdeploy#835 tracks using NetBox If-Match after the NetBox 4.6 upgrade.

Tests

  • New role test tests/service-tag-patch-verified.yml, wired into CI. It runs the real task against the stub NetBox, which can inject a second writer after the PATCH. It fails on the old bare-PATCH behavior at scenario 2.
  • yamllint, ansible-lint, syntax checks for every playbook, and bin/check-review-comments.sh all pass.

Closes dmfdeploy/dmfdeploy#255

The launcher stages for mxl, nmos-cpp and nmos-crosspoint now write
service tags through one shared task. It PATCHes the tags, reads the
service back, and fails when the owned tag set on the record differs
from the set it wrote. A concurrent change to owned tags after the
PATCH becomes a loud failure instead of a silent wrong result.

A tag change between the stage read and the PATCH is still lost,
because NetBox v4.5.0 has no conditional writes. A test documents that
limitation, and dmfdeploy/dmfdeploy#835 tracks closing it with NetBox
If-Match after the NetBox 4.6 upgrade.

Closes dmfdeploy/dmfdeploy#255

Claude-Session: https://claude.ai/code/session_01Rq1iSvhmEwbNUF43rtXVY4
Signed-off-by: znerol2 <6800371+znerol2@users.noreply.github.com>
@znerol2
znerol2 requested a review from a team as a code owner November 6, 2026 06:14
@github-actions
github-actions Bot enabled auto-merge (rebase) November 6, 2026 06:15

@lkirc lkirc left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No blocking findings on 61a8a04.

The verified readback uses the established owned-tag rule, preserves the provision-only workload scope, and the workflow addition leaves CI permissions and triggers unchanged.

@github-actions
github-actions Bot merged commit 022ef35 into main Nov 6, 2026
12 checks passed
@znerol2
znerol2 deleted the fix/255-verified-service-tag-patch branch November 8, 2026 17:44
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.

Launcher NetBox service-tags PATCH is unguarded read-modify-write — interleaved configure/finalise can corrupt lifecycle/workload tags

2 participants