From 949fa1820d02d0a860ccf6976d0cd28ee9ec9932 Mon Sep 17 00:00:00 2001 From: sophon Date: Thu, 21 Nov 2024 12:38:42 +0800 Subject: [PATCH] rebase main --- .../apps/componentdefinition_controller.go | 24 +------------ .../apps/sidecardefinition_controller.go | 36 ++++--------------- controllers/apps/utils.go | 23 ++++++++++++ pkg/controller/component/component.go | 4 +-- pkg/controller/component/sidecar.go | 12 +------ .../configuration/template_render_test.go | 2 ++ 6 files changed, 35 insertions(+), 66 deletions(-) diff --git a/controllers/apps/componentdefinition_controller.go b/controllers/apps/componentdefinition_controller.go index 2c04f475668..02757348053 100644 --- a/controllers/apps/componentdefinition_controller.go +++ b/controllers/apps/componentdefinition_controller.go @@ -187,7 +187,7 @@ func (r *ComponentDefinitionReconciler) validate(cli client.Client, rctx intctrl r.validateVolumes, r.validateHostNetwork, r.validateServices, - r.validateComponentTemplate, + validateComponentTemplate, r.validateSystemAccounts, r.validateReplicasLimit, r.validateAvailable, @@ -324,28 +324,6 @@ func (r *ComponentDefinitionReconciler) validateServices(cli client.Client, rctx return nil } -func (r *ComponentDefinitionReconciler) validateComponentTemplate(cli client.Client, rctx intctrlutil.RequestCtx, - compd *appsv1.ComponentDefinition) error { - validateObject := func(objectKey client.ObjectKey) error { - configObj := &corev1.ConfigMap{} - return cli.Get(rctx.Ctx, objectKey, configObj) - } - validateTemplate := func(tpl appsv1.ComponentTemplateSpec) error { - if tpl.TemplateRef != "" { - return validateObject(client.ObjectKey{Namespace: tpl.Namespace, Name: tpl.TemplateRef}) - } - return nil - } - for _, tpls := range [][]appsv1.ComponentTemplateSpec{compd.Spec.Configs, compd.Spec.Scripts} { - for _, tpl := range tpls { - if err := validateTemplate(tpl); err != nil { - return err - } - } - } - return nil -} - func (r *ComponentDefinitionReconciler) validateSystemAccounts(cli client.Client, rctx intctrlutil.RequestCtx, cmpd *appsv1.ComponentDefinition) error { for _, v := range cmpd.Spec.SystemAccounts { diff --git a/controllers/apps/sidecardefinition_controller.go b/controllers/apps/sidecardefinition_controller.go index 80cb9b57993..1c2cead57fd 100644 --- a/controllers/apps/sidecardefinition_controller.go +++ b/controllers/apps/sidecardefinition_controller.go @@ -40,7 +40,6 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" appsv1 "github.com/apecloud/kubeblocks/apis/apps/v1" - appsconfig "github.com/apecloud/kubeblocks/controllers/apps/configuration" "github.com/apecloud/kubeblocks/pkg/constant" "github.com/apecloud/kubeblocks/pkg/controller/component" intctrlutil "github.com/apecloud/kubeblocks/pkg/controllerutil" @@ -53,9 +52,9 @@ type SidecarDefinitionReconciler struct { Recorder record.EventRecorder } -//+kubebuilder:rbac:groups=apps.kubeblocks.io,resources=sidecardefinitions,verbs=get;list;watch;create;update;patch;delete -//+kubebuilder:rbac:groups=apps.kubeblocks.io,resources=sidecardefinitions/status,verbs=get;update;patch -//+kubebuilder:rbac:groups=apps.kubeblocks.io,resources=sidecardefinitions/finalizers,verbs=update +// +kubebuilder:rbac:groups=apps.kubeblocks.io,resources=sidecardefinitions,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=apps.kubeblocks.io,resources=sidecardefinitions/status,verbs=get;update;patch +// +kubebuilder:rbac:groups=apps.kubeblocks.io,resources=sidecardefinitions/finalizers,verbs=update // Reconcile is part of the main kubernetes reconciliation loop which aims to // move the current state of the cluster closer to the desired state. @@ -228,25 +227,13 @@ func (r *SidecarDefinitionReconciler) validateConfigNScript(cli client.Client, r return fmt.Errorf("duplicate names of configs/scripts are not allowed") } - configs := func() []appsv1.ComponentConfigSpec { - if len(sidecarDef.Spec.Configs) == 0 { - return nil - } - configs := make([]appsv1.ComponentConfigSpec, 0) - for i := range sidecarDef.Spec.Configs { - configs = append(configs, appsv1.ComponentConfigSpec{ - ComponentTemplateSpec: sidecarDef.Spec.Configs[i], - }) - } - return configs - } compDef := &appsv1.ComponentDefinition{ Spec: appsv1.ComponentDefinitionSpec{ - Configs: configs(), + Configs: sidecarDef.Spec.Configs, Scripts: sidecarDef.Spec.Scripts, }, } - return appsconfig.ReconcileConfigSpecsForReferencedCR(cli, rctx, compDef) + return validateComponentTemplate(cli, rctx, compDef) } func (r *SidecarDefinitionReconciler) validateNResolveOwner(_ client.Client, _ intctrlutil.RequestCtx, @@ -339,18 +326,7 @@ func (r *SidecarDefinitionReconciler) validateMatchedCompDef(sidecarDef *appsv1. return nil } - templateOfConfig := func(configs []appsv1.ComponentConfigSpec) []appsv1.ComponentTemplateSpec { - if len(configs) == 0 { - return nil - } - l := make([]appsv1.ComponentTemplateSpec, 0) - for i := range configs { - l = append(l, configs[i].ComponentTemplateSpec) - } - return l - } - - if err := validate("config", sidecarDef.Spec.Configs, templateOfConfig(compDef.Spec.Configs)); err != nil { + if err := validate("config", sidecarDef.Spec.Configs, compDef.Spec.Configs); err != nil { return err } return validate("script", sidecarDef.Spec.Scripts, compDef.Spec.Scripts) diff --git a/controllers/apps/utils.go b/controllers/apps/utils.go index 72beb7f3756..7daae2a2345 100644 --- a/controllers/apps/utils.go +++ b/controllers/apps/utils.go @@ -28,9 +28,11 @@ import ( corev1 "k8s.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/client" + appsv1 "github.com/apecloud/kubeblocks/apis/apps/v1" "github.com/apecloud/kubeblocks/pkg/constant" "github.com/apecloud/kubeblocks/pkg/controller/model" "github.com/apecloud/kubeblocks/pkg/controller/multicluster" + intctrlutil "github.com/apecloud/kubeblocks/pkg/controllerutil" ) // default reconcile requeue after duration @@ -149,3 +151,24 @@ func shouldAllocateNodePorts(svc *corev1.ServiceSpec) bool { } return false } + +func validateComponentTemplate(cli client.Client, rctx intctrlutil.RequestCtx, compd *appsv1.ComponentDefinition) error { + validateObject := func(objectKey client.ObjectKey) error { + configObj := &corev1.ConfigMap{} + return cli.Get(rctx.Ctx, objectKey, configObj) + } + validateTemplate := func(tpl appsv1.ComponentTemplateSpec) error { + if tpl.TemplateRef != "" { + return validateObject(client.ObjectKey{Namespace: tpl.Namespace, Name: tpl.TemplateRef}) + } + return nil + } + for _, tpls := range [][]appsv1.ComponentTemplateSpec{compd.Spec.Configs, compd.Spec.Scripts} { + for _, tpl := range tpls { + if err := validateTemplate(tpl); err != nil { + return err + } + } + } + return nil +} diff --git a/pkg/controller/component/component.go b/pkg/controller/component/component.go index 3202e3fe48e..2b7e80db8d0 100644 --- a/pkg/controller/component/component.go +++ b/pkg/controller/component/component.go @@ -88,8 +88,8 @@ func BuildComponent(cluster *appsv1.Cluster, compSpec *appsv1.ClusterComponentSp SetRuntimeClassName(cluster.Spec.RuntimeClassName). SetSystemAccounts(compSpec.SystemAccounts). SetStop(compSpec.Stop). - SetSidecars(nil) - SetInitParameters(compSpec.InitParameters). + SetSidecars(nil). + SetInitParameters(compSpec.InitParameters) return compBuilder.GetObject(), nil } diff --git a/pkg/controller/component/sidecar.go b/pkg/controller/component/sidecar.go index 6dde9d62464..9bbe6987ac2 100644 --- a/pkg/controller/component/sidecar.go +++ b/pkg/controller/component/sidecar.go @@ -91,17 +91,7 @@ func buildSidecarVars(sidecarDef *appsv1.SidecarDefinition, synthesizedComp *Syn func buildSidecarConfigs(sidecarDef *appsv1.SidecarDefinition, synthesizedComp *SynthesizedComponent) error { if sidecarDef.Spec.Configs != nil { - templateToConfig := func() []appsv1.ComponentConfigSpec { - if len(sidecarDef.Spec.Configs) == 0 { - return nil - } - l := make([]appsv1.ComponentConfigSpec, 0) - for i := range sidecarDef.Spec.Configs { - l = append(l, appsv1.ComponentConfigSpec{ComponentTemplateSpec: sidecarDef.Spec.Configs[i]}) - } - return l - } - synthesizedComp.ConfigTemplates = append(synthesizedComp.ConfigTemplates, templateToConfig()...) + synthesizedComp.ConfigTemplates = append(synthesizedComp.ConfigTemplates, sidecarDef.Spec.Configs...) } return nil } diff --git a/pkg/controller/configuration/template_render_test.go b/pkg/controller/configuration/template_render_test.go index 77c7ec6fdae..2e450918d90 100644 --- a/pkg/controller/configuration/template_render_test.go +++ b/pkg/controller/configuration/template_render_test.go @@ -98,6 +98,7 @@ var _ = Describe("ToolsImageBuilderTest", func() { } pds := []*parametersv1alpha1.ParametersDefinition{paramsDef} cmObj, err := RerenderParametersTemplate(rctx, item, pdcr, pds) + Expect(err).Should(Succeed()) configdesc := pdcr.Spec.Configs[0] if len(parameters) == 0 { configReaders, err := cfgcore.LoadRawConfigObject(cmObj.Data, configdesc.FileFormatConfig, []string{configdesc.Name}) @@ -112,6 +113,7 @@ var _ = Describe("ToolsImageBuilderTest", func() { result, err := ApplyParameters(item, cmObj, pdcr, pds) Expect(err).Should(Succeed()) configReaders, err := cfgcore.LoadRawConfigObject(result.Data, configdesc.FileFormatConfig, []string{configdesc.Name}) + Expect(err).Should(Succeed()) return configReaders[configdesc.Name] }