/
run_org.go
125 lines (97 loc) · 2.53 KB
/
run_org.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
// ThreatSpec package main
package main
import (
"fmt"
"github.com/jawher/mow.cli"
"github.com/pki-io/controller"
)
func orgCmd(cmd *cli.Cmd) {
cmd.Command("list", "List organisations", orgListCmd)
cmd.Command("show", "Show an organisation", orgShowCmd)
cmd.Command("run", "Run organisation tasks", orgRunCmd)
cmd.Command("delete", "Delete an organisation", orgDeleteCmd)
}
func orgListCmd(cmd *cli.Cmd) {
cmd.Spec = "[OPTIONS]"
params := controller.NewOrgParams()
cmd.Action = func() {
app := NewAdminApp()
logger.Info("listing organisations")
cont, err := controller.NewOrg(app.env)
if err != nil {
app.Fatal(err)
}
orgs, err := cont.List(params)
if err != nil {
app.Fatal(err)
}
table := app.NewTable()
table.SetHeader([]string{"Name", "Id"})
for _, org := range orgs {
table.Append([]string{org.Name(), org.Id()})
}
app.RenderTable(table)
}
}
func orgShowCmd(cmd *cli.Cmd) {
cmd.Spec = "[OPTIONS]"
params := controller.NewOrgParams()
params.Private = cmd.BoolOpt("private", false, "show/export private data")
cmd.Action = func() {
app := NewAdminApp()
logger.Info("showing organisation")
cont, err := controller.NewOrg(app.env)
if err != nil {
app.Fatal(err)
}
org, err := cont.Show(params)
if err != nil {
app.Fatal(err)
}
if org != nil {
table := app.NewTable()
orgData := [][]string{
[]string{"ID", org.Id()},
[]string{"Name", org.Name()},
[]string{"Key type", org.Data.Body.KeyType},
}
table.AppendBulk(orgData)
app.RenderTable(table)
fmt.Println("")
fmt.Printf("Public signing key:\n%s\n", org.Data.Body.PublicSigningKey)
fmt.Printf("Public encryption key:\n%s\n", org.Data.Body.PublicEncryptionKey)
}
}
}
func orgRunCmd(cmd *cli.Cmd) {
cmd.Spec = "[OPTIONS]"
params := controller.NewOrgParams()
cmd.Action = func() {
app := NewAdminApp()
logger.Info("running organisation tasks")
cont, err := controller.NewOrg(app.env)
if err != nil {
app.Fatal(err)
}
if err := cont.Run(params); err != nil {
app.Fatal(err)
}
}
}
func orgDeleteCmd(cmd *cli.Cmd) {
cmd.Spec = "ORG [OPTIONS]"
params := controller.NewOrgParams()
params.Org = cmd.StringArg("ORG", "", "name of organisation")
params.ConfirmDelete = cmd.StringOpt("confirm-delete", "", "reason for deleting organisation")
cmd.Action = func() {
app := NewAdminApp()
logger.Info("deleting organisation")
cont, err := controller.NewOrg(app.env)
if err != nil {
app.Fatal(err)
}
if err := cont.Delete(params); err != nil {
app.Fatal(err)
}
}
}