From e7c5c5a1f3c40cf3b7dee5cbef3d06a0de6201cf Mon Sep 17 00:00:00 2001 From: zryfish Date: Sun, 7 Jun 2020 23:15:43 +0800 Subject: [PATCH] fix namespace controller crash when openpitrix is not enabled (#2167) --- cmd/controller-manager/app/server.go | 34 ++++++++++++++-------- pkg/simple/client/openpitrix/openpitrix.go | 4 +++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/cmd/controller-manager/app/server.go b/cmd/controller-manager/app/server.go index 2379dc4f6..44984de10 100644 --- a/cmd/controller-manager/app/server.go +++ b/cmd/controller-manager/app/server.go @@ -37,6 +37,7 @@ import ( "kubesphere.io/kubesphere/pkg/controller/user" "kubesphere.io/kubesphere/pkg/controller/workspace" "kubesphere.io/kubesphere/pkg/informers" + "kubesphere.io/kubesphere/pkg/simple/client/devops" "kubesphere.io/kubesphere/pkg/simple/client/devops/jenkins" "kubesphere.io/kubesphere/pkg/simple/client/k8s" "kubesphere.io/kubesphere/pkg/simple/client/openpitrix" @@ -102,22 +103,31 @@ func Run(s *options.KubeSphereControllerManagerOptions, stopCh <-chan struct{}) return err } - openpitrixClient, err := openpitrix.NewClient(s.OpenPitrixOptions) - if err != nil { - klog.Errorf("Failed to create openpitrix client %v", err) - return err + var openpitrixClient openpitrix.Client + if s.OpenPitrixOptions != nil && !s.OpenPitrixOptions.IsEmpty() { + openpitrixClient, err = openpitrix.NewClient(s.OpenPitrixOptions) + if err != nil { + klog.Errorf("Failed to create openpitrix client %v", err) + return err + } } - devopsClient, err := jenkins.NewDevopsClient(s.DevopsOptions) - if err != nil { - klog.Errorf("Failed to create devops client %v", err) - return err + var devopsClient devops.Interface + if s.DevopsOptions != nil && len(s.DevopsOptions.Host) != 0 { + devopsClient, err = jenkins.NewDevopsClient(s.DevopsOptions) + if err != nil { + klog.Errorf("Failed to create devops client %v", err) + return err + } } - s3Client, err := s3.NewS3Client(s.S3Options) - if err != nil { - klog.Errorf("Failed to create s3 client %v", err) - return err + var s3Client s3.Interface + if s.S3Options != nil && len(s.S3Options.Endpoint) != 0 { + s3Client, err = s3.NewS3Client(s.S3Options) + if err != nil { + klog.Errorf("Failed to create s3 client %v", err) + return err + } } informerFactory := informers.NewInformerFactories(kubernetesClient.Kubernetes(), kubernetesClient.KubeSphere(), diff --git a/pkg/simple/client/openpitrix/openpitrix.go b/pkg/simple/client/openpitrix/openpitrix.go index 96dcc2327..b06acd98c 100644 --- a/pkg/simple/client/openpitrix/openpitrix.go +++ b/pkg/simple/client/openpitrix/openpitrix.go @@ -186,6 +186,10 @@ func newAppManagerClient(endpoint string) (pb.AppManagerClient, error) { // will return a nil client and nil error if endpoint is empty func NewClient(options *Options) (Client, error) { + if options.IsEmpty() { + return nil, nil + } + runtimeMangerClient, err := newRuntimeManagerClient(options.RuntimeManagerEndpoint) if err != nil { klog.Error(err)