runtime: publish CLUSTER-REFERENCE-PUBLICATION-ROOTCAUSE-157
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,549 @@
|
|||||||
|
CHAT_OUTPUT_BEGIN
|
||||||
|
COMMAND_ID=CLUSTER-REFERENCE-PUBLICATION-ROOTCAUSE-157
|
||||||
|
STATUS=OK
|
||||||
|
RC=0
|
||||||
|
HOST=pve01
|
||||||
|
MODE=read-only
|
||||||
|
COMPONENT=cluster-audit
|
||||||
|
REFERENCE_REGISTER_CHECK=OK
|
||||||
|
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
|
||||||
|
ERROR_REGISTER_CHECK=OK
|
||||||
|
ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752
|
||||||
|
COMMAND_SHA256=4aab341221543b56b703380a36a56615e9c1b8083637dd486284e765228f35cc
|
||||||
|
DUPLICATE_FAILED_COMMAND_BLOCKED=false
|
||||||
|
EXECUTION_STARTED=true
|
||||||
|
CHANGES_MADE=false
|
||||||
|
SANITIZED=yes
|
||||||
|
SECRETS_INCLUDED=no
|
||||||
|
PRIVATE_ADDRESSES_INCLUDED=no
|
||||||
|
RAW_EVIDENCE_SHA256=d7f4d6f0c5fbb56a2635094046fe7bc28593aa8c1a32a616dba0306229034bfb
|
||||||
|
SANITIZED_OUTPUT_SHA256=40566782503f51e3d02dabefddb0d16e849da8324d97462c4230bdd109a92e41
|
||||||
|
OUTPUT_BEGIN
|
||||||
|
=== LOCAL_COMMAND_TRACES ===
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-FOUNDATION-151 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-FOUNDATION-151-20260722T081210Z.log SIZE=226 MTIME=2026-07-22 11:12:10.952034889 +0300
|
||||||
|
1:REFERENCE_ROOT=/etc/homelab/reference
|
||||||
|
2:REFERENCE_SECTIONS=24
|
||||||
|
3:REFERENCE_JSON_FILES=76
|
||||||
|
4:REFERENCE_BACKUP=/var/backups/homelab-reference/20260722T081210949547Z
|
||||||
|
5:REFERENCE_SECRET_POLICY=ENFORCED
|
||||||
|
6:CLUSTER_REFERENCE_FOUNDATION=COMPLETE
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-MODE-SEMANTICS-153 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-MODE-SEMANTICS-153-20260722T075606Z.log SIZE=8757 MTIME=2026-07-22 10:56:06.971072094 +0300
|
||||||
|
1:PREVIOUS_RESULT=VERIFIED
|
||||||
|
52:36- echo 'RESULT=FAIL'
|
||||||
|
53:37- echo 'REASON=INVALID_COMMAND_ID'
|
||||||
|
60:44- echo 'RESULT=FAIL'
|
||||||
|
61:45- echo 'REASON=INVALID_COMPONENT'
|
||||||
|
70:54- echo 'RESULT=FAIL'
|
||||||
|
71:55: echo 'REASON=INVALID_MODE'
|
||||||
|
86:70- echo 'RESULT=FAIL'
|
||||||
|
87:71- echo "REASON=REQUIRED_TOOL_MISSING:$TOOL"
|
||||||
|
96:80- echo 'RESULT=FAIL'
|
||||||
|
97:81- echo 'REASON=REFERENCE_NOT_READABLE'
|
||||||
|
102:86- echo 'RESULT=FAIL'
|
||||||
|
103:87- echo 'REASON=ERROR_REGISTER_NOT_READABLE'
|
||||||
|
114:132-PREVIOUS_FAILED_RC="$(
|
||||||
|
128:146:BLOCK_REASON=''
|
||||||
|
142:160: BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'
|
||||||
|
143:161- RC=73
|
||||||
|
144:162- STATUS='BLOCKED'
|
||||||
|
148:166- echo 'REASON=EXACT_FAILED_COMMAND_REPEAT'
|
||||||
|
149:167- echo "PREVIOUS_RC=$PREVIOUS_FAILED_RC"
|
||||||
|
160:178- echo 'RESULT=FAIL'
|
||||||
|
161:179- echo 'REASON=INVALID_HOMELAB_TIMEOUT'
|
||||||
|
171:189- RC=$?
|
||||||
|
174:192- RC=$?
|
||||||
|
180:198- STATUS='OK'
|
||||||
|
182:200- STATUS='FAIL'
|
||||||
|
192:325- "$REFERENCE_SHA256" \
|
||||||
|
292:425- echo "STATUS=$STATUS"
|
||||||
|
293:426- echo "RC=$RC"
|
||||||
|
297:430- echo 'REFERENCE_REGISTER_CHECK=OK'
|
||||||
|
298:431- echo "REFERENCE_SHA256=$REFERENCE_SHA256"
|
||||||
|
354:CLUSTER_REFERENCE_MODE_SEMANTICS=COMPLETE
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-FOUNDATION-154 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-FOUNDATION-154-20260722T080015Z.log SIZE=382 MTIME=2026-07-22 11:00:15.407910031 +0300
|
||||||
|
4:REFERENCE_ROOT=/etc/homelab/reference
|
||||||
|
5:REFERENCE_SECTIONS=24
|
||||||
|
6:REFERENCE_BACKUP=/var/backups/homelab-reference/20260722T080015404968Z
|
||||||
|
7:REFERENCE_SECRET_POLICY=ENFORCED
|
||||||
|
8:CLUSTER_REFERENCE_FOUNDATION=COMPLETE
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-FOUNDATION-155 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-FOUNDATION-155-20260722T080346Z.log SIZE=454 MTIME=2026-07-22 11:03:47.117217539 +0300
|
||||||
|
3:PREVIOUS_STATUS=OK
|
||||||
|
4:PREVIOUS_RC=0
|
||||||
|
5:PREVIOUS_REASON=None
|
||||||
|
7:REFERENCE_ROOT=/etc/homelab/reference
|
||||||
|
8:REFERENCE_SECTIONS=24
|
||||||
|
9:REFERENCE_JSON_FILES=76
|
||||||
|
10:REFERENCE_VALIDATION=PASS
|
||||||
|
11:REFERENCE_SECRET_POLICY=ENFORCED
|
||||||
|
12:REFERENCE_BACKUP=/var/backups/homelab-reference/20260722T080346Z
|
||||||
|
13:CLUSTER_REFERENCE_FOUNDATION=COMPLETE
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-CORE-INVENTORY-156 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-CORE-INVENTORY-156-20260722T082023Z.log SIZE=3515 MTIME=2026-07-22 11:20:25.544704562 +0300
|
||||||
|
4:SyntaxError: invalid syntax
|
||||||
|
=== RUNNER_HELP ===
|
||||||
|
Usage:
|
||||||
|
homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]
|
||||||
|
|
||||||
|
MODE:
|
||||||
|
read-only
|
||||||
|
verify
|
||||||
|
change
|
||||||
|
transport-test
|
||||||
|
|
||||||
|
Environment:
|
||||||
|
HOMELAB_ALLOW_REPEAT=1 Allow exact repeat of a previously failed command.
|
||||||
|
HOMELAB_TIMEOUT=SECONDS Optional command timeout.
|
||||||
|
=== RUNNER_VALIDATION_RULES ===
|
||||||
|
1-#!/usr/bin/env bash
|
||||||
|
2-set -Eeuo pipefail
|
||||||
|
3-umask 077
|
||||||
|
4-
|
||||||
|
5-usage() {
|
||||||
|
6- cat >&2 <<'USAGE'
|
||||||
|
7-Usage:
|
||||||
|
8: homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]
|
||||||
|
9-
|
||||||
|
10-MODE:
|
||||||
|
11: read-only
|
||||||
|
12: verify
|
||||||
|
13: change
|
||||||
|
14: transport-test
|
||||||
|
15-
|
||||||
|
16-Environment:
|
||||||
|
17- HOMELAB_ALLOW_REPEAT=1 Allow exact repeat of a previously failed command.
|
||||||
|
18- HOMELAB_TIMEOUT=SECONDS Optional command timeout.
|
||||||
|
19-USAGE
|
||||||
|
20- exit 64
|
||||||
|
21-}
|
||||||
|
22-
|
||||||
|
23-[ "$#" -ge 5 ] || usage
|
||||||
|
24-
|
||||||
|
25-COMMAND_ID="$1"
|
||||||
|
26-MODE="$2"
|
||||||
|
27:COMPONENT="$3"
|
||||||
|
28-shift 3
|
||||||
|
29-
|
||||||
|
30-[ "${1:-}" = '--' ] || usage
|
||||||
|
31-shift
|
||||||
|
32-[ "$#" -ge 1 ] || usage
|
||||||
|
33-
|
||||||
|
34-case "$COMMAND_ID" in
|
||||||
|
35- ''|*[!A-Za-z0-9._-]*)
|
||||||
|
36- echo 'RESULT=FAIL'
|
||||||
|
37- echo 'REASON=INVALID_COMMAND_ID'
|
||||||
|
38- exit 65
|
||||||
|
39- ;;
|
||||||
|
40-esac
|
||||||
|
41-
|
||||||
|
42:case "$COMPONENT" in
|
||||||
|
43- ''|*[!A-Za-z0-9._-]*)
|
||||||
|
44- echo 'RESULT=FAIL'
|
||||||
|
45: echo 'REASON=INVALID_COMPONENT'
|
||||||
|
46- exit 66
|
||||||
|
47- ;;
|
||||||
|
48-esac
|
||||||
|
49-
|
||||||
|
50-case "$MODE" in
|
||||||
|
51: read-only|verify|change|transport-test)
|
||||||
|
52- ;;
|
||||||
|
53- *)
|
||||||
|
54- echo 'RESULT=FAIL'
|
||||||
|
55: echo 'REASON=INVALID_MODE'
|
||||||
|
56- exit 67
|
||||||
|
57- ;;
|
||||||
|
58-esac
|
||||||
|
59-
|
||||||
|
60-for TOOL in \
|
||||||
|
61- awk \
|
||||||
|
62- curl \
|
||||||
|
63- flock \
|
||||||
|
64- python3 \
|
||||||
|
65- scp \
|
||||||
|
66- sha256sum \
|
||||||
|
67- ssh
|
||||||
|
68-do
|
||||||
|
69- command -v "$TOOL" >/dev/null 2>&1 || {
|
||||||
|
70- echo 'RESULT=FAIL'
|
||||||
|
71- echo "REASON=REQUIRED_TOOL_MISSING:$TOOL"
|
||||||
|
72- exit 68
|
||||||
|
73- }
|
||||||
|
74-done
|
||||||
|
75-
|
||||||
|
76-REFERENCE=/etc/pve/31_HOMELAB_REFERENCE.md
|
||||||
|
77-ERROR_REGISTER=/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md
|
||||||
|
78-
|
||||||
|
79-[ -r "$REFERENCE" ] || {
|
||||||
|
80- echo 'RESULT=FAIL'
|
||||||
|
81- echo 'REASON=REFERENCE_NOT_READABLE'
|
||||||
|
82- exit 69
|
||||||
|
83-}
|
||||||
|
84-
|
||||||
|
85-[ -r "$ERROR_REGISTER" ] || {
|
||||||
|
86- echo 'RESULT=FAIL'
|
||||||
|
87- echo 'REASON=ERROR_REGISTER_NOT_READABLE'
|
||||||
|
88- exit 70
|
||||||
|
89-}
|
||||||
|
90-
|
||||||
|
--
|
||||||
|
113-
|
||||||
|
114-RAW_FILE="$RAW_DIR/${COMMAND_ID}-${STAMP}.log"
|
||||||
|
115-SANITIZED_FILE="$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt"
|
||||||
|
116-JSON_FILE="$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json"
|
||||||
|
117-TXT_FILE="$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt"
|
||||||
|
118-
|
||||||
|
119-REFERENCE_SHA256="$(sha256sum "$REFERENCE" | awk '{print $1}')"
|
||||||
|
120-ERROR_REGISTER_SHA256="$(sha256sum "$ERROR_REGISTER" | awk '{print $1}')"
|
||||||
|
121-
|
||||||
|
122-COMMAND_SHA256="$(
|
||||||
|
123- {
|
||||||
|
124- printf '%s\0' "$MODE"
|
||||||
|
125: printf '%s\0' "$COMPONENT"
|
||||||
|
126- printf '%s\0' "$@"
|
||||||
|
127- } |
|
||||||
|
128- sha256sum |
|
||||||
|
129- awk '{print $1}'
|
||||||
|
130-)"
|
||||||
|
131-
|
||||||
|
132-PREVIOUS_FAILED_RC="$(
|
||||||
|
133- awk -F '\t' -v hash="$COMMAND_SHA256" '
|
||||||
|
134- $3 == hash && $4 != "0" {
|
||||||
|
135- value=$4
|
||||||
|
136- }
|
||||||
|
137-
|
||||||
|
138- END {
|
||||||
|
139- print value
|
||||||
|
140- }
|
||||||
|
141- ' "$LEDGER"
|
||||||
|
142-)"
|
||||||
|
143-
|
||||||
|
144-RUN_STARTED=true
|
||||||
|
145-REPEAT_BLOCKED=false
|
||||||
|
146-BLOCK_REASON=''
|
||||||
|
147:CHANGES_MADE=false
|
||||||
|
148-
|
||||||
|
149-case "$MODE" in
|
||||||
|
150: change)
|
||||||
|
151: CHANGES_MADE=true
|
||||||
|
152- ;;
|
||||||
|
153-esac
|
||||||
|
154-
|
||||||
|
155-if [ -n "$PREVIOUS_FAILED_RC" ] &&
|
||||||
|
156- [ "${HOMELAB_ALLOW_REPEAT:-0}" != 1 ]; then
|
||||||
|
157-
|
||||||
|
158- RUN_STARTED=false
|
||||||
|
159- REPEAT_BLOCKED=true
|
||||||
|
160- BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'
|
||||||
|
161- RC=73
|
||||||
|
162- STATUS='BLOCKED'
|
||||||
|
163-
|
||||||
|
164- {
|
||||||
|
165- echo 'COMMAND_EXECUTION_BLOCKED=yes'
|
||||||
|
166- echo 'REASON=EXACT_FAILED_COMMAND_REPEAT'
|
||||||
|
167- echo "PREVIOUS_RC=$PREVIOUS_FAILED_RC"
|
||||||
|
168- echo "COMMAND_SHA256=$COMMAND_SHA256"
|
||||||
|
169- echo
|
||||||
|
170- echo 'Set HOMELAB_ALLOW_REPEAT=1 only after reviewing the previous failure.'
|
||||||
|
171- } >"$RAW_FILE"
|
||||||
|
172-else
|
||||||
|
173- set +e
|
||||||
|
174-
|
||||||
|
175- if [ -n "${HOMELAB_TIMEOUT:-}" ]; then
|
||||||
|
176- case "$HOMELAB_TIMEOUT" in
|
||||||
|
177- *[!0-9]*|'')
|
||||||
|
178- echo 'RESULT=FAIL'
|
||||||
|
179- echo 'REASON=INVALID_HOMELAB_TIMEOUT'
|
||||||
|
180- exit 74
|
||||||
|
181- ;;
|
||||||
|
182- esac
|
||||||
|
183-
|
||||||
|
184- timeout \
|
||||||
|
185- --foreground \
|
||||||
|
186- --preserve-status \
|
||||||
|
--
|
||||||
|
310- sha256sum "$SANITIZED_FILE" |
|
||||||
|
311- awk '{print $1}'
|
||||||
|
312-)"
|
||||||
|
313-
|
||||||
|
314-python3 - \
|
||||||
|
315- "$JSON_FILE" \
|
||||||
|
316- "$SANITIZED_FILE" \
|
||||||
|
317- "$COMMAND_ID" \
|
||||||
|
318- "$STATUS" \
|
||||||
|
319- "$RC" \
|
||||||
|
320- "$HOST_SHORT" \
|
||||||
|
321- "$MODE" \
|
||||||
|
322: "$COMPONENT" \
|
||||||
|
323- "$STARTED_AT" \
|
||||||
|
324- "$FINISHED_AT" \
|
||||||
|
325- "$REFERENCE_SHA256" \
|
||||||
|
326- "$ERROR_REGISTER_SHA256" \
|
||||||
|
327- "$COMMAND_SHA256" \
|
||||||
|
328- "$RAW_SHA256" \
|
||||||
|
329- "$SANITIZED_SHA256" \
|
||||||
|
330- "$RUN_STARTED" \
|
||||||
|
331- "$REPEAT_BLOCKED" \
|
||||||
|
332- "$BLOCK_REASON" \
|
||||||
|
333: "$CHANGES_MADE" <<'PY'
|
||||||
|
334-import json
|
||||||
|
335-import sys
|
||||||
|
336-from pathlib import Path
|
||||||
|
337-
|
||||||
|
338-(
|
||||||
|
339- json_path,
|
||||||
|
340- output_path,
|
||||||
|
341- command_id,
|
||||||
|
342- status,
|
||||||
|
343- rc,
|
||||||
|
344- host,
|
||||||
|
345- mode,
|
||||||
|
346: component,
|
||||||
|
347- started,
|
||||||
|
348- finished,
|
||||||
|
349- reference_sha,
|
||||||
|
350- error_sha,
|
||||||
|
351- command_sha,
|
||||||
|
352- raw_sha,
|
||||||
|
353- sanitized_sha,
|
||||||
|
354- run_started,
|
||||||
|
355- repeat_blocked,
|
||||||
|
356- block_reason,
|
||||||
|
357: changes_made,
|
||||||
|
358-) = sys.argv[1:]
|
||||||
|
359-
|
||||||
|
360-output = Path(output_path).read_text(
|
||||||
|
361- encoding="utf-8",
|
||||||
|
362- errors="replace",
|
||||||
|
363-)
|
||||||
|
364-
|
||||||
|
365-encoded = output.encode("utf-8")
|
||||||
|
366-json_limit = 300_000
|
||||||
|
367-output_truncated = len(encoded) > json_limit
|
||||||
|
368-
|
||||||
|
369-if output_truncated:
|
||||||
|
370- output_preview = encoded[:json_limit].decode(
|
||||||
|
371- "utf-8",
|
||||||
|
372- errors="ignore",
|
||||||
|
373- )
|
||||||
|
374-else:
|
||||||
|
375- output_preview = output
|
||||||
|
376-
|
||||||
|
377-document = {
|
||||||
|
378- "schema_version": 1,
|
||||||
|
379- "channel": "homelab-runtime",
|
||||||
|
380- "command_id": command_id,
|
||||||
|
381- "status": status,
|
||||||
|
382- "rc": int(rc),
|
||||||
|
383- "host": host,
|
||||||
|
384- "mode": mode,
|
||||||
|
385: "component": component,
|
||||||
|
386- "started_at_utc": started,
|
||||||
|
387- "finished_at_utc": finished,
|
||||||
|
388- "reference_register_checked": True,
|
||||||
|
389- "reference_sha256": reference_sha,
|
||||||
|
390- "error_register_checked": True,
|
||||||
|
391- "error_register_sha256": error_sha,
|
||||||
|
392- "command_sha256": command_sha,
|
||||||
|
393- "duplicate_failed_command_blocked": repeat_blocked == "true",
|
||||||
|
394- "block_reason": block_reason or None,
|
||||||
|
395- "execution_started": run_started == "true",
|
||||||
|
396: "changes_made": changes_made == "true",
|
||||||
|
397- "sanitized": True,
|
||||||
|
398- "secrets_included": False,
|
||||||
|
399- "private_addresses_included": False,
|
||||||
|
400- "raw_evidence_retained_locally": True,
|
||||||
|
401- "raw_evidence_sha256": raw_sha,
|
||||||
|
402- "sanitized_output_sha256": sanitized_sha,
|
||||||
|
403- "output_truncated_in_json": output_truncated,
|
||||||
|
404- "full_sanitized_output_url": (
|
||||||
|
405- "https://git.gram1.ru/.well-known/"
|
||||||
|
406- "homelab-runtime/latest.txt"
|
||||||
|
407- ),
|
||||||
|
408- "output": output_preview,
|
||||||
|
409-}
|
||||||
|
410-
|
||||||
|
411-Path(json_path).write_text(
|
||||||
|
412- json.dumps(
|
||||||
|
413- document,
|
||||||
|
414- ensure_ascii=False,
|
||||||
|
415- indent=2,
|
||||||
|
416- )
|
||||||
|
417- + "\n",
|
||||||
|
418- encoding="utf-8",
|
||||||
|
419-)
|
||||||
|
420-PY
|
||||||
|
421-
|
||||||
|
422-{
|
||||||
|
423- echo 'CHAT_OUTPUT_BEGIN'
|
||||||
|
424- echo "COMMAND_ID=$COMMAND_ID"
|
||||||
|
425- echo "STATUS=$STATUS"
|
||||||
|
426- echo "RC=$RC"
|
||||||
|
427- echo "HOST=$HOST_SHORT"
|
||||||
|
428- echo "MODE=$MODE"
|
||||||
|
429: echo "COMPONENT=$COMPONENT"
|
||||||
|
430- echo 'REFERENCE_REGISTER_CHECK=OK'
|
||||||
|
431- echo "REFERENCE_SHA256=$REFERENCE_SHA256"
|
||||||
|
432- echo 'ERROR_REGISTER_CHECK=OK'
|
||||||
|
433- echo "ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256"
|
||||||
|
434- echo "COMMAND_SHA256=$COMMAND_SHA256"
|
||||||
|
435- echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED"
|
||||||
|
436- echo "EXECUTION_STARTED=$RUN_STARTED"
|
||||||
|
437: echo "CHANGES_MADE=$CHANGES_MADE"
|
||||||
|
438- echo 'SANITIZED=yes'
|
||||||
|
439- echo 'SECRETS_INCLUDED=no'
|
||||||
|
440- echo 'PRIVATE_ADDRESSES_INCLUDED=no'
|
||||||
|
441- echo "RAW_EVIDENCE_SHA256=$RAW_SHA256"
|
||||||
|
442- echo "SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256"
|
||||||
|
443- echo 'OUTPUT_BEGIN'
|
||||||
|
444- cat "$SANITIZED_FILE"
|
||||||
|
445- echo
|
||||||
|
446- echo 'OUTPUT_END'
|
||||||
|
447- echo 'CHAT_OUTPUT_END'
|
||||||
|
448-} >"$TXT_FILE"
|
||||||
|
449-
|
||||||
|
450-chmod 0600 \
|
||||||
|
451- "$RAW_FILE" \
|
||||||
|
452- "$SANITIZED_FILE" \
|
||||||
|
453- "$JSON_FILE" \
|
||||||
|
454- "$TXT_FILE"
|
||||||
|
455-
|
||||||
|
456-TARGET=debian@[PRIVATE_IP]
|
||||||
|
457-REMOTE_PREFIX="/tmp/homelab-runtime-${COMMAND_ID}-$$"
|
||||||
|
458-
|
||||||
|
459-SSH_OPTS=(
|
||||||
|
460- -o BatchMode=yes
|
||||||
|
461- -o ConnectTimeout=10
|
||||||
|
462- -o ConnectionAttempts=1
|
||||||
|
463- -o StrictHostKeyChecking=yes
|
||||||
|
464- -o UserKnownHostsFile=[SENSITIVE_PATH]
|
||||||
|
465-)
|
||||||
|
466-
|
||||||
|
467-scp \
|
||||||
|
468- -q \
|
||||||
|
469- "${SSH_OPTS[@]}" \
|
||||||
|
470- "$JSON_FILE" \
|
||||||
|
471- "${TARGET}:${REMOTE_PREFIX}.json"
|
||||||
|
472-
|
||||||
|
--
|
||||||
|
518- echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE'
|
||||||
|
519- echo "COMMAND_ID=$COMMAND_ID"
|
||||||
|
520- echo "LOCAL_RAW_FILE=$RAW_FILE"
|
||||||
|
521- exit 75
|
||||||
|
522-fi
|
||||||
|
523-
|
||||||
|
524-printf '%s\t%s\t%s\t%s\t%s\t%s\n' \
|
||||||
|
525- "$FINISHED_AT" \
|
||||||
|
526- "$COMMAND_ID" \
|
||||||
|
527- "$COMMAND_SHA256" \
|
||||||
|
528- "$RC" \
|
||||||
|
529- "$STATUS" \
|
||||||
|
530: "$COMPONENT" >>"$LEDGER"
|
||||||
|
531-
|
||||||
|
532-echo
|
||||||
|
533-echo '===== HOMELAB CHAT RUN COMPLETE ====='
|
||||||
|
534-echo "COMMAND_ID=$COMMAND_ID"
|
||||||
|
535-echo "STATUS=$STATUS"
|
||||||
|
536-echo "RC=$RC"
|
||||||
|
537-echo 'REFERENCE_REGISTER_CHECK=OK'
|
||||||
|
538-echo 'ERROR_REGISTER_CHECK=OK'
|
||||||
|
539-echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED"
|
||||||
|
540-echo 'GITEA_PUBLICATION=OK'
|
||||||
|
541-echo "PUBLIC_URL=$PUBLIC_URL"
|
||||||
|
542-echo "LOCAL_RAW_FILE=$RAW_FILE"
|
||||||
|
543-echo 'SHELL_SESSION_PRESERVED=yes'
|
||||||
|
544-
|
||||||
|
545-exit "$RC"
|
||||||
|
=== PARTIAL_REFERENCE_STATE ===
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6964026990 /etc/homelab/reference/public
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6964026990 /etc/homelab/reference/runbooks
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6964026990 /etc/homelab/reference/snapshots
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6970459770 /etc/homelab/reference/declared
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6974681490 /etc/homelab/reference/observed
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6978512600 /etc/homelab/reference/effective
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6978691140 /etc/homelab/reference
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6978834310 /etc/homelab/reference/state
|
||||||
|
d 750 4096 2026-07-22T11:03:47.1132880790 /etc/homelab/reference/schema
|
||||||
|
f 640 153 2026-07-22T10:34:58.6968014830 /etc/homelab/reference/declared/dns.json
|
||||||
|
f 640 153 2026-07-22T10:34:58.6976137370 /etc/homelab/reference/effective/dns.json
|
||||||
|
f 640 155 2026-07-22T10:34:58.6966969670 /etc/homelab/reference/declared/nodes.json
|
||||||
|
f 640 155 2026-07-22T10:34:58.6975198720 /etc/homelab/reference/effective/nodes.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6967158380 /etc/homelab/reference/declared/guests.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6969484530 /etc/homelab/reference/declared/access.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6969644820 /etc/homelab/reference/declared/owners.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6971898020 /etc/homelab/reference/observed/dns.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6975362380 /etc/homelab/reference/effective/guests.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6977531080 /etc/homelab/reference/effective/access.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6977693510 /etc/homelab/reference/effective/owners.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6966738300 /etc/homelab/reference/declared/cluster.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6968176220 /etc/homelab/reference/declared/domains.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6968507170 /etc/homelab/reference/declared/ingress.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6968665330 /etc/homelab/reference/declared/storage.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6968815380 /etc/homelab/reference/declared/backups.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6969804230 /etc/homelab/reference/declared/vendors.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6975026350 /etc/homelab/reference/effective/cluster.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6976296950 /etc/homelab/reference/effective/domains.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6976621460 /etc/homelab/reference/effective/ingress.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6976775090 /etc/homelab/reference/effective/storage.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6976922400 /etc/homelab/reference/effective/backups.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6977857550 /etc/homelab/reference/effective/vendors.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6967496500 /etc/homelab/reference/declared/services.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6967835450 /etc/homelab/reference/declared/networks.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6970122440 /etc/homelab/reference/declared/security.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6970626700 /etc/homelab/reference/declared/runbooks.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6970953450 /etc/homelab/reference/observed/nodes.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6975661010 /etc/homelab/reference/effective/services.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6975973330 /etc/homelab/reference/effective/networks.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6978179760 /etc/homelab/reference/effective/security.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6978691140 /etc/homelab/reference/effective/runbooks.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6969966040 /etc/homelab/reference/declared/contracts.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6971108280 /etc/homelab/reference/observed/guests.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6973313430 /etc/homelab/reference/observed/access.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6973523380 /etc/homelab/reference/observed/owners.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6978023050 /etc/homelab/reference/effective/contracts.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6967330550 /etc/homelab/reference/declared/containers.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6968977560 /etc/homelab/reference/declared/monitoring.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6970793370 /etc/homelab/reference/observed/cluster.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6972051460 /etc/homelab/reference/observed/domains.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6972368890 /etc/homelab/reference/observed/ingress.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6972525750 /etc/homelab/reference/observed/storage.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6972679110 /etc/homelab/reference/observed/backups.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6973681500 /etc/homelab/reference/observed/vendors.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6975511580 /etc/homelab/reference/effective/containers.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6977071740 /etc/homelab/reference/effective/monitoring.json
|
||||||
|
f 640 161 2026-07-22T10:34:58.6971427070 /etc/homelab/reference/observed/services.json
|
||||||
|
f 640 161 2026-07-22T10:34:58.6971740390 /etc/homelab/reference/observed/networks.json
|
||||||
|
f 640 161 2026-07-22T10:34:58.6974304020 /etc/homelab/reference/observed/security.json
|
||||||
|
f 640 161 2026-07-22T10:34:58.6974849460 /etc/homelab/reference/observed/runbooks.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6967668110 /etc/homelab/reference/declared/applications.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6968346450 /etc/homelab/reference/declared/certificates.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6969325220 /etc/homelab/reference/declared/dependencies.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6974142710 /etc/homelab/reference/observed/contracts.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6975824200 /etc/homelab/reference/effective/applications.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6976463310 /etc/homelab/reference/effective/certificates.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6977380340 /etc/homelab/reference/effective/dependencies.json
|
||||||
|
f 640 163 2026-07-22T10:34:58.6971273900 /etc/homelab/reference/observed/containers.json
|
||||||
|
f 640 163 2026-07-22T10:34:58.6972830790 /etc/homelab/reference/observed/monitoring.json
|
||||||
|
f 640 165 2026-07-22T10:34:58.6971583070 /etc/homelab/reference/observed/applications.json
|
||||||
|
f 640 165 2026-07-22T10:34:58.6972204840 /etc/homelab/reference/observed/certificates.json
|
||||||
|
f 640 165 2026-07-22T10:34:58.6973154820 /etc/homelab/reference/observed/dependencies.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6969164820 /etc/homelab/reference/declared/external_services.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6970278950 /etc/homelab/reference/declared/disaster_recovery.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6970459770 /etc/homelab/reference/declared/change_management.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6977227780 /etc/homelab/reference/effective/external_services.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6978337330 /etc/homelab/reference/effective/disaster_recovery.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6978512600 /etc/homelab/reference/effective/change_management.json
|
||||||
|
f 640 170 2026-07-22T10:34:58.6972985790 /etc/homelab/reference/observed/external_services.json
|
||||||
|
f 640 170 2026-07-22T10:34:58.6974490020 /etc/homelab/reference/observed/disaster_recovery.json
|
||||||
|
f 640 170 2026-07-22T10:34:58.6974681490 /etc/homelab/reference/observed/change_management.json
|
||||||
|
f 640 1780 2026-07-22T11:12:10.9514643580 /etc/homelab/reference/manifest.json
|
||||||
|
f 640 199 2026-07-22T11:12:10.9518855430 /etc/homelab/reference/state/current.json
|
||||||
|
f 640 262 2026-07-22T11:12:10.9515215670 /etc/homelab/reference/schema/record.schema.json
|
||||||
|
f 640 440 2026-07-22T11:03:47.1133590400 /etc/homelab/reference/schema/edit-policy.json
|
||||||
|
f 640 593 2026-07-22T11:12:10.9518574460 /etc/homelab/reference/README.md
|
||||||
|
CLUSTER_REFERENCE_PUBLICATION_ROOTCAUSE=COMPLETE
|
||||||
|
|
||||||
|
OUTPUT_END
|
||||||
|
CHAT_OUTPUT_END
|
||||||
+12
-12
File diff suppressed because one or more lines are too long
+534
-13
@@ -1,28 +1,549 @@
|
|||||||
CHAT_OUTPUT_BEGIN
|
CHAT_OUTPUT_BEGIN
|
||||||
COMMAND_ID=CLUSTER-REFERENCE-CORE-INVENTORY-156
|
COMMAND_ID=CLUSTER-REFERENCE-PUBLICATION-ROOTCAUSE-157
|
||||||
STATUS=FAIL
|
STATUS=OK
|
||||||
RC=1
|
RC=0
|
||||||
HOST=pve01
|
HOST=pve01
|
||||||
MODE=change
|
MODE=read-only
|
||||||
COMPONENT=reference-update
|
COMPONENT=cluster-audit
|
||||||
REFERENCE_REGISTER_CHECK=OK
|
REFERENCE_REGISTER_CHECK=OK
|
||||||
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
|
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
|
||||||
ERROR_REGISTER_CHECK=OK
|
ERROR_REGISTER_CHECK=OK
|
||||||
ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752
|
ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752
|
||||||
COMMAND_SHA256=4004a5fa6311925347ca61391364d80f4a990a2b0cdd56de0810325d41c4851c
|
COMMAND_SHA256=4aab341221543b56b703380a36a56615e9c1b8083637dd486284e765228f35cc
|
||||||
DUPLICATE_FAILED_COMMAND_BLOCKED=false
|
DUPLICATE_FAILED_COMMAND_BLOCKED=false
|
||||||
EXECUTION_STARTED=true
|
EXECUTION_STARTED=true
|
||||||
CHANGES_MADE=true
|
CHANGES_MADE=false
|
||||||
SANITIZED=yes
|
SANITIZED=yes
|
||||||
SECRETS_INCLUDED=no
|
SECRETS_INCLUDED=no
|
||||||
PRIVATE_ADDRESSES_INCLUDED=no
|
PRIVATE_ADDRESSES_INCLUDED=no
|
||||||
RAW_EVIDENCE_SHA256=028bdeec2160ad20c2f0234e6be183a522174af5aac4c345b2be6df78c312e7e
|
RAW_EVIDENCE_SHA256=d7f4d6f0c5fbb56a2635094046fe7bc28593aa8c1a32a616dba0306229034bfb
|
||||||
SANITIZED_OUTPUT_SHA256=028bdeec2160ad20c2f0234e6be183a522174af5aac4c345b2be6df78c312e7e
|
SANITIZED_OUTPUT_SHA256=40566782503f51e3d02dabefddb0d16e849da8324d97462c4230bdd109a92e41
|
||||||
OUTPUT_BEGIN
|
OUTPUT_BEGIN
|
||||||
File "<string>", line 1
|
=== LOCAL_COMMAND_TRACES ===
|
||||||
import json,sys,pathlib,os,socket; r=pathlib.Path(sys.argv[1]); now=sys.argv[2]; t=pathlib.Path(sys.argv[3]); load=lambda n: json.loads((t/n).read_text(encoding=utf-8) or []); nodes=load(nodes.json); guests=load(guests.json); storage=load(storage.json); records={cluster:[{id:cluster-homelab,hostname:socket.gethostname(),kernel:os.uname().release,pve_version:(t/pveversion.txt).read_text(errors=replace),quorum_status:(t/quorum.txt).read_text(errors=replace)}],nodes:[dict(x,id=node-+str(x.get(node) or x.get(id) or unknown)) for x in nodes],guests:[{id:guest-+str(x.get(vmid)),vmid:x.get(vmid),name:x.get(name),type:x.get(type),node:x.get(node),status:x.get(status),template:x.get(template),uptime:x.get(uptime),cpus:x.get(maxcpu),memory_bytes:x.get(maxmem),disk_bytes:x.get(maxdisk),tags:x.get(tags)} for x in guests],containers:[{id:container-+str(x.get(vmid)),vmid:x.get(vmid),name:x.get(name),node:x.get(node),status:x.get(status),uptime:x.get(uptime),cpus:x.get(maxcpu),memory_bytes:x.get(maxmem),disk_bytes:x.get(maxdisk),tags:x.get(tags)} for x in guests if x.get(type)==lxc],storage:[dict(x,id=storage-+str(x.get(storage) or x.get(id) or unknown)) for x in storage],networks:[{id:network-state,interfaces:load(address.json),routes:load(routes.json)}],dns:[{id:resolver-state,hostname:socket.gethostname(),resolv_conf:(t/resolv.txt).read_text(errors=replace).splitlines()}]}; [(r/observed/(s+.json)).write_text(json.dumps({schema_version:2,section:s,layer:observed,updated_at:now,source:core-internal-collector,records:v},ensure_ascii=False,indent=2)+n,encoding=utf-8) for s,v in records.items()]; state=json.loads((r/state/current.json).read_text()); state.update({status:CORE_INTERNAL_INVENTORY_READY,updated_at:now,core_internal_counts:{s:len(v) for s,v in records.items()}}); (r/state/current.json).write_text(json.dumps(state,ensure_ascii=False,indent=2)+n); [json.loads(p.read_text()) for p in r.rglob(*.json)]; print(CORE_INTERNAL_SECTIONS=+str(len(records))); print(CORE_INTERNAL_RECORDS=+str(sum(len(v) for v in records.values())))
|
--- COMMAND_ID=CLUSTER-REFERENCE-FOUNDATION-151 ---
|
||||||
^
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-FOUNDATION-151-20260722T081210Z.log SIZE=226 MTIME=2026-07-22 11:12:10.952034889 +0300
|
||||||
SyntaxError: invalid syntax
|
1:REFERENCE_ROOT=/etc/homelab/reference
|
||||||
|
2:REFERENCE_SECTIONS=24
|
||||||
|
3:REFERENCE_JSON_FILES=76
|
||||||
|
4:REFERENCE_BACKUP=/var/backups/homelab-reference/20260722T081210949547Z
|
||||||
|
5:REFERENCE_SECRET_POLICY=ENFORCED
|
||||||
|
6:CLUSTER_REFERENCE_FOUNDATION=COMPLETE
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-MODE-SEMANTICS-153 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-MODE-SEMANTICS-153-20260722T075606Z.log SIZE=8757 MTIME=2026-07-22 10:56:06.971072094 +0300
|
||||||
|
1:PREVIOUS_RESULT=VERIFIED
|
||||||
|
52:36- echo 'RESULT=FAIL'
|
||||||
|
53:37- echo 'REASON=INVALID_COMMAND_ID'
|
||||||
|
60:44- echo 'RESULT=FAIL'
|
||||||
|
61:45- echo 'REASON=INVALID_COMPONENT'
|
||||||
|
70:54- echo 'RESULT=FAIL'
|
||||||
|
71:55: echo 'REASON=INVALID_MODE'
|
||||||
|
86:70- echo 'RESULT=FAIL'
|
||||||
|
87:71- echo "REASON=REQUIRED_TOOL_MISSING:$TOOL"
|
||||||
|
96:80- echo 'RESULT=FAIL'
|
||||||
|
97:81- echo 'REASON=REFERENCE_NOT_READABLE'
|
||||||
|
102:86- echo 'RESULT=FAIL'
|
||||||
|
103:87- echo 'REASON=ERROR_REGISTER_NOT_READABLE'
|
||||||
|
114:132-PREVIOUS_FAILED_RC="$(
|
||||||
|
128:146:BLOCK_REASON=''
|
||||||
|
142:160: BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'
|
||||||
|
143:161- RC=73
|
||||||
|
144:162- STATUS='BLOCKED'
|
||||||
|
148:166- echo 'REASON=EXACT_FAILED_COMMAND_REPEAT'
|
||||||
|
149:167- echo "PREVIOUS_RC=$PREVIOUS_FAILED_RC"
|
||||||
|
160:178- echo 'RESULT=FAIL'
|
||||||
|
161:179- echo 'REASON=INVALID_HOMELAB_TIMEOUT'
|
||||||
|
171:189- RC=$?
|
||||||
|
174:192- RC=$?
|
||||||
|
180:198- STATUS='OK'
|
||||||
|
182:200- STATUS='FAIL'
|
||||||
|
192:325- "$REFERENCE_SHA256" \
|
||||||
|
292:425- echo "STATUS=$STATUS"
|
||||||
|
293:426- echo "RC=$RC"
|
||||||
|
297:430- echo 'REFERENCE_REGISTER_CHECK=OK'
|
||||||
|
298:431- echo "REFERENCE_SHA256=$REFERENCE_SHA256"
|
||||||
|
354:CLUSTER_REFERENCE_MODE_SEMANTICS=COMPLETE
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-FOUNDATION-154 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-FOUNDATION-154-20260722T080015Z.log SIZE=382 MTIME=2026-07-22 11:00:15.407910031 +0300
|
||||||
|
4:REFERENCE_ROOT=/etc/homelab/reference
|
||||||
|
5:REFERENCE_SECTIONS=24
|
||||||
|
6:REFERENCE_BACKUP=/var/backups/homelab-reference/20260722T080015404968Z
|
||||||
|
7:REFERENCE_SECRET_POLICY=ENFORCED
|
||||||
|
8:CLUSTER_REFERENCE_FOUNDATION=COMPLETE
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-FOUNDATION-155 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-FOUNDATION-155-20260722T080346Z.log SIZE=454 MTIME=2026-07-22 11:03:47.117217539 +0300
|
||||||
|
3:PREVIOUS_STATUS=OK
|
||||||
|
4:PREVIOUS_RC=0
|
||||||
|
5:PREVIOUS_REASON=None
|
||||||
|
7:REFERENCE_ROOT=/etc/homelab/reference
|
||||||
|
8:REFERENCE_SECTIONS=24
|
||||||
|
9:REFERENCE_JSON_FILES=76
|
||||||
|
10:REFERENCE_VALIDATION=PASS
|
||||||
|
11:REFERENCE_SECRET_POLICY=ENFORCED
|
||||||
|
12:REFERENCE_BACKUP=/var/backups/homelab-reference/20260722T080346Z
|
||||||
|
13:CLUSTER_REFERENCE_FOUNDATION=COMPLETE
|
||||||
|
--- COMMAND_ID=CLUSTER-REFERENCE-CORE-INVENTORY-156 ---
|
||||||
|
FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-CORE-INVENTORY-156-20260722T082023Z.log SIZE=3515 MTIME=2026-07-22 11:20:25.544704562 +0300
|
||||||
|
4:SyntaxError: invalid syntax
|
||||||
|
=== RUNNER_HELP ===
|
||||||
|
Usage:
|
||||||
|
homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]
|
||||||
|
|
||||||
|
MODE:
|
||||||
|
read-only
|
||||||
|
verify
|
||||||
|
change
|
||||||
|
transport-test
|
||||||
|
|
||||||
|
Environment:
|
||||||
|
HOMELAB_ALLOW_REPEAT=1 Allow exact repeat of a previously failed command.
|
||||||
|
HOMELAB_TIMEOUT=SECONDS Optional command timeout.
|
||||||
|
=== RUNNER_VALIDATION_RULES ===
|
||||||
|
1-#!/usr/bin/env bash
|
||||||
|
2-set -Eeuo pipefail
|
||||||
|
3-umask 077
|
||||||
|
4-
|
||||||
|
5-usage() {
|
||||||
|
6- cat >&2 <<'USAGE'
|
||||||
|
7-Usage:
|
||||||
|
8: homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]
|
||||||
|
9-
|
||||||
|
10-MODE:
|
||||||
|
11: read-only
|
||||||
|
12: verify
|
||||||
|
13: change
|
||||||
|
14: transport-test
|
||||||
|
15-
|
||||||
|
16-Environment:
|
||||||
|
17- HOMELAB_ALLOW_REPEAT=1 Allow exact repeat of a previously failed command.
|
||||||
|
18- HOMELAB_TIMEOUT=SECONDS Optional command timeout.
|
||||||
|
19-USAGE
|
||||||
|
20- exit 64
|
||||||
|
21-}
|
||||||
|
22-
|
||||||
|
23-[ "$#" -ge 5 ] || usage
|
||||||
|
24-
|
||||||
|
25-COMMAND_ID="$1"
|
||||||
|
26-MODE="$2"
|
||||||
|
27:COMPONENT="$3"
|
||||||
|
28-shift 3
|
||||||
|
29-
|
||||||
|
30-[ "${1:-}" = '--' ] || usage
|
||||||
|
31-shift
|
||||||
|
32-[ "$#" -ge 1 ] || usage
|
||||||
|
33-
|
||||||
|
34-case "$COMMAND_ID" in
|
||||||
|
35- ''|*[!A-Za-z0-9._-]*)
|
||||||
|
36- echo 'RESULT=FAIL'
|
||||||
|
37- echo 'REASON=INVALID_COMMAND_ID'
|
||||||
|
38- exit 65
|
||||||
|
39- ;;
|
||||||
|
40-esac
|
||||||
|
41-
|
||||||
|
42:case "$COMPONENT" in
|
||||||
|
43- ''|*[!A-Za-z0-9._-]*)
|
||||||
|
44- echo 'RESULT=FAIL'
|
||||||
|
45: echo 'REASON=INVALID_COMPONENT'
|
||||||
|
46- exit 66
|
||||||
|
47- ;;
|
||||||
|
48-esac
|
||||||
|
49-
|
||||||
|
50-case "$MODE" in
|
||||||
|
51: read-only|verify|change|transport-test)
|
||||||
|
52- ;;
|
||||||
|
53- *)
|
||||||
|
54- echo 'RESULT=FAIL'
|
||||||
|
55: echo 'REASON=INVALID_MODE'
|
||||||
|
56- exit 67
|
||||||
|
57- ;;
|
||||||
|
58-esac
|
||||||
|
59-
|
||||||
|
60-for TOOL in \
|
||||||
|
61- awk \
|
||||||
|
62- curl \
|
||||||
|
63- flock \
|
||||||
|
64- python3 \
|
||||||
|
65- scp \
|
||||||
|
66- sha256sum \
|
||||||
|
67- ssh
|
||||||
|
68-do
|
||||||
|
69- command -v "$TOOL" >/dev/null 2>&1 || {
|
||||||
|
70- echo 'RESULT=FAIL'
|
||||||
|
71- echo "REASON=REQUIRED_TOOL_MISSING:$TOOL"
|
||||||
|
72- exit 68
|
||||||
|
73- }
|
||||||
|
74-done
|
||||||
|
75-
|
||||||
|
76-REFERENCE=/etc/pve/31_HOMELAB_REFERENCE.md
|
||||||
|
77-ERROR_REGISTER=/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md
|
||||||
|
78-
|
||||||
|
79-[ -r "$REFERENCE" ] || {
|
||||||
|
80- echo 'RESULT=FAIL'
|
||||||
|
81- echo 'REASON=REFERENCE_NOT_READABLE'
|
||||||
|
82- exit 69
|
||||||
|
83-}
|
||||||
|
84-
|
||||||
|
85-[ -r "$ERROR_REGISTER" ] || {
|
||||||
|
86- echo 'RESULT=FAIL'
|
||||||
|
87- echo 'REASON=ERROR_REGISTER_NOT_READABLE'
|
||||||
|
88- exit 70
|
||||||
|
89-}
|
||||||
|
90-
|
||||||
|
--
|
||||||
|
113-
|
||||||
|
114-RAW_FILE="$RAW_DIR/${COMMAND_ID}-${STAMP}.log"
|
||||||
|
115-SANITIZED_FILE="$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt"
|
||||||
|
116-JSON_FILE="$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json"
|
||||||
|
117-TXT_FILE="$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt"
|
||||||
|
118-
|
||||||
|
119-REFERENCE_SHA256="$(sha256sum "$REFERENCE" | awk '{print $1}')"
|
||||||
|
120-ERROR_REGISTER_SHA256="$(sha256sum "$ERROR_REGISTER" | awk '{print $1}')"
|
||||||
|
121-
|
||||||
|
122-COMMAND_SHA256="$(
|
||||||
|
123- {
|
||||||
|
124- printf '%s\0' "$MODE"
|
||||||
|
125: printf '%s\0' "$COMPONENT"
|
||||||
|
126- printf '%s\0' "$@"
|
||||||
|
127- } |
|
||||||
|
128- sha256sum |
|
||||||
|
129- awk '{print $1}'
|
||||||
|
130-)"
|
||||||
|
131-
|
||||||
|
132-PREVIOUS_FAILED_RC="$(
|
||||||
|
133- awk -F '\t' -v hash="$COMMAND_SHA256" '
|
||||||
|
134- $3 == hash && $4 != "0" {
|
||||||
|
135- value=$4
|
||||||
|
136- }
|
||||||
|
137-
|
||||||
|
138- END {
|
||||||
|
139- print value
|
||||||
|
140- }
|
||||||
|
141- ' "$LEDGER"
|
||||||
|
142-)"
|
||||||
|
143-
|
||||||
|
144-RUN_STARTED=true
|
||||||
|
145-REPEAT_BLOCKED=false
|
||||||
|
146-BLOCK_REASON=''
|
||||||
|
147:CHANGES_MADE=false
|
||||||
|
148-
|
||||||
|
149-case "$MODE" in
|
||||||
|
150: change)
|
||||||
|
151: CHANGES_MADE=true
|
||||||
|
152- ;;
|
||||||
|
153-esac
|
||||||
|
154-
|
||||||
|
155-if [ -n "$PREVIOUS_FAILED_RC" ] &&
|
||||||
|
156- [ "${HOMELAB_ALLOW_REPEAT:-0}" != 1 ]; then
|
||||||
|
157-
|
||||||
|
158- RUN_STARTED=false
|
||||||
|
159- REPEAT_BLOCKED=true
|
||||||
|
160- BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'
|
||||||
|
161- RC=73
|
||||||
|
162- STATUS='BLOCKED'
|
||||||
|
163-
|
||||||
|
164- {
|
||||||
|
165- echo 'COMMAND_EXECUTION_BLOCKED=yes'
|
||||||
|
166- echo 'REASON=EXACT_FAILED_COMMAND_REPEAT'
|
||||||
|
167- echo "PREVIOUS_RC=$PREVIOUS_FAILED_RC"
|
||||||
|
168- echo "COMMAND_SHA256=$COMMAND_SHA256"
|
||||||
|
169- echo
|
||||||
|
170- echo 'Set HOMELAB_ALLOW_REPEAT=1 only after reviewing the previous failure.'
|
||||||
|
171- } >"$RAW_FILE"
|
||||||
|
172-else
|
||||||
|
173- set +e
|
||||||
|
174-
|
||||||
|
175- if [ -n "${HOMELAB_TIMEOUT:-}" ]; then
|
||||||
|
176- case "$HOMELAB_TIMEOUT" in
|
||||||
|
177- *[!0-9]*|'')
|
||||||
|
178- echo 'RESULT=FAIL'
|
||||||
|
179- echo 'REASON=INVALID_HOMELAB_TIMEOUT'
|
||||||
|
180- exit 74
|
||||||
|
181- ;;
|
||||||
|
182- esac
|
||||||
|
183-
|
||||||
|
184- timeout \
|
||||||
|
185- --foreground \
|
||||||
|
186- --preserve-status \
|
||||||
|
--
|
||||||
|
310- sha256sum "$SANITIZED_FILE" |
|
||||||
|
311- awk '{print $1}'
|
||||||
|
312-)"
|
||||||
|
313-
|
||||||
|
314-python3 - \
|
||||||
|
315- "$JSON_FILE" \
|
||||||
|
316- "$SANITIZED_FILE" \
|
||||||
|
317- "$COMMAND_ID" \
|
||||||
|
318- "$STATUS" \
|
||||||
|
319- "$RC" \
|
||||||
|
320- "$HOST_SHORT" \
|
||||||
|
321- "$MODE" \
|
||||||
|
322: "$COMPONENT" \
|
||||||
|
323- "$STARTED_AT" \
|
||||||
|
324- "$FINISHED_AT" \
|
||||||
|
325- "$REFERENCE_SHA256" \
|
||||||
|
326- "$ERROR_REGISTER_SHA256" \
|
||||||
|
327- "$COMMAND_SHA256" \
|
||||||
|
328- "$RAW_SHA256" \
|
||||||
|
329- "$SANITIZED_SHA256" \
|
||||||
|
330- "$RUN_STARTED" \
|
||||||
|
331- "$REPEAT_BLOCKED" \
|
||||||
|
332- "$BLOCK_REASON" \
|
||||||
|
333: "$CHANGES_MADE" <<'PY'
|
||||||
|
334-import json
|
||||||
|
335-import sys
|
||||||
|
336-from pathlib import Path
|
||||||
|
337-
|
||||||
|
338-(
|
||||||
|
339- json_path,
|
||||||
|
340- output_path,
|
||||||
|
341- command_id,
|
||||||
|
342- status,
|
||||||
|
343- rc,
|
||||||
|
344- host,
|
||||||
|
345- mode,
|
||||||
|
346: component,
|
||||||
|
347- started,
|
||||||
|
348- finished,
|
||||||
|
349- reference_sha,
|
||||||
|
350- error_sha,
|
||||||
|
351- command_sha,
|
||||||
|
352- raw_sha,
|
||||||
|
353- sanitized_sha,
|
||||||
|
354- run_started,
|
||||||
|
355- repeat_blocked,
|
||||||
|
356- block_reason,
|
||||||
|
357: changes_made,
|
||||||
|
358-) = sys.argv[1:]
|
||||||
|
359-
|
||||||
|
360-output = Path(output_path).read_text(
|
||||||
|
361- encoding="utf-8",
|
||||||
|
362- errors="replace",
|
||||||
|
363-)
|
||||||
|
364-
|
||||||
|
365-encoded = output.encode("utf-8")
|
||||||
|
366-json_limit = 300_000
|
||||||
|
367-output_truncated = len(encoded) > json_limit
|
||||||
|
368-
|
||||||
|
369-if output_truncated:
|
||||||
|
370- output_preview = encoded[:json_limit].decode(
|
||||||
|
371- "utf-8",
|
||||||
|
372- errors="ignore",
|
||||||
|
373- )
|
||||||
|
374-else:
|
||||||
|
375- output_preview = output
|
||||||
|
376-
|
||||||
|
377-document = {
|
||||||
|
378- "schema_version": 1,
|
||||||
|
379- "channel": "homelab-runtime",
|
||||||
|
380- "command_id": command_id,
|
||||||
|
381- "status": status,
|
||||||
|
382- "rc": int(rc),
|
||||||
|
383- "host": host,
|
||||||
|
384- "mode": mode,
|
||||||
|
385: "component": component,
|
||||||
|
386- "started_at_utc": started,
|
||||||
|
387- "finished_at_utc": finished,
|
||||||
|
388- "reference_register_checked": True,
|
||||||
|
389- "reference_sha256": reference_sha,
|
||||||
|
390- "error_register_checked": True,
|
||||||
|
391- "error_register_sha256": error_sha,
|
||||||
|
392- "command_sha256": command_sha,
|
||||||
|
393- "duplicate_failed_command_blocked": repeat_blocked == "true",
|
||||||
|
394- "block_reason": block_reason or None,
|
||||||
|
395- "execution_started": run_started == "true",
|
||||||
|
396: "changes_made": changes_made == "true",
|
||||||
|
397- "sanitized": True,
|
||||||
|
398- "secrets_included": False,
|
||||||
|
399- "private_addresses_included": False,
|
||||||
|
400- "raw_evidence_retained_locally": True,
|
||||||
|
401- "raw_evidence_sha256": raw_sha,
|
||||||
|
402- "sanitized_output_sha256": sanitized_sha,
|
||||||
|
403- "output_truncated_in_json": output_truncated,
|
||||||
|
404- "full_sanitized_output_url": (
|
||||||
|
405- "https://git.gram1.ru/.well-known/"
|
||||||
|
406- "homelab-runtime/latest.txt"
|
||||||
|
407- ),
|
||||||
|
408- "output": output_preview,
|
||||||
|
409-}
|
||||||
|
410-
|
||||||
|
411-Path(json_path).write_text(
|
||||||
|
412- json.dumps(
|
||||||
|
413- document,
|
||||||
|
414- ensure_ascii=False,
|
||||||
|
415- indent=2,
|
||||||
|
416- )
|
||||||
|
417- + "\n",
|
||||||
|
418- encoding="utf-8",
|
||||||
|
419-)
|
||||||
|
420-PY
|
||||||
|
421-
|
||||||
|
422-{
|
||||||
|
423- echo 'CHAT_OUTPUT_BEGIN'
|
||||||
|
424- echo "COMMAND_ID=$COMMAND_ID"
|
||||||
|
425- echo "STATUS=$STATUS"
|
||||||
|
426- echo "RC=$RC"
|
||||||
|
427- echo "HOST=$HOST_SHORT"
|
||||||
|
428- echo "MODE=$MODE"
|
||||||
|
429: echo "COMPONENT=$COMPONENT"
|
||||||
|
430- echo 'REFERENCE_REGISTER_CHECK=OK'
|
||||||
|
431- echo "REFERENCE_SHA256=$REFERENCE_SHA256"
|
||||||
|
432- echo 'ERROR_REGISTER_CHECK=OK'
|
||||||
|
433- echo "ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256"
|
||||||
|
434- echo "COMMAND_SHA256=$COMMAND_SHA256"
|
||||||
|
435- echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED"
|
||||||
|
436- echo "EXECUTION_STARTED=$RUN_STARTED"
|
||||||
|
437: echo "CHANGES_MADE=$CHANGES_MADE"
|
||||||
|
438- echo 'SANITIZED=yes'
|
||||||
|
439- echo 'SECRETS_INCLUDED=no'
|
||||||
|
440- echo 'PRIVATE_ADDRESSES_INCLUDED=no'
|
||||||
|
441- echo "RAW_EVIDENCE_SHA256=$RAW_SHA256"
|
||||||
|
442- echo "SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256"
|
||||||
|
443- echo 'OUTPUT_BEGIN'
|
||||||
|
444- cat "$SANITIZED_FILE"
|
||||||
|
445- echo
|
||||||
|
446- echo 'OUTPUT_END'
|
||||||
|
447- echo 'CHAT_OUTPUT_END'
|
||||||
|
448-} >"$TXT_FILE"
|
||||||
|
449-
|
||||||
|
450-chmod 0600 \
|
||||||
|
451- "$RAW_FILE" \
|
||||||
|
452- "$SANITIZED_FILE" \
|
||||||
|
453- "$JSON_FILE" \
|
||||||
|
454- "$TXT_FILE"
|
||||||
|
455-
|
||||||
|
456-TARGET=debian@[PRIVATE_IP]
|
||||||
|
457-REMOTE_PREFIX="/tmp/homelab-runtime-${COMMAND_ID}-$$"
|
||||||
|
458-
|
||||||
|
459-SSH_OPTS=(
|
||||||
|
460- -o BatchMode=yes
|
||||||
|
461- -o ConnectTimeout=10
|
||||||
|
462- -o ConnectionAttempts=1
|
||||||
|
463- -o StrictHostKeyChecking=yes
|
||||||
|
464- -o UserKnownHostsFile=[SENSITIVE_PATH]
|
||||||
|
465-)
|
||||||
|
466-
|
||||||
|
467-scp \
|
||||||
|
468- -q \
|
||||||
|
469- "${SSH_OPTS[@]}" \
|
||||||
|
470- "$JSON_FILE" \
|
||||||
|
471- "${TARGET}:${REMOTE_PREFIX}.json"
|
||||||
|
472-
|
||||||
|
--
|
||||||
|
518- echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE'
|
||||||
|
519- echo "COMMAND_ID=$COMMAND_ID"
|
||||||
|
520- echo "LOCAL_RAW_FILE=$RAW_FILE"
|
||||||
|
521- exit 75
|
||||||
|
522-fi
|
||||||
|
523-
|
||||||
|
524-printf '%s\t%s\t%s\t%s\t%s\t%s\n' \
|
||||||
|
525- "$FINISHED_AT" \
|
||||||
|
526- "$COMMAND_ID" \
|
||||||
|
527- "$COMMAND_SHA256" \
|
||||||
|
528- "$RC" \
|
||||||
|
529- "$STATUS" \
|
||||||
|
530: "$COMPONENT" >>"$LEDGER"
|
||||||
|
531-
|
||||||
|
532-echo
|
||||||
|
533-echo '===== HOMELAB CHAT RUN COMPLETE ====='
|
||||||
|
534-echo "COMMAND_ID=$COMMAND_ID"
|
||||||
|
535-echo "STATUS=$STATUS"
|
||||||
|
536-echo "RC=$RC"
|
||||||
|
537-echo 'REFERENCE_REGISTER_CHECK=OK'
|
||||||
|
538-echo 'ERROR_REGISTER_CHECK=OK'
|
||||||
|
539-echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED"
|
||||||
|
540-echo 'GITEA_PUBLICATION=OK'
|
||||||
|
541-echo "PUBLIC_URL=$PUBLIC_URL"
|
||||||
|
542-echo "LOCAL_RAW_FILE=$RAW_FILE"
|
||||||
|
543-echo 'SHELL_SESSION_PRESERVED=yes'
|
||||||
|
544-
|
||||||
|
545-exit "$RC"
|
||||||
|
=== PARTIAL_REFERENCE_STATE ===
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6964026990 /etc/homelab/reference/public
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6964026990 /etc/homelab/reference/runbooks
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6964026990 /etc/homelab/reference/snapshots
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6970459770 /etc/homelab/reference/declared
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6974681490 /etc/homelab/reference/observed
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6978512600 /etc/homelab/reference/effective
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6978691140 /etc/homelab/reference
|
||||||
|
d 750 4096 2026-07-22T10:34:58.6978834310 /etc/homelab/reference/state
|
||||||
|
d 750 4096 2026-07-22T11:03:47.1132880790 /etc/homelab/reference/schema
|
||||||
|
f 640 153 2026-07-22T10:34:58.6968014830 /etc/homelab/reference/declared/dns.json
|
||||||
|
f 640 153 2026-07-22T10:34:58.6976137370 /etc/homelab/reference/effective/dns.json
|
||||||
|
f 640 155 2026-07-22T10:34:58.6966969670 /etc/homelab/reference/declared/nodes.json
|
||||||
|
f 640 155 2026-07-22T10:34:58.6975198720 /etc/homelab/reference/effective/nodes.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6967158380 /etc/homelab/reference/declared/guests.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6969484530 /etc/homelab/reference/declared/access.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6969644820 /etc/homelab/reference/declared/owners.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6971898020 /etc/homelab/reference/observed/dns.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6975362380 /etc/homelab/reference/effective/guests.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6977531080 /etc/homelab/reference/effective/access.json
|
||||||
|
f 640 156 2026-07-22T10:34:58.6977693510 /etc/homelab/reference/effective/owners.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6966738300 /etc/homelab/reference/declared/cluster.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6968176220 /etc/homelab/reference/declared/domains.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6968507170 /etc/homelab/reference/declared/ingress.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6968665330 /etc/homelab/reference/declared/storage.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6968815380 /etc/homelab/reference/declared/backups.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6969804230 /etc/homelab/reference/declared/vendors.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6975026350 /etc/homelab/reference/effective/cluster.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6976296950 /etc/homelab/reference/effective/domains.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6976621460 /etc/homelab/reference/effective/ingress.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6976775090 /etc/homelab/reference/effective/storage.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6976922400 /etc/homelab/reference/effective/backups.json
|
||||||
|
f 640 157 2026-07-22T10:34:58.6977857550 /etc/homelab/reference/effective/vendors.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6967496500 /etc/homelab/reference/declared/services.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6967835450 /etc/homelab/reference/declared/networks.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6970122440 /etc/homelab/reference/declared/security.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6970626700 /etc/homelab/reference/declared/runbooks.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6970953450 /etc/homelab/reference/observed/nodes.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6975661010 /etc/homelab/reference/effective/services.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6975973330 /etc/homelab/reference/effective/networks.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6978179760 /etc/homelab/reference/effective/security.json
|
||||||
|
f 640 158 2026-07-22T10:34:58.6978691140 /etc/homelab/reference/effective/runbooks.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6969966040 /etc/homelab/reference/declared/contracts.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6971108280 /etc/homelab/reference/observed/guests.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6973313430 /etc/homelab/reference/observed/access.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6973523380 /etc/homelab/reference/observed/owners.json
|
||||||
|
f 640 159 2026-07-22T10:34:58.6978023050 /etc/homelab/reference/effective/contracts.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6967330550 /etc/homelab/reference/declared/containers.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6968977560 /etc/homelab/reference/declared/monitoring.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6970793370 /etc/homelab/reference/observed/cluster.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6972051460 /etc/homelab/reference/observed/domains.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6972368890 /etc/homelab/reference/observed/ingress.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6972525750 /etc/homelab/reference/observed/storage.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6972679110 /etc/homelab/reference/observed/backups.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6973681500 /etc/homelab/reference/observed/vendors.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6975511580 /etc/homelab/reference/effective/containers.json
|
||||||
|
f 640 160 2026-07-22T10:34:58.6977071740 /etc/homelab/reference/effective/monitoring.json
|
||||||
|
f 640 161 2026-07-22T10:34:58.6971427070 /etc/homelab/reference/observed/services.json
|
||||||
|
f 640 161 2026-07-22T10:34:58.6971740390 /etc/homelab/reference/observed/networks.json
|
||||||
|
f 640 161 2026-07-22T10:34:58.6974304020 /etc/homelab/reference/observed/security.json
|
||||||
|
f 640 161 2026-07-22T10:34:58.6974849460 /etc/homelab/reference/observed/runbooks.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6967668110 /etc/homelab/reference/declared/applications.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6968346450 /etc/homelab/reference/declared/certificates.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6969325220 /etc/homelab/reference/declared/dependencies.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6974142710 /etc/homelab/reference/observed/contracts.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6975824200 /etc/homelab/reference/effective/applications.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6976463310 /etc/homelab/reference/effective/certificates.json
|
||||||
|
f 640 162 2026-07-22T10:34:58.6977380340 /etc/homelab/reference/effective/dependencies.json
|
||||||
|
f 640 163 2026-07-22T10:34:58.6971273900 /etc/homelab/reference/observed/containers.json
|
||||||
|
f 640 163 2026-07-22T10:34:58.6972830790 /etc/homelab/reference/observed/monitoring.json
|
||||||
|
f 640 165 2026-07-22T10:34:58.6971583070 /etc/homelab/reference/observed/applications.json
|
||||||
|
f 640 165 2026-07-22T10:34:58.6972204840 /etc/homelab/reference/observed/certificates.json
|
||||||
|
f 640 165 2026-07-22T10:34:58.6973154820 /etc/homelab/reference/observed/dependencies.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6969164820 /etc/homelab/reference/declared/external_services.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6970278950 /etc/homelab/reference/declared/disaster_recovery.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6970459770 /etc/homelab/reference/declared/change_management.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6977227780 /etc/homelab/reference/effective/external_services.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6978337330 /etc/homelab/reference/effective/disaster_recovery.json
|
||||||
|
f 640 167 2026-07-22T10:34:58.6978512600 /etc/homelab/reference/effective/change_management.json
|
||||||
|
f 640 170 2026-07-22T10:34:58.6972985790 /etc/homelab/reference/observed/external_services.json
|
||||||
|
f 640 170 2026-07-22T10:34:58.6974490020 /etc/homelab/reference/observed/disaster_recovery.json
|
||||||
|
f 640 170 2026-07-22T10:34:58.6974681490 /etc/homelab/reference/observed/change_management.json
|
||||||
|
f 640 1780 2026-07-22T11:12:10.9514643580 /etc/homelab/reference/manifest.json
|
||||||
|
f 640 199 2026-07-22T11:12:10.9518855430 /etc/homelab/reference/state/current.json
|
||||||
|
f 640 262 2026-07-22T11:12:10.9515215670 /etc/homelab/reference/schema/record.schema.json
|
||||||
|
f 640 440 2026-07-22T11:03:47.1133590400 /etc/homelab/reference/schema/edit-policy.json
|
||||||
|
f 640 593 2026-07-22T11:12:10.9518574460 /etc/homelab/reference/README.md
|
||||||
|
CLUSTER_REFERENCE_PUBLICATION_ROOTCAUSE=COMPLETE
|
||||||
|
|
||||||
OUTPUT_END
|
OUTPUT_END
|
||||||
CHAT_OUTPUT_END
|
CHAT_OUTPUT_END
|
||||||
|
|||||||
Reference in New Issue
Block a user