From e7a088faf71344987208ae9ec2c5f7169f921ddf Mon Sep 17 00:00:00 2001 From: Pritam Das Date: Fri, 19 Jan 2024 13:13:34 +0600 Subject: [PATCH] Remove api call from Solr setDefaults. (#1116) Signed-off-by: pritamdas99 --- apis/kubedb/v1alpha2/solr_helpers.go | 30 +++++++++------------------- apis/kubedb/v1alpha2/solr_webhook.go | 20 +++++++++++++------ 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/apis/kubedb/v1alpha2/solr_helpers.go b/apis/kubedb/v1alpha2/solr_helpers.go index 24d6946079..dcb0ddba3c 100644 --- a/apis/kubedb/v1alpha2/solr_helpers.go +++ b/apis/kubedb/v1alpha2/solr_helpers.go @@ -17,7 +17,6 @@ limitations under the License. package v1alpha2 import ( - "context" "fmt" "strings" @@ -29,8 +28,6 @@ import ( "gomodules.xyz/pointer" v1 "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - "k8s.io/klog/v2" "kmodules.xyz/client-go/apiextensions" coreutil "kmodules.xyz/client-go/core/v1" meta_util "kmodules.xyz/client-go/meta" @@ -184,7 +181,7 @@ func (s *Solr) PVCName(alias string) string { return meta_util.NameWithSuffix(s.Name, alias) } -func (s *Solr) SetDefaults() { +func (s *Solr) SetDefaults(slVersion *catalog.SolrVersion) { if s.Spec.TerminationPolicy == "" { s.Spec.TerminationPolicy = TerminationPolicyDelete } @@ -205,15 +202,6 @@ func (s *Solr) SetDefaults() { } } - var slVersion catalog.SolrVersion - err := DefaultClient.Get(context.TODO(), types.NamespacedName{ - Name: s.Spec.Version, - }, &slVersion) - if err != nil { - klog.Errorf("can't get the solr version object %s for %s \n", err.Error(), s.Spec.Version) - return - } - if s.Spec.Topology != nil { if s.Spec.Topology.Data != nil { if s.Spec.Topology.Data.Suffix == "" { @@ -227,8 +215,8 @@ func (s *Solr) SetDefaults() { s.Spec.Topology.Data.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: slVersion.Spec.SecurityContext.RunAsUser} } s.Spec.Topology.Data.PodTemplate.Spec.SecurityContext.FSGroup = slVersion.Spec.SecurityContext.RunAsUser - s.setDefaultContainerSecurityContext(&slVersion, &s.Spec.Topology.Data.PodTemplate) - s.setDefaultInitContainerSecurityContext(&slVersion, &s.Spec.Topology.Data.PodTemplate) + s.setDefaultContainerSecurityContext(slVersion, &s.Spec.Topology.Data.PodTemplate) + s.setDefaultInitContainerSecurityContext(slVersion, &s.Spec.Topology.Data.PodTemplate) } if s.Spec.Topology.Overseer != nil { @@ -243,8 +231,8 @@ func (s *Solr) SetDefaults() { s.Spec.Topology.Overseer.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: slVersion.Spec.SecurityContext.RunAsUser} } s.Spec.Topology.Overseer.PodTemplate.Spec.SecurityContext.FSGroup = slVersion.Spec.SecurityContext.RunAsUser - s.setDefaultContainerSecurityContext(&slVersion, &s.Spec.Topology.Overseer.PodTemplate) - s.setDefaultInitContainerSecurityContext(&slVersion, &s.Spec.Topology.Overseer.PodTemplate) + s.setDefaultContainerSecurityContext(slVersion, &s.Spec.Topology.Overseer.PodTemplate) + s.setDefaultInitContainerSecurityContext(slVersion, &s.Spec.Topology.Overseer.PodTemplate) } if s.Spec.Topology.Coordinator != nil { @@ -259,8 +247,8 @@ func (s *Solr) SetDefaults() { s.Spec.Topology.Coordinator.PodTemplate.Spec.SecurityContext = &v1.PodSecurityContext{FSGroup: slVersion.Spec.SecurityContext.RunAsUser} } s.Spec.Topology.Coordinator.PodTemplate.Spec.SecurityContext.FSGroup = slVersion.Spec.SecurityContext.RunAsUser - s.setDefaultContainerSecurityContext(&slVersion, &s.Spec.Topology.Coordinator.PodTemplate) - s.setDefaultInitContainerSecurityContext(&slVersion, &s.Spec.Topology.Coordinator.PodTemplate) + s.setDefaultContainerSecurityContext(slVersion, &s.Spec.Topology.Coordinator.PodTemplate) + s.setDefaultInitContainerSecurityContext(slVersion, &s.Spec.Topology.Coordinator.PodTemplate) } } else { @@ -273,9 +261,9 @@ func (s *Solr) SetDefaults() { } s.Spec.PodTemplate.Spec.SecurityContext.FSGroup = slVersion.Spec.SecurityContext.RunAsUser - s.setDefaultContainerSecurityContext(&slVersion, &s.Spec.PodTemplate) + s.setDefaultContainerSecurityContext(slVersion, &s.Spec.PodTemplate) - s.setDefaultInitContainerSecurityContext(&slVersion, &s.Spec.PodTemplate) + s.setDefaultInitContainerSecurityContext(slVersion, &s.Spec.PodTemplate) } } diff --git a/apis/kubedb/v1alpha2/solr_webhook.go b/apis/kubedb/v1alpha2/solr_webhook.go index fe9c94d8c9..51ba697ebd 100644 --- a/apis/kubedb/v1alpha2/solr_webhook.go +++ b/apis/kubedb/v1alpha2/solr_webhook.go @@ -29,6 +29,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/validation/field" + "k8s.io/klog/v2" ofst "kmodules.xyz/offshoot-api/api/v2" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/webhook" @@ -47,7 +48,14 @@ func (s *Solr) Default() { } solrlog.Info("default", "name", s.Name) - s.SetDefaults() + slVersion := catalog.SolrVersion{} + err := DefaultClient.Get(context.TODO(), types.NamespacedName{Name: s.Spec.Version}, &slVersion) + if err != nil { + klog.Errorf("Version does not exist.") + return + } + + s.SetDefaults(&slVersion) } var _ webhook.Validator = &Solr{} @@ -169,7 +177,7 @@ func (s *Solr) ValidateCreateOrUpdate() field.ErrorList { s.Name, ".spec.topology.data can't be empty in cluster mode")) } - if *s.Spec.Topology.Data.Replicas <= 0 { + if s.Spec.Topology.Data.Replicas != nil && *s.Spec.Topology.Data.Replicas <= 0 { allErr = append(allErr, field.Invalid(field.NewPath("spec").Child("topology").Child("data").Child("replicas"), s.Name, "number of replicas can not be less be 0 or less")) @@ -192,7 +200,7 @@ func (s *Solr) ValidateCreateOrUpdate() field.ErrorList { s.Name, ".spec.topology.overseer can't be empty in cluster mode")) } - if *s.Spec.Topology.Overseer.Replicas <= 0 { + if s.Spec.Topology.Overseer.Replicas != nil && *s.Spec.Topology.Overseer.Replicas <= 0 { allErr = append(allErr, field.Invalid(field.NewPath("spec").Child("topology").Child("overseer").Child("replicas"), s.Name, "number of replicas can not be less be 0 or less")) @@ -215,7 +223,7 @@ func (s *Solr) ValidateCreateOrUpdate() field.ErrorList { s.Name, ".spec.topology.coordinator can't be empty in cluster mode")) } - if *s.Spec.Topology.Coordinator.Replicas <= 0 { + if s.Spec.Topology.Coordinator.Replicas != nil && *s.Spec.Topology.Coordinator.Replicas <= 0 { allErr = append(allErr, field.Invalid(field.NewPath("spec").Child("topology").Child("coordinator").Child("replicas"), s.Name, "number of replicas can not be less be 0 or less")) @@ -266,8 +274,8 @@ func (s *Solr) ValidateCreateOrUpdate() field.ErrorList { } func solrValidateVersion(s *Solr) error { - slVersion := &catalog.SolrVersion{} - err := DefaultClient.Get(context.TODO(), types.NamespacedName{Name: s.Spec.Version}, slVersion) + slVersion := catalog.SolrVersion{} + err := DefaultClient.Get(context.TODO(), types.NamespacedName{Name: s.Spec.Version}, &slVersion) if err != nil { return errors.New("version not supported") }