Skip to content

Commit 6e1e349

Browse files
authored
chore: remove the TPL script reload type of parameters (#9884)
1 parent 67b7428 commit 6e1e349

20 files changed

+33
-1668
lines changed

apis/parameters/v1alpha1/parametersdefinition_types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ type ReloadAction struct {
219219

220220
// Enables reloading process using a Go template script.
221221
//
222+
// +kubebuilder:deprecatedversion:warning="This field has been deprecated since 1.1.0"
222223
// +optional
223224
TPLScriptTrigger *TPLScriptTrigger `json:"tplScriptTrigger"`
224225

controllers/parameters/reconfigure_policy.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,6 @@ func enableSyncTrigger(reloadAction *parametersv1alpha1.ReloadAction) bool {
142142
if reloadAction == nil {
143143
return false
144144
}
145-
146-
if reloadAction.TPLScriptTrigger != nil {
147-
return !core.IsWatchModuleForTplTrigger(reloadAction.TPLScriptTrigger)
148-
}
149-
150145
if reloadAction.ShellTrigger != nil {
151146
return !core.IsWatchModuleForShellTrigger(reloadAction.ShellTrigger)
152147
}

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ go 1.24.0
44

55
require (
66
cuelang.org/go v0.8.0
7-
github.com/DATA-DOG/go-sqlmock v1.5.0
87
github.com/Masterminds/semver/v3 v3.2.1
98
github.com/Masterminds/sprig/v3 v3.2.3
109
github.com/StudioSol/set v1.0.0

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6L
5656
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
5757
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
5858
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
59-
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
60-
github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
6159
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
6260
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
6361
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=

pkg/parameters/configmanager/builder.go

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,9 @@ import (
2626
"strconv"
2727

2828
"github.com/imdario/mergo"
29-
"gopkg.in/yaml.v2"
3029
corev1 "k8s.io/api/core/v1"
3130
apierrors "k8s.io/apimachinery/pkg/api/errors"
3231
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33-
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
34-
apiruntime "k8s.io/apimachinery/pkg/runtime"
3532
"k8s.io/client-go/util/retry"
3633
ctrl "sigs.k8s.io/controller-runtime"
3734
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -41,18 +38,13 @@ import (
4138
parametersv1alpha1 "github.com/apecloud/kubeblocks/apis/parameters/v1alpha1"
4239
"github.com/apecloud/kubeblocks/pkg/constant"
4340
"github.com/apecloud/kubeblocks/pkg/controller/multicluster"
44-
"github.com/apecloud/kubeblocks/pkg/parameters/core"
4541
cfgutil "github.com/apecloud/kubeblocks/pkg/parameters/util"
4642
viper "github.com/apecloud/kubeblocks/pkg/viperx"
4743
)
4844

4945
const (
50-
configTemplateName = "reload.yaml"
5146
scriptVolumePrefix = "cm-script-"
5247

53-
scriptConfigField = "scripts"
54-
formatterConfigField = "formatterConfig"
55-
5648
configManagerConfigVolumeName = "config-manager-config"
5749
configManagerConfig = "config-manager.yaml"
5850
configManagerConfigMountPoint = "/opt/config-manager"
@@ -77,7 +69,6 @@ func BuildConfigManagerContainerParams(cli client.Client, ctx context.Context, m
7769
ctrl.Log.Info(fmt.Sprintf("volume mount not be use : %s", buildParam.ConfigSpec.VolumeName))
7870
continue
7971
}
80-
buildParam.MountPoint = volume.MountPath
8172
if err := buildConfigSpecHandleMeta(cli, ctx, buildParam, managerParams); err != nil {
8273
return err
8374
}
@@ -180,41 +171,6 @@ func buildConfigSpecHandleMeta(cli client.Client, ctx context.Context, buildPara
180171
return err
181172
}
182173
}
183-
if buildParam.ReloadType == parametersv1alpha1.TPLScriptType {
184-
return buildTPLScriptCM(buildParam, cmBuildParam, cli, ctx)
185-
}
186-
return nil
187-
}
188-
189-
func buildTPLScriptCM(configSpecBuildMeta *ConfigSpecMeta, manager *CfgManagerBuildParams, cli client.Client, ctx context.Context) error {
190-
var (
191-
options = configSpecBuildMeta.TPLScriptTrigger
192-
formatConfig = configSpecBuildMeta.FormatterConfig
193-
mountPoint = GetScriptsMountPoint(configSpecBuildMeta.ConfigSpec)
194-
)
195-
196-
reloadYamlFn := func(cm *corev1.ConfigMap) error {
197-
newData, err := checkAndUpdateReloadYaml(cm.Data, configTemplateName, formatConfig)
198-
if err != nil {
199-
return err
200-
}
201-
cm.Data = newData
202-
return nil
203-
}
204-
205-
referenceCMKey := client.ObjectKey{
206-
Namespace: options.Namespace,
207-
Name: options.ScriptConfigMapRef,
208-
}
209-
scriptCMKey := client.ObjectKey{
210-
Namespace: manager.Cluster.GetNamespace(),
211-
Name: fmt.Sprintf("%s%s-%s", configManagerCMPrefix, options.ScriptConfigMapRef, manager.Cluster.GetName()),
212-
}
213-
if err := checkOrCreateConfigMap(referenceCMKey, scriptCMKey, cli, ctx, manager.Cluster, reloadYamlFn); err != nil {
214-
return err
215-
}
216-
buildReloadScriptVolume(scriptCMKey.Name, manager, mountPoint, GetScriptsVolumeName(configSpecBuildMeta.ConfigSpec))
217-
configSpecBuildMeta.TPLConfig = filepath.Join(mountPoint, configTemplateName)
218174
return nil
219175
}
220176

@@ -295,32 +251,6 @@ func mergeWithOverride(dst, src interface{}) {
295251
_ = mergo.Merge(dst, src, mergo.WithOverride)
296252
}
297253

298-
func checkAndUpdateReloadYaml(data map[string]string, reloadConfig string, formatterConfig parametersv1alpha1.FileFormatConfig) (map[string]string, error) {
299-
configObject := make(map[string]interface{})
300-
if content, ok := data[reloadConfig]; ok {
301-
if err := yaml.Unmarshal([]byte(content), &configObject); err != nil {
302-
return nil, err
303-
}
304-
}
305-
if res, _, _ := unstructured.NestedFieldNoCopy(configObject, scriptConfigField); res == nil {
306-
return nil, core.MakeError("reload.yaml required field: %s", scriptConfigField)
307-
}
308-
309-
formatObject, err := apiruntime.DefaultUnstructuredConverter.ToUnstructured(&formatterConfig)
310-
if err != nil {
311-
return nil, err
312-
}
313-
if err := unstructured.SetNestedField(configObject, formatObject, formatterConfigField); err != nil {
314-
return nil, err
315-
}
316-
b, err := yaml.Marshal(configObject)
317-
if err != nil {
318-
return nil, err
319-
}
320-
data[reloadConfig] = string(b)
321-
return data, nil
322-
}
323-
324254
func buildCfgManagerScripts(options parametersv1alpha1.ScriptConfig, manager *CfgManagerBuildParams, cli client.Client, ctx context.Context, configSpec appsv1.ComponentFileTemplate) error {
325255
mountPoint := filepath.Join(KBScriptVolumePath, configSpec.Name)
326256
referenceCMKey := client.ObjectKey{
@@ -338,10 +268,6 @@ func buildCfgManagerScripts(options parametersv1alpha1.ScriptConfig, manager *Cf
338268
return nil
339269
}
340270

341-
func GetScriptsMountPoint(configSpec appsv1.ComponentFileTemplate) string {
342-
return filepath.Join(KBScriptVolumePath, configSpec.Name)
343-
}
344-
345271
func GetScriptsVolumeName(configSpec appsv1.ComponentFileTemplate) string {
346272
return fmt.Sprintf("%s%s", scriptVolumePrefix, configSpec.Name)
347273
}

pkg/parameters/configmanager/builder_test.go

Lines changed: 1 addition & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,12 @@ package configmanager
2121

2222
import (
2323
"context"
24-
"reflect"
25-
"testing"
2624

2725
. "github.com/onsi/ginkgo/v2"
2826
. "github.com/onsi/gomega"
2927

30-
"github.com/stretchr/testify/assert"
3128
corev1 "k8s.io/api/core/v1"
3229
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33-
"k8s.io/apimachinery/pkg/util/yaml"
3430
"sigs.k8s.io/controller-runtime/pkg/client"
3531

3632
appsv1 "github.com/apecloud/kubeblocks/apis/apps/v1"
@@ -43,8 +39,6 @@ var _ = Describe("Config Builder Test", func() {
4339
const (
4440
scriptsName = "script_cm"
4541
scriptsNS = "default"
46-
47-
lazyRenderedTemplateName = "lazy-rendered-template"
4842
)
4943

5044
var mockK8sCli *testutil.K8sClientMockHelper
@@ -58,8 +52,6 @@ var _ = Describe("Config Builder Test", func() {
5852
DeferCleanup(mockK8sCli.Finish)
5953
})
6054

61-
syncFn := func(sync bool) *bool { r := sync; return &r }
62-
6355
newVolumeMounts := func() []corev1.VolumeMount {
6456
return []corev1.VolumeMount{
6557
{
@@ -71,13 +63,6 @@ var _ = Describe("Config Builder Test", func() {
7163
shellHandle := &parametersv1alpha1.ShellTrigger{
7264
Command: []string{"pwd"},
7365
}
74-
scriptHandle := &parametersv1alpha1.TPLScriptTrigger{
75-
Sync: sync,
76-
ScriptConfig: parametersv1alpha1.ScriptConfig{
77-
ScriptConfigMapRef: "reload-script",
78-
Namespace: scriptsNS,
79-
},
80-
}
8166
autoHandle := &parametersv1alpha1.AutoTrigger{
8267
ProcessName: "postgres",
8368
}
@@ -86,9 +71,6 @@ var _ = Describe("Config Builder Test", func() {
8671
case parametersv1alpha1.ShellType:
8772
return &parametersv1alpha1.ReloadAction{
8873
ShellTrigger: shellHandle}
89-
case parametersv1alpha1.TPLScriptType:
90-
return &parametersv1alpha1.ReloadAction{
91-
TPLScriptTrigger: scriptHandle}
9274
case parametersv1alpha1.AutoType:
9375
return &parametersv1alpha1.ReloadAction{
9476
AutoTrigger: autoHandle}
@@ -132,35 +114,8 @@ var _ = Describe("Config Builder Test", func() {
132114
return param
133115
}
134116

135-
mockTplScriptCM := func() {
136-
mockK8sCli.MockGetMethod(testutil.WithGetReturned(testutil.WithConstructSimpleGetResult([]client.Object{
137-
&corev1.ConfigMap{
138-
ObjectMeta: metav1.ObjectMeta{
139-
Name: "reload-script",
140-
Namespace: scriptsNS,
141-
},
142-
Data: map[string]string{
143-
"reload.yaml": `
144-
scripts: reload.tpl
145-
fileRegex: my.cnf
146-
formatterConfig:
147-
format: ini
148-
`,
149-
}},
150-
&corev1.ConfigMap{
151-
ObjectMeta: metav1.ObjectMeta{
152-
Name: lazyRenderedTemplateName,
153-
Namespace: scriptsNS,
154-
},
155-
Data: map[string]string{
156-
"my.cnf": "",
157-
}},
158-
}), testutil.WithAnyTimes()))
159-
mockK8sCli.MockCreateMethod(testutil.WithCreateReturned(testutil.WithCreatedSucceedResult(), testutil.WithAnyTimes()))
160-
}
161-
162117
Context("TestBuildConfigManagerContainer", func() {
163-
It("builds shellTrigger reloader correctly", func() {
118+
It("build shell reloader correctly", func() {
164119
mockK8sCli.MockGetMethod(testutil.WithGetReturned(testutil.WithConstructSimpleGetResult([]client.Object{
165120
&corev1.ConfigMap{
166121
ObjectMeta: metav1.ObjectMeta{
@@ -180,107 +135,5 @@ formatterConfig:
180135
}
181136
Expect(BuildConfigManagerContainerParams(mockK8sCli.Client(), context.TODO(), param)).Should(Succeed())
182137
})
183-
184-
It("builds tplScriptsTrigger reloader correctly", func() {
185-
mockTplScriptCM()
186-
param := newCMBuildParams(false)
187-
reloadOptions := newReloadOptions(parametersv1alpha1.TPLScriptType, syncFn(true))
188-
for i := range param.ConfigSpecsBuildParams {
189-
buildParam := &param.ConfigSpecsBuildParams[i]
190-
buildParam.ReloadAction = reloadOptions
191-
buildParam.ReloadType = parametersv1alpha1.TPLScriptType
192-
}
193-
Expect(BuildConfigManagerContainerParams(mockK8sCli.Client(), context.TODO(), param)).Should(Succeed())
194-
for _, arg := range []string{`--operator-update-enable`} {
195-
Expect(param.Args).Should(ContainElement(arg))
196-
}
197-
})
198-
199-
It("builds tplScriptsTrigger reloader correctly with sync", func() {
200-
mockTplScriptCM()
201-
param := newCMBuildParams(false)
202-
reloadOptions := newReloadOptions(parametersv1alpha1.TPLScriptType, syncFn(false))
203-
for i := range param.ConfigSpecsBuildParams {
204-
buildParam := &param.ConfigSpecsBuildParams[i]
205-
buildParam.ReloadAction = reloadOptions
206-
buildParam.ReloadType = parametersv1alpha1.TPLScriptType
207-
}
208-
Expect(BuildConfigManagerContainerParams(mockK8sCli.Client(), context.TODO(), param)).Should(Succeed())
209-
})
210138
})
211-
212139
})
213-
214-
func TestCheckAndUpdateReloadYaml(t *testing.T) {
215-
customEqual := func(l, r map[string]string) bool {
216-
if len(l) != len(r) {
217-
return false
218-
}
219-
var err error
220-
for k, v := range l {
221-
var lv any
222-
var rv any
223-
err = yaml.Unmarshal([]byte(v), &lv)
224-
assert.Nil(t, err)
225-
err = yaml.Unmarshal([]byte(r[k]), &rv)
226-
assert.Nil(t, err)
227-
if !reflect.DeepEqual(lv, rv) {
228-
return false
229-
}
230-
}
231-
return true
232-
}
233-
234-
type args struct {
235-
data map[string]string
236-
reloadConfig string
237-
formatterConfig *parametersv1alpha1.FileFormatConfig
238-
}
239-
tests := []struct {
240-
name string
241-
args args
242-
want map[string]string
243-
wantErr bool
244-
}{{
245-
name: "testCheckAndUpdateReloadYaml",
246-
args: args{
247-
data: map[string]string{"reload.yaml": `
248-
fileRegex: my.cnf
249-
scripts: reload.tpl
250-
`},
251-
reloadConfig: "reload.yaml",
252-
formatterConfig: &parametersv1alpha1.FileFormatConfig{
253-
Format: parametersv1alpha1.Ini,
254-
},
255-
},
256-
wantErr: false,
257-
want: map[string]string{"reload.yaml": `
258-
scripts: reload.tpl
259-
fileRegex: my.cnf
260-
formatterConfig:
261-
format: ini
262-
`,
263-
},
264-
}, {
265-
name: "testCheckAndUpdateReloadYaml",
266-
args: args{
267-
data: map[string]string{},
268-
reloadConfig: "reload.yaml",
269-
formatterConfig: &parametersv1alpha1.FileFormatConfig{Format: parametersv1alpha1.Ini},
270-
},
271-
wantErr: true,
272-
want: map[string]string{},
273-
}}
274-
for _, tt := range tests {
275-
t.Run(tt.name, func(t *testing.T) {
276-
got, err := checkAndUpdateReloadYaml(tt.args.data, tt.args.reloadConfig, *tt.args.formatterConfig)
277-
if (err != nil) != tt.wantErr {
278-
t.Errorf("checkAndUpdateReloadYaml() error = %v, wantErr %v", err, tt.wantErr)
279-
return
280-
}
281-
if !customEqual(got, tt.want) {
282-
t.Errorf("checkAndUpdateReloadYaml() got = %v, want %v", got, tt.want)
283-
}
284-
})
285-
}
286-
}

0 commit comments

Comments
 (0)