@@ -8,10 +8,13 @@ package e2e
88import (
99 "context"
1010
11+ . "github.com/onsi/gomega"
1112 appsv1 "k8s.io/api/apps/v1"
1213 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1314 clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
1415 "sigs.k8s.io/cluster-api/test/framework"
16+
17+ corednsversions "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/versions"
1518)
1619
1720type WaitForCoreDNSToBeReadyInWorkloadClusterInput struct {
@@ -38,3 +41,33 @@ func WaitForCoreDNSToBeReadyInWorkloadCluster(
3841 },
3942 }, input .DeploymentIntervals ... )
4043}
44+
45+ // WaitForDNSUpgradeInput is the input for WaitForDNSUpgrade.
46+ type WaitForDNSUpgradeInput struct {
47+ WorkloadCluster * clusterv1.Cluster
48+ ClusterProxy framework.ClusterProxy
49+ DeploymentIntervals []interface {}
50+ }
51+
52+ // WaitForCoreDNSImageVersion waits for the CoreDNS image to be updated to the default version based on the Kubernetes version.
53+ func WaitForCoreDNSImageVersion (
54+ ctx context.Context ,
55+ input WaitForDNSUpgradeInput ,
56+ ) {
57+ workloadClusterClient := input .ClusterProxy .GetWorkloadCluster (
58+ ctx , input .WorkloadCluster .Namespace , input .WorkloadCluster .Name ,
59+ ).GetClient ()
60+
61+ defaultCoreDNSVersion , found :=
62+ corednsversions .GetCoreDNSVersion (input .WorkloadCluster .Spec .Topology .Version )
63+ Expect (found ).To (
64+ BeTrue (),
65+ "failed to get default CoreDNS version for Cluster version %s" ,
66+ input .WorkloadCluster .Spec .Topology .Version ,
67+ )
68+
69+ framework .WaitForDNSUpgrade (ctx , framework.WaitForDNSUpgradeInput {
70+ Getter : workloadClusterClient ,
71+ DNSVersion : defaultCoreDNSVersion ,
72+ })
73+ }
0 commit comments