44package kubeproxymode
55
66import (
7+ "context"
78 "testing"
89
910 . "github.com/onsi/ginkgo/v2"
1011 "github.com/onsi/gomega"
12+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13+ "k8s.io/apimachinery/pkg/runtime"
14+ utilruntime "k8s.io/apimachinery/pkg/util/runtime"
15+ clientgoscheme "k8s.io/client-go/kubernetes/scheme"
16+ clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
1117 runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1"
1218
1319 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/v1alpha1"
1420 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/handlers/mutation"
1521 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/common/pkg/testutils/capitest"
1622 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/common/pkg/testutils/capitest/request"
23+ "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/test/helpers"
1724)
1825
1926func TestKubeProxyModePatch (t * testing.T ) {
@@ -23,11 +30,17 @@ func TestKubeProxyModePatch(t *testing.T) {
2330
2431type testObj struct {
2532 patchTest capitest.PatchTestDef
33+ cluster * clusterv1.Cluster
2634}
2735
2836var _ = Describe ("Generate kube proxy mode patches" , func () {
2937 patchGenerator := func () mutation.GeneratePatches {
30- return mutation .NewMetaGeneratePatchesHandler ("" , nil , NewPatch ()).(mutation.GeneratePatches )
38+ clientScheme := runtime .NewScheme ()
39+ utilruntime .Must (clientgoscheme .AddToScheme (clientScheme ))
40+ utilruntime .Must (clusterv1 .AddToScheme (clientScheme ))
41+ cl , err := helpers .TestEnv .GetK8sClientWithScheme (clientScheme )
42+ gomega .Expect (err ).To (gomega .BeNil ())
43+ return mutation .NewMetaGeneratePatchesHandler ("" , cl , NewPatch ()).(mutation.GeneratePatches )
3144 }
3245
3346 testDefs := []testObj {{
@@ -96,6 +109,15 @@ var _ = Describe("Generate kube proxy mode patches", func() {
96109 ValueMatcher : gomega .ConsistOf ("addon/kube-proxy" ),
97110 }},
98111 },
112+ cluster : & clusterv1.Cluster {
113+ ObjectMeta : metav1.ObjectMeta {
114+ Name : "test-cluster" ,
115+ Namespace : request .Namespace ,
116+ Labels : map [string ]string {
117+ clusterv1 .ProviderNameLabel : "nutanix" ,
118+ },
119+ },
120+ },
99121 }, {
100122 patchTest : capitest.PatchTestDef {
101123 Name : "kube proxy iptables mode with AWS" ,
@@ -137,6 +159,15 @@ mode: iptables
137159 ),
138160 }},
139161 },
162+ cluster : & clusterv1.Cluster {
163+ ObjectMeta : metav1.ObjectMeta {
164+ Name : "test-cluster" ,
165+ Namespace : request .Namespace ,
166+ Labels : map [string ]string {
167+ clusterv1 .ProviderNameLabel : "aws" ,
168+ },
169+ },
170+ },
140171 }, {
141172 patchTest : capitest.PatchTestDef {
142173 Name : "kube proxy iptables mode with Docker" ,
@@ -162,9 +193,6 @@ mode: iptables
162193 gomega .HaveKeyWithValue ("owner" , "root:root" ),
163194 gomega .HaveKeyWithValue ("permissions" , "0644" ),
164195 gomega .HaveKeyWithValue ("content" , `
165- ---
166- apiVersion: kubeproxy.config.k8s.io/v1alpha1
167- kind: KubeProxyConfiguration
168196mode: iptables
169197` ,
170198 ),
@@ -178,6 +206,15 @@ mode: iptables
178206 ),
179207 }},
180208 },
209+ cluster : & clusterv1.Cluster {
210+ ObjectMeta : metav1.ObjectMeta {
211+ Name : "test-cluster" ,
212+ Namespace : request .Namespace ,
213+ Labels : map [string ]string {
214+ clusterv1 .ProviderNameLabel : "docker" ,
215+ },
216+ },
217+ },
181218 }, {
182219 patchTest : capitest.PatchTestDef {
183220 Name : "kube proxy nftables mode with Nutanix" ,
@@ -219,6 +256,15 @@ mode: nftables
219256 ),
220257 }},
221258 },
259+ cluster : & clusterv1.Cluster {
260+ ObjectMeta : metav1.ObjectMeta {
261+ Name : "test-cluster" ,
262+ Namespace : request .Namespace ,
263+ Labels : map [string ]string {
264+ clusterv1 .ProviderNameLabel : "nutanix" ,
265+ },
266+ },
267+ },
222268 }, {
223269 patchTest : capitest.PatchTestDef {
224270 Name : "kube proxy nftables mode with AWS" ,
@@ -260,6 +306,15 @@ mode: nftables
260306 ),
261307 }},
262308 },
309+ cluster : & clusterv1.Cluster {
310+ ObjectMeta : metav1.ObjectMeta {
311+ Name : "test-cluster" ,
312+ Namespace : request .Namespace ,
313+ Labels : map [string ]string {
314+ clusterv1 .ProviderNameLabel : "aws" ,
315+ },
316+ },
317+ },
263318 }, {
264319 patchTest : capitest.PatchTestDef {
265320 Name : "kube proxy nftables mode with Docker" ,
@@ -285,9 +340,6 @@ mode: nftables
285340 gomega .HaveKeyWithValue ("owner" , "root:root" ),
286341 gomega .HaveKeyWithValue ("permissions" , "0644" ),
287342 gomega .HaveKeyWithValue ("content" , `
288- ---
289- apiVersion: kubeproxy.config.k8s.io/v1alpha1
290- kind: KubeProxyConfiguration
291343mode: nftables
292344` ,
293345 ),
@@ -301,11 +353,29 @@ mode: nftables
301353 ),
302354 }},
303355 },
356+ cluster : & clusterv1.Cluster {
357+ ObjectMeta : metav1.ObjectMeta {
358+ Name : "test-cluster" ,
359+ Namespace : request .Namespace ,
360+ Labels : map [string ]string {
361+ clusterv1 .ProviderNameLabel : "docker" ,
362+ },
363+ },
364+ },
304365 }}
305366
306367 // create test node for each case
307368 for _ , tt := range testDefs {
308369 It (tt .patchTest .Name , func () {
370+ if tt .cluster != nil {
371+ clientScheme := runtime .NewScheme ()
372+ utilruntime .Must (clientgoscheme .AddToScheme (clientScheme ))
373+ utilruntime .Must (clusterv1 .AddToScheme (clientScheme ))
374+ cl , err := helpers .TestEnv .GetK8sClientWithScheme (clientScheme )
375+ gomega .Expect (err ).ToNot (gomega .HaveOccurred ())
376+ gomega .Expect (cl .Create (context .Background (), tt .cluster )).To (gomega .Succeed ())
377+ DeferCleanup (cl .Delete , context .Background (), tt .cluster )
378+ }
309379 capitest .AssertGeneratePatches (GinkgoT (), patchGenerator , & tt .patchTest )
310380 })
311381 }
0 commit comments