Conversation
samiib
requested review from
akinross,
allenrobel,
anvitha-jain,
gmicol,
lhercot,
mikewiebe,
mtarking,
sajagana and
shrsr
as code owners
August 20, 2026 02:23
samiib
force-pushed
the
fix_release_workflow
branch
from
August 20, 2026 02:32
18eba9f to
664c933
Compare
mikewiebe
reviewed
Aug 21, 2026
mikewiebe
reviewed
Aug 21, 2026
mikewiebe
reviewed
Aug 21, 2026
mikewiebe
reviewed
Aug 21, 2026
…ml release_script version.
…tion up to a specific commit/tag.
samiib
force-pushed
the
fix_release_workflow
branch
2 times, most recently
from
August 26, 2026 04:36
4cfbf1b to
b24ec2d
Compare
samiib
force-pushed
the
fix_release_workflow
branch
from
August 26, 2026 04:45
b24ec2d to
b773e67
Compare
allenrobel
reviewed
Aug 31, 2026
allenrobel
left a comment
Collaborator
There was a problem hiding this comment.
Code review
The workflow changes look good — the compare_ref/target_version inputs are wired exactly to what the pinned release_script commit (edd5e186) reads, and the added permissions block matches what the script needs. One inline finding below on the deleted changelog fragment, plus one note on the PR body:
- The PR body's "Related Issue(s)" section is still the template placeholder — per the team convention, every PR should link an issue with
Closes #N(DCNE-890 in the title doesn't auto-link/close anything on GitHub). Also, none of the "Related ND API Resource Category" checkboxes is checked —otherwould apply for a CI-only change.
🤖 Generated with Claude Code
allenrobel
added a commit
that referenced
this pull request
Sep 10, 2026
…commit subjects The release workflow (changelog-generation.yml -> ciscoecosystem/release_script) builds changelogs/changelog.yaml from the squash-merge commit messages and never reads changelogs/fragments/. No release entry references a fragment, none of the recent merged PRs added one, and PR #518 removes the only remaining fragment on develop, so this one would sit unused. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtjGrZGWEtY2dfDPuVVfkb
allenrobel
added a commit
that referenced
this pull request
Sep 11, 2026
…commit subjects The release workflow (changelog-generation.yml -> ciscoecosystem/release_script) builds changelogs/changelog.yaml from the squash-merge commit messages and never reads changelogs/fragments/. No release entry references a fragment, none of the recent merged PRs added one, and PR #518 removes the only remaining fragment on develop, so this one would sit unused. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtjGrZGWEtY2dfDPuVVfkb
allenrobel
added a commit
that referenced
this pull request
Sep 14, 2026
… path (#547) * Finalize controller-accepted mutations on every nd_interface_* failure path The failure-path finalizer added to nd_interface_loopback in the #403 review (deploy_accepted_mutations) covered only that module. The nine sibling interface modules share the same stranding bug: when a task with config_actions.deploy: true fails after the controller has already accepted some mutations, the accepted subset stays staged-but-undeployed, and a retry classifies those interfaces as no_diff and never deploys them. Lift the module-side helper into base_interface.py as finalize_accepted_intent() (orchestrator-shaped signature so the orchestrator layer does not import the state machine) and call it from every except handler in all ten nd_interface_* modules. The three modules that carry only the NDStateMachineError handler (svi, subinterface_managed, subinterface_unmanaged) get it there; their missing broad handler is tracked by #379. Docs: carry the loopback deploy-option sentence about the accepted subset over to the nine siblings. Tests: finalize_accepted_intent unit tests (base_interface 00680-00685) and a parametrized module-level test that drives each module's main() with AnsibleModule and NDStateMachine stand-ins, covering both handlers, deploy: false, and check mode. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H5ogXuT7RjKHTF8Ty5RXpL * Wrap ACCEPTED_NOTE literal to satisfy CI pep8 E501 CI started running once #403 merged and this PR retargeted to develop; its pep8 sanity check flagged the 172-character string at line 62 (limit 160). Split it with implicit concatenation. No behavior change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LMnfP2KGp9yEo4XnFdBkZM * Cover nd_interface_ethernet_routed in the finalize_accepted_intent module tests PR #550 shipped the routed module with the same finalize_accepted_intent helper wired into both of its handlers, so add it to TWO_HANDLER_MODULES now that it is on develop. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019hBwZnSG7sG8K9zYuGKfYn * Reconcile mixed-207 removes and skip the finalizer after a failed normal deploy Two failure-path finalizer gaps raised in the PR #547 review: - remove_pending: interfaceActions/remove answers HTTP 207 with an independent per-interface status, so one removal can succeed while another is rejected. The queue was cleared only on whole-request success, so an accepted removal stayed queued, was classified as unsent by _unsent_delete_pairs, and was excluded from the failure-path deploy. On retry the interface is already gone from controller inventory and is never deployed. On a failed request, dequeue the pairs the fresh response reports as an exact `success`, matched on (interfaceName, switchId) so the same name on two switches is told apart, and name them in the raised message. The response is consulted only when the request recorded a new one, so a sender exception that leaves the previous 207 in place (issue #554) cannot dequeue anything. - deploy_accepted_mutations: the normal deploy_pending runs inside the same try as everything else and retains its queue on failure, so the broad handler's finalizer resubmitted the identical deployment. Track the stage with _deploy_attempted and return early once the normal deploy has been sent. Tests: mixed 207 with a duplicate name on two switches, untrusted item statuses, stale-response freshness guard, unit-level no-resubmit, and a module-boundary test asserting exactly one deploy request when the normal deploy fails. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtjGrZGWEtY2dfDPuVVfkb * Drop the changelog fragment; this repo's changelog is generated from commit subjects The release workflow (changelog-generation.yml -> ciscoecosystem/release_script) builds changelogs/changelog.yaml from the squash-merge commit messages and never reads changelogs/fragments/. No release entry references a fragment, none of the recent merged PRs added one, and PR #518 removes the only remaining fragment on develop, so this one would sit unused. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtjGrZGWEtY2dfDPuVVfkb * Finalize accepted intent in the broad handlers PR #551 added to svi and subinterface modules PR #551 landed the broad `except Exception` fallback in nd_interface_svi, nd_interface_subinterface_managed and nd_interface_subinterface_unmanaged after this branch was written, so those three handlers lacked the finalize_accepted_intent call the other eight modules carry. Add it, and drop the one-handler/two-handler split from the module tests now that every interface module carries both handlers. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LWWfs7x2encjhvZSQyc8MY --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related Issue(s)
Proposed Changes
compare_refworkflow_dispatch input (defaults todevelop), instead of hard-codingdevelopin both the collection checkout step and the release script's compare URL. This allows generating a changelog against any branch, tag, or commit SHA.release_scriptcheckout to a specific commit (c3405128f9ff87cf5231cf2aac8e03424921b1a6) rather than a mutable ref, so the workflow always runs a known-good version of the automation script.target_versionworkflow_dispatch input, allowing the release version to be manually overridden (e.g.2.0.0) instead of relying solely on the automatically calculated version derived from bug/minor/major commit types.python-versioninput being unintentionally parsed as3.1instead of3.10due to YAML interpreting the unquoted value as a float; it is now quoted as a string.Test Notes
Note: The release PR will still need manual adjustment after generation.
Cisco Nexus Dashboard Version
Related ND API Resource Category
Checklist