@@ -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,35 @@ 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,
53+ // based on the Kubernetes version.
54+ func WaitForCoreDNSImageVersion (
55+ ctx context.Context ,
56+ input WaitForDNSUpgradeInput ,
57+ ) {
58+ workloadClusterClient := input .ClusterProxy .GetWorkloadCluster (
59+ ctx , input .WorkloadCluster .Namespace , input .WorkloadCluster .Name ,
60+ ).GetClient ()
61+
62+ defaultCoreDNSVersion , found := corednsversions .GetCoreDNSVersion (
63+ input .WorkloadCluster .Spec .Topology .Version ,
64+ )
65+ Expect (found ).To (
66+ BeTrue (),
67+ "failed to get default CoreDNS version for Cluster version %s" ,
68+ input .WorkloadCluster .Spec .Topology .Version ,
69+ )
70+
71+ framework .WaitForDNSUpgrade (ctx , framework.WaitForDNSUpgradeInput {
72+ Getter : workloadClusterClient ,
73+ DNSVersion : defaultCoreDNSVersion ,
74+ })
75+ }
0 commit comments