@@ -160,6 +160,78 @@ var _ = Describe("Upgrade", func() {
160
160
})
161
161
})
162
162
})
163
+ Context ("Upgrading" , func () {
164
+ const (
165
+ openshiftAssistedControlPlaneName = "test-resource"
166
+ clusterName = "test-cluster"
167
+ namespace = "test"
168
+ )
169
+ var (
170
+ ctx = context .Background ()
171
+ cluster * clusterv1.Cluster
172
+ mockCtrl * gomock.Controller
173
+ k8sClient client.Client
174
+ mockWorkloadClientGenerator * mockWorkloadClient
175
+ )
176
+ BeforeEach (func () {
177
+ k8sClient = fakeclient .NewClientBuilder ().
178
+ WithScheme (testScheme ).
179
+ WithStatusSubresource (& controlplanev1alpha2.OpenshiftAssistedControlPlane {}).Build ()
180
+
181
+ mockCtrl = gomock .NewController (GinkgoT ())
182
+ ns := & corev1.Namespace {ObjectMeta : metav1.ObjectMeta {Name : namespace }}
183
+ Expect (k8sClient .Create (ctx , ns )).To (Succeed ())
184
+
185
+ mockWorkloadClientGenerator = NewMockWorkloadClient ()
186
+
187
+ By ("creating a cluster" )
188
+ cluster = & clusterv1.Cluster {}
189
+ err := k8sClient .Get (ctx , types.NamespacedName {Name : clusterName , Namespace : namespace }, cluster )
190
+ if err != nil && errors .IsNotFound (err ) {
191
+ cluster = testutils .NewCluster (clusterName , namespace )
192
+ err := k8sClient .Create (ctx , cluster )
193
+ Expect (err ).NotTo (HaveOccurred ())
194
+ }
195
+ })
196
+
197
+ AfterEach (func () {
198
+ mockCtrl .Finish ()
199
+ k8sClient = nil
200
+ })
201
+ When ("Upgrade is requested" , func () {
202
+ It ("should update the workload cluster's cluster version to have the correct desired update" , func () {
203
+ By ("creating the openshift assisted control plane" )
204
+ openshiftAssistedControlPlane := testutils .NewOpenshiftAssistedControlPlane (namespace , openshiftAssistedControlPlaneName )
205
+ openshiftAssistedControlPlane .Status .DistributionVersion = "4.12.0"
206
+ openshiftAssistedControlPlane .Labels = map [string ]string {
207
+ clusterv1 .ClusterNameLabel : cluster .Name ,
208
+ }
209
+ conditions .MarkTrue (openshiftAssistedControlPlane , controlplanev1alpha2 .KubeconfigAvailableCondition )
210
+ By ("creating the kubeconfig secret" )
211
+ kubeconfigSecret := & corev1.Secret {
212
+ ObjectMeta : metav1.ObjectMeta {
213
+ Name : fmt .Sprintf ("%s-kubeconfig" , cluster .Name ),
214
+ Namespace : openshiftAssistedControlPlane .Namespace ,
215
+ },
216
+ Data : map [string ][]byte {
217
+ "value" : []byte ("kubeconfig" ),
218
+ },
219
+ }
220
+ Expect (k8sClient .Create (ctx , kubeconfigSecret )).To (Succeed ())
221
+ By ("creating a cluster version using the workload cluster's client" )
222
+ mockWorkloadClientGenerator .MockCreateClusterVersion ("4.12.0" )
223
+
224
+ By ("calling UpgradeWorkloadCluster" )
225
+ Expect (UpgradeWorkloadCluster (ctx , k8sClient , mockWorkloadClientGenerator , openshiftAssistedControlPlane )).To (Succeed ())
226
+
227
+ By ("checking the workload cluster's cluster version for the desired update field" )
228
+ workloadClusterVersion := & configv1.ClusterVersion {}
229
+ Expect (mockWorkloadClientGenerator .mockClient .Get (ctx , types.NamespacedName {Name : "version" }, workloadClusterVersion )).To (Succeed ())
230
+ Expect (workloadClusterVersion .Spec .DesiredUpdate ).NotTo (BeNil ())
231
+ Expect (workloadClusterVersion .Spec .DesiredUpdate .Version ).To (Equal (openshiftAssistedControlPlane .Spec .DistributionVersion ))
232
+ })
233
+ })
234
+ })
163
235
})
164
236
165
237
type mockWorkloadClient struct {
0 commit comments