/
command.go
71 lines (60 loc) · 2.33 KB
/
command.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
package main
import (
"time"
"github.com/spf13/cobra"
cobrautil "github.com/tliron/kutil/cobra"
"github.com/tliron/kutil/terminal"
"github.com/tliron/kutil/util"
)
var logTo string
var verbose int
var colorize string
var masterUrl string
var kubeconfigPath string
var kubeconfigContext string
var version bool
var clusterMode bool
var clusterRole string
var namespace string
var concurrency uint
var resyncPeriod time.Duration
var healthPort uint
func init() {
command.Flags().StringVarP(&logTo, "log", "l", "", "log to file (defaults to stderr)")
command.Flags().CountVarP(&verbose, "verbose", "v", "add a log verbosity level (can be used twice)")
command.Flags().StringVarP(&colorize, "colorize", "z", "true", "colorize output (boolean or \"force\")")
// Conventional flags for Kubernetes controllers
command.Flags().StringVar(&masterUrl, "master", "", "address of Kubernetes API server")
command.Flags().StringVar(&kubeconfigPath, "kubeconfig", "", "path to Kubernetes configuration")
command.Flags().StringVarP(&kubeconfigContext, "context", "x", "", "name of context in Kubernetes configuration")
// Our additional flags
command.Flags().BoolVar(&version, "version", false, "print version")
command.Flags().BoolVar(&clusterMode, "cluster", false, "cluster mode")
command.Flags().StringVar(&clusterRole, "role", "", "cluster role")
command.Flags().StringVar(&namespace, "namespace", "", "namespace (overrides context namespace in Kubernetes configuration)")
command.Flags().UintVar(&concurrency, "concurrency", 1, "number of concurrent workers per processor")
command.Flags().DurationVar(&resyncPeriod, "resync", time.Second*30, "informer resync period")
command.Flags().UintVar(&healthPort, "health-port", 8086, "HTTP port for health check (for liveness and readiness probes)")
cobrautil.SetFlagsFromEnvironment("REPOSURE_OPERATOR_", command)
}
var command = &cobra.Command{
Use: toolName,
Short: "Start the Candice operator",
PersistentPreRun: func(cmd *cobra.Command, args []string) {
err := terminal.ProcessColorizeFlag(colorize)
util.FailOnError(err)
if logTo == "" {
util.ConfigureLogging(verbose, nil)
} else {
util.ConfigureLogging(verbose, &logTo)
}
// TODO: init "k8s.io/klog"?
},
Run: func(cmd *cobra.Command, args []string) {
Controller()
},
}
func Execute() {
err := command.Execute()
util.FailOnError(err)
}