From ef352391374044368ec7809840befe60815aa4ad Mon Sep 17 00:00:00 2001 From: PingWang Date: Wed, 20 Jul 2016 10:51:55 +0800 Subject: [PATCH] add a value judgement for the cloud Signed-off-by: PingWang update the controllermanager.go Signed-off-by: PingWang update log Signed-off-by: PingWang add time.Sleep Signed-off-by: PingWang update for go vet Signed-off-by: PingWang --- .../controllermanager/controllermanager.go | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/contrib/mesos/pkg/controllermanager/controllermanager.go b/contrib/mesos/pkg/controllermanager/controllermanager.go index 0c0dc6780ea..b816c6c761a 100644 --- a/contrib/mesos/pkg/controllermanager/controllermanager.go +++ b/contrib/mesos/pkg/controllermanager/controllermanager.go @@ -69,6 +69,11 @@ import ( "github.com/spf13/pflag" ) +const ( + // Jitter used when starting controller managers + ControllerStartJitter = 1.0 +) + // CMServer is the main context object for the controller manager. type CMServer struct { *options.CMServer @@ -172,12 +177,17 @@ func (s *CMServer) Run(_ []string) error { } if s.AllocateNodeCIDRs && s.ConfigureCloudRoutes { - routes, ok := cloud.Routes() - if !ok { - glog.Fatal("Cloud provider must support routes if configure-cloud-routes is set") + if cloud == nil { + glog.Warning("configure-cloud-routes is set, but no cloud provider specified. Will not configure cloud provider routes.") + } else if routes, ok := cloud.Routes(); !ok { + glog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.") + } else { + routeController := routecontroller.New(routes, clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "route-controller")), s.ClusterName, clusterCIDR) + routeController.Run(s.NodeSyncPeriod.Duration) + time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter)) } - routeController := routecontroller.New(routes, clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "route-controller")), s.ClusterName, clusterCIDR) - routeController.Run(s.NodeSyncPeriod.Duration) + } else { + glog.Infof("Will not configure cloud provider routes for allocate-node-cidrs: %v, configure-cloud-routes: %v.", s.AllocateNodeCIDRs, s.ConfigureCloudRoutes) } resourceQuotaControllerClient := clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "resource-quota-controller")) @@ -275,7 +285,7 @@ func (s *CMServer) Run(_ []string) error { provisioner, err := kubecontrollermanager.NewVolumeProvisioner(cloud, s.VolumeConfiguration) if err != nil { - glog.Fatal("A Provisioner could not be created, but one was expected. Provisioning will not work. This functionality is considered an early Alpha version.") + glog.Fatalf("A Provisioner could not be created: %v, but one was expected. Provisioning will not work. This functionality is considered an early Alpha version.", err) } volumeController := persistentvolumecontroller.NewPersistentVolumeController(