@@ -12,7 +12,6 @@ import (
12
12
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
13
13
"k8s.io/apimachinery/pkg/runtime"
14
14
runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1"
15
- "sigs.k8s.io/cluster-api/exp/runtime/topologymutation"
16
15
ctrl "sigs.k8s.io/controller-runtime"
17
16
"sigs.k8s.io/controller-runtime/pkg/client"
18
17
@@ -24,65 +23,65 @@ import (
24
23
"github.com/d2iq-labs/capi-runtime-extensions/common/pkg/capi/clustertopology/patches/selectors"
25
24
"github.com/d2iq-labs/capi-runtime-extensions/common/pkg/capi/clustertopology/variables"
26
25
capdv1 "github.com/d2iq-labs/capi-runtime-extensions/common/pkg/external/sigs.k8s.io/cluster-api/test/infrastructure/docker/api/v1beta1"
26
+ "github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers"
27
27
dockerclusterconfig "github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/docker/clusterconfig"
28
28
dockerworkerconfig "github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/docker/workerconfig"
29
29
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/generic/clusterconfig"
30
30
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/generic/workerconfig"
31
31
)
32
32
33
33
const (
34
- // HandlerNamePatch is the name of the inject handler.
35
- HandlerNamePatch = "DockerCustomImagePatch"
36
-
37
- defaultKinDImageRepository = "ghcr.io/mesosphere/kind-node"
34
+ // ControlPlaneHandlerNamePatch is the name of the inject handler.
35
+ ControlPlaneHandlerNamePatch = "DockerControlPlaneCustomImagePatch"
38
36
)
39
37
40
- type customImagePatchHandler struct {
38
+ type customImageWorkerPatchHandler struct {
41
39
variableName string
42
40
variableFieldPath []string
43
41
}
44
42
45
43
var (
46
- _ commonhandlers.Named = & customImagePatchHandler {}
47
- _ mutation.GeneratePatches = & customImagePatchHandler {}
48
- _ mutation.MetaMutator = & customImagePatchHandler {}
44
+ _ commonhandlers.Named = & customImageWorkerPatchHandler {}
45
+ _ mutation.GeneratePatches = & customImageWorkerPatchHandler {}
46
+ _ mutation.MetaMutator = & customImageWorkerPatchHandler {}
49
47
)
50
48
51
- func NewPatch () * customImagePatchHandler {
52
- return newCustomImagePatchHandler (VariableName )
49
+ func NewWorkerPatch () * customImageWorkerPatchHandler {
50
+ return newcustomImageWorkerPatchHandler (VariableName )
53
51
}
54
52
55
- func NewMetaPatch () * customImagePatchHandler {
56
- return newCustomImagePatchHandler (
53
+ func NewWorkerInClusterConfigMetaPatch () * customImageControlPlanePatchHandler {
54
+ return newCustomImageControlPlanePatchHandler (
57
55
clusterconfig .MetaVariableName ,
56
+ clusterconfig .MetaWorkerConfigName ,
58
57
dockerclusterconfig .DockerVariableName ,
59
58
VariableName ,
60
59
)
61
60
}
62
61
63
- func NewMetaWorkerPatch () * customImagePatchHandler {
64
- return newCustomImagePatchHandler (
62
+ func NewMetaWorkerPatch () * customImageWorkerPatchHandler {
63
+ return newcustomImageWorkerPatchHandler (
65
64
workerconfig .MetaVariableName ,
66
65
dockerworkerconfig .DockerVariableName ,
67
66
VariableName ,
68
67
)
69
68
}
70
69
71
- func newCustomImagePatchHandler (
70
+ func newcustomImageWorkerPatchHandler (
72
71
variableName string ,
73
72
variableFieldPath ... string ,
74
- ) * customImagePatchHandler {
75
- return & customImagePatchHandler {
73
+ ) * customImageWorkerPatchHandler {
74
+ return & customImageWorkerPatchHandler {
76
75
variableName : variableName ,
77
76
variableFieldPath : variableFieldPath ,
78
77
}
79
78
}
80
79
81
- func (h * customImagePatchHandler ) Name () string {
82
- return HandlerNamePatch
80
+ func (h * customImageWorkerPatchHandler ) Name () string {
81
+ return ControlPlaneHandlerNamePatch
83
82
}
84
83
85
- func (h * customImagePatchHandler ) Mutate (
84
+ func (h * customImageWorkerPatchHandler ) Mutate (
86
85
ctx context.Context ,
87
86
obj runtime.Object ,
88
87
vars map [string ]apiextensionsv1.JSON ,
@@ -102,7 +101,8 @@ func (h *customImagePatchHandler) Mutate(
102
101
return err
103
102
}
104
103
if ! found {
105
- log .V (5 ).Info ("Docker customImage variable not defined, using default KinD node image" )
104
+ log .V (5 ).
105
+ Info ("Docker customImage variable not defined for workers, using default KinD node image" )
106
106
}
107
107
108
108
log = log .WithValues (
@@ -114,7 +114,7 @@ func (h *customImagePatchHandler) Mutate(
114
114
customImageVar ,
115
115
)
116
116
117
- err = patches .Generate (
117
+ return patches .Generate (
118
118
obj ,
119
119
vars ,
120
120
& holderRef ,
@@ -154,74 +154,12 @@ func (h *customImagePatchHandler) Mutate(
154
154
return nil
155
155
},
156
156
)
157
-
158
- if err != nil {
159
- return err
160
- }
161
-
162
- if h .variableName == workerconfig .MetaVariableName {
163
- return nil
164
- }
165
-
166
- return patches .Generate (
167
- obj ,
168
- vars ,
169
- & holderRef ,
170
- selectors .InfrastructureControlPlaneMachines ("v1beta1" , "DockerMachineTemplate" ),
171
- log ,
172
- func (obj * capdv1.DockerMachineTemplate ) error {
173
- variablePath := []string {"builtin" , "controlPlane" , "version" }
174
-
175
- if customImageVar == "" {
176
- kubernetesVersion , found , err := variables .Get [string ](
177
- vars ,
178
- variablePath [0 ],
179
- variablePath [1 :]... )
180
- if err != nil {
181
- return err
182
- }
183
- if ! found {
184
- return fmt .Errorf (
185
- "missing required variable: %s" ,
186
- strings .Join (variablePath , "." ),
187
- )
188
- }
189
-
190
- customImageVar = v1alpha1 .OCIImage (
191
- defaultKinDImageRepository + ":" + kubernetesVersion ,
192
- )
193
- }
194
-
195
- log .WithValues (
196
- "patchedObjectKind" , obj .GetObjectKind ().GroupVersionKind ().String (),
197
- "patchedObjectName" , client .ObjectKeyFromObject (obj ),
198
- "customImage" , customImageVar ,
199
- ).Info ("setting customImage in control plane DockerMachineTemplate spec" )
200
-
201
- obj .Spec .Template .Spec .CustomImage = string (customImageVar )
202
-
203
- return nil
204
- },
205
- )
206
157
}
207
158
208
- func (h * customImagePatchHandler ) GeneratePatches (
159
+ func (h * customImageWorkerPatchHandler ) GeneratePatches (
209
160
ctx context.Context ,
210
161
req * runtimehooksv1.GeneratePatchesRequest ,
211
162
resp * runtimehooksv1.GeneratePatchesResponse ,
212
163
) {
213
- topologymutation .WalkTemplates (
214
- ctx ,
215
- apis .CAPDDecoder (),
216
- req ,
217
- resp ,
218
- func (
219
- ctx context.Context ,
220
- obj runtime.Object ,
221
- vars map [string ]apiextensionsv1.JSON ,
222
- holderRef runtimehooksv1.HolderReference ,
223
- ) error {
224
- return h .Mutate (ctx , obj , vars , holderRef , client.ObjectKey {})
225
- },
226
- )
164
+ handlers .GeneratePatches (ctx , req , resp , apis .CAPDDecoder (), h .Mutate )
227
165
}
0 commit comments