-- 0.3 changes: different layout better overview
local concat = table.concat
local upstream = require "ngx.upstream"
local get_servers = upstream.get_servers
local get_upstreams = upstream.get_upstreams
local us = get_upstreams()
local worker_pid = tostring(ngx.worker.pid())
ngx.print("
Upstream management page\n")
ngx.print("\n")
ngx.print("\n")
for _, u in ipairs(us) do
ngx.say("Peer status in upstream ", u, ", worker-PID: ",worker_pid,": \n
")
local srvs, err = upstream.get_primary_peers(u)
-- local srvs, err = get_servers(u)
local p_up = " style=\"background:green; color:white;\""
local p_down = " style=\"background:red; color:white;\""
local p_addr = " style=\"background:blue; color:white;\""
local p_name = " style=\"background:lightblue; color:white;\""
if not srvs then
ngx.say("failed to get servers in upstream ", u)
else
for _, srv in ipairs(srvs) do
local r_id = _ - 1
local l_state = 0
local l_first = 0
if r_id > 0 then l_first = 1 end
for k, v in pairs(srv) do
if k == "addr" then l_state = 1 -- which fields do we want to see?
elseif k == "server" then l_state = 1
elseif k == "fails" then l_state = 2
elseif k == "down" then l_state = 3
elseif k == "fail_timeout" then l_state = 2
elseif k == "weight" then l_state = 2
-- values: current_weight, weight, id, fail_timeout, fails, down, effective_weight, name, server, max_fails, addr
end
if l_state > 0 then
if l_first == 1 then ngx.print("
"); l_first = 0 end
ngx.print("
"
ngx.print(p_test)
ngx.print("")
ngx.print("")
ngx.print("")
if k == "down" then
if tostring(v) == "true" then
ngx.print("")
ngx.print("
\n")
else
ngx.print("")
ngx.print("\n")
end
else
ngx.print("\n")
end
end
l_state = 0
end
end
end
ngx.print("