test harness + Get-PCProfile: alias-aware lookups for rename reorg

Phase 5 + 6 of the gea-shopfloor-* rename.

Get-PCProfile.ps1: when the legacy profileKey ("Standard-Machine",
"CMM", etc.) is missing from siteConfig.pcProfiles, walks the alias
group and returns the first matching new key ("gea-shopfloor-collections",
"gea-shopfloor-cmm", etc.). Vice versa: a fleet PC writing the new
string finds its profile under the old key. Same alias map shape as
GE-Enforce + Install-FromManifest, kept in sync manually for now -
extract to shared file later if drift becomes a problem.

matrix.json: adds 3 new rows for gea-shopfloor-nocollections,
gea-shopfloor-common (Timeclock+Lab merge), gea-shopfloor-heattreat
(placeholder). Existing rows for legacy names retained; the new
verify-state alias resolution lets either be requested.

verify-state.ps1: Test-MatrixEntryMatches walks the alias map so
harness invocation with "Standard Machine" or "gea-shopfloor-collections"
both resolve to the same matrix row.

Smoke-tested via qga-as-SYSTEM on win11: legacy Standard/Machine,
new gea-shopfloor-collections, and new gea-shopfloor-nocollections
all return 10/10 pass against current VM state.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
cproudlock
2026-05-04 07:29:32 -04:00
parent 285d81edc4
commit c890e5b46c
3 changed files with 95 additions and 1 deletions

View File

@@ -56,6 +56,45 @@
"driftScenarios": []
},
{
"PCType": "gea-shopfloor-nocollections", "PCSubType": "",
"scopes": ["common", "gea-shopfloor-nocollections"],
"_comment": "Variant of Machine-with-collections that omits UDC. Manifest is identical to gea-shopfloor-collections minus the UDC application + UDC Webserver Settings + UDC Data Restore entries (3 dropped). Verifies eDNC + eMxInfo + FMS reg drift-catchers same as collections.",
"apps": [
{ "$ref": "common.all" },
{ "$ref": "common.fmsResolver" },
{ "$ref": "common.oracle" },
{ "$ref": "common.openText" },
{ "name": "FMS Primary host", "verify": { "method": "Registry", "path": "HKLM:\\SOFTWARE\\WOW6432Node\\GE Aircraft Engines\\Dnc\\FMS", "name": "FMSHostPrimary", "value": "wjfms3.ae.ge.com" } },
{ "name": "FMS Secondary host", "verify": { "method": "Registry", "path": "HKLM:\\SOFTWARE\\WOW6432Node\\GE Aircraft Engines\\Dnc\\FMS", "name": "FMSHostSecondary", "value": "10.233.112.158" } },
{ "name": "eDNC bundles NTLARS", "verify": { "method": "FileVersion", "path": "C:\\Program Files (x86)\\Dnc\\bin\\DncMain.exe", "value": "6.4.5.0" } }
],
"driftScenarios": []
},
{
"PCType": "gea-shopfloor-common", "PCSubType": "",
"scopes": ["common", "gea-shopfloor-common"],
"_comment": "Merged Timeclock+Lab type. Common-scope FMS hosts pin applies (PCTypes filter includes Standard, which aliases to common via the rename map). No machine-specific stack (no eDNC, UDC, FMS reg). Differences between Timeclock and Lab originally - now handled per-PC via Configure-PC.ps1's pcProfiles.gea-shopfloor-common.startupItems lookup.",
"apps": [
{ "$ref": "common.all" },
{ "$ref": "common.fmsResolver" },
{ "$ref": "common.oracle" },
{ "$ref": "common.openText" }
],
"driftScenarios": []
},
{
"PCType": "gea-shopfloor-heattreat", "PCSubType": "",
"scopes": ["common", "gea-shopfloor-heattreat"],
"_comment": "Placeholder - empty Applications array on the share manifest. Common-scope apps still apply per their PCTypes filters (most are *). When heattreat-specific apps are identified, drop them in apps/ and add Applications + matrix rows.",
"apps": [
{ "$ref": "common.all" }
],
"driftScenarios": []
},
{
"PCType": "CMM", "PCSubType": "",
"scopes": ["common", "cmm"],