@@ -21,20 +21,18 @@ import (
21
21
"errors"
22
22
"fmt"
23
23
24
- "github.com/go-logr/logr"
25
-
26
24
"github.com/IBM-Cloud/power-go-client/ibmpisession"
27
25
"github.com/IBM-Cloud/power-go-client/power/models"
28
26
"github.com/IBM/go-sdk-core/v5/core"
29
27
"github.com/IBM/platform-services-go-sdk/resourcecontrollerv2"
30
-
28
+ "github.com/go-logr/logr"
31
29
"k8s.io/klog/v2"
32
30
31
+ ctrl "sigs.k8s.io/controller-runtime"
33
32
"sigs.k8s.io/controller-runtime/pkg/client"
34
33
35
- v1beta1patch "sigs.k8s.io/cluster-api/util/deprecated/v1beta1/patch" //nolint:staticcheck
36
-
37
34
infrav1 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2"
35
+ infrav1beta2 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2"
38
36
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/powervs"
39
37
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/resourcecontroller"
40
38
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/endpoints"
@@ -55,10 +53,7 @@ type PowerVSImageScopeParams struct {
55
53
56
54
// PowerVSImageScope defines a scope defined around a Power VS Cluster.
57
55
type PowerVSImageScope struct {
58
- logr.Logger
59
- Client client.Client
60
- patchHelper * v1beta1patch.Helper
61
-
56
+ Client client.Client
62
57
IBMPowerVSClient powervs.PowerVS
63
58
IBMPowerVSImage * infrav1.IBMPowerVSImage
64
59
ServiceEndpoint []endpoints.ServiceEndpoint
@@ -83,23 +78,9 @@ func NewPowerVSImageScope(params PowerVSImageScopeParams) (scope *PowerVSImageSc
83
78
if params .Logger == (logr.Logger {}) {
84
79
params .Logger = klog .Background ()
85
80
}
86
- scope .Logger = params .Logger
87
-
88
- helper , err := v1beta1patch .NewHelper (params .IBMPowerVSImage , params .Client )
89
- if err != nil {
90
- err = fmt .Errorf ("failed to init patch helper: %w" , err )
91
- return nil , err
92
- }
93
- scope .patchHelper = helper
94
81
95
82
// Create Resource Controller client.
96
83
var serviceOption resourcecontroller.ServiceOptions
97
- // Fetch the resource controller endpoint.
98
- rcEndpoint := endpoints .FetchEndpoints (string (endpoints .RC ), params .ServiceEndpoint )
99
- if rcEndpoint != "" {
100
- serviceOption .URL = rcEndpoint
101
- params .Logger .V (3 ).Info ("Overriding the default resource controller endpoint" , "ResourceControllerEndpoint" , rcEndpoint )
102
- }
103
84
104
85
rc , err := resourcecontroller .NewService (serviceOption )
105
86
if err != nil {
@@ -150,7 +131,7 @@ func NewPowerVSImageScope(params PowerVSImageScopeParams) (scope *PowerVSImageSc
150
131
// Fetch the service endpoint.
151
132
if svcEndpoint := endpoints .FetchPVSEndpoint (endpoints .ConstructRegionFromZone (* res .RegionID ), params .ServiceEndpoint ); svcEndpoint != "" {
152
133
options .IBMPIOptions .URL = svcEndpoint
153
- scope .Logger .V (3 ).Info ("overriding the default powervs service endpoint" )
134
+ params .Logger .V (3 ).Info ("overriding the default powervs service endpoint" , "serviceEndpoint" , svcEndpoint )
154
135
}
155
136
156
137
c , err := powervs .NewService (options )
@@ -179,58 +160,49 @@ func (i *PowerVSImageScope) ensureImageUnique(imageName string) (*models.ImageRe
179
160
}
180
161
181
162
// CreateImageCOSBucket creates a power vs image.
182
- func (i * PowerVSImageScope ) CreateImageCOSBucket () (* models.ImageReference , * models.JobReference , error ) {
183
- s := i .IBMPowerVSImage .Spec
163
+ func (i * PowerVSImageScope ) CreateImageCOSBucket (ctx context.Context ) (* models.ImageReference , * models.JobReference , error ) {
164
+ log := ctrl .LoggerFrom (ctx )
165
+ imageSpec := i .IBMPowerVSImage .Spec
184
166
m := i .IBMPowerVSImage .ObjectMeta
185
167
186
168
imageReply , err := i .ensureImageUnique (m .Name )
187
169
if err != nil {
188
170
record .Warnf (i .IBMPowerVSImage , "FailedRetrieveImage" , "Failed to retrieve image %q" , m .Name )
189
171
return nil , nil , err
190
172
} else if imageReply != nil {
191
- i .Info ("Image already exists" )
173
+ log .Info ("Image already exists" )
192
174
return imageReply , nil , nil
193
175
}
194
176
195
177
if lastJob , _ := i .GetImportJob (); lastJob != nil {
196
- if * lastJob .Status .State != "completed" && * lastJob .Status .State != "failed" {
197
- i .Info ("Previous import job not yet finished" , "state" , * lastJob .Status .State )
178
+ if * lastJob .Status .State != string ( infrav1beta2 . PowerVSImageStateCompleted ) && * lastJob .Status .State != string ( infrav1beta2 . PowerVSImageStateFailed ) {
179
+ log .Info ("Previous import job not yet finished" , "state" , * lastJob .Status .State )
198
180
return nil , nil , nil
199
181
}
200
182
}
201
183
202
184
body := & models.CreateCosImageImportJob {
203
185
ImageName : & m .Name ,
204
- BucketName : s .Bucket ,
186
+ BucketName : imageSpec .Bucket ,
205
187
BucketAccess : core .StringPtr (BucketAccess ),
206
- Region : s .Region ,
207
- ImageFilename : s .Object ,
208
- StorageType : s .StorageType ,
188
+ Region : imageSpec .Region ,
189
+ ImageFilename : imageSpec .Object ,
190
+ StorageType : imageSpec .StorageType ,
209
191
}
210
192
211
193
jobRef , err := i .IBMPowerVSClient .CreateCosImage (body )
212
194
if err != nil {
213
- i .Info ("Unable to create new import job request" )
195
+ log .Info ("Unable to create new import job request" )
214
196
record .Warnf (i .IBMPowerVSImage , "FailedCreateImageImportJob" , "Failed image import job creation - %v" , err )
215
197
return nil , nil , err
216
198
}
217
- i .Info ("New import job request created" )
199
+ log .Info ("New import job request created" )
218
200
record .Eventf (i .IBMPowerVSImage , "SuccessfulCreateImageImportJob" , "Created image import job %q" , * jobRef .ID )
219
201
return nil , jobRef , nil
220
202
}
221
203
222
- // PatchObject persists the cluster configuration and status.
223
- func (i * PowerVSImageScope ) PatchObject () error {
224
- return i .patchHelper .Patch (context .TODO (), i .IBMPowerVSImage )
225
- }
226
-
227
- // Close closes the current scope persisting the cluster configuration and status.
228
- func (i * PowerVSImageScope ) Close () error {
229
- return i .PatchObject ()
230
- }
231
-
232
204
// DeleteImage will delete the image.
233
- func (i * PowerVSImageScope ) DeleteImage () error {
205
+ func (i * PowerVSImageScope ) DeleteImage (ctx context. Context ) error {
234
206
if err := i .IBMPowerVSClient .DeleteImage (i .IBMPowerVSImage .Status .ImageID ); err != nil {
235
207
record .Warnf (i .IBMPowerVSImage , "FailedDeleteImage" , "Failed image deletion - %v" , err )
236
208
return err
@@ -245,7 +217,7 @@ func (i *PowerVSImageScope) GetImportJob() (*models.Job, error) {
245
217
}
246
218
247
219
// DeleteImportJob will delete the image import job.
248
- func (i * PowerVSImageScope ) DeleteImportJob () error {
220
+ func (i * PowerVSImageScope ) DeleteImportJob (ctx context. Context ) error {
249
221
if err := i .IBMPowerVSClient .DeleteJob (i .IBMPowerVSImage .Status .JobID ); err != nil {
250
222
record .Warnf (i .IBMPowerVSImage , "FailedDeleteImageImportJob" , "Failed image import job deletion - %v" , err )
251
223
return err
0 commit comments