Simplify base-image flag validation
parent
76d3c9d7bb
commit
bf8ec63ca9
|
@ -38,7 +38,6 @@ import (
|
||||||
"github.com/shirou/gopsutil/cpu"
|
"github.com/shirou/gopsutil/cpu"
|
||||||
gopshost "github.com/shirou/gopsutil/host"
|
gopshost "github.com/shirou/gopsutil/host"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/pflag"
|
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config"
|
cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config"
|
||||||
|
@ -171,7 +170,21 @@ func runStart(cmd *cobra.Command, args []string) {
|
||||||
validateKubernetesVersion(existing)
|
validateKubernetesVersion(existing)
|
||||||
|
|
||||||
ds, alts, specified := selectDriver(existing)
|
ds, alts, specified := selectDriver(existing)
|
||||||
validateBaseImage(cmd.Flag(kicBaseImage), ds.Name)
|
if cmd.Flag(kicBaseImage).Changed {
|
||||||
|
if !isBaseImageApplicable(ds.Name) {
|
||||||
|
exit.Message(reason.Usage,
|
||||||
|
"flag --{{.imgFlag}} is not available for driver '{{.driver}}'. Did you mean to use '{{.docker}}' or '{{.podman}}' driver instead?\n"+
|
||||||
|
"Please use --{{.isoFlag}} flag to configure VM based drivers",
|
||||||
|
out.V{
|
||||||
|
"imgFlag": kicBaseImage,
|
||||||
|
"driver": ds.Name,
|
||||||
|
"docker": registry.Docker,
|
||||||
|
"podman": registry.Podman,
|
||||||
|
"isoFlag": isoURL,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
starter, err := provisionWithDriver(cmd, ds, existing)
|
starter, err := provisionWithDriver(cmd, ds, existing)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1191,29 +1204,8 @@ func validateKubernetesVersion(old *config.ClusterConfig) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// validateBaseImage checks that --base-image is not passed if the drive being in use is KIC (docker/podman)
|
func isBaseImageApplicable(drv string) bool {
|
||||||
// if so, the function exits the process
|
return registry.IsKIC(drv)
|
||||||
func validateBaseImage(imageFlag *pflag.Flag, drv string) {
|
|
||||||
if !validBaseImageFlag(imageFlag.Changed, drv) {
|
|
||||||
exit.Message(reason.Usage,
|
|
||||||
"flag --{{.imgFlag}} is not available for driver '{{.driver}}'. Did you mean to use '{{.docker}}' or '{{.podman}}' driver instead?\n"+
|
|
||||||
"Please use --{{.isoFlag}} flag to configure VM based drivers",
|
|
||||||
out.V{
|
|
||||||
"imgFlag": imageFlag.Name,
|
|
||||||
"driver": drv,
|
|
||||||
"image": imageFlag.Value,
|
|
||||||
"docker": registry.Docker,
|
|
||||||
"podman": registry.Podman,
|
|
||||||
"isoFlag": isoURL,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func validBaseImageFlag(baseImageFlagSet bool, driver string) bool {
|
|
||||||
if baseImageFlagSet {
|
|
||||||
return registry.IsKIC(driver)
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getKubernetesVersion(old *config.ClusterConfig) string {
|
func getKubernetesVersion(old *config.ClusterConfig) string {
|
||||||
|
|
|
@ -282,47 +282,28 @@ func TestSuggestMemoryAllocation(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBaseImageFlagDriverCombo(t *testing.T) {
|
func TestBaseImageFlagDriverCombo(t *testing.T) {
|
||||||
type testStruct struct {
|
tests := []struct {
|
||||||
description string
|
driver string
|
||||||
imageSet bool
|
canUseBaseImg bool
|
||||||
driver string
|
}{
|
||||||
}
|
{driver.Docker, true},
|
||||||
invalidCombos := []testStruct{
|
{driver.Podman, true},
|
||||||
{"KVM2 with flag", true, driver.KVM2},
|
{driver.None, false},
|
||||||
{"VirtualBox with flag", true, driver.VirtualBox},
|
{driver.KVM2, false},
|
||||||
{"HyperKit with flag", true, driver.HyperKit},
|
{driver.VirtualBox, false},
|
||||||
{"VMware with flag", true, driver.VMware},
|
{driver.HyperKit, false},
|
||||||
{"VMwareFusion with flag", true, driver.VMwareFusion},
|
{driver.VMware, false},
|
||||||
{"HyperV with flag", true, driver.HyperV},
|
{driver.VMwareFusion, false},
|
||||||
{"Parallels with flag", true, driver.Parallels},
|
{driver.HyperV, false},
|
||||||
}
|
{driver.Parallels, false},
|
||||||
validCombos := []testStruct{
|
|
||||||
{"Docker with flag", true, driver.Docker},
|
|
||||||
{"Podman with flag", true, driver.Podman},
|
|
||||||
{"Docker w/o flag", false, driver.Docker},
|
|
||||||
{"Podman w/o flag", false, driver.Podman},
|
|
||||||
{"KVM2 w/o flag", false, driver.KVM2},
|
|
||||||
{"VirtualBox w/o flag", false, driver.VirtualBox},
|
|
||||||
{"HyperKit w/o flag", false, driver.HyperKit},
|
|
||||||
{"VMware w/o flag", false, driver.VMware},
|
|
||||||
{"VMwareFusion w/o flag", false, driver.VMwareFusion},
|
|
||||||
{"HyperV w/o flag", false, driver.HyperV},
|
|
||||||
{"Parallels w/o flag", false, driver.Parallels},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range validCombos {
|
for _, test := range tests {
|
||||||
t.Run(test.description, func(t *testing.T) {
|
t.Run(test.driver, func(t *testing.T) {
|
||||||
if !validBaseImageFlag(test.imageSet, test.driver) {
|
got := isBaseImageApplicable(test.driver)
|
||||||
t.Errorf("invalidBaseImageFlag(base-image-set=%v, driver=%v): got false, expected true",
|
if got != test.canUseBaseImg {
|
||||||
test.imageSet, test.driver)
|
t.Errorf("isBaseImageApplicable(driver=%v): got %v, expected %v",
|
||||||
}
|
test.driver, got, test.canUseBaseImg)
|
||||||
})
|
|
||||||
}
|
|
||||||
for _, test := range invalidCombos {
|
|
||||||
t.Run(test.description, func(t *testing.T) {
|
|
||||||
if validBaseImageFlag(test.imageSet, test.driver) {
|
|
||||||
t.Errorf("invalidBaseImageFlag(base-image-set=%v, driver=%v): got true, expected false",
|
|
||||||
test.imageSet, test.driver)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue