Authored by chunhua.zhang

修改了list方法的实现

... ... @@ -5,45 +5,45 @@ local get_servers = upstream.get_servers
local get_upstreams = upstream.get_upstreams
local cache=ngx.shared.upstream
function list()
local t={}
local us=get_upstreams()
-- get all peers for upstram: u
function list(u)
for _,u in ipairs(us) do
local peers,err = upstream.get_primary_peers(u)
if err then
ngx.say("failed to get servers in upstream ", u)
local d={}
d["name"]=u
d["value"]={}
-- get primary peers
local peers,err = upstream.get_primary_peers(u)
if err then
ngx.say("failed to get primary servers in upstream ", u)
return
end
local d={}
d["name"]=u
d["value"]={}
for _,p in ipairs(peers) do
end
for _,p in ipairs(peers) do
local s={}
s["id"]=p.id
s["down"]=p.down and p.down or false
s["name"]=p.name
s["backup"]=false
table.insert(d["value"],s)
end
peers,err = upstream.get_backup_peers(u)
if err then
ngx.say("failed to get servers in upstream ", u)
end
-- get backup peers
peers,err = upstream.get_backup_peers(u)
if err then
ngx.say("failed to get backup servers in upstream ", u)
return
end
for _,p in ipairs(peers) do
end
for _,p in ipairs(peers) do
local s={}
s["id"]=p.id
s["down"]=p.down and p.down or false
s["name"]=p.name
s["backup"]=true
table.insert(d["value"],s)
end
table.insert(t,d)
end
end
ngx.header["Content-type"]="application/json;charset=utf-8"
ngx.say(json.encode(t))
ngx.say(json.encode(d))
end
... ... @@ -68,7 +68,8 @@ end
local args=ngx.req.get_uri_args()
local method=args["method"]
if method == "list" then
list()
local u_name = args["upstream"]
list(u_name)
elseif(method=="down" or method=="up") then
local upstream=args["upstream"]
local backup=args["backup"]=="true" and true or false
... ...
... ... @@ -11,4 +11,14 @@
- `Remove blocked ip`: http://erp.yoho.yohoops.org/malIp?method=pubDel&ips=1.2.3.4,1.2.3.5
- `Add to block ip`: http://erp.yoho.yohoops.org/malIp?method=pubAdd&ips=1.2.3.4,1.2.3.5&expire=110000
- `Remove all block ip`: http://erp.yoho.yohoops.org/malIp?method=flushAll
- `Retrive all block ip`: http://erp.yoho.yohoops.org/malIp?method=queryAll
\ No newline at end of file
- `Retrive all block ip`: http://erp.yoho.yohoops.org/malIp?method=queryAll
## 动态`upstream`的支持
基于 [lua-upstream-nginx-module] (https://github.com/openresty/lua-upstream-nginx-module) 动态设置upstream的 `up`, `down`
- 查询所有的`upstreams`信息: `curl -i -H "Host: api.yoho.cn" "http://127.0.0.1/upstreams?method=list&upstream=apigateway"`
- 设置 `upstream` 名称为 `apigateway`的`upstream` 第0个 `backend server` 状态为`down`: `curl -i -H "Host: api.yoho.cn" "http://127.0.0.1/upstreams?method=down&upstream=apigateway&id=0"`
- 设置`upstream` 名称为 `apigateway`的`upstream` 第0个 `backend server` 状态为`up`: `curl -i -H "Host: api.yoho.cn" "http://127.0.0.1/upstreams?method=up&upstream=apigateway&id=0"`
... ...