Skip to content

fix(proxmox): observe live VM config without false drift - #158

Merged
astrojerms merged 3 commits into
mainfrom
fix/proxmox-vm-observation
Oct 9, 2026
Merged

astrojerms merged 3 commits into
mainfrom
fix/proxmox-vm-observation

Conversation

@astrojerms

@astrojerms astrojerms commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Changes

  • Accept numeric JSON strings in Proxmox VM configuration and propagate configuration-read failures.
  • Observe native VM settings instead of partial runtime inventory.
  • Apply provider-owned drift comparison consistently across Get, List, Watch, and reconciliation, preserving real drift while excluding creation-only and write-only inputs.
  • Add regression coverage for decoding, configuration outages, named device matching, and automatic reconciliation; update documentation.
  • Satisfy modernization checks with allocation-free string iteration and standard slice helpers, including one existing graph expression.
  • Synchronize the existing GitOps periodic pull test cleanup so its temporary repository is not removed during in-flight git commands; no GitOps production API changes.

Verification

  • All six GitHub CI jobs passed on the final head: Build, Test (including full root/plugin race suites), Lint, Vet & Staticcheck, Format Check, and Modernize Check.
  • CI: https://github.com/astrojerms/openctl/actions/runs/37862783816
  • Existing periodic-pull scenario passed 20 race-enabled local runs after cleanup synchronization.
  • Local repository/plugin tests, focused race tests, and full build passed; Proxmox, operation graph, and controller server regressions passed after modernization changes.
  • Read-only Get/List against the homelab dev-system VM: zero drift; correct 8 vCPUs, 10 GiB RAM, and 300 GiB disk.
  • No infrastructure configuration was changed during verification; temporary controller stopped afterward.

Decode numeric configuration strings and propagate failed configuration reads. Observe native VM settings and use provider-owned comparison semantics across Get, List, Watch, and reconciliation, excluding creation-only and write-only inputs while preserving real drift. Cover numeric decoding, configuration outages, keyed device comparison, and automatic reconciliation with regressions. Verified with repository/plugin tests, focused race tests, a full build, and read-only Get/List against the homelab dev-system VM.
Use CutPrefix, SplitSeq, FieldsSeq, and slices.Contains in native VM observation. Replace the existing graph capacity expression with equivalent slices.Clip to satisfy the current analyzer. Verified Proxmox, operation graph, and controller server regressions.
Keep the pull context alive until cleanup acquires the repository lock, then cancel while no git command can be in flight. This prevents temporary directory removal from racing background writes without changing GitOps production behavior. Verified the periodic-pull scenario with 20 race-enabled runs.
@astrojerms
astrojerms merged commit 85ed036 into main Oct 9, 2026
6 checks passed
@astrojerms
astrojerms deleted the fix/proxmox-vm-observation branch October 9, 2026 00:09
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.

1 participant