/
server.go
91 lines (85 loc) · 2.39 KB
/
server.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package command
import (
"github.com/urfave/cli"
"github.com/vulcand/vulcand/engine"
)
func NewServerCommand(cmd *Command) cli.Command {
return cli.Command{
Name: "server",
Usage: "Operations with servers",
Subcommands: []cli.Command{
{
Name: "ls",
Usage: "List all servers for a given backend",
Flags: []cli.Flag{
cli.StringFlag{Name: "backend, b", Usage: "backend id"},
},
Action: cmd.printServersAction,
},
{
Name: "show",
Usage: "Show server details",
Flags: []cli.Flag{
cli.StringFlag{Name: "id", Usage: "server id"},
cli.StringFlag{Name: "backend, b", Usage: "backend id"},
},
Action: cmd.printServerAction,
},
{
Name: "upsert",
Usage: "Add a new endpoint to location",
Action: cmd.upsertServerAction,
Flags: []cli.Flag{
cli.StringFlag{Name: "id", Usage: "server id"},
cli.StringFlag{Name: "backend, b", Usage: "backend id"},
cli.StringFlag{Name: "url", Usage: "url in form <scheme>://<host>:<port>"},
cli.DurationFlag{Name: "ttl", Usage: "ttl"},
},
},
{
Name: "rm",
Usage: "Remove endpoint from location",
Flags: []cli.Flag{
cli.StringFlag{Name: "id", Usage: "endpoint id"},
cli.StringFlag{Name: "backend, b", Usage: "backend id"},
},
Action: cmd.deleteServerAction,
},
},
}
}
func (cmd *Command) upsertServerAction(c *cli.Context) error {
s, err := engine.NewServer(c.String("id"), c.String("url"))
if err != nil {
return err
}
if err := cmd.client.UpsertServer(engine.BackendKey{Id: c.String("backend")}, *s, c.Duration("ttl")); err != nil {
return err
}
cmd.printOk("server upserted")
return nil
}
func (cmd *Command) deleteServerAction(c *cli.Context) error {
sk := engine.ServerKey{BackendKey: engine.BackendKey{Id: c.String("backend")}, Id: c.String("id")}
if err := cmd.client.DeleteServer(sk); err != nil {
return err
}
cmd.printOk("Server %v deleted", sk.Id)
return nil
}
func (cmd *Command) printServersAction(c *cli.Context) error {
srvs, err := cmd.client.GetServers(engine.BackendKey{Id: c.String("backend")})
if err != nil {
return err
}
cmd.printServers(srvs)
return nil
}
func (cmd *Command) printServerAction(c *cli.Context) error {
s, err := cmd.client.GetServer(engine.ServerKey{Id: c.String("id"), BackendKey: engine.BackendKey{Id: c.String("backend")}})
if err != nil {
return err
}
cmd.printServer(s)
return nil
}