Skip to content

Commit

Permalink
chore: rebase
Browse files Browse the repository at this point in the history
sophon-zt committed Dec 25, 2024
1 parent 2ebaa3a commit 001e812
Showing 9 changed files with 17 additions and 102 deletions.
2 changes: 1 addition & 1 deletion apis/parameters/v1alpha1/paramconfigrenderer_types.go
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ import (
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster
// +kubebuilder:resource:categories={kubeblocks},scope=Cluster,shortName=paramstemplate
// +kubebuilder:resource:categories={kubeblocks},scope=Cluster,shortName=pcr
// +kubebuilder:printcolumn:name="COMPD",type="string",JSONPath=".spec.componentDef",description="componentdefinition name"
// +kubebuilder:printcolumn:name="PHASE",type="string",JSONPath=".status.phase",description="status phase"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ spec:
listKind: ParamConfigRendererList
plural: paramconfigrenderers
shortNames:
- paramstemplate
- pcr
singular: paramconfigrenderer
scope: Cluster
versions:
Original file line number Diff line number Diff line change
@@ -66,7 +66,7 @@ var _ = Describe("ComponentParameterGenerator Controller", func() {
obj.Status.Phase = appsv1.AvailablePhase
})()).Should(Succeed())

pdcr := testparameters.NewParametersDrivenConfigFactory(pdcrName).
pdcr := testparameters.NewParamConfigRendererFactory(pdcrName).
SetParametersDefs(paramsDef.Name).
SetComponentDefinition(compDefObj.GetName()).
SetTemplateName(configSpecName).
@@ -75,7 +75,7 @@ var _ = Describe("ComponentParameterGenerator Controller", func() {
TLSEnabled().
Create(&testCtx).
GetObject()
Expect(testapps.GetAndChangeObjStatus(&testCtx, client.ObjectKeyFromObject(pdcr), func(obj *parametersv1alpha1.ParameterDrivenConfigRender) {
Expect(testapps.GetAndChangeObjStatus(&testCtx, client.ObjectKeyFromObject(pdcr), func(obj *parametersv1alpha1.ParamConfigRenderer) {
obj.Status.Phase = parametersv1alpha1.PDAvailablePhase
})()).Should(Succeed())

62 changes: 1 addition & 61 deletions controllers/parameters/reconcile_task.go
Original file line number Diff line number Diff line change
@@ -22,13 +22,10 @@ package parameters
import (
"context"
"encoding/json"
"errors"
"reflect"
"strconv"

corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/pointer"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -172,7 +169,7 @@ func syncImpl(taskCtx *TaskContext,
return failStatus(err)
}
}
if err = persistUpdatedParameters(fetcher.ResourceCtx, taskCtx.component, taskCtx.configRender, updatedConfig, configMap, fetcher.ComponentParameterObj, item, revision); err != nil {
if err = mergeAndApplyConfig(fetcher.ResourceCtx, updatedConfig, configMap, fetcher.ComponentParameterObj, item, revision); err != nil {
return failStatus(err)
}

@@ -182,63 +179,6 @@ func syncImpl(taskCtx *TaskContext,
return nil
}

// persistUpdatedParameters merges and updates parameter-related configmaps.
// It first calls mergeAndApplyConfig to merge and update the configmap.
// If the updatedConfig is nil, it returns nil. Otherwise, it calls updateInjectedEnvVars
// to check and update the injected environment variables.
func persistUpdatedParameters(rctx *render.ResourceCtx,
comp *component.SynthesizedComponent,
configRender *parametersv1alpha1.ParameterDrivenConfigRender,
updatedConfig *corev1.ConfigMap,
original *corev1.ConfigMap,
owner client.Object,
item parametersv1alpha1.ConfigTemplateItemDetail,
revision string) error {
if err := mergeAndApplyConfig(rctx, updatedConfig, original, owner, item, revision); err != nil {
return err
}
if updatedConfig == nil {
return nil
}
return updateInjectedEnvVars(rctx, comp, configRender, updatedConfig, owner, item, revision)
}

func updateInjectedEnvVars(rctx *render.ResourceCtx,
comp *component.SynthesizedComponent,
configRender *parametersv1alpha1.ParameterDrivenConfigRender,
config *corev1.ConfigMap,
owner client.Object,
item parametersv1alpha1.ConfigTemplateItemDetail,
revision string) error {
getOriginal := func(key types.NamespacedName) (*corev1.ConfigMap, error) {
var err error
var cmObj = &corev1.ConfigMap{}
err = rctx.Client.Get(rctx.Context, key, cmObj)
if err != nil && apierrors.IsNotFound(err) {
return nil, nil
}
return cmObj, err
}

envObjs, err := configctrl.InjectTemplateEnvFrom(comp, nil, configRender, []*corev1.ConfigMap{config})
if err != nil {
return err
}

var original *corev1.ConfigMap
for _, obj := range envObjs {
if original, err = getOriginal(client.ObjectKeyFromObject(obj)); err != nil {
return err
}
if original == nil {
err = errors.Join(err, create(rctx.Context, rctx.Client, obj, updateReconcileObject(item, owner, revision)))
} else {
err = errors.Join(err, update(rctx.Context, rctx.Client, original, original, mergedConfigmap(obj, updateReconcileObject(item, owner, revision))))
}
}
return err
}

func mergeAndApplyConfig(resourceCtx *render.ResourceCtx,
expected *corev1.ConfigMap,
running *corev1.ConfigMap,
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ spec:
listKind: ParamConfigRendererList
plural: paramconfigrenderers
shortNames:
- paramstemplate
- pcr
singular: paramconfigrenderer
scope: Cluster
versions:
30 changes: 1 addition & 29 deletions pkg/controller/configuration/config_utils.go
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ func BuildReloadActionContainer(resourceCtx *render.ResourceCtx, cluster *appsv1
if len(volumeDirs) == 0 {
return nil
}
if configRender, paramsDefs, err = resolveComponentParameterDefs(resourceCtx.Context, resourceCtx.Client, cmpd, configmaps, synthesizedComp); err != nil {
if configRender, paramsDefs, err = intctrlutil.ResolveCmpdParametersDefs(resourceCtx.Context, resourceCtx.Client, cmpd); err != nil {
return err
}
if configRender == nil || len(configRender.Spec.Configs) == 0 {
@@ -108,34 +108,6 @@ func BuildReloadActionContainer(resourceCtx *render.ResourceCtx, cluster *appsv1
return nil
}

func resolveComponentParameterDefs(ctx context.Context, cli client.Client, cmpd *appsv1.ComponentDefinition, configmaps []*corev1.ConfigMap, comp *component.SynthesizedComponent) (*parametersv1alpha1.ParamConfigRenderer, []*parametersv1alpha1.ParametersDefinition, error) {
configRender, paramsDefs, err := intctrlutil.ResolveCmpdParametersDefs(ctx, cli, cmpd)
if err != nil {
return nil, nil, err
}
if err = handleInjectEnv(ctx, cli, comp, configRender, configmaps); err != nil {
return nil, nil, err
}
return configRender, paramsDefs, nil
}

func handleInjectEnv(ctx context.Context,
cli client.Client,
comp *component.SynthesizedComponent,
configRender *parametersv1alpha1.ParamConfigRenderer,
configmaps []*corev1.ConfigMap) error {
envObjs, err := InjectTemplateEnvFrom(comp, comp.PodSpec, configRender, configmaps)
if err != nil {
return err
}
for _, obj := range envObjs {
if err = intctrlutil.IgnoreIsAlreadyExists(cli.Create(ctx, obj, inDataContext())); err != nil {
return err
}
}
return nil
}

func checkAndUpdateSharProcessNamespace(podSpec *corev1.PodSpec, buildParams *cfgcm.CfgManagerBuildParams, configSpecMetas []cfgcm.ConfigSpecMeta) {
shared := cfgcm.NeedSharedProcessNamespace(configSpecMetas)
if shared {
11 changes: 7 additions & 4 deletions pkg/controller/configuration/template_render.go
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ import (

func RerenderParametersTemplate(reconcileCtx *render.ReconcileCtx,
item parametersv1alpha1.ConfigTemplateItemDetail,
configRender *parametersv1alpha1.ParameterDrivenConfigRender,
configRender *parametersv1alpha1.ParamConfigRenderer,
parametersDefs []*parametersv1alpha1.ParametersDefinition) (*corev1.ConfigMap, error) {
parametersValidate := func(m map[string]string) error {
return validateRenderedData(m, parametersDefs, configRender)
@@ -61,17 +61,20 @@ func RerenderParametersTemplate(reconcileCtx *render.ReconcileCtx,
return rerenderCMObj, nil
}

func ApplyParameters(item parametersv1alpha1.ConfigTemplateItemDetail, orig *corev1.ConfigMap, configRender *parametersv1alpha1.ParameterDrivenConfigRender, paramsDefs []*parametersv1alpha1.ParametersDefinition) (*corev1.ConfigMap, error) {
func ApplyParameters(item parametersv1alpha1.ConfigTemplateItemDetail,
baseConfig *corev1.ConfigMap,
configRender *parametersv1alpha1.ParamConfigRenderer,
paramsDefs []*parametersv1alpha1.ParametersDefinition) (*corev1.ConfigMap, error) {
if configRender == nil || len(configRender.Spec.Configs) == 0 {
return nil, fmt.Errorf("not support parameter reconfigure")
}

newData, err := DoMerge(orig.Data, item.ConfigFileParams, paramsDefs, configRender.Spec.Configs)
newData, err := DoMerge(baseConfig.Data, item.ConfigFileParams, paramsDefs, configRender.Spec.Configs)
if err != nil {
return nil, err
}

expected := orig.DeepCopy()
expected := baseConfig.DeepCopy()
expected.Data = newData
return expected, nil
}
4 changes: 2 additions & 2 deletions pkg/controller/configuration/template_render_test.go
Original file line number Diff line number Diff line change
@@ -42,7 +42,7 @@ var _ = Describe("ToolsImageBuilderTest", func() {
var compDefObj *appsv1.ComponentDefinition
var clusterComponent *component.SynthesizedComponent
var paramsDef *parametersv1alpha1.ParametersDefinition
var pdcr *parametersv1alpha1.ParameterDrivenConfigRender
var pdcr *parametersv1alpha1.ParamConfigRenderer

BeforeEach(func() {
mockK8sCli = testutil.NewK8sMockClient()
@@ -54,7 +54,7 @@ var _ = Describe("ToolsImageBuilderTest", func() {
GetObject()
clusterComponent = newAllFieldsSynthesizedComponent(compDefObj, clusterObj)

pdcr = testparameters.NewParametersDrivenConfigFactory(pdcrName).
pdcr = testparameters.NewParamConfigRendererFactory(pdcrName).
SetParametersDefs(paramsDef.Name).
SetComponentDefinition(compDefObj.GetName()).
SetTemplateName(configTemplateName).
2 changes: 1 addition & 1 deletion pkg/controller/configuration/template_validate.go
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ import (
)

// validateRenderedData validates config file against constraint
func validateRenderedData(renderedData map[string]string, paramsDefs []*parametersv1alpha1.ParametersDefinition, configRender *parametersv1alpha1.ParameterDrivenConfigRender) error {
func validateRenderedData(renderedData map[string]string, paramsDefs []*parametersv1alpha1.ParametersDefinition, configRender *parametersv1alpha1.ParamConfigRenderer) error {
if len(paramsDefs) == 0 || configRender == nil || len(configRender.Spec.Configs) == 0 {
return nil
}

0 comments on commit 001e812

Please sign in to comment.