initial: NAS agent runner setup
This commit is contained in:
commit
9d8a7fe237
16 changed files with 1121 additions and 0 deletions
36
_lib.sh
Normal file
36
_lib.sh
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#!/usr/bin/env bash
|
||||
# _lib.sh — gedeelde helpers; source vanuit andere scripts
|
||||
|
||||
: "${AGENT_STATE_DIR:=/var/run/agent}"
|
||||
: "${AGENT_LOG_DIR:=/var/log/agent}"
|
||||
|
||||
log() {
|
||||
printf '[%s] [%s] %s\n' \
|
||||
"$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
||||
"${0##*/}" \
|
||||
"$*" >&2
|
||||
}
|
||||
|
||||
# Schrijf JSON-state atomisch (write tmp + rename).
|
||||
# Argument: JSON-string. Voegt automatisch $.heartbeatAt = now toe.
|
||||
write_state() {
|
||||
local payload="$1"
|
||||
local tmp="${AGENT_STATE_DIR}/state.json.tmp.$$"
|
||||
local final="${AGENT_STATE_DIR}/state.json"
|
||||
|
||||
# Merge $payload met heartbeatAt; behoud andere bestaande keys door
|
||||
# de bestaande state in te lezen en payload daarover te leggen.
|
||||
local existing='{}'
|
||||
if [[ -f "$final" ]]; then
|
||||
existing=$(cat "$final" 2>/dev/null || echo '{}')
|
||||
fi
|
||||
|
||||
jq -n \
|
||||
--argjson existing "$existing" \
|
||||
--argjson payload "$payload" \
|
||||
--arg now "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
||||
'$existing + $payload + {heartbeatAt: $now}' \
|
||||
> "$tmp"
|
||||
|
||||
mv "$tmp" "$final"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue