mirror of
https://github.com/ivenator1/proxmox-management.git
synced 2026-07-18 11:28:21 +08:00
[PR #15] [MERGED] Remove legacy Ansible monolith — driver.run_fleet() is the entrypoint #15
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
ivenator1/proxmox-management#15
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/ivenator1/proxmox-management/pull/15
Author: @ivenator1
Created: 6/3/2026
Status: ✅ Merged
Merged: 6/3/2026
Merged by: @ivenator1
Base:
testing← Head:claude/plan-remaining-tasks-Ry1tk📝 Commits (10+)
a95585aMerge pull request #12 from ivenator1/testing6510988feat: Phase 4a — vm_update + remote_host_update Python flowsa794decfix: VM rollback uses node_executor; HA-aware node discovery via pvesh405935dfix: use if/elif/else for pkg manager detection to avoid bash && || precedence bug8b68ee2feat: add LXC/VM sub-headings in Discord briefing per node8995e66feat: show package upgrade count for VMs in Discord briefingdde870efix: suppress pkg_count in dry-run — apt -s counts pending not upgraded2572b15docs: update roadmap and CLAUDE.md for Phase 4a completion4a0f1f9Merge branch 'main' into phase-4-vm-remote-node-flowsb77b729Merge pull request #13 from ivenator1/phase-4-vm-remote-node-flows📊 Changes
109 files changed (+4281 additions, -5134 deletions)
View changed files
📝
.ansible-lint(+3 -15)📝
.github/workflows/ci.yml(+8 -10)📝
CLAUDE.md(+96 -129)📝
README.md(+42 -43)📝
ansible/primitives/reboot_host.yml(+1 -0)📝
ansible/primitives/snapshot.yml(+7 -6)📝
docs/migration-roadmap.md(+234 -63)➖
fleet-update.yml(+0 -387)📝
hosts.ini.example(+5 -2)➕
proxmox_fleet/briefing.py(+117 -0)📝
proxmox_fleet/changes.py(+42 -0)📝
proxmox_fleet/cli.py(+38 -93)📝
proxmox_fleet/driver.py(+398 -14)📝
proxmox_fleet/executor.py(+4 -3)➕
proxmox_fleet/flows/node.py(+196 -0)➕
proxmox_fleet/flows/remote.py(+171 -0)➕
proxmox_fleet/flows/vm.py(+253 -0)➕
proxmox_fleet/history.py(+100 -0)📝
proxmox_fleet/inventory.py(+123 -0)📝
proxmox_fleet/models/settings.py(+34 -1)...and 80 more files
📄 Description
Summary
Completes the Ansible→Python migration by removing the legacy monolith now that all phases are ported and proven in Python.
driver.run_fleet()is the single end-to-end orchestrator thefleet-updateCLI calls:It threads one in-memory
FleetStatethrough each phase (_merge_state()folds them together — the in-Python replacement for the old "Merge Python state" plays) and returns exit code 1 if any phase recorded a failure.Removed
fleet-update.ymlmonolith and allskip_phase_*/--use-*-flowwiringroles/{custom,lxc,vm,remote}_updatetasks/+defaults/(logic lives inflows/*)tasks/—notify.yml,persist-history.yml,fleet-state-append.yml,check-window.yml(all ported tonotifiers.py/history.py/models/state.py/window.py)templates/discord_briefing.j2(ported byte-for-byte tobriefing.py)tests/conftest.pyJinja shim + 15 Jinja-shim parity testsdry_run/rescue/stopped/template; vm; remote). The flow-driven scenarios (lxcnormal/rollback/snapfail, custom ×6) remain.Notable
tests/unit/data/briefing_golden.json, seeded from the live.j2before deletion) instead of the Jinja shim — the byte-for-byte guarantee survives the template's removal.fleet-update [--check] [-e key=val ...]→driver.run_fleet().run_fleet+_merge_statewith unit tests (orchestration, merge, pre-flight abort).ansible-lint/syntax-checknow targetansible/primitives/;name[casing]demoted to a warning (primitives use lowercase action names).README.md,CLAUDE.md,docs/migration-roadmap.md(status → ✅ complete).Verification
pytest tests/unit/→ 426 passedpython -m mypy proxmox_fleet/→ cleanyamllint .→ cleanansible-lint ansible/primitives/→ clean in CI (only local failure iscommunity.proxmoxnot installable in the sandbox)83 files changed, +362 / −5345.
https://claude.ai/code/session_01JcWxUwyK4NDGjx5WZKpaZm
Generated by Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
[PR #15] Remove legacy Ansible monolith — driver.run_fleet() is the entrypointto [PR #15] [MERGED] Remove legacy Ansible monolith — driver.run_fleet() is the entrypoint