diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 9df439b..06b3385 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -659,7 +659,23 @@ but `maas-role-tags.sh` CREATES `control`/`compute`/`storage`/`juju-controller-vr1-dc0` (`:38`, `:125`, `:184`) -- and it REFUSES while any pinned boot MAC has no MAAS record, so it cannot run before all ten are enlisted. The gate enforces the ordering by itself. - **THE CANARY'S CARVE IS THE REMAINING WORK, and it is now visible:** `enp1s0` is correctly + **>>> ALL TEN dc0 MACHINES ARE `Ready` IN THE PER-DC REGION, 2026-07-30 22:53. <<<** + Capture `docs/audit/dc0-region-machines-ready-20260730.txt`. Shapes match D-121 Option C + EXACTLY -- 3x 16cpu/65536 control, 2x 12cpu/49152 compute, 4x 8cpu/24576 storage, 1x + 4cpu/8192 juju controller -- every one with 6 interfaces, every one matched to its libvirt + domain by PINNED BOOT MAC. Enlisted in three batches of three (plus the canary); each + batch: `virsh start` -> self-enlist -> `maas-node-power.sh --commit` -> `commission`. + **NAMED GATE: `maas-role-tags.sh check vr1-dc0` = `0 role tag(s) missing, 0 node(s) + needing a tag, 0 node(s) not in MAAS`, PASS, EXIT 0.** It created `control`, `compute`, + `storage` and `juju-controller-vr1-dc0` and tagged all ten, each write read back. + **GAP CAUGHT BY DIFFING AGAINST THE PRE-MIGRATION SNAPSHOT: `maas-role-tags.sh` does NOT + own the `openstack-vr1-dc0` PLACEMENT tag** -- its `ROLES` set is control/compute/storage + plus `juju-controller-`, and the recon had already flagged that this tag has no + usable creator. Without it `bundle.yaml` placement and `dc-node-v6-carve.py`'s site + membership would both have failed. Applied to the NINE role nodes and deliberately NOT to + the controller, which is exactly the Office1 pre-migration shape. Final tag state matches + the old region row-for-row. + **THE CARVE IS THE REMAINING WORK, and it is now visible:** `enp1s0` is correctly on `fabric-0` (metal-admin -- it PXE'd there) with an AUTO link on `10.12.8.0/22`, while `enp2s0..enp6s0` each landed on a FRESH auto-created fabric (`fabric-7..11`) with `link_up` and no subnet. That is exactly the 60 NIC re-homes + 9 `br-ex` bridges + 54 statics that diff --git a/docs/audit/dc0-region-machines-ready-20260730.txt b/docs/audit/dc0-region-machines-ready-20260730.txt new file mode 100644 index 0000000..ffe22b7 --- /dev/null +++ b/docs/audit/dc0-region-machines-ready-20260730.txt @@ -0,0 +1,44 @@ +dc0 MACHINE MIGRATION COMPLETE -- all ten Ready in the per-DC region (D-132 q1) +Captured 2026-07-30. Region http://10.12.8.6:5240/ (profile vr1-dc0-region). +========================================================================== + +-- region identity proven first -- +OK profile 'vr1-dc0-region' -> region with racks [hot-kid] (as expected) + +-- all ten machines, shapes vs D-121 Option C -- + t6kpe3 able-puma Ready cpu=12 mem=49152 ifaces=6 tags=compute,virtual + t7ymp6 amused-corgi Ready cpu=8 mem=24576 ifaces=6 tags=storage,virtual + 6q4syf civil-bug Ready cpu=8 mem=24576 ifaces=6 tags=storage,virtual + wpftxc gentle-raven Ready cpu=16 mem=65536 ifaces=6 tags=control,virtual + fg6gxm known-alpaca Ready cpu=8 mem=24576 ifaces=6 tags=storage,virtual + yws74f loyal-oyster Ready cpu=8 mem=24576 ifaces=6 tags=storage,virtual + 677cta mint-roughy Ready cpu=16 mem=65536 ifaces=6 tags=control,virtual + m3cgc7 pure-condor Ready cpu=12 mem=49152 ifaces=6 tags=compute,virtual + 6p8pbx square-insect Ready cpu=16 mem=65536 ifaces=6 tags=control,virtual + arfr7p subtle-grouse Ready cpu=4 mem=8192 ifaces=6 tags=juju-controller-vr1-dc0,virtual + total: 10 + +-- named gate: role tags -- +$ MAAS_PROFILE=vr1-dc0-region maas-role-tags.sh check vr1-dc0 + [ok] vr1-dc0-storage-03 yws74f -> tag 'storage' present + [ok] vr1-dc0-storage-04 6q4syf -> tag 'storage' present + [ok] vr1-dc0-juju-01 arfr7p -> tag 'juju-controller-vr1-dc0' present + + summary: 0 role tag(s) missing, 0 node(s) needing a tag, 0 node(s) not in MAAS +PASS: every ruled role tag exists and every node carries its role + EXIT = 0 + +== FINAL TAG STATE, after applying the openstack-vr1-dc0 placement tag == +(maas-role-tags.sh does NOT own this tag -- it covers control/compute/storage + and juju-controller- only. The gap was caught by diffing against the + pre-migration snapshot, where role nodes carried it and the controller did not.) + able-puma compute,openstack-vr1-dc0,virtual + amused-corgi openstack-vr1-dc0,storage,virtual + civil-bug openstack-vr1-dc0,storage,virtual + gentle-raven control,openstack-vr1-dc0,virtual + known-alpaca openstack-vr1-dc0,storage,virtual + loyal-oyster openstack-vr1-dc0,storage,virtual + mint-roughy control,openstack-vr1-dc0,virtual + pure-condor compute,openstack-vr1-dc0,virtual + square-insect control,openstack-vr1-dc0,virtual + subtle-grouse juju-controller-vr1-dc0,virtual diff --git a/docs/changelog-20260730-dc0-region-migration.md b/docs/changelog-20260730-dc0-region-migration.md index f6f748f..7e5d429 100644 --- a/docs/changelog-20260730-dc0-region-migration.md +++ b/docs/changelog-20260730-dc0-region-migration.md @@ -829,3 +829,44 @@ **Its own refusal enforces the correct ordering:** it refuses if any pinned boot MAC has no MAAS record, so it cannot run until all ten machines are enlisted. That is the gate working in the right direction -- no additional sequencing discipline required from the operator. + +--- + +## Item 23 -- ALL TEN MACHINES `Ready` IN THE PER-DC REGION (task 6 COMPLETE) + +Capture `docs/audit/dc0-region-machines-ready-20260730.txt`. Enlisted as canary + three +batches of three; each batch `virsh start` -> self-enlist -> `maas-node-power.sh --commit` +-> `commission`. + +**Shapes match D-121 Option C exactly**, and every machine is matched to its libvirt domain +by PINNED BOOT MAC rather than by hostname or system_id (both of which were re-minted): + +| role | count | shape | machines | +|---|---|---|---| +| control | 3 | 16cpu / 65536 | mint-roughy, gentle-raven, square-insect | +| compute | 2 | 12cpu / 49152 | pure-condor, able-puma | +| storage | 4 | 8cpu / 24576 | amused-corgi, civil-bug, known-alpaca, loyal-oyster | +| juju controller | 1 | 4cpu / 8192 | subtle-grouse | + +All ten carry 6 interfaces. **NAMED GATE: `maas-role-tags.sh check vr1-dc0` -> `0 role +tag(s) missing, 0 node(s) needing a tag, 0 node(s) not in MAAS`, PASS, EXIT 0.** + +**A GAP THAT ONLY A DIFF AGAINST THE PRE-MIGRATION SNAPSHOT WOULD CATCH.** +`maas-role-tags.sh` reported a clean PASS while the machines were still MISSING the +`openstack-vr1-dc0` placement tag -- because that tag is not in its `ROLES` set +(control/compute/storage + `juju-controller-`), and the recon had already noted it has +no usable creator anywhere in the repo. A green gate on an incomplete state, exactly the +class this repo keeps finding. + +Consequences had it shipped: `bundle.yaml` places units on `tags=openstack-vr1-dc0`, and +`dc-node-v6-carve.py:89-93` DIES if no machine carries `openstack-` -- so both the +deploy and the v6 carve would have failed, the second with a refusal that names the tag and +the first with an allocation failure that does not. + +Applied to the NINE role nodes and deliberately NOT to the juju controller. That asymmetry +is not a choice -- it reproduces the Office1 pre-migration snapshot row-for-row (`ace-robin` += `control,openstack-vr1-dc0,virtual`; `moved-troll` = `juju-controller-vr1-dc0,virtual`). +**The pre-migration identity snapshot earned its keep here:** without it there was nothing to +diff the rebuilt region against, and the missing tag would have surfaced as a deploy failure. + +**Revert.** `maas vr1-dc0-region tag update-nodes openstack-vr1-dc0 remove=` per node.