@@ -54,6 +54,23 @@ var _ = Describe("Limitador controller", func() {
54
54
version := LimitadorVersion
55
55
httpPort := & limitadorv1alpha1.TransportProtocol {Port : & httpPortNumber }
56
56
grpcPort := & limitadorv1alpha1.TransportProtocol {Port : & grpcPortNumber }
57
+ affinity := & v1.Affinity {
58
+ PodAntiAffinity : & v1.PodAntiAffinity {
59
+ PreferredDuringSchedulingIgnoredDuringExecution : []v1.WeightedPodAffinityTerm {
60
+ {
61
+ Weight : 100 ,
62
+ PodAffinityTerm : v1.PodAffinityTerm {
63
+ LabelSelector : & metav1.LabelSelector {
64
+ MatchLabels : map [string ]string {
65
+ "pod" : "label" ,
66
+ },
67
+ },
68
+ TopologyKey : "kubernetes.io/hostname" ,
69
+ },
70
+ },
71
+ },
72
+ },
73
+ }
57
74
58
75
limits := []limitadorv1alpha1.RateLimit {
59
76
{
@@ -88,6 +105,7 @@ var _ = Describe("Limitador controller", func() {
88
105
Spec : limitadorv1alpha1.LimitadorSpec {
89
106
Replicas : & replicas ,
90
107
Version : & version ,
108
+ Affinity : affinity ,
91
109
Listener : & limitadorv1alpha1.Listener {
92
110
HTTP : httpPort ,
93
111
GRPC : grpcPort ,
@@ -188,6 +206,9 @@ var _ = Describe("Limitador controller", func() {
188
206
)
189
207
Expect (createdLimitadorDeployment .Spec .Template .Spec .Containers [0 ].Resources ).Should (
190
208
Equal (* limitadorObj .GetResourceRequirements ()))
209
+ Expect (createdLimitadorDeployment .Spec .Template .Spec .Affinity ).Should (
210
+ Equal (affinity ),
211
+ )
191
212
})
192
213
193
214
It ("Should create a Limitador service" , func () {
@@ -306,6 +327,8 @@ var _ = Describe("Limitador controller", func() {
306
327
},
307
328
}
308
329
updatedLimitador .Spec .ResourceRequirements = resourceRequirements
330
+ affinity .PodAntiAffinity .PreferredDuringSchedulingIgnoredDuringExecution [0 ].Weight = 99
331
+ updatedLimitador .Spec .Affinity = affinity
309
332
310
333
Expect (k8sClient .Update (context .TODO (), & updatedLimitador )).Should (Succeed ())
311
334
updatedLimitadorDeployment := appsv1.Deployment {}
@@ -325,8 +348,46 @@ var _ = Describe("Limitador controller", func() {
325
348
correctReplicas := * updatedLimitadorDeployment .Spec .Replicas == LimitadorReplicas + 1
326
349
correctImage := updatedLimitadorDeployment .Spec .Template .Spec .Containers [0 ].Image == LimitadorImage + ":latest"
327
350
correctResources := reflect .DeepEqual (updatedLimitadorDeployment .Spec .Template .Spec .Containers [0 ].Resources , * resourceRequirements )
351
+ correctAffinity := updatedLimitadorDeployment .Spec .Template .Spec .Affinity .PodAntiAffinity .PreferredDuringSchedulingIgnoredDuringExecution [0 ].Weight == 99
352
+
353
+ return correctReplicas && correctImage && correctResources && correctAffinity
354
+ }, timeout , interval ).Should (BeTrue ())
355
+ })
356
+
357
+ It ("Should modify limitador deployments if nil object set" , func () {
358
+ updatedLimitador := limitadorv1alpha1.Limitador {}
359
+ Eventually (func () bool {
360
+ err := k8sClient .Get (
361
+ context .TODO (),
362
+ types.NamespacedName {
363
+ Namespace : LimitadorNamespace ,
364
+ Name : limitadorObj .Name ,
365
+ },
366
+ & updatedLimitador )
367
+
368
+ return err == nil
369
+ }, timeout , interval ).Should (BeTrue ())
370
+
371
+ updatedLimitador .Spec .Affinity = nil
372
+
373
+ Expect (k8sClient .Update (context .TODO (), & updatedLimitador )).Should (Succeed ())
374
+ updatedLimitadorDeployment := appsv1.Deployment {}
375
+ Eventually (func () bool {
376
+ err := k8sClient .Get (
377
+ context .TODO (),
378
+ types.NamespacedName {
379
+ Namespace : LimitadorNamespace ,
380
+ Name : limitadorObj .Name ,
381
+ },
382
+ & updatedLimitadorDeployment )
383
+
384
+ if err != nil {
385
+ return false
386
+ }
387
+
388
+ correctAffinity := updatedLimitadorDeployment .Spec .Template .Spec .Affinity == nil
328
389
329
- return correctReplicas && correctImage && correctResources
390
+ return correctAffinity
330
391
}, timeout , interval ).Should (BeTrue ())
331
392
})
332
393
0 commit comments