@@ -18,11 +18,11 @@ package controllers
18
18
19
19
import (
20
20
"context"
21
+ "errors"
21
22
"fmt"
22
23
"reflect"
23
24
"time"
24
25
25
- "github.com/pkg/errors"
26
26
corev1 "k8s.io/api/core/v1"
27
27
apierrors "k8s.io/apimachinery/pkg/api/errors"
28
28
"k8s.io/client-go/tools/record"
@@ -109,7 +109,7 @@ func (r *OpenStackClusterReconciler) Reconcile(ctx context.Context, req ctrl.Req
109
109
defer func () {
110
110
if err := patchHelper .Patch (ctx , openStackCluster ); err != nil {
111
111
if reterr == nil {
112
- reterr = errors . Wrapf ( err , "error patching OpenStackCluster %s/%s" , openStackCluster .Namespace , openStackCluster .Name )
112
+ reterr = fmt . Errorf ( "error patching OpenStackCluster %s/%s: %w " , openStackCluster .Namespace , openStackCluster .Name , err )
113
113
}
114
114
}
115
115
}()
@@ -157,8 +157,8 @@ func (r *OpenStackClusterReconciler) reconcileDelete(ctx context.Context, scope
157
157
clusterName := fmt .Sprintf ("%s-%s" , cluster .Namespace , cluster .Name )
158
158
159
159
if err = networkingService .DeletePorts (openStackCluster ); err != nil {
160
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to delete ports: %v " , err ))
161
- return reconcile.Result {}, errors . Wrap ( err , "failed to delete ports" )
160
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to delete ports: %w " , err ))
161
+ return reconcile.Result {}, fmt . Errorf ( "failed to delete ports: %w" , err )
162
162
}
163
163
164
164
if openStackCluster .Spec .APIServerLoadBalancer .Enabled {
@@ -168,26 +168,26 @@ func (r *OpenStackClusterReconciler) reconcileDelete(ctx context.Context, scope
168
168
}
169
169
170
170
if err = loadBalancerService .DeleteLoadBalancer (openStackCluster , clusterName ); err != nil {
171
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to delete load balancer: %v " , err ))
172
- return reconcile.Result {}, errors .Errorf ("failed to delete load balancer: %v " , err )
171
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to delete load balancer: %w " , err ))
172
+ return reconcile.Result {}, fmt .Errorf ("failed to delete load balancer: %w " , err )
173
173
}
174
174
}
175
175
176
176
if err = networkingService .DeleteSecurityGroups (openStackCluster , clusterName ); err != nil {
177
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to delete security groups: %v " , err ))
178
- return reconcile.Result {}, errors .Errorf ("failed to delete security groups: %v " , err )
177
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to delete security groups: %w " , err ))
178
+ return reconcile.Result {}, fmt .Errorf ("failed to delete security groups: %w " , err )
179
179
}
180
180
181
181
// if NodeCIDR was not set, no network was created.
182
182
if openStackCluster .Spec .NodeCIDR != "" {
183
183
if err = networkingService .DeleteRouter (openStackCluster , clusterName ); err != nil {
184
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to delete router: %v " , err ))
185
- return ctrl.Result {}, errors .Errorf ("failed to delete router: %v " , err )
184
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to delete router: %w " , err ))
185
+ return ctrl.Result {}, fmt .Errorf ("failed to delete router: %w " , err )
186
186
}
187
187
188
188
if err = networkingService .DeleteNetwork (openStackCluster , clusterName ); err != nil {
189
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to delete network: %v " , err ))
190
- return ctrl.Result {}, errors .Errorf ("failed to delete network: %v " , err )
189
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to delete network: %w " , err ))
190
+ return ctrl.Result {}, fmt .Errorf ("failed to delete network: %w " , err )
191
191
}
192
192
}
193
193
@@ -232,24 +232,24 @@ func deleteBastion(scope scope.Scope, cluster *clusterv1.Cluster, openStackClust
232
232
for _ , address := range addresses {
233
233
if address .Type == corev1 .NodeExternalIP {
234
234
if err = networkingService .DeleteFloatingIP (openStackCluster , address .Address ); err != nil {
235
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to delete floating IP: %v " , err ))
236
- return errors .Errorf ("failed to delete floating IP: %v " , err )
235
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to delete floating IP: %w " , err ))
236
+ return fmt .Errorf ("failed to delete floating IP: %w " , err )
237
237
}
238
238
}
239
239
}
240
240
241
241
rootVolume := openStackCluster .Spec .Bastion .Instance .RootVolume
242
242
if err = computeService .DeleteInstance (openStackCluster , instanceStatus , instanceName , rootVolume ); err != nil {
243
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to delete bastion: %v " , err ))
244
- return errors .Errorf ("failed to delete bastion: %v " , err )
243
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to delete bastion: %w " , err ))
244
+ return fmt .Errorf ("failed to delete bastion: %w " , err )
245
245
}
246
246
}
247
247
248
248
openStackCluster .Status .Bastion = nil
249
249
250
250
if err = networkingService .DeleteBastionSecurityGroup (openStackCluster , fmt .Sprintf ("%s-%s" , cluster .Namespace , cluster .Name )); err != nil {
251
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to delete bastion security group: %v " , err ))
252
- return errors .Errorf ("failed to delete bastion security group: %v " , err )
251
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to delete bastion security group: %w " , err ))
252
+ return fmt .Errorf ("failed to delete bastion security group: %w " , err )
253
253
}
254
254
openStackCluster .Status .BastionSecurityGroup = nil
255
255
@@ -323,7 +323,7 @@ func reconcileBastion(scope scope.Scope, cluster *clusterv1.Cluster, openStackCl
323
323
instanceSpec := bastionToInstanceSpec (openStackCluster , cluster .Name )
324
324
bastionHash , err := compute .HashInstanceSpec (instanceSpec )
325
325
if err != nil {
326
- return errors . Wrap ( err , "failed computing bastion hash from instance spec" )
326
+ return fmt . Errorf ( "failed computing bastion hash from instance spec: %w" , err )
327
327
}
328
328
329
329
instanceStatus , err := computeService .GetInstanceStatusByName (openStackCluster , fmt .Sprintf ("%s-bastion" , cluster .Name ))
@@ -351,7 +351,7 @@ func reconcileBastion(scope scope.Scope, cluster *clusterv1.Cluster, openStackCl
351
351
352
352
instanceStatus , err = computeService .CreateInstance (openStackCluster , openStackCluster , instanceSpec , cluster .Name , true )
353
353
if err != nil {
354
- return errors .Errorf ("failed to reconcile bastion: %v " , err )
354
+ return fmt .Errorf ("failed to reconcile bastion: %w " , err )
355
355
}
356
356
357
357
networkingService , err := networking .NewService (scope )
@@ -361,19 +361,19 @@ func reconcileBastion(scope scope.Scope, cluster *clusterv1.Cluster, openStackCl
361
361
clusterName := fmt .Sprintf ("%s-%s" , cluster .Namespace , cluster .Name )
362
362
fp , err := networkingService .GetOrCreateFloatingIP (openStackCluster , openStackCluster , clusterName , openStackCluster .Spec .Bastion .Instance .FloatingIP )
363
363
if err != nil {
364
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to get or create floating IP for bastion: %v " , err ))
365
- return errors .Errorf ("failed to get or create floating IP for bastion: %v " , err )
364
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to get or create floating IP for bastion: %w " , err ))
365
+ return fmt .Errorf ("failed to get or create floating IP for bastion: %w " , err )
366
366
}
367
367
port , err := computeService .GetManagementPort (openStackCluster , instanceStatus )
368
368
if err != nil {
369
- err = errors .Errorf ("getting management port for bastion: %v " , err )
369
+ err = fmt .Errorf ("getting management port for bastion: %w " , err )
370
370
handleUpdateOSCError (openStackCluster , err )
371
371
return err
372
372
}
373
373
err = networkingService .AssociateFloatingIP (openStackCluster , fp , port .ID )
374
374
if err != nil {
375
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to associate floating IP with bastion: %v " , err ))
376
- return errors .Errorf ("failed to associate floating IP with bastion: %v " , err )
375
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to associate floating IP with bastion: %w " , err ))
376
+ return fmt .Errorf ("failed to associate floating IP with bastion: %w " , err )
377
377
}
378
378
379
379
bastion , err := instanceStatus .BastionStatus (openStackCluster )
@@ -433,8 +433,8 @@ func reconcileNetworkComponents(scope scope.Scope, cluster *clusterv1.Cluster, o
433
433
434
434
err = networkingService .ReconcileExternalNetwork (openStackCluster )
435
435
if err != nil {
436
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to reconcile external network: %v " , err ))
437
- return errors .Errorf ("failed to reconcile external network: %v " , err )
436
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to reconcile external network: %w " , err ))
437
+ return fmt .Errorf ("failed to reconcile external network: %w " , err )
438
438
}
439
439
440
440
if openStackCluster .Spec .NodeCIDR == "" {
@@ -443,16 +443,16 @@ func reconcileNetworkComponents(scope scope.Scope, cluster *clusterv1.Cluster, o
443
443
netOpts := openStackCluster .Spec .Network .ToListOpt ()
444
444
networkList , err := networkingService .GetNetworksByFilter (& netOpts )
445
445
if err != nil {
446
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to find network: %v " , err ))
447
- return errors .Errorf ("failed to find network: %v " , err )
446
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to find network: %w " , err ))
447
+ return fmt .Errorf ("failed to find network: %w " , err )
448
448
}
449
449
if len (networkList ) == 0 {
450
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to find any network: %v" , err ))
451
- return errors .Errorf ("failed to find any network: %v" , err )
450
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to find any network" ))
451
+ return fmt .Errorf ("failed to find any network" )
452
452
}
453
453
if len (networkList ) > 1 {
454
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to find only one network (result: %v): %v " , networkList , err ))
455
- return errors .Errorf ("failed to find only one network (result: %v): %v " , networkList , err )
454
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("found multiple networks (result: %v)" , networkList ))
455
+ return fmt .Errorf ("found multiple networks (result: %v)" , networkList )
456
456
}
457
457
if openStackCluster .Status .Network == nil {
458
458
openStackCluster .Status .Network = & infrav1.Network {}
@@ -482,25 +482,25 @@ func reconcileNetworkComponents(scope scope.Scope, cluster *clusterv1.Cluster, o
482
482
} else {
483
483
err := networkingService .ReconcileNetwork (openStackCluster , clusterName )
484
484
if err != nil {
485
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to reconcile network: %v " , err ))
486
- return errors .Errorf ("failed to reconcile network: %v " , err )
485
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to reconcile network: %w " , err ))
486
+ return fmt .Errorf ("failed to reconcile network: %w " , err )
487
487
}
488
488
err = networkingService .ReconcileSubnet (openStackCluster , clusterName )
489
489
if err != nil {
490
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to reconcile subnets: %v " , err ))
491
- return errors .Errorf ("failed to reconcile subnets: %v " , err )
490
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to reconcile subnets: %w " , err ))
491
+ return fmt .Errorf ("failed to reconcile subnets: %w " , err )
492
492
}
493
493
err = networkingService .ReconcileRouter (openStackCluster , clusterName )
494
494
if err != nil {
495
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to reconcile router: %v " , err ))
496
- return errors .Errorf ("failed to reconcile router: %v " , err )
495
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to reconcile router: %w " , err ))
496
+ return fmt .Errorf ("failed to reconcile router: %w " , err )
497
497
}
498
498
}
499
499
500
500
err = networkingService .ReconcileSecurityGroups (openStackCluster , clusterName )
501
501
if err != nil {
502
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to reconcile security groups: %v " , err ))
503
- return errors .Errorf ("failed to reconcile security groups: %v " , err )
502
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to reconcile security groups: %w " , err ))
503
+ return fmt .Errorf ("failed to reconcile security groups: %w " , err )
504
504
}
505
505
506
506
// Calculate the port that we will use for the API server
@@ -522,8 +522,8 @@ func reconcileNetworkComponents(scope scope.Scope, cluster *clusterv1.Cluster, o
522
522
523
523
err = loadBalancerService .ReconcileLoadBalancer (openStackCluster , clusterName , apiServerPort )
524
524
if err != nil {
525
- handleUpdateOSCError (openStackCluster , errors .Errorf ("failed to reconcile load balancer: %v " , err ))
526
- return errors .Errorf ("failed to reconcile load balancer: %v " , err )
525
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("failed to reconcile load balancer: %w " , err ))
526
+ return fmt .Errorf ("failed to reconcile load balancer: %w " , err )
527
527
}
528
528
}
529
529
@@ -541,8 +541,8 @@ func reconcileNetworkComponents(scope scope.Scope, cluster *clusterv1.Cluster, o
541
541
// If floating IPs are not disabled, get one to use as the VIP for the control plane
542
542
fp , err := networkingService .GetOrCreateFloatingIP (openStackCluster , openStackCluster , clusterName , openStackCluster .Spec .APIServerFloatingIP )
543
543
if err != nil {
544
- handleUpdateOSCError (openStackCluster , errors .Errorf ("Floating IP cannot be got or created: %v " , err ))
545
- return errors .Errorf ("Floating IP cannot be got or created: %v " , err )
544
+ handleUpdateOSCError (openStackCluster , fmt .Errorf ("floating IP cannot be got or created: %w " , err ))
545
+ return fmt .Errorf ("floating IP cannot be got or created: %w " , err )
546
546
}
547
547
host = fp .FloatingIP
548
548
case openStackCluster .Spec .APIServerFixedIP != "" :
@@ -555,7 +555,7 @@ func reconcileNetworkComponents(scope scope.Scope, cluster *clusterv1.Cluster, o
555
555
// accordingly when creating control plane machines
556
556
// However this would require us to deploy software on the control plane hosts to manage the
557
557
// VIP (e.g. keepalived/kube-vip)
558
- return errors . New ("unable to determine VIP for API server" )
558
+ return fmt . Errorf ("unable to determine VIP for API server" )
559
559
}
560
560
561
561
// Set APIEndpoints so the Cluster API Cluster Controller can pull them
0 commit comments