@@ -122,6 +122,35 @@ func pstring(name string) *string {
122
122
return pointer .String (name )
123
123
}
124
124
125
+ func newPowervsImage (imageName string ) * infrav1.IBMPowerVSImage {
126
+ return & infrav1.IBMPowerVSImage {
127
+ ObjectMeta : metav1.ObjectMeta {
128
+ Name : imageName ,
129
+ Namespace : "default" ,
130
+ },
131
+ Spec : infrav1.IBMPowerVSImageSpec {
132
+ ClusterName : "test-cluster" ,
133
+ ServiceInstanceID : "test-service-ID" ,
134
+ Object : pstring ("sample-image.ova.gz" ),
135
+ Bucket : pstring ("sample-bucket" ),
136
+ Region : pstring ("us-south" ),
137
+ },
138
+ }
139
+ }
140
+
141
+ func setupPowerVSImageScope (imageName string ) (* PowerVSImageScope , error ) {
142
+ powervsImage := newPowervsImage (imageName )
143
+ initObjects := []client.Object {powervsImage }
144
+
145
+ client := fake .NewClientBuilder ().WithScheme (scheme .Scheme ).WithObjects (initObjects ... ).Build ()
146
+ return & PowerVSImageScope {
147
+ client : client ,
148
+ Logger : klogr .New (),
149
+ IBMPowerVSClient : mockpowervs ,
150
+ IBMPowerVSImage : powervsImage ,
151
+ }, nil
152
+ }
153
+
125
154
func setupPowerVSMachineScope (clusterName string , machineName string , imageID * string , networkID * string , isID bool ) (* PowerVSMachineScope , error ) {
126
155
cluster := newCluster (clusterName )
127
156
machine := newMachine (clusterName , machineName )
@@ -325,4 +354,71 @@ var _ = Describe("PowerVS machine and image creation", func() {
325
354
Expect (err ).NotTo (HaveOccurred ())
326
355
})
327
356
})
357
+
358
+ Context ("Create or Delete IBMPowerVSImage" , func () {
359
+ It ("should not error and create an image import job" , func () {
360
+ scope , err := setupPowerVSImageScope ("sample-image" )
361
+ Expect (err ).NotTo (HaveOccurred ())
362
+ spec := scope .IBMPowerVSImage .Spec
363
+
364
+ images := & models.Images {}
365
+ body := & models.CreateCosImageImportJob {
366
+ ImageName : & scope .IBMPowerVSImage .ObjectMeta .Name ,
367
+ BucketName : spec .Bucket ,
368
+ BucketAccess : pstring ("public" ),
369
+ Region : spec .Region ,
370
+ ImageFilename : spec .Object ,
371
+ }
372
+
373
+ mockpowervs .EXPECT ().GetAllImage ().Return (images , nil )
374
+ mockpowervs .EXPECT ().GetCosImages (scope .IBMPowerVSImage .Spec .ServiceInstanceID ).Return (nil , nil )
375
+ mockpowervs .EXPECT ().CreateCosImage (body ).Return (& models.JobReference {ID : pstring ("test-job-ID" )}, nil )
376
+
377
+ _ , jobRef , err := scope .CreateImageCOSBucket ()
378
+ Expect (err ).NotTo (HaveOccurred ())
379
+ Expect (jobRef ).ToNot (BeNil ())
380
+ })
381
+
382
+ It ("should not error and use the existing image" , func () {
383
+ scope , err := setupPowerVSImageScope ("sample-image" )
384
+ Expect (err ).NotTo (HaveOccurred ())
385
+
386
+ images := & models.Images {
387
+ Images : []* models.ImageReference {
388
+ {
389
+ ImageID : pstring ("sample-image-ID" ),
390
+ Name : pstring ("sample-image" ),
391
+ },
392
+ },
393
+ }
394
+ mockpowervs .EXPECT ().GetAllImage ().Return (images , nil )
395
+
396
+ imageRef , _ , err := scope .CreateImageCOSBucket ()
397
+ Expect (err ).NotTo (HaveOccurred ())
398
+ Expect (imageRef ).ToNot (BeNil ())
399
+ })
400
+
401
+ It ("should return as the previous job is not finished" , func () {
402
+ scope , err := setupPowerVSImageScope ("sample-image" )
403
+ Expect (err ).NotTo (HaveOccurred ())
404
+
405
+ images := & models.Images {}
406
+ job := & models.Job {ID : pstring ("test-job-ID" ), Status : & models.Status {State : pstring ("pending" )}}
407
+ mockpowervs .EXPECT ().GetAllImage ().Return (images , nil )
408
+ mockpowervs .EXPECT ().GetCosImages (scope .IBMPowerVSImage .Spec .ServiceInstanceID ).Return (job , nil )
409
+
410
+ _ , _ , err = scope .CreateImageCOSBucket ()
411
+ Expect (err ).NotTo (HaveOccurred ())
412
+ })
413
+
414
+ It ("should not error and delete the image" , func () {
415
+ scope , err := setupPowerVSImageScope ("sample-image" )
416
+ Expect (err ).NotTo (HaveOccurred ())
417
+
418
+ mockpowervs .EXPECT ().DeleteImage (gomock .AssignableToTypeOf ("sample-image-ID" )).Return (nil )
419
+
420
+ err = scope .DeleteImage ()
421
+ Expect (err ).NotTo (HaveOccurred ())
422
+ })
423
+ })
328
424
})
0 commit comments