diff --git a/cmd/ks-apiserver/app/options/options.go b/cmd/ks-apiserver/app/options/options.go index 3f17b6ca4..e8de49030 100644 --- a/cmd/ks-apiserver/app/options/options.go +++ b/cmd/ks-apiserver/app/options/options.go @@ -8,11 +8,9 @@ import ( "kubesphere.io/kubesphere/pkg/simple/client/devops" esclient "kubesphere.io/kubesphere/pkg/simple/client/elasticsearch" "kubesphere.io/kubesphere/pkg/simple/client/k8s" - "kubesphere.io/kubesphere/pkg/simple/client/ldap" "kubesphere.io/kubesphere/pkg/simple/client/mysql" "kubesphere.io/kubesphere/pkg/simple/client/openpitrix" "kubesphere.io/kubesphere/pkg/simple/client/prometheus" - "kubesphere.io/kubesphere/pkg/simple/client/redis" "kubesphere.io/kubesphere/pkg/simple/client/s2is3" "kubesphere.io/kubesphere/pkg/simple/client/servicemesh" "kubesphere.io/kubesphere/pkg/simple/client/sonarqube" @@ -28,9 +26,7 @@ type ServerRunOptions struct { ServiceMeshOptions *servicemesh.ServiceMeshOptions MySQLOptions *mysql.MySQLOptions MonitoringOptions *prometheus.PrometheusOptions - LdapOptions *ldap.LdapOptions S3Options *s2is3.S3Options - RedisOptions *redis.RedisOptions OpenPitrixOptions *openpitrix.OpenPitrixOptions LoggingOptions *esclient.ElasticSearchOptions } @@ -45,9 +41,7 @@ func NewServerRunOptions() *ServerRunOptions { ServiceMeshOptions: servicemesh.NewServiceMeshOptions(), MySQLOptions: mysql.NewMySQLOptions(), MonitoringOptions: prometheus.NewPrometheusOptions(), - LdapOptions: ldap.NewLdapOptions(), S3Options: s2is3.NewS3Options(), - RedisOptions: redis.NewRedisOptions(), OpenPitrixOptions: openpitrix.NewOpenPitrixOptions(), LoggingOptions: esclient.NewElasticSearchOptions(), } @@ -59,12 +53,10 @@ func (s *ServerRunOptions) Flags() (fss cliflag.NamedFlagSets) { s.GenericServerRunOptions.AddFlags(fss.FlagSet("generic")) s.KubernetesOptions.AddFlags(fss.FlagSet("kubernetes")) - s.LdapOptions.AddFlags(fss.FlagSet("ldap")) s.MySQLOptions.AddFlags(fss.FlagSet("mysql")) s.DevopsOptions.AddFlags(fss.FlagSet("devops")) s.SonarQubeOptions.AddFlags(fss.FlagSet("sonarqube")) s.S3Options.AddFlags(fss.FlagSet("s3")) - s.RedisOptions.AddFlags(fss.FlagSet("redis")) s.OpenPitrixOptions.AddFlags(fss.FlagSet("openpitrix")) s.ServiceMeshOptions.AddFlags(fss.FlagSet("servicemesh")) s.MonitoringOptions.AddFlags(fss.FlagSet("monitoring")) diff --git a/cmd/ks-apiserver/app/options/validation.go b/cmd/ks-apiserver/app/options/validation.go index 85a8862bd..4075d4edd 100644 --- a/cmd/ks-apiserver/app/options/validation.go +++ b/cmd/ks-apiserver/app/options/validation.go @@ -11,9 +11,7 @@ func (s *ServerRunOptions) Validate() []error { errors = append(errors, s.ServiceMeshOptions.Validate()...) errors = append(errors, s.MonitoringOptions.Validate()...) errors = append(errors, s.SonarQubeOptions.Validate()...) - errors = append(errors, s.LdapOptions.Validate()...) errors = append(errors, s.S3Options.Validate()...) - errors = append(errors, s.RedisOptions.Validate()...) errors = append(errors, s.OpenPitrixOptions.Validate()...) errors = append(errors, s.LoggingOptions.Validate()...) diff --git a/cmd/ks-apiserver/app/server.go b/cmd/ks-apiserver/app/server.go index f88db4845..305b10b97 100644 --- a/cmd/ks-apiserver/app/server.go +++ b/cmd/ks-apiserver/app/server.go @@ -162,7 +162,6 @@ func CreateClientSet(conf *apiserverconfig.Config, stopCh <-chan struct{}) error SetS3Options(conf.S3Options). SetOpenPitrixOptions(conf.OpenPitrixOptions). SetPrometheusOptions(conf.MonitoringOptions). - SetRedisOptions(conf.RedisOptions). SetKubeSphereOptions(conf.KubeSphereOptions). SetElasticSearchOptions(conf.LoggingOptions) @@ -276,8 +275,6 @@ func Complete(s *options.ServerRunOptions) error { KubernetesOptions: s.KubernetesOptions, ServiceMeshOptions: s.ServiceMeshOptions, MonitoringOptions: s.MonitoringOptions, - LdapOptions: s.LdapOptions, - RedisOptions: s.RedisOptions, S3Options: s.S3Options, OpenPitrixOptions: s.OpenPitrixOptions, LoggingOptions: s.LoggingOptions, @@ -291,8 +288,6 @@ func Complete(s *options.ServerRunOptions) error { ServiceMeshOptions: conf.ServiceMeshOptions, MySQLOptions: conf.MySQLOptions, MonitoringOptions: conf.MonitoringOptions, - LdapOptions: conf.LdapOptions, - RedisOptions: conf.RedisOptions, S3Options: conf.S3Options, OpenPitrixOptions: conf.OpenPitrixOptions, LoggingOptions: conf.LoggingOptions, diff --git a/pkg/simple/client/alerting/options.go b/pkg/simple/client/alerting/options.go index 67414c92d..6a417a6ff 100644 --- a/pkg/simple/client/alerting/options.go +++ b/pkg/simple/client/alerting/options.go @@ -11,6 +11,11 @@ func NewAlertingOptions() *AlertingOptions { } func (s *AlertingOptions) ApplyTo(options *AlertingOptions) { + if options == nil { + options = s + return + } + if s.Endpoint != "" { options.Endpoint = s.Endpoint } diff --git a/pkg/simple/client/devops/options.go b/pkg/simple/client/devops/options.go index d885bc21d..2f8a5efe9 100644 --- a/pkg/simple/client/devops/options.go +++ b/pkg/simple/client/devops/options.go @@ -25,7 +25,12 @@ func NewDevopsOptions() *DevopsOptions { // ApplyTo apply configuration to another options func (s *DevopsOptions) ApplyTo(options *DevopsOptions) { - if s.Host != "" && options != nil { + if options == nil { + options = s + return + } + + if s.Host != "" { reflectutils.Override(options, s) } } diff --git a/pkg/simple/client/elasticsearch/options.go b/pkg/simple/client/elasticsearch/options.go index 946d5dbeb..e602da4b2 100644 --- a/pkg/simple/client/elasticsearch/options.go +++ b/pkg/simple/client/elasticsearch/options.go @@ -26,6 +26,11 @@ func NewElasticSearchOptions() *ElasticSearchOptions { } func (s *ElasticSearchOptions) ApplyTo(options *ElasticSearchOptions) { + if options == nil { + options = s + return + } + if s.Host != "" { reflectutils.Override(options, s) } diff --git a/pkg/simple/client/k8s/options.go b/pkg/simple/client/k8s/options.go index 98ba19ab2..9cc3402d6 100644 --- a/pkg/simple/client/k8s/options.go +++ b/pkg/simple/client/k8s/options.go @@ -46,6 +46,10 @@ func (k *KubernetesOptions) Validate() []error { } func (k *KubernetesOptions) ApplyTo(options *KubernetesOptions) { + if options == nil { + options = k + return + } reflectutils.Override(options, k) } diff --git a/pkg/simple/client/kubesphere/options.go b/pkg/simple/client/kubesphere/options.go index 51c8cf4d9..5d00d0430 100644 --- a/pkg/simple/client/kubesphere/options.go +++ b/pkg/simple/client/kubesphere/options.go @@ -16,6 +16,10 @@ func NewKubeSphereOptions() *KubeSphereOptions { } func (s *KubeSphereOptions) ApplyTo(options *KubeSphereOptions) { + if options == nil { + options = s + return + } if s.AccountServer != "" { options.AccountServer = s.AccountServer } diff --git a/pkg/simple/client/ldap/options.go b/pkg/simple/client/ldap/options.go index d9a8e5361..3f00075a3 100644 --- a/pkg/simple/client/ldap/options.go +++ b/pkg/simple/client/ldap/options.go @@ -31,6 +31,11 @@ func (l *LdapOptions) Validate() []error { } func (l *LdapOptions) ApplyTo(options *LdapOptions) { + if options == nil { + options = l + return + } + if l.Host != "" { reflectutils.Override(options, l) } diff --git a/pkg/simple/client/mysql/options.go b/pkg/simple/client/mysql/options.go index fe356348b..777462541 100644 --- a/pkg/simple/client/mysql/options.go +++ b/pkg/simple/client/mysql/options.go @@ -34,6 +34,10 @@ func (m *MySQLOptions) Validate() []error { } func (m *MySQLOptions) ApplyTo(options *MySQLOptions) { + if options == nil { + options = m + return + } reflectutils.Override(options, m) } diff --git a/pkg/simple/client/notification/options.go b/pkg/simple/client/notification/options.go index 5c8a6efa0..29c97906a 100644 --- a/pkg/simple/client/notification/options.go +++ b/pkg/simple/client/notification/options.go @@ -11,6 +11,11 @@ func NewNotificationOptions() *NotificationOptions { } func (s *NotificationOptions) ApplyTo(options *NotificationOptions) { + if options == nil { + options = s + return + } + if s.Endpoint != "" { options.Endpoint = s.Endpoint } diff --git a/pkg/simple/client/openpitrix/options.go b/pkg/simple/client/openpitrix/options.go index 18a6d1709..44004b92f 100644 --- a/pkg/simple/client/openpitrix/options.go +++ b/pkg/simple/client/openpitrix/options.go @@ -19,6 +19,11 @@ func NewOpenPitrixOptions() *OpenPitrixOptions { } func (s *OpenPitrixOptions) ApplyTo(options *OpenPitrixOptions) { + if options == nil { + options = s + return + } + if s.APIServer != "" { reflectutils.Override(options, s) } diff --git a/pkg/simple/client/prometheus/options.go b/pkg/simple/client/prometheus/options.go index 0d9b74150..18e58c8a4 100644 --- a/pkg/simple/client/prometheus/options.go +++ b/pkg/simple/client/prometheus/options.go @@ -23,6 +23,11 @@ func (s *PrometheusOptions) Validate() []error { } func (s *PrometheusOptions) ApplyTo(options *PrometheusOptions) { + if options == nil { + options = s + return + } + if s.Endpoint != "" { options.Endpoint = s.Endpoint } diff --git a/pkg/simple/client/redis/options.go b/pkg/simple/client/redis/options.go index a89b5bac9..4f84fec47 100644 --- a/pkg/simple/client/redis/options.go +++ b/pkg/simple/client/redis/options.go @@ -44,6 +44,11 @@ func (r *RedisOptions) Validate() []error { // ApplyTo apply to another options if it's a enabled option(non empty host) func (r *RedisOptions) ApplyTo(options *RedisOptions) { + if options == nil { + options = r + return + } + if r.Host != "" { reflectutils.Override(options, r) } diff --git a/pkg/simple/client/s2is3/options.go b/pkg/simple/client/s2is3/options.go index 0fbd15189..c7b104d22 100644 --- a/pkg/simple/client/s2is3/options.go +++ b/pkg/simple/client/s2is3/options.go @@ -40,6 +40,11 @@ func (s *S3Options) Validate() []error { // ApplyTo overrides options if it's valid, which endpoint is not empty func (s *S3Options) ApplyTo(options *S3Options) { + if options == nil { + options = s + return + } + if s.Endpoint != "" { reflectutils.Override(options, s) } diff --git a/pkg/simple/client/servicemesh/options.go b/pkg/simple/client/servicemesh/options.go index a8e395254..e02609982 100644 --- a/pkg/simple/client/servicemesh/options.go +++ b/pkg/simple/client/servicemesh/options.go @@ -31,6 +31,7 @@ func (s *ServiceMeshOptions) Validate() []error { func (s *ServiceMeshOptions) ApplyTo(options *ServiceMeshOptions) { if options == nil { + options = s return } diff --git a/pkg/simple/client/sonarqube/options.go b/pkg/simple/client/sonarqube/options.go index 43a61c421..fc24d1584 100644 --- a/pkg/simple/client/sonarqube/options.go +++ b/pkg/simple/client/sonarqube/options.go @@ -28,6 +28,7 @@ func (s *SonarQubeOptions) Validate() []error { func (s *SonarQubeOptions) ApplyTo(options *SonarQubeOptions) { if options == nil { + options = s return } diff --git a/pkg/utils/reflectutils/reflect.go b/pkg/utils/reflectutils/reflect.go index f8ba4c66b..660fac03e 100644 --- a/pkg/utils/reflectutils/reflect.go +++ b/pkg/utils/reflectutils/reflect.go @@ -37,22 +37,23 @@ func In(value interface{}, container interface{}) bool { } func Override(left interface{}, right interface{}) { - if left == nil || right == nil { + if reflect.ValueOf(left).IsNil() || reflect.ValueOf(right).IsNil() { return } if reflect.ValueOf(left).Type().Kind() != reflect.Ptr || - reflect.ValueOf(right).Type().Kind() != reflect.Ptr { + reflect.ValueOf(right).Type().Kind() != reflect.Ptr || + reflect.ValueOf(left).Kind() != reflect.ValueOf(right).Kind() { return } - old := reflect.ValueOf(left).Elem() - new := reflect.ValueOf(right).Elem() + oldVal := reflect.ValueOf(left).Elem() + newVal := reflect.ValueOf(right).Elem() - for i := 0; i < old.NumField(); i++ { - val := new.Field(i).Interface() + for i := 0; i < oldVal.NumField(); i++ { + val := newVal.Field(i).Interface() if !reflect.DeepEqual(val, reflect.Zero(reflect.TypeOf(val)).Interface()) { - old.Field(i).Set(reflect.ValueOf(val)) + oldVal.Field(i).Set(reflect.ValueOf(val)) } } }