-
Notifications
You must be signed in to change notification settings - Fork 79
/
secrets.go
57 lines (49 loc) · 1.47 KB
/
secrets.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
package cmd
import (
"fmt"
log "github.com/Sirupsen/logrus"
"github.com/luizalabs/teresa/pkg/server/app"
"github.com/spf13/cobra"
)
var replaceStorageSecretCmd = &cobra.Command{
Use: "replace-storage-secret",
Short: "Replace the storage secret for all apps",
Run: replaceStorageSecret,
}
func init() {
RootCmd.AddCommand(replaceStorageSecretCmd)
replaceStorageSecretCmd.Flags().String("id", "", "key identity")
replaceStorageSecretCmd.Flags().String("key", "", "secret access key")
}
func replaceStorageSecret(cmd *cobra.Command, args []string) {
id, err := cmd.Flags().GetString("id")
if err != nil || id == "" {
log.WithError(err).Fatal("invalid id parameter")
}
key, err := cmd.Flags().GetString("key")
if err != nil || key == "" {
log.WithError(err).Fatal("invalid key parameter")
}
k8s, err := getK8s()
if err != nil {
log.WithError(err).Fatal("can't create k8s client")
}
st, err := getStorage()
if err != nil {
log.WithError(err).Fatal("can't create storage client")
}
data := st.AccessData()
data["accesskey"] = []byte(id)
data["secretkey"] = []byte(key)
secretName := st.K8sSecretName()
apps, err := k8s.NamespaceListByLabel(app.TeresaTeamLabel, "")
if err != nil {
log.WithError(err).Fatal("can't get app list")
}
for _, app := range apps {
if err := k8s.CreateOrUpdateSecret(string(app), secretName, data); err != nil {
log.WithError(err).Fatalf("can't update secret for app %s", app)
}
}
fmt.Println("Storage secrets replaced")
}