From 3d735078807fd4042ddc475a090cbe3db289c16c Mon Sep 17 00:00:00 2001 From: Luther Monson Date: Fri, 23 Aug 2019 12:51:34 -0700 Subject: [PATCH] added rke --quiet and config --list-version, linting refactor --- cmd/config.go | 78 ++++++++++++++++++++++++++++++++------------- main.go | 8 +++++ scripts/integration | 2 +- 3 files changed, 64 insertions(+), 24 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index 0b2e9e4c..5b1d18f8 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -45,12 +45,16 @@ func ConfigCommand() cli.Command { Usage: "Print configuration", }, cli.BoolFlag{ - Name: "system-images", + Name: "system-images,s", Usage: "Generate the default system images", }, cli.BoolFlag{ - Name: "all", - Usage: "Generate the default system images for all versions", + Name: "list-version,l", + Usage: "List the default kubernetes version", + }, + cli.BoolFlag{ + Name: "all,a", + Usage: "Used with -s and -l, get all available versions", }, cli.StringFlag{ Name: "version", @@ -98,28 +102,41 @@ func writeConfig(cluster *v3.RancherKubernetesEngineConfig, configFile string, p func clusterConfig(ctx *cli.Context) error { if ctx.Bool("system-images") { if metadata.K8sVersionToRKESystemImages == nil { - metadata.InitMetadata(context.Background()) + err := metadata.InitMetadata(context.Background()) + if err != nil { + return err + } } return generateSystemImagesList(ctx.String("version"), ctx.Bool("all")) } - configFile := ctx.String("name") - print := ctx.Bool("print") - cluster := v3.RancherKubernetesEngineConfig{} - // Get cluster config from user + if ctx.Bool("list-version") { + if metadata.K8sVersionToRKESystemImages == nil { + err := metadata.InitMetadata(context.Background()) + if err != nil { + return err + } + } + return generateK8sVersionList(ctx.Bool("all")) + } + + configFile := ctx.String("name") + engineConfig := v3.RancherKubernetesEngineConfig{} + + // Get engineConfig config from user reader := bufio.NewReader(os.Stdin) // Generate empty configuration file if ctx.Bool("empty") { - cluster.Nodes = make([]v3.RKEConfigNode, 1) - return writeConfig(&cluster, configFile, print) + engineConfig.Nodes = make([]v3.RKEConfigNode, 1) + return writeConfig(&engineConfig, configFile, ctx.Bool("print")) } sshKeyPath, err := getConfig(reader, "Cluster Level SSH Private Key Path", "~/.ssh/id_rsa") if err != nil { return err } - cluster.SSHKeyPath = sshKeyPath + engineConfig.SSHKeyPath = sshKeyPath // Get number of hosts numberOfHostsString, err := getConfig(reader, "Number of Hosts", "1") @@ -132,13 +149,13 @@ func clusterConfig(ctx *cli.Context) error { } // Get Hosts config - cluster.Nodes = make([]v3.RKEConfigNode, 0) + engineConfig.Nodes = make([]v3.RKEConfigNode, 0) for i := 0; i < numberOfHostsInt; i++ { - hostCfg, err := getHostConfig(reader, i, cluster.SSHKeyPath) + hostCfg, err := getHostConfig(reader, i, engineConfig.SSHKeyPath) if err != nil { return err } - cluster.Nodes = append(cluster.Nodes, *hostCfg) + engineConfig.Nodes = append(engineConfig.Nodes, *hostCfg) } // Get Network config @@ -146,35 +163,35 @@ func clusterConfig(ctx *cli.Context) error { if err != nil { return err } - cluster.Network = *networkConfig + engineConfig.Network = *networkConfig // Get Authentication Config authnConfig, err := getAuthnConfig(reader) if err != nil { return err } - cluster.Authentication = *authnConfig + engineConfig.Authentication = *authnConfig // Get Authorization config authzConfig, err := getAuthzConfig(reader) if err != nil { return err } - cluster.Authorization = *authzConfig + engineConfig.Authorization = *authzConfig // Get k8s/system images systemImages, err := getSystemImagesConfig(reader) if err != nil { return err } - cluster.SystemImages = *systemImages + engineConfig.SystemImages = *systemImages // Get Services Config serviceConfig, err := getServiceConfig(reader) if err != nil { return err } - cluster.Services = *serviceConfig + engineConfig.Services = *serviceConfig //Get addon manifests addonsInclude, err := getAddonManifests(reader) @@ -183,10 +200,10 @@ func clusterConfig(ctx *cli.Context) error { } if len(addonsInclude) > 0 { - cluster.AddonsInclude = append(cluster.AddonsInclude, addonsInclude...) + engineConfig.AddonsInclude = append(engineConfig.AddonsInclude, addonsInclude...) } - return writeConfig(&cluster, configFile, print) + return writeConfig(&engineConfig, configFile, ctx.Bool("print")) } func getHostConfig(reader *bufio.Reader, index int, clusterSSHKeyPath string) (*v3.RKEConfigNode, error) { @@ -405,6 +422,21 @@ func getAddonManifests(reader *bufio.Reader) ([]string, error) { return addonSlice, nil } +func generateK8sVersionList(all bool) error { + if !all { + fmt.Println(metadata.DefaultK8sVersion) + return nil + } + + for _, version := range metadata.K8sVersionsCurrent { + if _, ok := metadata.K8sBadVersions[version]; !ok { + fmt.Println(version) + } + } + + return nil +} + func generateSystemImagesList(version string, all bool) error { allVersions := []string{} currentVersionImages := make(map[string]v3.RKESystemImages) @@ -416,7 +448,7 @@ func generateSystemImagesList(version string, all bool) error { } if all { for version, rkeSystemImages := range currentVersionImages { - logrus.Debugf("Generating images list for version [%s]:", version) + logrus.Infof("Generating images list for version [%s]:", version) uniqueImages := getUniqueSystemImageList(rkeSystemImages) for _, image := range uniqueImages { if image == "" { @@ -437,7 +469,7 @@ func generateSystemImagesList(version string, all bool) error { if rkeSystemImages == (v3.RKESystemImages{}) { return fmt.Errorf("k8s version is not supported, supported versions are: %v", allVersions) } - logrus.Debugf("Generating images list for version [%s]:", version) + logrus.Infof("Generating images list for version [%s]:", version) uniqueImages := getUniqueSystemImageList(rkeSystemImages) for _, image := range uniqueImages { if image == "" { diff --git a/main.go b/main.go index 2f6e5acb..64b05363 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "github.com/rancher/rke/metadata" + "io/ioutil" "os" "regexp" "strings" @@ -35,6 +36,9 @@ func mainErr() error { if ctx.GlobalBool("debug") { logrus.SetLevel(logrus.DebugLevel) } + if ctx.GlobalBool("quiet") { + logrus.SetOutput(ioutil.Discard) + } if released.MatchString(app.Version) { metadata.RKEVersion = app.Version return nil @@ -74,6 +78,10 @@ func mainErr() error { Name: "debug,d", Usage: "Debug logging", }, + cli.BoolFlag{ + Name: "quiet,q", + Usage: "Quiet mode, disables logging and only critical output will be printed", + }, } return app.Run(os.Args) } diff --git a/scripts/integration b/scripts/integration index 714adc62..0ad563cd 100755 --- a/scripts/integration +++ b/scripts/integration @@ -24,7 +24,7 @@ cd $(dirname $0)/.. # Get latest version from rke -all_versions=$(./bin/rke --debug config --all --system-images 2>&1 | grep "Generating images list for version" | sed -E 's/.*\[(.*)\].*/\1/' | sort -V) +all_versions=$(./bin/rke --quiet config --all --list-version | sort -V) # Get the latest of the major.minor versions. for ver in $all_versions; do