1
0
mirror of https://github.com/rancher/rke.git synced 2025-06-23 22:17:11 +00:00

added rke --quiet and config --list-version, linting refactor

This commit is contained in:
Luther Monson 2019-08-23 12:51:34 -07:00 committed by Craig Jellick
parent 16a1a5e250
commit 3d73507880
3 changed files with 64 additions and 24 deletions

View File

@ -45,12 +45,16 @@ func ConfigCommand() cli.Command {
Usage: "Print configuration", Usage: "Print configuration",
}, },
cli.BoolFlag{ cli.BoolFlag{
Name: "system-images", Name: "system-images,s",
Usage: "Generate the default system images", Usage: "Generate the default system images",
}, },
cli.BoolFlag{ cli.BoolFlag{
Name: "all", Name: "list-version,l",
Usage: "Generate the default system images for all versions", Usage: "List the default kubernetes version",
},
cli.BoolFlag{
Name: "all,a",
Usage: "Used with -s and -l, get all available versions",
}, },
cli.StringFlag{ cli.StringFlag{
Name: "version", Name: "version",
@ -98,28 +102,41 @@ func writeConfig(cluster *v3.RancherKubernetesEngineConfig, configFile string, p
func clusterConfig(ctx *cli.Context) error { func clusterConfig(ctx *cli.Context) error {
if ctx.Bool("system-images") { if ctx.Bool("system-images") {
if metadata.K8sVersionToRKESystemImages == nil { 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")) 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) reader := bufio.NewReader(os.Stdin)
// Generate empty configuration file // Generate empty configuration file
if ctx.Bool("empty") { if ctx.Bool("empty") {
cluster.Nodes = make([]v3.RKEConfigNode, 1) engineConfig.Nodes = make([]v3.RKEConfigNode, 1)
return writeConfig(&cluster, configFile, print) return writeConfig(&engineConfig, configFile, ctx.Bool("print"))
} }
sshKeyPath, err := getConfig(reader, "Cluster Level SSH Private Key Path", "~/.ssh/id_rsa") sshKeyPath, err := getConfig(reader, "Cluster Level SSH Private Key Path", "~/.ssh/id_rsa")
if err != nil { if err != nil {
return err return err
} }
cluster.SSHKeyPath = sshKeyPath engineConfig.SSHKeyPath = sshKeyPath
// Get number of hosts // Get number of hosts
numberOfHostsString, err := getConfig(reader, "Number of Hosts", "1") numberOfHostsString, err := getConfig(reader, "Number of Hosts", "1")
@ -132,13 +149,13 @@ func clusterConfig(ctx *cli.Context) error {
} }
// Get Hosts config // Get Hosts config
cluster.Nodes = make([]v3.RKEConfigNode, 0) engineConfig.Nodes = make([]v3.RKEConfigNode, 0)
for i := 0; i < numberOfHostsInt; i++ { for i := 0; i < numberOfHostsInt; i++ {
hostCfg, err := getHostConfig(reader, i, cluster.SSHKeyPath) hostCfg, err := getHostConfig(reader, i, engineConfig.SSHKeyPath)
if err != nil { if err != nil {
return err return err
} }
cluster.Nodes = append(cluster.Nodes, *hostCfg) engineConfig.Nodes = append(engineConfig.Nodes, *hostCfg)
} }
// Get Network config // Get Network config
@ -146,35 +163,35 @@ func clusterConfig(ctx *cli.Context) error {
if err != nil { if err != nil {
return err return err
} }
cluster.Network = *networkConfig engineConfig.Network = *networkConfig
// Get Authentication Config // Get Authentication Config
authnConfig, err := getAuthnConfig(reader) authnConfig, err := getAuthnConfig(reader)
if err != nil { if err != nil {
return err return err
} }
cluster.Authentication = *authnConfig engineConfig.Authentication = *authnConfig
// Get Authorization config // Get Authorization config
authzConfig, err := getAuthzConfig(reader) authzConfig, err := getAuthzConfig(reader)
if err != nil { if err != nil {
return err return err
} }
cluster.Authorization = *authzConfig engineConfig.Authorization = *authzConfig
// Get k8s/system images // Get k8s/system images
systemImages, err := getSystemImagesConfig(reader) systemImages, err := getSystemImagesConfig(reader)
if err != nil { if err != nil {
return err return err
} }
cluster.SystemImages = *systemImages engineConfig.SystemImages = *systemImages
// Get Services Config // Get Services Config
serviceConfig, err := getServiceConfig(reader) serviceConfig, err := getServiceConfig(reader)
if err != nil { if err != nil {
return err return err
} }
cluster.Services = *serviceConfig engineConfig.Services = *serviceConfig
//Get addon manifests //Get addon manifests
addonsInclude, err := getAddonManifests(reader) addonsInclude, err := getAddonManifests(reader)
@ -183,10 +200,10 @@ func clusterConfig(ctx *cli.Context) error {
} }
if len(addonsInclude) > 0 { 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) { 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 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 { func generateSystemImagesList(version string, all bool) error {
allVersions := []string{} allVersions := []string{}
currentVersionImages := make(map[string]v3.RKESystemImages) currentVersionImages := make(map[string]v3.RKESystemImages)
@ -416,7 +448,7 @@ func generateSystemImagesList(version string, all bool) error {
} }
if all { if all {
for version, rkeSystemImages := range currentVersionImages { 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) uniqueImages := getUniqueSystemImageList(rkeSystemImages)
for _, image := range uniqueImages { for _, image := range uniqueImages {
if image == "" { if image == "" {
@ -437,7 +469,7 @@ func generateSystemImagesList(version string, all bool) error {
if rkeSystemImages == (v3.RKESystemImages{}) { if rkeSystemImages == (v3.RKESystemImages{}) {
return fmt.Errorf("k8s version is not supported, supported versions are: %v", allVersions) 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) uniqueImages := getUniqueSystemImageList(rkeSystemImages)
for _, image := range uniqueImages { for _, image := range uniqueImages {
if image == "" { if image == "" {

View File

@ -2,6 +2,7 @@ package main
import ( import (
"github.com/rancher/rke/metadata" "github.com/rancher/rke/metadata"
"io/ioutil"
"os" "os"
"regexp" "regexp"
"strings" "strings"
@ -35,6 +36,9 @@ func mainErr() error {
if ctx.GlobalBool("debug") { if ctx.GlobalBool("debug") {
logrus.SetLevel(logrus.DebugLevel) logrus.SetLevel(logrus.DebugLevel)
} }
if ctx.GlobalBool("quiet") {
logrus.SetOutput(ioutil.Discard)
}
if released.MatchString(app.Version) { if released.MatchString(app.Version) {
metadata.RKEVersion = app.Version metadata.RKEVersion = app.Version
return nil return nil
@ -74,6 +78,10 @@ func mainErr() error {
Name: "debug,d", Name: "debug,d",
Usage: "Debug logging", 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) return app.Run(os.Args)
} }

View File

@ -24,7 +24,7 @@ cd $(dirname $0)/..
# Get latest version from rke # 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. # Get the latest of the major.minor versions.
for ver in $all_versions; do for ver in $all_versions; do