feat(admin-config-tool): wire xceadmin into HA deploy/test skills

deploy-ha.sh's --build-config path (task 4.2) pointed at
src/xceadmin/.venv/bin/xceadmin, broken by today's meson/nix rewiring
(xceadmin no longer builds a venv there). Fixed to search the meson
build dir (xce.build/build.release/build.dbg), a nix-installed
result/bin, then PATH.

/xce-deploy-ha's SKILL.md never mentioned xceadmin or --build-config
(predates task 4.2) — documented both.

/xce-test-ha's run-ha-soak.sh hard-required a pre-existing cluster.bin
under ha/data/, exit 2 if missing, with no xceadmin path at all. Now
always builds cluster.bin fresh from src/configs/*.yaml via xceadmin
before every soak run, same resolution order as deploy-ha.sh.

ha/data/cluster.bin is no longer a checked-in fixture: removed from
git tracking and gitignored. It was stale relative to xceadmin's
output anyway (different hash from a different, older generation
path) -- the xceadmin-built one matches the known-good golden-fixture
hash from admin-config-tool task 5.4.
This commit is contained in:
Rongsong Shen 2026-07-22 12:00:05 +00:00
parent 893a01db7b
commit d5330fc976
6 changed files with 67 additions and 8 deletions

View file

@ -32,9 +32,25 @@ BINARY=$(realpath "$BINARY")
# Requirements 8.3/8.4/8.5: rebuild cluster.bin when --build-config is
# passed or none exists yet; otherwise leave an existing one untouched.
if [ "$BUILD_CONFIG" = "1" ] || [ ! -f "$DATADIR/cluster.bin" ]; then
XCEADMIN="$SCRIPT_DIR/../xceadmin/.venv/bin/xceadmin"
if [ ! -x "$XCEADMIN" ]; then
echo "Error: $XCEADMIN not found -- run 'xce-build.sh xceadmin' first"
# xceadmin is meson-built now (src/xceadmin/meson.build), not a plain
# `pip install -e .` venv checked out under src/xceadmin/ -- its build
# output lives under whichever meson build dir xce-build.sh's profile
# picked, or under a nix-installed prefix's bin/. Try each in turn.
XCEADMIN=""
for candidate in \
"$SCRIPT_DIR/../xce.build/xceadmin/.venv/bin/xceadmin" \
"$SCRIPT_DIR/../build.release/xceadmin/.venv/bin/xceadmin" \
"$SCRIPT_DIR/../build.dbg/xceadmin/.venv/bin/xceadmin" \
"$SCRIPT_DIR/../result/bin/xceadmin" \
"$(command -v xceadmin 2>/dev/null || true)"
do
if [ -n "$candidate" ] && [ -x "$candidate" ]; then
XCEADMIN="$candidate"
break
fi
done
if [ -z "$XCEADMIN" ]; then
echo "Error: xceadmin binary not found -- run 'xce-build.sh xceadmin' or 'nix build .#xcecore' first"
exit 1
fi
"$XCEADMIN" config build "$SCRIPT_DIR/../configs" -o "$DATADIR/cluster.bin"