Move addon enablement to addons module + lint fixes

pull/6440/head
tstromberg 2020-01-30 17:46:25 -08:00
parent d5a83c7b24
commit b97124207c
4 changed files with 45 additions and 44 deletions

View File

@ -136,7 +136,7 @@ var printAddonsJSON = func() {
addonStatus, err := addonBundle.IsEnabled()
if err != nil {
glog.Errorf("Unable to get addon status for {{.name}}: {{.error}}", err)
glog.Errorf("Unable to get addon status for %s: %v", addonName, err)
continue
}

View File

@ -46,8 +46,6 @@ import (
"github.com/spf13/viper"
"golang.org/x/sync/errgroup"
cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config"
pkgaddons "k8s.io/minikube/pkg/addons"
"k8s.io/minikube/pkg/minikube/assets"
"k8s.io/minikube/pkg/minikube/bootstrapper"
"k8s.io/minikube/pkg/minikube/bootstrapper/bsutil"
"k8s.io/minikube/pkg/minikube/bootstrapper/images"
@ -58,6 +56,7 @@ import (
"k8s.io/minikube/pkg/minikube/cruntime"
"k8s.io/minikube/pkg/minikube/driver"
"k8s.io/minikube/pkg/minikube/exit"
"k8s.io/minikube/pkg/addons"
"k8s.io/minikube/pkg/minikube/kubeconfig"
"k8s.io/minikube/pkg/minikube/localpath"
"k8s.io/minikube/pkg/minikube/logs"
@ -105,7 +104,6 @@ const (
imageMirrorCountry = "image-mirror-country"
mountString = "mount-string"
disableDriverMounts = "disable-driver-mounts"
addons = "addons"
cacheImages = "cache-images"
uuid = "uuid"
vpnkitSock = "hyperkit-vpnkit-sock"
@ -173,7 +171,7 @@ func initMinikubeFlags() {
startCmd.Flags().String(containerRuntime, "docker", "The container runtime to be used (docker, crio, containerd).")
startCmd.Flags().Bool(createMount, false, "This will start the mount daemon and automatically mount files into minikube.")
startCmd.Flags().String(mountString, constants.DefaultMountDir+":/minikube-host", "The argument to pass the minikube mount command on start.")
startCmd.Flags().StringArrayVar(&addonList, addons, nil, "Enable addons. see `minikube addons list` for a list of valid addon names.")
startCmd.Flags().StringArrayVar(&addonList,"addons", nil, "Enable addons. see `minikube addons list` for a list of valid addon names.")
startCmd.Flags().String(criSocket, "", "The cri socket path to be used.")
startCmd.Flags().String(networkPlugin, "", "The name of the network plugin.")
startCmd.Flags().Bool(enableDefaultCNI, false, "Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \"--network-plugin=cni\".")
@ -369,8 +367,8 @@ func runStart(cmd *cobra.Command, args []string) {
bootstrapCluster(bs, cr, mRunner, mc, preExists, isUpgrade)
configureMounts()
// enable addons with start command
enableAddons()
// enable addons
addons.Start(viper.GetString(config.MachineProfile), addonList)
if err = cacheAndLoadImagesInConfig(); err != nil {
out.T(out.FailureType, "Unable to load cached images from config file.")
@ -409,41 +407,6 @@ func cacheISO(cfg *config.MachineConfig, driverName string) {
}
}
func enableAddons() {
start := time.Now()
glog.Infof("enableAddons")
defer func() {
glog.Infof("enableAddons completed in %s", time.Since(start))
}()
toEnable := []string{}
// Apply addons that are enabled by default
for name, a := range assets.Addons {
enabled, err := a.IsEnabled()
if err != nil {
glog.Errorf("is-enabled failed for %q: %v", a.Name(), err)
continue
}
if enabled {
toEnable = append(toEnable, name)
}
}
toEnable = append(toEnable, addonList...)
if len(toEnable) == 0 {
return
}
out.T(out.AddonEnable, "Enabling addons: {{.addons}}", out.V{"addons": strings.Join(toEnable, ", ")})
for _, a := range toEnable {
err := pkgaddons.Set(a, "true", viper.GetString(config.MachineProfile))
if err != nil {
// Intentionally non-fatal
out.WarningT("Enabling '{{.name}}' returned an error: {{.error}}", out.V{"name": a, "error": err})
}
}
}
func displayVersion(version string) {
prefix := ""
if viper.GetString(config.MachineProfile) != constants.DefaultMachineName {

View File

@ -21,6 +21,8 @@ import (
"os"
"path"
"strconv"
"strings"
"time"
"github.com/golang/glog"
"github.com/pkg/errors"
@ -167,7 +169,7 @@ func isAddonAlreadySet(addon *assets.Addon, enable bool) (bool, error) {
addonStatus, err := addon.IsEnabled()
if err != nil {
return false, errors.Wrap(err, "get the addon status")
return false, errors.Wrap(err, "addon is enabled")
}
if addonStatus && enable {
@ -255,3 +257,39 @@ func enableOrDisableStorageClasses(name, val, profile string) error {
return enableOrDisableAddon(name, val, profile)
}
// Start enables the default addons for a profile, plus any additional
func Start(profile string, additional []string) {
start := time.Now()
glog.Infof("enableAddons")
defer func() {
glog.Infof("enableAddons completed in %s", time.Since(start))
}()
toEnable := []string{}
// Apply addons that are enabled by default
for name, a := range assets.Addons {
enabled, err := a.IsEnabled()
if err != nil {
glog.Errorf("is-enabled failed for %q: %v", a.Name(), err)
continue
}
if enabled {
toEnable = append(toEnable, name)
}
}
toEnable = append(toEnable, additional...)
if len(toEnable) == 0 {
return
}
out.T(out.AddonEnable, "Enabling addons: {{.addons}}", out.V{"addons": strings.Join(toEnable, ", ")})
for _, a := range toEnable {
err := Set(a, "true", profile)
if err != nil {
// Intentionally non-fatal
out.WarningT("Enabling '{{.name}}' returned an error: {{.error}}", out.V{"name": a, "error": err})
}
}
}

View File

@ -59,7 +59,7 @@ func (a *Addon) Name() string {
func (a *Addon) IsEnabled() (bool, error) {
c, err := config.Load(viper.GetString(config.MachineProfile))
if err != nil {
return false, err
return false, errors.Wrap(err, "load")
}
// Is this addon explicitly listed in their configuration?