Newer
Older
openstack-caracal-dc-dc / docs / changelog-20260804-stage5-dc0-redeploy.md

Changelog 2026-08-04 -- Stage 5 dc0 clean redeploy (Path M teardown + ovn-central cert delivery fix)

Session-scoped (GA-R2). Status claims live in docs/CURRENT-STATE.md ONLY; this file is the review surface for the changes, each with evidence + a revert.

1. Path M model teardown of vr1-dc0 (operator-ruled, executed clean)

  • What: tore down the ovn-central-degraded vr1-dc0 model to redeploy clean with the Step 1.2b cert fix. Graceful juju destroy-model vr1-dc0 --no-prompt (no --force, agents alive) drained 36->15; wedged on 4 error units with failed teardown hooks; juju resolved --no-retry (operator-ruled) cleared them 15->3; the last 3 records went to machine-state STOPPED (the genuine M.2 agents-stopped stall) and juju destroy-model vr1-dc0 --force --no-wait --no-prompt (operator-ruled) finished 3->0.
  • Evidence: Model destroyed. rc=0. NO orphan (controller API healthy, no life:dead residue -- the 08-03 failure did not recur). M.5 cascade: MAAS profile dc0 shows 10 machines UNCHANGED (9 Ready + 1 Deployed controller VM). Proxies survived (dc-cache-proxy
    • dc-snap-proxy check dc0 both PASS). Full as-exec: docs/audit/stage5-dc0-redeploy-asexec-20260804.txt.
  • Revert: n/a (teardown intended); the model is rebuilt in this same work (add-model done).

2. scripts/dc-node-etchosts.sh -- DELIVERY BUG fixed: runcmd -> postruncmd

  • What & why: Step 1.2b's live juju model-config cloudinit-userdata=... was REJECTED: "runcmd not allowed, use preruncmd or postruncmd instead". juju reserves top-level runcmd for its own machine-agent bootstrap. The render emitted runcmd:; changed to postruncmd: (runs after juju's bootstrap, still long before the ovn-central cert hook). The 08-04 fix proved the CONCEPT live but its DELIVERY was never live-tested -- the harness graded cloud-init YAML validity (which accepts runcmd), not juju acceptance.
  • Harness reconcile: tests/dc-node-etchosts switched to postruncmd + NEW T10 asserts a juju-accepted key (postruncmd/preruncmd) and REJECTS bare runcmd -- the missing gate. 10/10 PASS; T10 MUTATION-PROVEN (revert to runcmd -> 5 FAIL incl T10).
  • Evidence: re-run live -> OK: set (juju accepted), check OK carries 10.12.12.0/22, rc=0. Re-staged to the dc0 rack, sha 107fc197 verified. repo-lint 0 fail.
  • Revert: git checkout <this commit>~ -- scripts/dc-node-etchosts.sh tests/dc-node-etchosts/run-tests.sh; live: juju model-config -m vr1-dc0 --reset cloudinit-userdata.

3. M.6 rebuild progress (add-model, gates)

  • juju add-model vr1-dc0 -> Added with credential vr1-dc0-cred. Artifact source inherited from model-defaults (apt-http-proxy :3142 + snap proxies :3129; apt-mirror empty -- D-135 amendment (b): dc0 on the caching PROXY, NOT the retired mirror; Step 3.5's mirror text is STALE -- runbook-fold gap, flagged). Spaces gate PASS 0 fatal. Egress gate 8/8 PASS. Dry-run gate PASS (9 machines, correct per-DC tags). Step 1.2b applied+checked (item 2).
  • Owed (logged, not done): DOCFIX/runbook-fold to correct phase-4 Step 3.5's mirror text to the D-135-(b) proxy shape; the dc-node-etchosts.sh delivery bug is a correction to the 08-04 "PROVEN + WIRED" record (CURRENT-STATE updated this commit).
  • Revert: juju destroy-model vr1-dc0 (empty/partial model).

Queued (operator request, NOT executed -- needs a ruling)

  • Tailscale install on DC0/DC1: intersects D-107 (workstation path), D-128 (base-leg is the DC reach), and the 2026-08-02 "VPN deferred to Roosevelt" ruling. Put as a GA-R5 exchange (likely a D-number) before any install. See the as-exec file's QUEUED section.