mirror of
https://github.com/hanzoai/deploy.git
synced 2026-10-07 08:44:50 +00:00
73 lines
2.3 KiB
Lua
73 lines
2.3 KiB
Lua
-- CRD documentation: https://rook.github.io/docs/rook/latest-release/CRDs/Cluster/ceph-cluster-crd/
|
|
local hs = {
|
|
status = "Progressing",
|
|
message = ""
|
|
}
|
|
|
|
function append_to_message(message)
|
|
if message ~= "" then
|
|
if hs.message ~= "" then
|
|
hs.message = hs.message .. " - " .. message
|
|
else
|
|
hs.message = message
|
|
end
|
|
end
|
|
end
|
|
|
|
if obj.status == nil then
|
|
append_to_message("Waiting for status to be reported")
|
|
return hs
|
|
end
|
|
|
|
-- Check the main Ceph health status first - https://github.com/ceph/ceph/blob/v20.3.0/src/include/health.h#L12
|
|
if obj.status.ceph ~= nil and obj.status.ceph.health ~= nil then
|
|
local ceph_health = obj.status.ceph.health
|
|
local details_message = ""
|
|
|
|
-- Build details message from status.ceph.details if available
|
|
if obj.status.ceph.details ~= nil then
|
|
local detail_parts = {}
|
|
local sorted_detail_types = {}
|
|
for detail_type, _ in pairs(obj.status.ceph.details) do
|
|
table.insert(sorted_detail_types, detail_type)
|
|
end
|
|
table.sort(sorted_detail_types)
|
|
for _, detail_type in ipairs(sorted_detail_types) do
|
|
local detail_info = obj.status.ceph.details[detail_type]
|
|
if detail_info.message ~= nil then
|
|
table.insert(detail_parts, detail_info.message)
|
|
end
|
|
end
|
|
if #detail_parts > 0 then
|
|
details_message = " (" .. table.concat(detail_parts, "; ") .. ")"
|
|
end
|
|
end
|
|
|
|
if ceph_health == "HEALTH_ERR" or ceph_health == "HEALTH_WARN" then
|
|
hs.status = "Degraded"
|
|
elseif ceph_health == "HEALTH_OK" then
|
|
hs.status = "Healthy"
|
|
end
|
|
append_to_message("Ceph health is " .. ceph_health .. details_message)
|
|
end
|
|
|
|
-- Check state - https://github.com/rook/rook/blob/v1.17.7/pkg/apis/ceph.rook.io/v1/types.go#L621
|
|
if obj.status.state ~= nil then
|
|
if hs.status == "Healthy" then
|
|
append_to_message("Ceph cluster state is " .. obj.status.state)
|
|
if obj.status.state == "Created" or obj.status.state == "Connected" then
|
|
hs.status = "Healthy"
|
|
elseif obj.status.state == "Error" then
|
|
hs.status = "Degraded"
|
|
else
|
|
hs.status = "Progressing"
|
|
end
|
|
end
|
|
end
|
|
|
|
if obj.status.message ~= nil then
|
|
append_to_message(obj.status.message)
|
|
end
|
|
|
|
return hs
|