mirror of
https://github.com/argoproj/argo-cd
synced 2026-04-21 17:07:16 +00:00
69 lines
2.5 KiB
Lua
69 lines
2.5 KiB
Lua
local hs = {}
|
|
|
|
local cnpgStatus = {
|
|
["Cluster in healthy state"] = "Healthy",
|
|
["Setting up primary"] = "Progressing",
|
|
["Creating a new replica"] = "Progressing",
|
|
["Upgrading cluster"] = "Progressing",
|
|
["Waiting for the instances to become active"] = "Progressing",
|
|
["Promoting to primary cluster"] = "Progressing",
|
|
["Switchover in progress"] = "Degraded",
|
|
["Failing over"] = "Degraded",
|
|
["Upgrading Postgres major version"] = "Degraded",
|
|
["Cluster upgrade delayed"] = "Degraded",
|
|
["Waiting for user action"] = "Degraded",
|
|
["Primary instance is being restarted in-place"] = "Degraded",
|
|
["Primary instance is being restarted without a switchover"] = "Degraded",
|
|
["Cluster cannot execute instance online upgrade due to missing architecture binary"] = "Degraded",
|
|
["Online upgrade in progress"] = "Degraded",
|
|
["Applying configuration"] = "Degraded",
|
|
["Unable to create required cluster objects"] = "Suspended",
|
|
["Cluster cannot proceed to reconciliation due to an unknown plugin being required"] = "Suspended",
|
|
["Cluster has incomplete or invalid image catalog"] = "Suspended",
|
|
["Cluster is unrecoverable and needs manual intervention"] = "Suspended",
|
|
}
|
|
|
|
function hibernating(obj)
|
|
for i, condition in pairs(obj.status.conditions) do
|
|
if condition.type == "cnpg.io/hibernation" then
|
|
return condition
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
-- Check if reconciliation is suspended, since this is an explicit user action we return the "suspended" status immediately
|
|
if obj.metadata and obj.metadata.annotations and obj.metadata.annotations["cnpg.io/reconciliationLoop"] == "disabled" then
|
|
hs.status = "Suspended"
|
|
hs.message = "Cluster reconciliation is suspended"
|
|
return hs
|
|
end
|
|
|
|
if obj.status ~= nil and obj.status.conditions ~= nil then
|
|
local hibernation = hibernating(obj)
|
|
if hibernation ~= nil then
|
|
if hibernation.status == "True" then
|
|
hs.status = "Suspended"
|
|
hs.message = hibernation.message
|
|
return hs
|
|
else
|
|
hs.status = "Degraded"
|
|
hs.message = hibernation.message
|
|
return hs
|
|
end
|
|
end
|
|
statusState = cnpgStatus[obj.status.phase]
|
|
if statusState ~= nil then
|
|
hs.status = statusState
|
|
hs.message = obj.status.phaseReason
|
|
return hs
|
|
else
|
|
hs.status = "Unknown"
|
|
hs.message = obj.status.phaseReason
|
|
return hs
|
|
end
|
|
end
|
|
|
|
hs.status = "Progressing"
|
|
hs.message = obj.status.phaseReason
|
|
return hs
|