@@ -23,172 +23,196 @@ import (
2323 . "github.com/onsi/ginkgo/v2"
2424 . "github.com/onsi/gomega"
2525
26+ corev1 "k8s.io/api/core/v1"
2627 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2728 "k8s.io/klog/v2/textlogger"
2829 clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
29- "sigs.k8s.io/controller-runtime/pkg/client"
30- "sigs.k8s.io/controller-runtime/pkg/client/fake"
3130
3231 "github.com/projectsveltos/addon-controller/controllers"
3332 libsveltosv1beta1 "github.com/projectsveltos/libsveltos/api/v1beta1"
34- libsveltoscrd "github.com/projectsveltos/libsveltos/lib/crd"
35- "github.com/projectsveltos/libsveltos/lib/k8s_utils"
3633)
3734
3835var _ = Describe ("Drift Detection Upgrade" , func () {
36+ sveltosKubeconfigPostfix := "-sveltos" + kubeconfigPostfix
3937 var logger logr.Logger
4038
4139 BeforeEach (func () {
42- logger = textlogger .NewLogger (textlogger .NewConfig ())
40+ logger = textlogger .NewLogger (textlogger .NewConfig (textlogger . Verbosity ( 0 ) ))
4341 })
4442
4543 It ("skipUpgrading skips clusters which are paused or not ready" , func () {
4644 paused := true
45+ namespace := randomString ()
4746 sveltosClusterPaused := & libsveltosv1beta1.SveltosCluster {
4847 ObjectMeta : metav1.ObjectMeta {
4948 Name : randomString (),
50- Namespace : randomString () ,
49+ Namespace : namespace ,
5150 },
5251 Spec : libsveltosv1beta1.SveltosClusterSpec {
5352 Paused : paused ,
5453 },
5554 }
56- Expect (addTypeInformationToObject (scheme , sveltosClusterPaused )).To (Succeed ())
5755
5856 sveltosClusterNotReady := & libsveltosv1beta1.SveltosCluster {
5957 ObjectMeta : metav1.ObjectMeta {
6058 Name : randomString (),
61- Namespace : randomString () ,
59+ Namespace : namespace ,
6260 },
6361 Spec : libsveltosv1beta1.SveltosClusterSpec {
6462 Paused : false ,
6563 },
66- Status : libsveltosv1beta1.SveltosClusterStatus {
67- Ready : false ,
68- },
6964 }
70- Expect (addTypeInformationToObject (scheme , sveltosClusterNotReady )).To (Succeed ())
7165
7266 sveltosClusterReadyAndNotPaused := & libsveltosv1beta1.SveltosCluster {
7367 ObjectMeta : metav1.ObjectMeta {
7468 Name : randomString (),
75- Namespace : randomString () ,
69+ Namespace : namespace ,
7670 },
7771 Spec : libsveltosv1beta1.SveltosClusterSpec {
7872 Paused : false ,
7973 },
80- Status : libsveltosv1beta1.SveltosClusterStatus {
81- Ready : true ,
82- },
8374 }
84- Expect (addTypeInformationToObject (scheme , sveltosClusterReadyAndNotPaused )).To (Succeed ())
8575
8676 capiClusterPaused := & clusterv1.Cluster {
8777 ObjectMeta : metav1.ObjectMeta {
8878 Name : randomString (),
89- Namespace : randomString () ,
79+ Namespace : namespace ,
9080 },
9181 Spec : clusterv1.ClusterSpec {
9282 Paused : & paused ,
9383 },
9484 }
95- Expect (addTypeInformationToObject (scheme , capiClusterPaused )).To (Succeed ())
9685
9786 initialized := true
9887 capiClusterNotPaused := & clusterv1.Cluster {
9988 ObjectMeta : metav1.ObjectMeta {
10089 Name : randomString (),
101- Namespace : randomString () ,
90+ Namespace : namespace ,
10291 },
10392 Spec : clusterv1.ClusterSpec {},
104- Status : clusterv1.ClusterStatus {
105- Initialization : clusterv1.ClusterInitializationStatus {
106- ControlPlaneInitialized : & initialized ,
107- },
93+ }
94+
95+ ns := & corev1.Namespace {
96+ ObjectMeta : metav1.ObjectMeta {
97+ Name : namespace ,
10898 },
10999 }
110- Expect (addTypeInformationToObject (scheme , capiClusterNotPaused )).To (Succeed ())
111100
112- resourceSummaryCRD , err := k8s_utils .GetUnstructured (libsveltoscrd .GetResourceSummaryCRDYAML ())
113- Expect (err ).To (BeNil ())
101+ Expect (testEnv .Create (context .TODO (), ns )).To (Succeed ())
102+ Expect (waitForObject (context .TODO (), testEnv , ns )).To (Succeed ())
103+
104+ Expect (testEnv .Create (context .TODO (), sveltosClusterReadyAndNotPaused )).To (Succeed ())
105+ Expect (waitForObject (context .TODO (), testEnv , sveltosClusterReadyAndNotPaused )).To (Succeed ())
114106
115- initObjects := []client.Object {
116- sveltosClusterPaused ,
117- sveltosClusterNotReady ,
118- sveltosClusterReadyAndNotPaused ,
119- capiClusterPaused ,
120- capiClusterNotPaused ,
121- resourceSummaryCRD ,
107+ sveltosClusterReadyAndNotPaused .Status = libsveltosv1beta1.SveltosClusterStatus {
108+ Ready : true ,
122109 }
110+ Expect (testEnv .Status ().Update (context .TODO (), sveltosClusterReadyAndNotPaused )).To (Succeed ())
123111
124- c := fake . NewClientBuilder (). WithScheme ( scheme ). WithStatusSubresource ( initObjects ... ).
125- WithObjects ( initObjects ... ). Build ( )
112+ Expect ( testEnv . Create ( context . TODO (), capiClusterNotPaused )). To ( Succeed ())
113+ Expect ( waitForObject ( context . TODO (), testEnv , capiClusterNotPaused )). To ( Succeed () )
126114
127- skip , err := controllers .SkipUpgrading (context .TODO (), c , sveltosClusterPaused , logger )
128- Expect (err ).To (BeNil ())
129- Expect (skip ).To (BeTrue ())
115+ capiClusterNotPaused .Status = clusterv1.ClusterStatus {
116+ Initialization : clusterv1.ClusterInitializationStatus {
117+ ControlPlaneInitialized : & initialized ,
118+ },
119+ }
120+ Expect (testEnv .Status ().Update (context .TODO (), capiClusterNotPaused )).To (Succeed ())
130121
131- skip , err = controllers .SkipUpgrading (context .TODO (), c , sveltosClusterNotReady , logger )
132- Expect (err ).To (BeNil ())
133- Expect (skip ).To (BeTrue ())
122+ Expect (testEnv .Create (context .TODO (), sveltosClusterPaused )).To (Succeed ())
123+ Expect (waitForObject (context .TODO (), testEnv , sveltosClusterPaused )).To (Succeed ())
134124
135- skip , err = controllers .SkipUpgrading (context .TODO (), c , sveltosClusterReadyAndNotPaused , logger )
136- Expect (err ).To (BeNil ())
137- Expect (skip ).To (BeFalse ())
125+ Expect (testEnv .Create (context .TODO (), sveltosClusterNotReady )).To (Succeed ())
126+ Expect (waitForObject (context .TODO (), testEnv , sveltosClusterNotReady )).To (Succeed ())
138127
139- skip , err = controllers .SkipUpgrading (context .TODO (), c , capiClusterPaused , logger )
140- Expect (err ).To (BeNil ())
141- Expect (skip ).To (BeTrue ())
128+ Expect (testEnv .Create (context .TODO (), capiClusterPaused )).To (Succeed ())
129+ Expect (waitForObject (context .TODO (), testEnv , capiClusterPaused )).To (Succeed ())
142130
143- skip , err = controllers .SkipUpgrading (context .TODO (), c , capiClusterNotPaused , logger )
144- Expect (err ).To (BeNil ())
145- Expect (skip ).To (BeFalse ())
146- })
131+ Expect (addTypeInformationToObject (scheme , sveltosClusterPaused )).To (Succeed ())
132+ Expect (addTypeInformationToObject (scheme , sveltosClusterNotReady )).To (Succeed ())
133+ Expect (addTypeInformationToObject (scheme , sveltosClusterReadyAndNotPaused )).To (Succeed ())
134+ Expect (addTypeInformationToObject (scheme , capiClusterPaused )).To (Succeed ())
135+ Expect (addTypeInformationToObject (scheme , capiClusterNotPaused )).To (Succeed ())
147136
148- It ( "skipUpgrading skips clusters with no ResourceSummary CRD" , func () {
149- sveltosClusterReadyAndNotPaused := & libsveltosv1beta1. SveltosCluster {
137+ By ( "Create the secrets with cluster kubeconfig" )
138+ secret := & corev1. Secret {
150139 ObjectMeta : metav1.ObjectMeta {
151- Name : randomString () ,
152- Namespace : randomString () ,
140+ Namespace : namespace ,
141+ Name : sveltosClusterPaused . Name + sveltosKubeconfigPostfix ,
153142 },
154- Spec : libsveltosv1beta1.SveltosClusterSpec {
155- Paused : false ,
143+ Data : map [string ][]byte {
144+ "value" : testEnv .Kubeconfig ,
145+ },
146+ }
147+ Expect (testEnv .Create (context .TODO (), secret )).To (Succeed ())
148+ Expect (waitForObject (context .TODO (), testEnv , secret )).To (Succeed ())
149+
150+ secret = & corev1.Secret {
151+ ObjectMeta : metav1.ObjectMeta {
152+ Namespace : namespace ,
153+ Name : sveltosClusterNotReady .Name + sveltosKubeconfigPostfix ,
156154 },
157- Status : libsveltosv1beta1. SveltosClusterStatus {
158- Ready : true ,
155+ Data : map [ string ][] byte {
156+ "value" : testEnv . Kubeconfig ,
159157 },
160158 }
161- Expect (addTypeInformationToObject (scheme , sveltosClusterReadyAndNotPaused )).To (Succeed ())
159+ Expect (testEnv .Create (context .TODO (), secret )).To (Succeed ())
160+ Expect (waitForObject (context .TODO (), testEnv , secret )).To (Succeed ())
162161
163- initialized := true
164- capiClusterNotPaused := & clusterv1.Cluster {
162+ secret = & corev1.Secret {
165163 ObjectMeta : metav1.ObjectMeta {
166- Name : randomString () ,
167- Namespace : randomString () ,
164+ Namespace : namespace ,
165+ Name : sveltosClusterReadyAndNotPaused . Name + sveltosKubeconfigPostfix ,
168166 },
169- Spec : clusterv1.ClusterSpec {},
170- Status : clusterv1.ClusterStatus {
171- Initialization : clusterv1.ClusterInitializationStatus {
172- ControlPlaneInitialized : & initialized ,
173- },
167+ Data : map [string ][]byte {
168+ "value" : testEnv .Kubeconfig ,
174169 },
175170 }
176- Expect (addTypeInformationToObject (scheme , capiClusterNotPaused )).To (Succeed ())
171+ Expect (testEnv .Create (context .TODO (), secret )).To (Succeed ())
172+ Expect (waitForObject (context .TODO (), testEnv , secret )).To (Succeed ())
173+
174+ secret = & corev1.Secret {
175+ ObjectMeta : metav1.ObjectMeta {
176+ Namespace : namespace ,
177+ Name : capiClusterPaused .Name + kubeconfigPostfix ,
178+ },
179+ Data : map [string ][]byte {
180+ "value" : testEnv .Kubeconfig ,
181+ },
182+ }
183+ Expect (testEnv .Create (context .TODO (), secret )).To (Succeed ())
184+ Expect (waitForObject (context .TODO (), testEnv , secret )).To (Succeed ())
177185
178- initObjects := []client.Object {
179- sveltosClusterReadyAndNotPaused ,
180- capiClusterNotPaused ,
186+ secret = & corev1.Secret {
187+ ObjectMeta : metav1.ObjectMeta {
188+ Namespace : namespace ,
189+ Name : capiClusterNotPaused .Name + kubeconfigPostfix ,
190+ },
191+ Data : map [string ][]byte {
192+ "value" : testEnv .Kubeconfig ,
193+ },
181194 }
195+ Expect (testEnv .Create (context .TODO (), secret )).To (Succeed ())
196+ Expect (waitForObject (context .TODO (), testEnv , secret )).To (Succeed ())
182197
183- c := fake .NewClientBuilder ().WithScheme (scheme ).WithStatusSubresource (initObjects ... ).
184- WithObjects (initObjects ... ).Build ()
198+ skip , err := controllers .SkipUpgrading (context .TODO (), testEnv , sveltosClusterPaused , logger )
199+ Expect (err ).To (BeNil ())
200+ Expect (skip ).To (BeTrue ())
185201
186- skip , err : = controllers .SkipUpgrading (context .TODO (), c , sveltosClusterReadyAndNotPaused , logger )
202+ skip , err = controllers .SkipUpgrading (context .TODO (), testEnv , sveltosClusterNotReady , logger )
187203 Expect (err ).To (BeNil ())
188204 Expect (skip ).To (BeTrue ())
189205
190- skip , err = controllers .SkipUpgrading (context .TODO (), c , capiClusterNotPaused , logger )
206+ skip , err = controllers .SkipUpgrading (context .TODO (), testEnv , sveltosClusterReadyAndNotPaused , logger )
207+ Expect (err ).To (BeNil ())
208+ Expect (skip ).To (BeFalse ())
209+
210+ skip , err = controllers .SkipUpgrading (context .TODO (), testEnv , capiClusterPaused , logger )
191211 Expect (err ).To (BeNil ())
192212 Expect (skip ).To (BeTrue ())
213+
214+ skip , err = controllers .SkipUpgrading (context .TODO (), testEnv , capiClusterNotPaused , logger )
215+ Expect (err ).To (BeNil ())
216+ Expect (skip ).To (BeFalse ())
193217 })
194218})
0 commit comments