Skip to content

Commit da1355d

Browse files
committed
Add mps to handler & topology test
1 parent 10741fd commit da1355d

File tree

7 files changed

+327
-3
lines changed

7 files changed

+327
-3
lines changed

cmd/clusterctl/client/cluster/assets/topology-test/existing-my-cluster.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ spec:
3131
controlPlane:
3232
metadata: {}
3333
replicas: 1
34+
workers:
35+
machinePools:
36+
- class: "default-worker"
37+
name: "mp-0"
38+
replicas: 1
3439
---
3540
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
3641
kind: DockerCluster

cmd/clusterctl/client/cluster/assets/topology-test/mock-CRDs.yaml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,24 @@ metadata:
3232
---
3333
apiVersion: apiextensions.k8s.io/v1
3434
kind: CustomResourceDefinition
35+
metadata:
36+
labels:
37+
cluster.x-k8s.io/provider: control-plane-kubeadm
38+
cluster.x-k8s.io/v1beta1: v1beta1
39+
name: kubeadmconfigtemplates.bootstrap.cluster.x-k8s.io
40+
---
41+
apiVersion: apiextensions.k8s.io/v1
42+
kind: CustomResourceDefinition
43+
metadata:
44+
labels:
45+
cluster.x-k8s.io/provider: infrastructure-docker
46+
cluster.x-k8s.io/v1beta1: v1beta1
47+
name: dockermachinetemplates.infrastructure.cluster.x-k8s.io
48+
---
49+
apiVersion: apiextensions.k8s.io/v1
50+
kind: CustomResourceDefinition
3551
metadata:
3652
labels:
3753
cluster.x-k8s.io/provider: infrastructure-docker
3854
cluster.x-k8s.io/v1beta1: v1beta1
39-
name: dockermachinetemplates.infrastructure.cluster.x-k8s.io
55+
name: dockermachinepooltemplates.infrastructure.cluster.x-k8s.io
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
2+
kind: DockerMachinePoolTemplate
3+
metadata:
4+
name: "docker-worker-machinepooltemplate"
5+
namespace: default
6+
spec:
7+
template:
8+
metadata:
9+
labels:
10+
docker-machinepool-template: test-template-worker
11+
spec:
12+
extraMounts:
13+
- containerPath: "/var/run/docker.sock"
14+
hostPath: "/var/run/docker.sock"

cmd/clusterctl/client/cluster/assets/topology-test/my-cluster-class.yaml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,22 @@ spec:
2222
kind: DockerClusterTemplate
2323
name: my-cluster
2424
namespace: default
25+
workers:
26+
machinePools:
27+
- class: "default-worker"
28+
template:
29+
bootstrap:
30+
ref:
31+
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
32+
kind: KubeadmConfigTemplate
33+
name: docker-worker-bootstraptemplate
34+
namespace: default
35+
infrastructure:
36+
ref:
37+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
38+
kind: DockerMachinePoolTemplate
39+
name: docker-worker-machinepooltemplate
40+
namespace: default
2541
---
2642
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
2743
kind: DockerClusterTemplate
@@ -69,3 +85,26 @@ spec:
6985
extraMounts:
7086
- containerPath: "/var/run/docker.sock"
7187
hostPath: "/var/run/docker.sock"
88+
---
89+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
90+
kind: DockerMachinePoolTemplate
91+
metadata:
92+
name: "docker-worker-machinepooltemplate"
93+
namespace: default
94+
spec:
95+
template:
96+
spec:
97+
extraMounts:
98+
- containerPath: "/var/run/docker.sock"
99+
hostPath: "/var/run/docker.sock"
100+
---
101+
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
102+
kind: KubeadmConfigTemplate
103+
metadata:
104+
name: "docker-worker-bootstraptemplate"
105+
namespace: default
106+
spec:
107+
template:
108+
spec:
109+
joinConfiguration:
110+
nodeRegistration: {} # node registration parameters are automatically injected by CAPD according to the kindest/node image in use.

