forked from G-Core/gcorelabscloud-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
servergroups.go
125 lines (117 loc) · 3.19 KB
/
servergroups.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package servergroups
import (
"github.com/alexandrpaliy/gcorelabscloud-go/client/flags"
"github.com/alexandrpaliy/gcorelabscloud-go/client/servergroups/v1/client"
"github.com/alexandrpaliy/gcorelabscloud-go/client/utils"
"github.com/alexandrpaliy/gcorelabscloud-go/gcore/servergroup/v1/servergroups"
"github.com/urfave/cli/v2"
)
var serverGroupIDText = "servergroup_id is mandatory argument"
var Commands = cli.Command{
Name: "servergroup",
Usage: "GCloud server groups v1 API",
Subcommands: []*cli.Command{
&serverGroupListCommand,
&serverGroupGetCommand,
&serverGroupDeleteCommand,
&serverGroupCreateCommand,
},
}
var serverGroupListCommand = cli.Command{
Name: "list",
Usage: "List server group",
Action: func(c *cli.Context) error {
client, err := client.NewServerGroupClientV1(c)
if err != nil {
_ = cli.ShowAppHelp(c)
return cli.NewExitError(err, 1)
}
results, err := servergroups.ListAll(client)
if err != nil {
return cli.NewExitError(err, 1)
}
utils.ShowResults(results, c.String("format"))
return nil
},
}
var serverGroupGetCommand = cli.Command{
Name: "show",
Usage: "Get server group information",
ArgsUsage: "<servergroup_id>",
Action: func(c *cli.Context) error {
serverGroupID, err := flags.GetFirstStringArg(c, serverGroupIDText)
if err != nil {
_ = cli.ShowCommandHelp(c, "show")
return err
}
client, err := client.NewServerGroupClientV1(c)
if err != nil {
_ = cli.ShowAppHelp(c)
return cli.NewExitError(err, 1)
}
sg, err := servergroups.Get(client, serverGroupID).Extract()
if err != nil {
return cli.NewExitError(err, 1)
}
utils.ShowResults(sg, c.String("format"))
return nil
},
}
var serverGroupDeleteCommand = cli.Command{
Name: "delete",
Usage: "Delete server group by ID",
ArgsUsage: "<servergroup_id>",
Action: func(c *cli.Context) error {
serverGroupID, err := flags.GetFirstStringArg(c, serverGroupIDText)
if err != nil {
_ = cli.ShowCommandHelp(c, "delete")
return err
}
client, err := client.NewServerGroupClientV1(c)
if err != nil {
_ = cli.ShowAppHelp(c)
return cli.NewExitError(err, 1)
}
result, err := servergroups.Delete(client, serverGroupID).Extract()
if err != nil {
return cli.NewExitError(err, 1)
}
utils.ShowResults(result, c.String("format"))
return nil
},
}
var serverGroupCreateCommand = cli.Command{
Name: "create",
Usage: "Create server group",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "name",
Aliases: []string{"n"},
Usage: "Server group name",
Required: true,
},
&cli.StringFlag{
Name: "policy",
Aliases: []string{"p"},
Usage: "Server group policy. Available value is 'affinity', 'anti-affinity'",
Required: true,
},
},
Action: func(c *cli.Context) error {
client, err := client.NewServerGroupClientV1(c)
if err != nil {
_ = cli.ShowAppHelp(c)
return cli.NewExitError(err, 1)
}
opts := servergroups.CreateOpts{
Name: c.String("name"),
Policy: servergroups.ServerGroupPolicy(c.String("policy")),
}
result, err := servergroups.Create(client, opts).Extract()
if err != nil {
return cli.NewExitError(err, 1)
}
utils.ShowResults(result, c.String("format"))
return nil
},
}