diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 6eb63f7b830e27c2a5e41b3ded1afc9d5482f8fd..1f457f338d61a3eba4ebb91c5ba9c3c1a49e02bf 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -162,6 +162,12 @@ func runStart(cmd *cobra.Command, args []string) { GPU: viper.GetBool(gpu), } + // Load current profile cluster config from file, before overwriting it with the new state + oldConfig, err := cfg.Load() + if err != nil && !os.IsNotExist(err) { + glog.Errorln("Error loading profile config: ", err) + } + // Write profile cluster configuration to file clusterConfig := cfg.Config{ MachineConfig: config, @@ -198,14 +204,8 @@ func runStart(cmd *cobra.Command, args []string) { if strings.Compare(selectedKubernetesVersion, "") == 0 { selectedKubernetesVersion = constants.DefaultKubernetesVersion } - // Load profile cluster config from file - cc, err := cfg.Load() - if err != nil && !os.IsNotExist(err) { - glog.Errorln("Error loading profile config: ", err) - } - - if err == nil { - oldKubernetesVersion, err := semver.Make(strings.TrimPrefix(cc.KubernetesConfig.KubernetesVersion, version.VersionPrefix)) + if oldConfig != nil { + oldKubernetesVersion, err := semver.Make(strings.TrimPrefix(oldConfig.KubernetesConfig.KubernetesVersion, version.VersionPrefix)) if err != nil { glog.Errorln("Error parsing version semver: ", err) } diff --git a/pkg/minikube/config/config.go b/pkg/minikube/config/config.go index 0cabd2cdba04d743aab762d3290cd4863a9db852..6c16c68a6f27a63b240ccbfad5b6009f7f6efd08 100644 --- a/pkg/minikube/config/config.go +++ b/pkg/minikube/config/config.go @@ -92,35 +92,35 @@ func GetMachineName() string { } // Load loads the kubernetes and machine config for the current machine -func Load() (Config, error) { +func Load() (*Config, error) { return DefaultLoader.LoadConfigFromFile(GetMachineName()) } // Loader loads the kubernetes and machine config based on the machine profile name type Loader interface { - LoadConfigFromFile(profile string) (Config, error) + LoadConfigFromFile(profile string) (*Config, error) } type simpleConfigLoader struct{} var DefaultLoader Loader = &simpleConfigLoader{} -func (c *simpleConfigLoader) LoadConfigFromFile(profile string) (Config, error) { +func (c *simpleConfigLoader) LoadConfigFromFile(profile string) (*Config, error) { var cc Config path := constants.GetProfileFile(profile) if _, err := os.Stat(path); os.IsNotExist(err) { - return cc, err + return nil, err } data, err := ioutil.ReadFile(path) if err != nil { - return cc, err + return nil, err } if err := json.Unmarshal(data, &cc); err != nil { - return cc, err + return nil, err } - return cc, nil + return &cc, nil } diff --git a/pkg/minikube/tunnel/cluster_inspector.go b/pkg/minikube/tunnel/cluster_inspector.go index 37d175b472f8739a9fe3833d9e44bb98ba98e724..57c8dcee75665da3970673b5703d4b133bfc825a 100644 --- a/pkg/minikube/tunnel/cluster_inspector.go +++ b/pkg/minikube/tunnel/cluster_inspector.go @@ -63,7 +63,7 @@ func (m *clusterInspector) getStateAndRoute() (HostState, *Route, error) { if err != nil { return hostState, nil, err } - var c config.Config + var c *config.Config c, err = m.configLoader.LoadConfigFromFile(m.machineName) if err != nil { err = errors.Wrapf(err, "error loading config for %s", m.machineName) @@ -71,7 +71,7 @@ func (m *clusterInspector) getStateAndRoute() (HostState, *Route, error) { } var route *Route - route, err = getRoute(h, c) + route, err = getRoute(h, *c) if err != nil { err = errors.Wrapf(err, "error getting route info for %s", m.machineName) return hostState, nil, err diff --git a/pkg/minikube/tunnel/cluster_inspector_test.go b/pkg/minikube/tunnel/cluster_inspector_test.go index 2b5179b9ecb5d00440d4f8dcdff97546c396322b..12d429a330be40b9b37c59fe80d70c9c4b9e248f 100644 --- a/pkg/minikube/tunnel/cluster_inspector_test.go +++ b/pkg/minikube/tunnel/cluster_inspector_test.go @@ -60,7 +60,7 @@ func TestMinikubeCheckReturnsHostInformation(t *testing.T) { } configLoader := &stubConfigLoader{ - c: config.Config{ + c: &config.Config{ KubernetesConfig: config.KubernetesConfig{ ServiceCIDR: "96.0.0.0/12", }, diff --git a/pkg/minikube/tunnel/test_doubles.go b/pkg/minikube/tunnel/test_doubles.go index dd80aebf87edb3d13bf6ba4e903998896a0a0b55..e803b95f4689671935f9a26654d331f30eb9f9c7 100644 --- a/pkg/minikube/tunnel/test_doubles.go +++ b/pkg/minikube/tunnel/test_doubles.go @@ -82,10 +82,10 @@ func (r *fakeRouter) Inspect(route *Route) (exists bool, conflict string, overla } type stubConfigLoader struct { - c config.Config + c *config.Config e error } -func (l *stubConfigLoader) LoadConfigFromFile(profile string) (config.Config, error) { +func (l *stubConfigLoader) LoadConfigFromFile(profile string) (*config.Config, error) { return l.c, l.e } diff --git a/pkg/minikube/tunnel/tunnel_test.go b/pkg/minikube/tunnel/tunnel_test.go index 3f6ed72912abefc94623d1ad4f4d8c2d5bb49a89..9dad25d3cdf6e28beaa5898945d9a8590ee67fd4 100644 --- a/pkg/minikube/tunnel/tunnel_test.go +++ b/pkg/minikube/tunnel/tunnel_test.go @@ -395,7 +395,7 @@ func TestTunnel(t *testing.T) { }, } configLoader := &stubConfigLoader{ - c: config.Config{ + c: &config.Config{ KubernetesConfig: config.KubernetesConfig{ ServiceCIDR: tc.serviceCIDR, }}, @@ -446,7 +446,7 @@ func TestErrorCreatingTunnel(t *testing.T) { } configLoader := &stubConfigLoader{ - c: config.Config{ + c: &config.Config{ KubernetesConfig: config.KubernetesConfig{ ServiceCIDR: "10.96.0.0/12", }},