/
run.go
68 lines (57 loc) · 1.72 KB
/
run.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
package integrationcli
import (
"context"
"io/ioutil"
"github.com/cloudflare/cloudflare-go"
crdsv1alpha1 "github.com/replicatedhq/kubeflare/pkg/apis/crds/v1alpha1"
kubeflarescheme "github.com/replicatedhq/kubeflare/pkg/client/kubeflareclientset/scheme"
"github.com/replicatedhq/kubeflare/pkg/controller/zone"
"github.com/spf13/cobra"
"github.com/spf13/viper"
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
)
func RunCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "run",
Short: "runs a single integration test from a definition",
Long: `...`,
SilenceErrors: true,
SilenceUsage: true,
PreRun: func(cmd *cobra.Command, args []string) {
viper.BindPFlags(cmd.Flags())
},
RunE: func(cmd *cobra.Command, args []string) error {
v := viper.GetViper()
b, err := ioutil.ReadFile(v.GetString("spec"))
if err != nil {
return err
}
decode := kubeflarescheme.Codecs.UniversalDeserializer().Decode
obj, _, err := decode(b, nil, nil)
if err != nil {
return err
}
instance := obj.(*crdsv1alpha1.Zone)
instance.Name = v.GetString("zone-name")
ctx := context.TODO()
cf, err := cloudflare.New(v.GetString("key"), v.GetString("email"))
if err != nil {
return err
}
err = zone.ReconcileSettings(ctx, *instance, cf)
if err != nil {
return err
}
return nil
},
}
cmd.Flags().String("spec", "", "the spec file to apply")
cmd.MarkFlagRequired("spec")
cmd.Flags().String("email", "", "email to use with cloudflare")
cmd.MarkFlagRequired("email")
cmd.Flags().String("key", "", "cloudflare api key")
cmd.MarkFlagRequired("key")
cmd.Flags().String("zone-name", "", "zone name (domain) to use")
cmd.MarkFlagRequired("zone-name")
return cmd
}