Skip to content

Commit

Permalink
Remove api call from Solr setDefaults. (#1116)
Browse files Browse the repository at this point in the history
Signed-off-by: pritamdas99 <pritam@appscode.com>
  • Loading branch information
pritamdas99 authored Jan 19, 2024
1 parent a73a825 commit e7a088f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 27 deletions.
30 changes: 9 additions & 21 deletions apis/kubedb/v1alpha2/solr_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ limitations under the License.
package v1alpha2

import (
"context"
"fmt"
"strings"

Expand All @@ -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"
Expand Down Expand Up @@ -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
}
Expand All @@ -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 == "" {
Expand All @@ -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 {
Expand All @@ -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 {
Expand All @@ -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 {

Expand All @@ -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)
}
}

Expand Down
20 changes: 14 additions & 6 deletions apis/kubedb/v1alpha2/solr_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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{}
Expand Down Expand Up @@ -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"))
Expand All @@ -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"))
Expand All @@ -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"))
Expand Down Expand Up @@ -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")
}
Expand Down

0 comments on commit e7a088f

Please sign in to comment.