From d8bb4552de26fdc58221c8e3d7305bf5bc932687 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Wed, 1 Jul 2015 14:41:49 -0400 Subject: [PATCH] Cloud provider should return an error Not fatal - makes cloud provider useful in methods that can return error. --- cmd/kube-apiserver/app/server.go | 5 ++++- cmd/kube-controller-manager/app/controllermanager.go | 5 ++++- cmd/kubelet/app/server.go | 5 ++++- .../mesos/pkg/controllermanager/controllermanager.go | 5 ++++- pkg/cloudprovider/plugins.go | 11 ++++++----- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index 84ec8c2dab0..a8b656e628c 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -260,7 +260,10 @@ func (s *APIServer) Run(_ []string) error { HostNetworkSources: []string{}, }) - cloud := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) + cloud, err := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) + if err != nil { + glog.Fatalf("Cloud provider could not be initialized: %v", err) + } kubeletClient, err := client.NewKubeletClient(&s.KubeletConfig) if err != nil { diff --git a/cmd/kube-controller-manager/app/controllermanager.go b/cmd/kube-controller-manager/app/controllermanager.go index 9c29e062e1f..920224e2b9f 100644 --- a/cmd/kube-controller-manager/app/controllermanager.go +++ b/cmd/kube-controller-manager/app/controllermanager.go @@ -186,7 +186,10 @@ func (s *CMServer) Run(_ []string) error { controllerManager := replicationControllerPkg.NewReplicationManager(kubeClient, replicationControllerPkg.BurstReplicas) go controllerManager.Run(s.ConcurrentRCSyncs, util.NeverStop) - cloud := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) + cloud, err := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) + if err != nil { + glog.Fatalf("Cloud provider could not be initialized: %v", err) + } nodeController := nodecontroller.NewNodeController(cloud, kubeClient, s.RegisterRetryCount, s.PodEvictionTimeout, nodecontroller.NewPodEvictor(util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst)), diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index 1cd1362da1f..ad9e5e4cc86 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -286,7 +286,10 @@ func (s *KubeletServer) Run(_ []string) error { DockerFreeDiskMB: s.LowDiskSpaceThresholdMB, RootFreeDiskMB: s.LowDiskSpaceThresholdMB, } - cloud := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) + cloud, err := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) + if err != nil { + return err + } glog.V(2).Infof("Successfully initialized cloud provider: %q from the config file: %q\n", s.CloudProvider, s.CloudConfigFile) hostNetworkSources, err := kubelet.GetValidatedSources(strings.Split(s.HostNetworkSources, ",")) diff --git a/contrib/mesos/pkg/controllermanager/controllermanager.go b/contrib/mesos/pkg/controllermanager/controllermanager.go index 43781d45c80..697a5e06003 100644 --- a/contrib/mesos/pkg/controllermanager/controllermanager.go +++ b/contrib/mesos/pkg/controllermanager/controllermanager.go @@ -115,7 +115,10 @@ func (s *CMServer) Run(_ []string) error { if s.CloudProvider != mesos.ProviderName { glog.Fatalf("Only provider %v is supported, you specified %v", mesos.ProviderName, s.CloudProvider) } - cloud := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) + cloud, err := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) + if err != nil { + glog.Fatalf("Cloud provider could not be initialized: %v", err) + } nodeController := nodecontroller.NewNodeController(cloud, kubeClient, s.RegisterRetryCount, s.PodEvictionTimeout, nodecontroller.NewPodEvictor(util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst)), diff --git a/pkg/cloudprovider/plugins.go b/pkg/cloudprovider/plugins.go index bbcc8dc23ef..86e5f8dbd32 100644 --- a/pkg/cloudprovider/plugins.go +++ b/pkg/cloudprovider/plugins.go @@ -17,6 +17,7 @@ limitations under the License. package cloudprovider import ( + "fmt" "io" "os" "sync" @@ -62,12 +63,12 @@ func GetCloudProvider(name string, config io.Reader) (Interface, error) { } // InitCloudProvider creates an instance of the named cloud provider. -func InitCloudProvider(name string, configFilePath string) Interface { +func InitCloudProvider(name string, configFilePath string) (Interface, error) { var cloud Interface if name == "" { glog.Info("No cloud provider specified.") - return nil + return nil, nil } var err error @@ -87,11 +88,11 @@ func InitCloudProvider(name string, configFilePath string) Interface { } if err != nil { - glog.Fatalf("Couldn't init cloud provider %q: %v", name, err) + return nil, fmt.Errorf("could not init cloud provider %q: %v", name, err) } if cloud == nil { - glog.Fatalf("Unknown cloud provider: %s", name) + return nil, fmt.Errorf("unknown cloud provider %q", name) } - return cloud + return cloud, nil }