feat(core): per-agent add-on status read model (#3425) #3455
No reviewers
Labels
No labels
1week
2weeks
Failed compliance check
IP cameras
NATS
Possible security concern
Review effort 1/5
Review effort 2/5
Review effort 3/5
Review effort 4/5
Review effort 5/5
UI
aardvark
accessibility
amd64
api
arm64
auth
back-end
bgp
blog
bug
build
checkers
ci-cd
cleanup
cnpg
codex
core
dependencies
device-management
documentation
duplicate
dusk
ebpf
enhancement
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
go
good first issue
help wanted
invalid
javascript
k8s
log-collector
mapper
mtr
needs-triage
netflow
network-sweep
observability
oracle
otel
plug-in
proton
python
question
reddit
redhat
research
rperf
rperf-checker
rust
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
zen-engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar!3455
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/native-addon-edge-ops"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements task 7.2 of add-native-addon-edge-ops: the control plane now records the per-add-on status agents report. Previously the agent capability status (service_name 'agent') was received and dropped; StatusHandler now routes it to AddonStatusIngestor, which decodes the payload, extracts the addon: sidecar entries (ignoring real sidecars like netprobe), and upserts a ServiceRadar.Plugins.AddonStatus row per add-on keyed by {agent_uid, addon_id} with state, active, degradation_reason, pid, restart_count, and last_health_at.
AddonStatus lives in the platform schema (migration 20260529010000) and is registered in the Plugins domain, so Edge Ops can reconcile desired assignments against observed state. version/arch columns exist but are nullable: the agent does not yet report them per add-on (task 7.1, agent-side enrichment); they can be populated without a schema change once it does. Rust-SRQL entity registration for addon_statuses is a follow-up.
Tests (addon_status_ingestor_test.exs, verified against the srql-fixtures CNPG cluster, 2 tests / 0 failures): addon sidecars parsed into the read model, non-addon sidecars ignored, re-ingest upserts the existing row. mix compile --warnings-as-errors green; openspec validate --strict green.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
IMPORTANT: Please sign the Developer Certificate of Origin
Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include
a DCO sign-off statement indicating the DCO acceptance in one commit message. Here
is an example DCO Signed-off-by line in a commit message:
Describe your changes
Issue ticket number and link
Code checklist before requesting a review
Implements task 7.2 of add-native-addon-edge-ops: the control plane now records the per-add-on status agents report. Previously the agent capability status (service_name 'agent') was received and dropped; StatusHandler now routes it to AddonStatusIngestor, which decodes the payload, extracts the addon:<id> sidecar entries (ignoring real sidecars like netprobe), and upserts a ServiceRadar.Plugins.AddonStatus row per add-on keyed by {agent_uid, addon_id} with state, active, degradation_reason, pid, restart_count, and last_health_at. AddonStatus lives in the platform schema (migration 20260529010000) and is registered in the Plugins domain, so Edge Ops can reconcile desired assignments against observed state. version/arch columns exist but are nullable: the agent does not yet report them per add-on (task 7.1, agent-side enrichment); they can be populated without a schema change once it does. Rust-SRQL entity registration for addon_statuses is a follow-up. Tests (addon_status_ingestor_test.exs, verified against the srql-fixtures CNPG cluster, 2 tests / 0 failures): addon sidecars parsed into the read model, non-addon sidecars ignored, re-ingest upserts the existing row. mix compile --warnings-as-errors green; openspec validate --strict green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>dc9899d7adb628716eaalgtm