hs = {} hs.status = "Progressing" hs.message = "Waiting for OpenTelemetry Collector status" if obj.status ~= nil then if obj.status.scale ~= nil and obj.status.scale.statusReplicas ~= nil then local statusReplicas = obj.status.scale.statusReplicas -- Parse the statusReplicas string (e.g., "2/2", "0/2", "1/3") local ready, total = string.match(statusReplicas, "(%d+)/(%d+)") if ready ~= nil and total ~= nil then ready = tonumber(ready) total = tonumber(total) if ready == 0 then -- DaemonSet desiredNumberScheduled is based on eligible nodes. -- 0/0 is valid when no nodes match; treat as Healthy. -- https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#how-daemon-pods-are-scheduled if obj.spec ~= nil and obj.spec.mode == "daemonset" and total == 0 then hs.status = "Healthy" hs.message = "DaemonSet has no eligible nodes (0/0)" else hs.status = "Degraded" hs.message = "No replicas are ready" end elseif ready == total then hs.status = "Healthy" hs.message = "All replicas are ready" else hs.status = "Progressing" hs.message = "Replicas are starting up" end else hs.status = "Progressing" hs.message = "Unable to parse replica status: " ..tostring(statusReplicas) end else if obj.spec.mode == "sidecar" then hs.status = "Healthy" hs.message = "Collector is running in sidecar mode" else hs.status = "Progressing" hs.message = "Scale status not available" end end end return hs