Skip to content

Commit dce6494

Browse files
committed
Refactor template addon get values func
Signed-off-by: zhujian <[email protected]>
1 parent a7adf5d commit dce6494

File tree

3 files changed

+69
-22
lines changed

3 files changed

+69
-22
lines changed

pkg/addon/templateagent/template_agent.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424
)
2525

2626
const (
27+
// Private value keys that are used internally by the addon template controller, should not be exposed to users.
28+
// All private value keys should begin with "__"
2729
NodePlacementPrivateValueKey = "__NODE_PLACEMENT"
2830
RegistriesPrivateValueKey = "__REGISTRIES"
2931
InstallNamespacePrivateValueKey = "__INSTALL_NAMESPACE"
@@ -42,8 +44,7 @@ type templateCRDBuiltinValues struct {
4244
// to convert it to Values by JsonStructToValues.
4345
// the default values can be overridden by getValuesFuncs
4446
type templateCRDDefaultValues struct {
45-
HubKubeConfigPath string `json:"HUB_KUBECONFIG,omitempty"`
46-
ManagedKubeConfigPath string `json:"MANAGED_KUBECONFIG,omitempty"`
47+
HubKubeConfigPath string `json:"HUB_KUBECONFIG,omitempty"`
4748
}
4849

4950
type CRDTemplateAgentAddon struct {

pkg/addon/templateagent/values.go

+3
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,11 @@ func (a *CRDTemplateAgentAddon) getValues(
5858
template *addonapiv1alpha1.AddOnTemplate,
5959
) (orderedValues, map[string]interface{}, map[string]interface{}, error) {
6060

61+
// preset values are combined by default values and builtin values
6162
presetValues := make([]keyValuePair, 0)
63+
// override values are values that users can use in the template
6264
overrideValues := map[string]interface{}{}
65+
// private values are values that are not exposed to users
6366
privateValues := map[string]interface{}{}
6467

6568
defaultSortedKeys, defaultValues, err := a.getDefaultValues(cluster, addon, template)

pkg/addon/templateagent/values_test.go

+63-20
Original file line numberDiff line numberDiff line change
@@ -110,20 +110,20 @@ func TestGetValues(t *testing.T) {
110110
name string
111111
templateSpec addonapiv1alpha1.AddOnTemplateSpec
112112
values addonfactory.Values
113-
expectedDefault orderedValues
113+
expectedPreset orderedValues
114114
expectedOverride map[string]interface{}
115115
expectedPrivate map[string]interface{}
116116
}{
117117
{
118-
name: "no override",
118+
name: "with default value, registration set in template",
119119
templateSpec: addonapiv1alpha1.AddOnTemplateSpec{
120120
Registration: []addonapiv1alpha1.RegistrationSpec{
121121
{
122122
Type: addonapiv1alpha1.RegistrationTypeKubeClient,
123123
},
124124
},
125125
},
126-
expectedDefault: orderedValues{
126+
expectedPreset: orderedValues{
127127
{
128128
name: "HUB_KUBECONFIG",
129129
value: "/managed/hub-kubeconfig/kubeconfig",
@@ -140,12 +140,12 @@ func TestGetValues(t *testing.T) {
140140
expectedPrivate: map[string]interface{}{},
141141
},
142142
{
143-
name: "overrides builtin value",
143+
name: "without default value, registration not set in template",
144144
templateSpec: addonapiv1alpha1.AddOnTemplateSpec{},
145145
values: addonfactory.Values{
146146
InstallNamespacePrivateValueKey: "default-ns",
147147
},
148-
expectedDefault: orderedValues{
148+
expectedPreset: orderedValues{
149149
{
150150
name: "CLUSTER_NAME",
151151
value: "test-cluster",
@@ -159,13 +159,13 @@ func TestGetValues(t *testing.T) {
159159
},
160160
},
161161
{
162-
name: "overrides public value",
162+
name: "with private and user defined values",
163163
templateSpec: addonapiv1alpha1.AddOnTemplateSpec{},
164164
values: addonfactory.Values{
165165
InstallNamespacePrivateValueKey: "default-ns",
166166
"key1": "value1",
167167
},
168-
expectedDefault: orderedValues{
168+
expectedPreset: orderedValues{
169169
{
170170
name: "CLUSTER_NAME",
171171
value: "test-cluster",
@@ -180,20 +180,63 @@ func TestGetValues(t *testing.T) {
180180
},
181181
},
182182
{
183-
name: "default should not be overridden",
184-
templateSpec: addonapiv1alpha1.AddOnTemplateSpec{},
183+
name: "default value should be overridden",
184+
templateSpec: addonapiv1alpha1.AddOnTemplateSpec{
185+
Registration: []addonapiv1alpha1.RegistrationSpec{
186+
{
187+
Type: addonapiv1alpha1.RegistrationTypeKubeClient,
188+
},
189+
},
190+
},
185191
values: addonfactory.Values{
186192
InstallNamespacePrivateValueKey: "default-ns",
187-
"CLUSTER_NAME": "another-cluster",
193+
"HUB_KUBECONFIG": "/managed/hub-kubeconfig/kubeconfig-test",
188194
},
189-
expectedDefault: orderedValues{
195+
expectedPreset: orderedValues{
196+
{
197+
name: "HUB_KUBECONFIG",
198+
value: "/managed/hub-kubeconfig/kubeconfig-test",
199+
},
190200
{
191201
name: "CLUSTER_NAME",
192202
value: "test-cluster",
193203
},
194204
},
195205
expectedOverride: map[string]interface{}{
196-
"CLUSTER_NAME": "test-cluster",
206+
"HUB_KUBECONFIG": "/managed/hub-kubeconfig/kubeconfig-test",
207+
"CLUSTER_NAME": "test-cluster",
208+
},
209+
expectedPrivate: map[string]interface{}{
210+
InstallNamespacePrivateValueKey: "default-ns",
211+
},
212+
},
213+
{
214+
name: "builtIn value should not be overridden",
215+
templateSpec: addonapiv1alpha1.AddOnTemplateSpec{
216+
Registration: []addonapiv1alpha1.RegistrationSpec{
217+
{
218+
Type: addonapiv1alpha1.RegistrationTypeKubeClient,
219+
},
220+
},
221+
},
222+
values: addonfactory.Values{
223+
InstallNamespacePrivateValueKey: "default-ns",
224+
"HUB_KUBECONFIG": "/managed/hub-kubeconfig/kubeconfig-test",
225+
"CLUSTER_NAME": "cluster1",
226+
},
227+
expectedPreset: orderedValues{
228+
{
229+
name: "HUB_KUBECONFIG",
230+
value: "/managed/hub-kubeconfig/kubeconfig-test",
231+
},
232+
{
233+
name: "CLUSTER_NAME",
234+
value: "test-cluster",
235+
},
236+
},
237+
expectedOverride: map[string]interface{}{
238+
"HUB_KUBECONFIG": "/managed/hub-kubeconfig/kubeconfig-test",
239+
"CLUSTER_NAME": "test-cluster",
197240
},
198241
expectedPrivate: map[string]interface{}{
199242
InstallNamespacePrivateValueKey: "default-ns",
@@ -225,21 +268,21 @@ func TestGetValues(t *testing.T) {
225268
Spec: c.templateSpec,
226269
}
227270

228-
defaultValue, overrideValue, builtInValue, err := agentAddon.getValues(cluster, addon, addonTemplate)
271+
presetValues, overrideValues, privateValues, err := agentAddon.getValues(cluster, addon, addonTemplate)
229272
if err != nil {
230273
t.Fatal(err)
231274
}
232-
fmt.Printf("defaultValue is %v\n", defaultValue)
233-
if !orderedValueEquals(defaultValue, c.expectedDefault) {
234-
t.Errorf("default value is not correct, expect %v, got %v", c.expectedDefault, defaultValue)
275+
fmt.Printf("presetValues is %v\n", presetValues)
276+
if !orderedValueEquals(presetValues, c.expectedPreset) {
277+
t.Errorf("preset value is not correct, expect %v, got %v", c.expectedPreset, presetValues)
235278
}
236279

237-
if !apiequality.Semantic.DeepEqual(overrideValue, c.expectedOverride) {
238-
t.Errorf("override value is not correct, expect %v, got %v", c.expectedOverride, overrideValue)
280+
if !apiequality.Semantic.DeepEqual(overrideValues, c.expectedOverride) {
281+
t.Errorf("override value is not correct, expect %v, got %v", c.expectedOverride, overrideValues)
239282
}
240283

241-
if !apiequality.Semantic.DeepEqual(builtInValue, c.expectedPrivate) {
242-
t.Errorf("builtin value is not correct, expect %v, got %v", c.expectedPrivate, builtInValue)
284+
if !apiequality.Semantic.DeepEqual(privateValues, c.expectedPrivate) {
285+
t.Errorf("builtin value is not correct, expect %v, got %v", c.expectedPrivate, privateValues)
243286
}
244287
})
245288
}

0 commit comments

Comments
 (0)