nd_interface_loopback: align deploy control to config_actions.deploy - #366
Merged
Conversation
allenrobel
requested review from
akinross,
anvitha-jain,
gmicol,
lhercot,
mikewiebe,
mtarking,
sajagana,
samiib and
shrsr
as code owners
June 30, 2026 01:10
There was a problem hiding this comment.
Pull request overview
Aligns nd_interface_loopback’s “deploy after mutation” toggle with the interface-module convention by nesting it under config_actions.deploy instead of a flat top-level deploy option, and updates the loopback integration scenario accordingly.
Changes:
- Replace module option
deploy: boolwithconfig_actions: { deploy: bool }in DOCUMENTATION/EXAMPLES and inargument_spec. - Update the module runtime read site to set
model_orchestrator.deployfromconfig_actions.deploy(defaulting totrue). - Update the loopback integration “no-deploy” task to use the new
config_actions.deployshape.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
plugins/modules/nd_interface_loopback.py |
Moves deploy control under config_actions.deploy in docs, examples, argspec, and orchestration setup. |
tests/integration/targets/nd_interface_loopback/tasks/merged.yaml |
Updates the no-deploy integration task to pass config_actions: { deploy: false }. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
from
June 30, 2026 16:20
c057fba to
cdfefda
Compare
allenrobel
added a commit
that referenced
this pull request
Jul 2, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
marked this pull request as draft
July 2, 2026 19:21
allenrobel
added a commit
that referenced
this pull request
Jul 3, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
from
July 3, 2026 01:34
443250a to
6975466
Compare
allenrobel
added a commit
that referenced
this pull request
Jul 9, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
from
July 9, 2026 16:55
6975466 to
a943ecb
Compare
allenrobel
added a commit
that referenced
this pull request
Jul 13, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
added a commit
that referenced
this pull request
Aug 11, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
from
August 11, 2026 01:24
c802114 to
5ef99a7
Compare
allenrobel
added a commit
that referenced
this pull request
Aug 11, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
from
August 11, 2026 20:54
5ef99a7 to
aec3811
Compare
allenrobel
added a commit
that referenced
this pull request
Aug 11, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
2 times, most recently
from
August 13, 2026 19:24
66e7309 to
a92b51d
Compare
allenrobel
added a commit
that referenced
this pull request
Aug 13, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
This was referenced Aug 13, 2026
mikewiebe
reviewed
Aug 20, 2026
allenrobel
added a commit
that referenced
this pull request
Aug 22, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
from
August 22, 2026 23:01
a92b51d to
84eb53b
Compare
allenrobel
added a commit
that referenced
this pull request
Aug 24, 2026
Deployment is opt-in: `config_actions.deploy` now defaults to `False` in DOCUMENTATION and `argument_spec`, so loopback changes are staged on the controller and only pushed to switches when the task sets `config_actions.deploy: true`. Aligns with controller behavior and the NaC requirement. - EXAMPLES that push config now set `config_actions.deploy: true` explicitly - New unit test asserts DOCUMENTATION and `argument_spec` agree on the `False` default Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F7fNh2q6RyHbb37T67hkN6
This was referenced Aug 24, 2026
allenrobel
added a commit
that referenced
this pull request
Aug 24, 2026
…to false Deployment is now opt-in across the interface module family: `NDBaseInterfaceOrchestrator.deploy` defaults to `False`, and the eight `nd_interface_*` modules that still declare `config_actions` inline (ethernet_trunk_host, port_channel_access, port_channel_trunk_host, subinterface_managed, subinterface_unmanaged, svi, vpc_access, vpc_trunk_host) default `config_actions.deploy` to `False` in both DOCUMENTATION and `argument_spec`. Changes are staged on the controller and only pushed to switches when the task sets `config_actions.deploy: true`. This aligns with controller behavior and the NaC requirement raised on PRs #366/#367, and follows the pattern PR #504 established for the policy modules. `nd_interface_loopback` and `nd_interface_ethernet_access` pick up the same default via the shared fragment in PRs #366 and #367. - EXAMPLES that push config now set `config_actions.deploy: true` explicitly - New parametrized unit test asserts DOCUMENTATION and `argument_spec` agree on the `False` default - Orchestrator tests that exercise `deploy_pending` now opt in explicitly Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F7fNh2q6RyHbb37T67hkN6
allenrobel
added a commit
that referenced
this pull request
Aug 24, 2026
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
allenrobel
added a commit
that referenced
this pull request
Aug 24, 2026
Deployment is opt-in: `config_actions.deploy` now defaults to `False` in DOCUMENTATION and `argument_spec`, so loopback changes are staged on the controller and only pushed to switches when the task sets `config_actions.deploy: true`. Aligns with controller behavior and the NaC requirement. - EXAMPLES that push config now set `config_actions.deploy: true` explicitly - New unit test asserts DOCUMENTATION and `argument_spec` agree on the `False` default Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F7fNh2q6RyHbb37T67hkN6
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
from
August 24, 2026 23:01
8e00969 to
664e21e
Compare
Replace the flat top-level `deploy` boolean with a `config_actions` dict carrying a single `deploy` key, matching the convention already used by the unmerged interface modules (svi, ethernet_trunk_host, subinterface_managed, subinterface_unmanaged). Changes DOCUMENTATION, EXAMPLES, the argument_spec, and the read site. No deprecation/changelog fragment: the module is unreleased (released changelog stops at 1.2.0; galaxy 1.5.0), so nothing shipped is broken. Closes #364 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H5FaXWEXvkgJUrUBZbfdFA
The module has not shipped in a release; 1.4.0 predates its actual availability. Align version_added with the current collection version so the config_actions change is not a post-release break. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Deb5UWoTfAZa6kq7khAEu6
Now that #387 is merged, build the `config_actions` block via `config_actions_spec(include=("deploy",))` from `nd_argument_specs.py` instead of the hand-written dict (which the fragment reproduces byte-for-byte), and re-point the `nd_argument_spec` import from the legacy `nd.py` to `nd_argument_specs.py` — completing the #384 task-1 checkbox for this module. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TnSktMFZGRafkf5GbuBwwm
`config_actions_spec()` now defaults `deploy` to `False` so that modules composing the shared fragment stage changes on the controller and only push to switches when the user opts in with `config_actions.deploy: true`. This matches the controller's own behavior and the NaC requirement (see PR #504 for the same change on the policy modules). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F7fNh2q6RyHbb37T67hkN6
Deployment is opt-in: `config_actions.deploy` now defaults to `False` in DOCUMENTATION and `argument_spec`, so loopback changes are staged on the controller and only pushed to switches when the task sets `config_actions.deploy: true`. Aligns with controller behavior and the NaC requirement. - EXAMPLES that push config now set `config_actions.deploy: true` explicitly - New unit test asserts DOCUMENTATION and `argument_spec` agree on the `False` default Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F7fNh2q6RyHbb37T67hkN6
allenrobel
force-pushed
the
align-loopback-config-actions-deploy
branch
from
August 25, 2026 01:39
664e21e to
2bf23e6
Compare
Collaborator
Author
|
Merged after approvals by @gmicol and @mikewiebe |
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.
This PR and #403 (loopback
policy_typediscriminated union) both modifyplugins/modules/nd_interface_loopback.pyin the same regions (options block, EXAMPLES,main()), so textual conflicts between them are guaranteed. #403 is already held until #422 merges and owes a substantial rebase at that point (per the merge-ordering section in its body). Merging this small PR first lets #403 absorb theconfig_actions.deploychange in that one rebase it already owes. The reverse order works but is more expensive: this PR would have to re-express deploy control against the union-era module (which by then documents nine policy templates across two OSes).Translation:
Related Issue(s)
Closes #364
Also checks off the #384 task-1 box for this module: its argspec imports now come from
nd_argument_specs.pyinstead of the legacynd.py.Proposed Changes
Align
nd_interface_loopbackdeploy control with the convention used by the unmerged interfacemodules: replace the flat top-level
deployboolean with aconfig_actionsdict whose single keyis
deploy.deploy:option replaced byconfig_actions:(dict) with adeploysuboption (type: bool, defaulttrue).deploy: false→config_actions: { deploy: false }.argument_spec:deploy=dict(...)→config_actions_spec(include=("deploy",)), the shared fragment added by Relocate nd_argument_spec to nd_argument_specs.py; add config_actions_spec fragment #387(reproduces the deploy-only block hand-written in the sibling interface modules byte-for-byte).
nd_argument_specimport re-pointed from legacynd.pytond_argument_specs.py(Tracking: Gen-3 argspec imports via nd_argument_specs.py #384 task 1 for this module).config_actions.deploy(defaulttrue) and setsorchestrator.deploy.version_addedcorrected to2.0.0(review feedback).Deploy scope and batching are unchanged (interface-scope
interfaceActions/deploy, one bulk call per run);only the toggle moves under
config_actions.No deprecation/changelog fragment: the module is unreleased (released changelog stops at 1.2.0;
galaxy 1.5.0), so nothing shipped is broken.
Test Notes
ndblack --check/ndisort --check-only: clean.ndpylint: 10.00/10;ndmypy: only the pre-existing environmentalansible_collections.*import-resolution error on the unchanged import block; no new findings from this change.
ndtest --test validate-modules plugins/modules/nd_interface_loopback.py: passes (exit 0) —confirms DOCUMENTATION
suboptionsmatch the fragment-built argspecoptions.ndpytest tests/unit/module_utils/orchestrators/test_loopback_interface.py tests/unit/module_utils/test_nd_argument_specs.py: 28 passed.merged.yamlno-deploy task updated to the new param shape.Cisco Nexus Dashboard Version
4.2.1
Related ND API Resource Category
Checklist
🤖 Generated with Claude Code