-
-
Notifications
You must be signed in to change notification settings - Fork 178
/
cmd_admin.go
105 lines (86 loc) · 2.13 KB
/
cmd_admin.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
package cmd
import (
"fmt"
"math/rand"
"github.com/brianvoe/gofakeit/v6"
"github.com/dosco/graphjin/internal/client"
"github.com/dosco/graphjin/serv"
"github.com/gosimple/slug"
"github.com/spf13/cobra"
)
var (
host string
name string
secret string
)
func deployCmd() *cobra.Command {
c := &cobra.Command{
Use: "deploy",
Short: "Hot-deploy new config or rollback the active config",
Run: cmdDeploy(),
}
c.PersistentFlags().StringVar(&host, "host", "", "URL of the GraphJin service")
c.PersistentFlags().StringVar(&name, "name", "", "Set a custom name for the deployment")
c.PersistentFlags().StringVar(&secret, "secret", "", "Set the admin auth secret key")
c1 := &cobra.Command{
Use: "rollback",
Short: "Rollback to the previous active config",
Run: cmdRollback(),
}
c.AddCommand(c1)
return c
}
func initCmd() *cobra.Command {
c := &cobra.Command{
Use: "init",
Short: "Setup the admin database used for hot-depoly, etc",
Run: cmdInit(),
}
return c
}
func cmdInit() func(*cobra.Command, []string) {
return func(cmd *cobra.Command, args []string) {
setup(cpath)
initDB(true)
if err := serv.InitAdmin(db, conf.DBType); err != nil {
log.Fatal(err)
}
log.Infof("init successful: %s", name)
}
}
func cmdDeploy() func(*cobra.Command, []string) {
return func(cmd *cobra.Command, args []string) {
if host == "" {
log.Fatalf("--host is a required argument")
}
if secret == "" {
log.Fatalf("--secret is a required argument")
}
if name == "" {
// #nosec G404
name = slug.Make(fmt.Sprintf("%s-%d", gofakeit.Name(), rand.Intn(9)))
}
c := client.NewClient(host, secret)
if res, err := c.Deploy(name, "./config"); err != nil {
log.Fatal(err)
} else {
log.Infof(res.Msg)
}
}
}
func cmdRollback() func(*cobra.Command, []string) {
return func(cmd *cobra.Command, args []string) {
if host == "" {
log.Fatalf("--host is a required argument")
}
if name != "" {
log.Fatalf("--name not supported with rollback")
}
c := client.NewClient(host, secret)
if res, err := c.Rollback(); err != nil {
log.Fatal(err)
} else {
log.Infof(res.Msg)
}
}
}