[PR #7] [MERGED] Phase 2-wire: route custom_update through Python driver #8

Closed
opened 2026-06-02 20:54:28 +08:00 by ivenator1 · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/ivenator1/proxmox-management/pull/7
Author: @ivenator1
Created: 5/30/2026
Status: Merged
Merged: 5/30/2026
Merged by: @ivenator1

Base: mainHead: claude/phase-2-wire-plan-vhyqc


📝 Commits (2)

  • 43c1e34 Phase 2-wire: route custom_update through Python driver
  • 759f3ad Fix CI failures: ansible-lint, mypy, and molecule private_data_dir

📊 Changes

29 files changed (+1428 additions, -113 deletions)

View changed files

📝 .github/workflows/ci.yml (+2 -2)
📝 fleet-update.yml (+33 -6)
📝 proxmox_fleet/cli.py (+34 -0)
proxmox_fleet/deps.py (+48 -0)
proxmox_fleet/driver.py (+135 -0)
proxmox_fleet/inventory.py (+102 -0)
proxmox_fleet/models/settings.py (+36 -0)
📝 proxmox_fleet/models/state.py (+19 -0)
📝 proxmox_fleet/runner.py (+8 -0)
proxmox_fleet/window.py (+62 -0)
📝 pyproject.toml (+1 -0)
📝 roles/custom_update/molecule/custom_update_dry_run/converge.yml (+11 -19)
📝 roles/custom_update/molecule/custom_update_dry_run/prepare.yml (+15 -0)
📝 roles/custom_update/molecule/custom_update_noop/converge.yml (+10 -19)
📝 roles/custom_update/molecule/custom_update_noop/prepare.yml (+15 -0)
📝 roles/custom_update/molecule/custom_update_normal/converge.yml (+10 -20)
📝 roles/custom_update/molecule/custom_update_normal/prepare.yml (+15 -0)
📝 roles/custom_update/molecule/custom_update_per_step/converge.yml (+12 -8)
📝 roles/custom_update/molecule/custom_update_per_step/prepare.yml (+15 -0)
📝 roles/custom_update/molecule/custom_update_rescue/converge.yml (+10 -20)

...and 9 more files

📄 Description

Wires flows/custom.py as the execution path for Phase 0b behind the
--use-custom-flow flag, proves parity via reworked molecule tests, and
lays groundwork for retiring the custom_update Ansible role.

New modules:

  • proxmox_fleet/models/settings.py: GlobalSettings pydantic model for vars.yml
  • proxmox_fleet/deps.py: validate_depends_order() + dependency_failed()
  • proxmox_fleet/window.py: in_window() maintenance-window evaluator
  • proxmox_fleet/inventory.py: load_custom_hosts() from hosts.ini + host_vars/
  • proxmox_fleet/driver.py: run_custom_phase() — Phase 0a+0b in Python

Modified:

  • proxmox_fleet/models/state.py: add dump_for_ansible() with fleet_* key names
  • proxmox_fleet/cli.py: --use-custom-flow flag wires driver before playbook run
  • fleet-update.yml: gate Phase 0b on skip_phase_0b; add merge-state play
  • .github/workflows/ci.yml: add ansible-runner + pip install -e . to molecule job

Molecule rework (all 6 custom scenarios):

  • converge.yml drives mol_run_flow.py via RunnerExecutor (full stack test)
  • prepare.yml adds pip install -e . and writes /tmp/mol_hosts.ini
  • verify.yml unchanged (dump_for_ansible writes same fleet_* keys)

Tests: 338 unit tests green, mypy clean.

https://claude.ai/code/session_01UtMxscGj3sFSoBm2C3y4Jz


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/ivenator1/proxmox-management/pull/7 **Author:** [@ivenator1](https://github.com/ivenator1) **Created:** 5/30/2026 **Status:** ✅ Merged **Merged:** 5/30/2026 **Merged by:** [@ivenator1](https://github.com/ivenator1) **Base:** `main` ← **Head:** `claude/phase-2-wire-plan-vhyqc` --- ### 📝 Commits (2) - [`43c1e34`](https://github.com/ivenator1/proxmox-management/commit/43c1e3412190a3f548d5fab88868020bb0380b73) Phase 2-wire: route custom_update through Python driver - [`759f3ad`](https://github.com/ivenator1/proxmox-management/commit/759f3ad2b567f01daa28391ced01992785ed9b85) Fix CI failures: ansible-lint, mypy, and molecule private_data_dir ### 📊 Changes **29 files changed** (+1428 additions, -113 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/ci.yml` (+2 -2) 📝 `fleet-update.yml` (+33 -6) 📝 `proxmox_fleet/cli.py` (+34 -0) ➕ `proxmox_fleet/deps.py` (+48 -0) ➕ `proxmox_fleet/driver.py` (+135 -0) ➕ `proxmox_fleet/inventory.py` (+102 -0) ➕ `proxmox_fleet/models/settings.py` (+36 -0) 📝 `proxmox_fleet/models/state.py` (+19 -0) 📝 `proxmox_fleet/runner.py` (+8 -0) ➕ `proxmox_fleet/window.py` (+62 -0) 📝 `pyproject.toml` (+1 -0) 📝 `roles/custom_update/molecule/custom_update_dry_run/converge.yml` (+11 -19) 📝 `roles/custom_update/molecule/custom_update_dry_run/prepare.yml` (+15 -0) 📝 `roles/custom_update/molecule/custom_update_noop/converge.yml` (+10 -19) 📝 `roles/custom_update/molecule/custom_update_noop/prepare.yml` (+15 -0) 📝 `roles/custom_update/molecule/custom_update_normal/converge.yml` (+10 -20) 📝 `roles/custom_update/molecule/custom_update_normal/prepare.yml` (+15 -0) 📝 `roles/custom_update/molecule/custom_update_per_step/converge.yml` (+12 -8) 📝 `roles/custom_update/molecule/custom_update_per_step/prepare.yml` (+15 -0) 📝 `roles/custom_update/molecule/custom_update_rescue/converge.yml` (+10 -20) _...and 9 more files_ </details> ### 📄 Description Wires flows/custom.py as the execution path for Phase 0b behind the --use-custom-flow flag, proves parity via reworked molecule tests, and lays groundwork for retiring the custom_update Ansible role. New modules: - proxmox_fleet/models/settings.py: GlobalSettings pydantic model for vars.yml - proxmox_fleet/deps.py: validate_depends_order() + dependency_failed() - proxmox_fleet/window.py: in_window() maintenance-window evaluator - proxmox_fleet/inventory.py: load_custom_hosts() from hosts.ini + host_vars/ - proxmox_fleet/driver.py: run_custom_phase() — Phase 0a+0b in Python Modified: - proxmox_fleet/models/state.py: add dump_for_ansible() with fleet_* key names - proxmox_fleet/cli.py: --use-custom-flow flag wires driver before playbook run - fleet-update.yml: gate Phase 0b on skip_phase_0b; add merge-state play - .github/workflows/ci.yml: add ansible-runner + pip install -e . to molecule job Molecule rework (all 6 custom scenarios): - converge.yml drives mol_run_flow.py via RunnerExecutor (full stack test) - prepare.yml adds pip install -e . and writes /tmp/mol_hosts.ini - verify.yml unchanged (dump_for_ansible writes same fleet_* keys) Tests: 338 unit tests green, mypy clean. https://claude.ai/code/session_01UtMxscGj3sFSoBm2C3y4Jz --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
ivenator1 2026-06-02 20:54:28 +08:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ivenator1/proxmox-management#8
No description provided.