@@ -2,89 +2,114 @@ package frmwrk
22
33import (
44 "context"
5+ "fmt"
6+ "os"
7+ "path"
8+ "strings"
59
610 . "github.com/onsi/ginkgo/v2"
711 . "github.com/onsi/gomega"
812
9- // v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10- // controlplanev1 "sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1"
13+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14+ controlplanev1 "sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1"
1115 "sigs.k8s.io/cluster-api/test/framework"
1216)
1317
1418var _ = Describe ("Basic Cluster Creation" , Ordered , func () {
19+ var (
20+ ec * E2ECluster
21+ )
22+
1523 BeforeAll (func () {
1624 e2eCtx = NewE2EContext ()
1725 e2eCtx .ProvideBootstrapCluster ()
1826 e2eCtx .CreateClusterctlConfig (context .TODO ())
1927 e2eCtx .InitManagementCluster (context .TODO ())
28+
29+ DeferCleanup (e2eCtx .Teardown , context .TODO ())
2030 })
2131
22- It ("create" , func () {
23- // TODO:
24- // - access kind cluster
25- // - install capms
26- // - create a namespace
27- // - create node network
28- // - create firewall
29- // - create control plane IP
30- // - create cluster
31-
32- ctx := context .Background ()
33-
34- ec := e2eCtx .NewE2ECluster (ClusterConfig {
35- SpecName : "basic-cluster-creation" ,
36- NamespaceName : "simple" ,
37- ClusterName : "simple" ,
38- KubernetesVersion : "v1.34.1" ,
39- ControlPlaneIP : "203.0.113.130" ,
40- ControlPlaneMachineCount : 1 ,
41- WorkerMachineCount : 1 ,
42- })
43- defer ec .Teardown (ctx )
44-
45- ec .SetupMetalStackPreconditions (ctx )
46- ec .SetupNamespace (ctx )
47- ec .GenerateAndApplyClusterTemplate (ctx )
48-
49- By ("Wait for cluster" )
50- cluster := framework .DiscoveryAndWaitForCluster (ctx , framework.DiscoveryAndWaitForClusterInput {
51- Namespace : ec .NamespaceName ,
52- Name : ec .ClusterName ,
53- Getter : e2eCtx .Environment .Bootstrap .GetClient (),
54- }, e2eCtx .E2EConfig .GetIntervals ("default" , "wait-cluster" )... )
55-
56- controlPlane := framework .GetKubeadmControlPlaneByCluster (ctx , framework.GetKubeadmControlPlaneByClusterInput {
57- Lister : e2eCtx .Environment .Bootstrap .GetClient (),
58- ClusterName : cluster .Name ,
59- Namespace : cluster .Namespace ,
32+ BeforeEach (func () {
33+ ec = nil
34+ })
35+
36+ kubernetesVersions := strings .Split (os .Getenv ("E2E_KUBERNETES_VERSIONS" ), "," )
37+ Expect (kubernetesVersions ).ToNot (BeEmpty (), "E2E_KUBERNETES_VERSIONS must be set" )
38+
39+ for _ , v := range kubernetesVersions {
40+ It (fmt .Sprintf ("create new cluster with kubernetes %s" , v ), func () {
41+ ctx := context .Background ()
42+
43+ ec = createE2ECluster (ctx , e2eCtx , ClusterConfig {
44+ SpecName : "basic-cluster-creation-" + v ,
45+ NamespaceName : "simple-" + v ,
46+ ClusterName : "simple" ,
47+ KubernetesVersion : v ,
48+ ControlPlaneMachineImage : os .Getenv ("E2E_CONTROL_PLANE_MACHINE_IMAGE_PREFIX" ) + strings .TrimPrefix (v , "v" ),
49+ ControlPlaneMachineCount : 1 ,
50+ WorkerMachineImage : os .Getenv ("E2E_WORKER_MACHINE_IMAGE_PREFIX" ) + strings .TrimPrefix (v , "v" ),
51+ WorkerMachineCount : 1 ,
52+ })
53+ Expect (ec ).ToNot (BeNil ())
6054 })
55+ }
56+ })
6157
62- Expect (controlPlane ).To (Not (BeNil ()))
63-
64- // framework.WaitForKubeadmControlPlaneMachinesToExist(ctx, framework.WaitForKubeadmControlPlaneMachinesToExistInput{
65- // Lister: e2eCtx.Environment.Bootstrap.GetClient(),
66- // Cluster: cluster,
67- // ControlPlane: controlPlane,
68- // }, e2eCtx.E2EConfig.GetIntervals("default", "wait-control-plane")...)
69- // framework.DiscoveryAndWaitForControlPlaneInitialized(ctx, framework.DiscoveryAndWaitForControlPlaneInitializedInput{
70- // Lister: e2eCtx.Environment.Bootstrap.GetClient(),
71- // Cluster: cluster,
72- // }, e2eCtx.E2EConfig.GetIntervals("default", "wait-control-plane")...)
73-
74- // By("Wait for control plane")
75- // framework.WaitForControlPlaneToBeReady(ctx, framework.WaitForControlPlaneToBeReadyInput{
76- // Getter: e2eCtx.Environment.Bootstrap.GetClient(),
77- // ControlPlane: &controlplanev1.KubeadmControlPlane{
78- // ObjectMeta: v1.ObjectMeta{
79- // Name: ec.ClusterName,
80- // Namespace: ec.NamespaceName,
81- // },
82- // },
83- // }, e2eCtx.E2EConfig.GetIntervals("default", "wait-control-plane")...)
58+ func createE2ECluster (ctx context.Context , e2eCtx * E2EContext , cfg ClusterConfig ) * E2ECluster {
59+ ec := e2eCtx .NewE2ECluster (cfg )
60+ DeferCleanup (ec .Teardown , ctx )
8461
85- })
62+ ec .SetupMetalStackPreconditions (ctx )
63+ ec .SetupNamespace (ctx )
64+ ec .GenerateAndApplyClusterTemplate (ctx )
8665
87- AfterAll (func () {
88- e2eCtx .Teardown (context .TODO ())
66+ By ("Wait for cluster" )
67+ cluster := framework .DiscoveryAndWaitForCluster (ctx , framework.DiscoveryAndWaitForClusterInput {
68+ Namespace : ec .NamespaceName ,
69+ Name : ec .ClusterName ,
70+ Getter : e2eCtx .Environment .Bootstrap .GetClient (),
71+ }, e2eCtx .E2EConfig .GetIntervals ("default" , "wait-cluster" )... )
72+
73+ controlPlane := framework .GetKubeadmControlPlaneByCluster (ctx , framework.GetKubeadmControlPlaneByClusterInput {
74+ Lister : e2eCtx .Environment .Bootstrap .GetClient (),
75+ ClusterName : cluster .Name ,
76+ Namespace : cluster .Namespace ,
8977 })
90- })
78+
79+ Expect (controlPlane ).To (Not (BeNil ()))
80+
81+ targetResources , err := os .ReadFile (path .Join (e2eCtx .Environment .artifactsPath , "config" , "target" , "base.yaml" ))
82+ Expect (err ).ToNot (HaveOccurred ())
83+
84+ err = ec .Refs .Workload .CreateOrUpdate (ctx , targetResources )
85+ Expect (err ).ToNot (HaveOccurred ())
86+
87+ framework .WaitForKubeadmControlPlaneMachinesToExist (ctx , framework.WaitForKubeadmControlPlaneMachinesToExistInput {
88+ Lister : e2eCtx .Environment .Bootstrap .GetClient (),
89+ Cluster : cluster ,
90+ ControlPlane : controlPlane ,
91+ }, e2eCtx .E2EConfig .GetIntervals ("default" , "wait-control-plane" )... )
92+ framework .DiscoveryAndWaitForControlPlaneInitialized (ctx , framework.DiscoveryAndWaitForControlPlaneInitializedInput {
93+ Lister : e2eCtx .Environment .Bootstrap .GetClient (),
94+ Cluster : cluster ,
95+ }, e2eCtx .E2EConfig .GetIntervals ("default" , "wait-control-plane" )... )
96+
97+ By ("Wait for control plane" )
98+ framework .WaitForControlPlaneToBeReady (ctx , framework.WaitForControlPlaneToBeReadyInput {
99+ Getter : e2eCtx .Environment .Bootstrap .GetClient (),
100+ ControlPlane : & controlplanev1.KubeadmControlPlane {
101+ ObjectMeta : metav1.ObjectMeta {
102+ Name : ec .ClusterName ,
103+ Namespace : ec .NamespaceName ,
104+ },
105+ },
106+ }, e2eCtx .E2EConfig .GetIntervals ("default" , "wait-control-plane" )... )
107+
108+ framework .WaitForClusterMachinesReady (ctx , framework.WaitForClusterMachinesReadyInput {
109+ Cluster : cluster ,
110+ GetLister : e2eCtx .Environment .Bootstrap .GetClient (),
111+ NodeGetter : e2eCtx .Environment .Bootstrap .GetClient (),
112+ }, e2eCtx .E2EConfig .GetIntervals ("default" , "wait-workers" )... )
113+
114+ return ec
115+ }
0 commit comments