cmd/clusterctl/client/cluster/assets/topology-test/new-clusterclass-and-cluster.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,31 @@ spec:
6262
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
6363
kind: DockerMachineTemplate
6464
name: docker-worker-machinetemplate
65+
machinePools:
66+
- class: "default-worker"
67+
template:
68+
bootstrap:
69+
ref:
70+
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
71+
kind: KubeadmConfigTemplate
72+
name: docker-worker-bootstraptemplate
73+
infrastructure:
74+
ref:
75+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
76+
kind: DockerMachinePoolTemplate
77+
name: docker-worker-machinepooltemplate
78+
- class: "default-worker-2"
79+
template:
80+
bootstrap:
81+
ref:
82+
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
83+
kind: KubeadmConfigTemplate
84+
name: docker-worker-bootstraptemplate
85+
infrastructure:
86+
ref:
87+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
88+
kind: DockerMachinePoolTemplate
89+
name: docker-worker-machinepooltemplate
6590
---
6691
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
6792
kind: DockerClusterTemplate
@@ -123,6 +148,17 @@ spec:
123148
preLoadImages:
124149
- gcr.io/kakaraparthy-devel/kindest/kindnetd:0.5.4
125150
---
151+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
152+
kind: DockerMachinePoolTemplate
153+
metadata:
154+
name: "docker-worker-machinepooltemplate"
155+
namespace: default
156+
spec:
157+
template:
158+
spec:
159+
preLoadImages:
160+
- gcr.io/kakaraparthy-devel/kindest/kindnetd:0.5.4
161+
---
126162
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
127163
kind: KubeadmConfigTemplate
128164
metadata:
@@ -163,3 +199,10 @@ spec:
163199
- class: "default-worker"
164200
name: "md-1"
165201
replicas: 1
202+
machinePools:
203+
- class: "default-worker"
204+
name: "mp-0"
205+
replicas: 1
206+
- class: "default-worker"
207+
name: "mp-1"
208+
replicas: 1

