forked from CodisLabs/codis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
proxy.go
69 lines (59 loc) · 1.39 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
65
66
67
68
69
// Copyright 2014 Wandoujia Inc. All Rights Reserved.
// Licensed under the MIT (MIT-LICENSE.txt) license.
package main
import (
"encoding/json"
"fmt"
"github.com/wandoulabs/codis/pkg/models"
"github.com/docopt/docopt-go"
log "github.com/ngaut/logging"
)
func cmdProxy(argv []string) (err error) {
usage := `usage:
cconfig proxy list
cconfig proxy offline <proxy_name>
cconfig proxy online <proxy_name>
`
args, err := docopt.Parse(usage, argv, true, "", false)
if err != nil {
log.Error(err)
return err
}
log.Debug(args)
zkLock.Lock(fmt.Sprintf("proxy, %+v", argv))
defer func() {
err := zkLock.Unlock()
if err != nil {
log.Error(err)
}
}()
if args["list"].(bool) {
log.Warning(err)
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 {
proxies, err := models.ProxyList(zkConn, productName, nil)
if err != nil {
log.Warning(err)
return err
}
b, _ := json.MarshalIndent(proxies, " ", " ")
fmt.Println(string(b))
return nil
}
func runSetProxyStatus(proxyName, status string) error {
if err := models.SetProxyStatus(zkConn, productName, proxyName, status); err != nil {
log.Warning(err)
return err
}
return nil
}