forked from CodisLabs/codis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
proxy.go
64 lines (55 loc) · 1.33 KB
/
proxy.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Copyright 2014 Wandoujia Inc. All Rights Reserved.
// Licensed under the MIT (MIT-LICENSE.txt) license.
package main
import (
"fmt"
"github.com/docopt/docopt-go"
"github.com/wandoulabs/codis/pkg/models"
"github.com/wandoulabs/codis/pkg/utils/log"
)
func cmdProxy(argv []string) (err error) {
usage := `usage:
codis-config proxy list
codis-config proxy offline <proxy_name>
codis-config proxy online <proxy_name>
`
args, err := docopt.Parse(usage, argv, true, "", false)
if err != nil {
log.ErrorErrorf(err, "parse args failed")
return err
}
log.Debugf("parse args = {%+v}", args)
if args["list"].(bool) {
return runProxyList()
}
proxyName := args["<proxy_name>"].(string)
if args["online"].(bool) {
return runSetProxyStatus(proxyName, models.PROXY_STATE_ONLINE)
}
if args["offline"].(bool) {
return runSetProxyStatus(proxyName, models.PROXY_STATE_MARK_OFFLINE)
}
return nil
}
func runProxyList() error {
var v interface{}
err := callApi(METHOD_GET, "/api/proxy/list", nil, &v)
if err != nil {
return err
}
fmt.Println(jsonify(v))
return nil
}
func runSetProxyStatus(proxyName, status string) error {
info := models.ProxyInfo{
Id: proxyName,
State: status,
}
var v interface{}
err := callApi(METHOD_POST, "/api/proxy", info, &v)
if err != nil {
return err
}
fmt.Println(jsonify(v))
return nil
}