cmd/clusterctl/client/cluster/topology_test.go

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,14 @@ var (
5252
//go:embed assets/topology-test/modified-my-cluster.yaml
5353
modifiedMyClusterYAML []byte
5454

55-
// modifiedDockerMachineTemplateYAML adds metadat to the docker machine used by the control plane template..
55+
// modifiedDockerMachineTemplateYAML adds metadata to the docker machine used by the control plane template..
5656
//go:embed assets/topology-test/modified-CP-dockermachinetemplate.yaml
5757
modifiedDockerMachineTemplateYAML []byte
5858

59+
// modifiedDockerMachinePoolTemplateYAML adds metadata to the docker machine pool used by the control plane template..
60+
//go:embed assets/topology-test/modified-CP-dockermachinepooltemplate.yaml
61+
modifiedDockerMachinePoolTemplateYAML []byte
62+
5963
//go:embed assets/topology-test/objects-in-different-namespaces.yaml
6064
objsInDifferentNamespacesYAML []byte
6165
)
@@ -97,11 +101,15 @@ func Test_topologyClient_Plan(t *testing.T) {
97101
{kind: "DockerMachineTemplate", namespace: "default", namePrefix: "my-cluster-md-0-"},
98102
{kind: "DockerMachineTemplate", namespace: "default", namePrefix: "my-cluster-md-1-"},
99103
{kind: "DockerMachineTemplate", namespace: "default", namePrefix: "my-cluster-"},
104+
{kind: "DockerMachinePool", namespace: "default", namePrefix: "my-cluster-mp-0-"},
105+
{kind: "DockerMachinePool", namespace: "default", namePrefix: "my-cluster-mp-1-"},
100106
{kind: "KubeadmConfigTemplate", namespace: "default", namePrefix: "my-cluster-md-0-"},
101107
{kind: "KubeadmConfigTemplate", namespace: "default", namePrefix: "my-cluster-md-1-"},
102108
{kind: "KubeadmControlPlane", namespace: "default", namePrefix: "my-cluster-"},
103109
{kind: "MachineDeployment", namespace: "default", namePrefix: "my-cluster-md-0-"},
104110
{kind: "MachineDeployment", namespace: "default", namePrefix: "my-cluster-md-1-"},
111+
{kind: "MachinePool", namespace: "default", namePrefix: "my-cluster-mp-0-"},
112+
{kind: "MachinePool", namespace: "default", namePrefix: "my-cluster-mp-1-"},
105113
},
106114
modified: []item{
107115
{kind: "Cluster", namespace: "default", namePrefix: "my-cluster"},
@@ -205,6 +213,35 @@ func Test_topologyClient_Plan(t *testing.T) {
205213
},
206214
wantErr: false,
207215
},
216+
{
217+
name: "Modifying an existing DockerMachinePoolTemplate. Affects multiple clusters. Target Cluster not specified.",
218+
existingObjects: mustToUnstructured(
219+
mockCRDsYAML,
220+
existingMyClusterClassYAML,
221+
existingMyClusterYAML,
222+
existingMySecondClusterYAML,
223+
),
224+
args: args{
225+
in: &TopologyPlanInput{
226+
Objs: mustToUnstructured(modifiedDockerMachinePoolTemplateYAML),
227+
},
228+
},
229+
want: out{
230+
affectedClusters: func() []client.ObjectKey {
231+
cluster := client.ObjectKey{Namespace: "default", Name: "my-cluster"}
232+
cluster2 := client.ObjectKey{Namespace: "default", Name: "my-second-cluster"}
233+
return []client.ObjectKey{cluster, cluster2}
234+
}(),
235+
affectedClusterClasses: func() []client.ObjectKey {
236+
cc := client.ObjectKey{Namespace: "default", Name: "my-cluster-class"}
237+
return []client.ObjectKey{cc}
238+
}(),
239+
modified: []item{},
240+
created: []item{},
241+
reconciledCluster: nil,
242+
},
243+
wantErr: false,
244+
},
208245
{
209246
name: "Modifying an existing DockerMachineTemplate. Affects multiple clusters. Target Cluster specified.",
210247
existingObjects: mustToUnstructured(
@@ -241,6 +278,37 @@ func Test_topologyClient_Plan(t *testing.T) {
241278
},
242279
wantErr: false,
243280
},
281+
{
282+
name: "Modifying an existing DockerMachinePoolTemplate. Affects multiple clusters. Target Cluster specified.",
283+
existingObjects: mustToUnstructured(
284+
mockCRDsYAML,
285+
existingMyClusterClassYAML,
286+
existingMyClusterYAML,
287+
existingMySecondClusterYAML,
288+
),
289+
args: args{
290+
in: &TopologyPlanInput{
291+
Objs: mustToUnstructured(modifiedDockerMachinePoolTemplateYAML),
292+
TargetClusterName: "my-cluster",
293+
},
294+
},
295+
want: out{
296+
affectedClusters: func() []client.ObjectKey {
297+
cluster := client.ObjectKey{Namespace: "default", Name: "my-cluster"}
298+
cluster2 := client.ObjectKey{Namespace: "default", Name: "my-second-cluster"}
299+
return []client.ObjectKey{cluster, cluster2}
300+
}(),
301+
affectedClusterClasses: func() []client.ObjectKey {
302+
cc := client.ObjectKey{Namespace: "default", Name: "my-cluster-class"}
303+
return []client.ObjectKey{cc}
304+
}(),
305+
created: []item{
306+
{kind: "DockerMachinePool", namespace: "default", namePrefix: "my-cluster-"},
307+
},
308+
reconciledCluster: &client.ObjectKey{Namespace: "default", Name: "my-cluster"},
309+
},
310+
wantErr: false,
311+
},
244312
{
245313
name: "Input with objects in different namespaces should return error",
246314
args: args{

0 commit comments

Comments
 (0)