fix(cmdb): canonical CI names — s7 rename map in seed generator [#705]

from-inventory.sh now applies the #307 s7 VM-name -> Tailscale-name
mapping (two-pass awk), so rr-middleware-01/preprod-proxmoxmailgw rows
emit canonical names. Seed regenerated; GLPI renames + dup purges done
in same session (78 CIs at parity).

Detail: https://projects.knownelement.com/issues/705
This commit is contained in:
2026-09-03 14:22:05 -05:00
parent 8666182d8b
commit a07d866116
2 changed files with 25 additions and 10 deletions
+22 -7
View File
@@ -21,7 +21,11 @@ echo 'category,ci_name,host_node,vmid,specs,ts_ip,extra_ip,tuned,access,extra,st
awk -F'|' '
function trim(s) { gsub(/^[ \t]+|[ \t]+$/, "", s); return s }
function csv(s) { gsub(/"/, "", s); return "\"" trim(s) "\"" }
function strip(s) { gsub(/"/, "", s); return trim(s) }
function csv(s) { gsub(/"/, "", s); return "\"" trim(s)"\"" }
# canon(s) — apply the section-7 VM-name -> Tailscale/DNS-name map so
# ci_name always uses the canonical fleet name [#705]
function canon(s) { s = strip(s); return (s in map) ? map[s] : s }
/^## / {
sec = substr($0, 4)
sub(/\(.*/, "", sec)
@@ -29,6 +33,17 @@ awk -F'|' '
next
}
/^\|/ {
# pass 1 (same file read twice): capture only the section-7 rename map
if (FNR == NR) {
if (sec ~ /^7\./) {
for (i = 1; i <= NF; i++) f[i] = trim($i)
if (f[2] == "" || f[2] ~ /^-+$/ || f[2] == "VM Name") next
key = f[2]; sub(/[ (].*/, "", key)
map[key] = trim(f[3])
}
next
}
if (sec ~ /^7\./) next
if (sec !~ /^[1-6]\./) next
for (i = 1; i <= NF; i++) f[i] = trim($i)
if (f[2] == "" || f[2] ~ /^-+$/) next
@@ -36,29 +51,29 @@ awk -F'|' '
status = (index($0, "RETIRED") > 0) ? "retired" : "active"
if (sec ~ /^1\./)
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
"hypervisor", csv(f[2]), "", "",
"hypervisor", csv(canon(f[2])), "", "",
csv(f[3] "; CPU " f[4] "; RAM " f[5]), csv(f[6]), csv(f[8]),
csv(f[9]), csv(f[10]), csv("mgmt " f[7]), status, csv("307 s1")
else if (sec ~ /^2\./)
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
"vm-prod", csv(f[3]), csv(f[4]), csv(f[2]),
"vm-prod", csv(canon(f[3])), csv(f[4]), csv(f[2]),
csv("CPU " f[5] "; RAM " f[6] "; TS? " f[7]), csv(f[8]), "",
csv(f[10]), csv(f[9]), "", status, csv("307 s2")
else if (sec ~ /^3\./)
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
"vm-sectestbed", csv(f[3]), "pfv-tsys5", csv(f[2]), "", csv(f[5]),
"vm-sectestbed", csv(canon(f[3])), "pfv-tsys5", csv(f[2]), "", csv(f[5]),
"", csv(f[7]), csv(f[6]), "", status, csv("307 s3")
else if (sec ~ /^4\./)
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
"vm-preprod", csv(f[3]), "pfv-tsys5", csv(f[2]), "", csv(f[5]),
"vm-preprod", csv(canon(f[3])), "pfv-tsys5", csv(f[2]), "", csv(f[5]),
"", csv(f[7]), csv(f[6]), "", status, csv("307 s4")
else if (sec ~ /^5\./)
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
"physical-sbc", csv(f[2]), "", "", "", csv(f[3]), "",
"physical-sbc", csv(canon(f[2])), "", "", "", csv(f[3]), "",
"", csv(f[5]), csv("dns " f[4]), status, csv("307 s5")
else if (sec ~ /^6\./)
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
"stale-dns-record", csv(f[2]), "", "", "", "", "",
"", "", "", "retired", csv("307 s6: " f[4])
}
' "$1"
' "$1" "$1"