@@ -31,14 +31,11 @@ type Deleter struct {
31
31
type objectMetaList []metav1.ObjectMeta
32
32
33
33
func (ol objectMetaList ) asCommaSeparatedString () string {
34
- out := ""
35
- separator := ""
36
- for n := range ol {
37
- object := ol [n ]
38
- out += fmt .Sprintf ("%s%s/%s" , separator , object .Namespace , object .Name )
39
- separator = ", "
34
+ names := make ([]string , 0 , len (ol ))
35
+ for _ , obj := range ol {
36
+ names = append (names , fmt .Sprintf ("%s/%s" , obj .Namespace , obj .Name ))
40
37
}
41
- return out
38
+ return strings . Join ( names , "," )
42
39
}
43
40
44
41
func New (log logr.Logger , cluster * v1beta1.Cluster , remoteClient client.Client ) Deleter {
@@ -50,11 +47,7 @@ func New(log logr.Logger, cluster *v1beta1.Cluster, remoteClient client.Client)
50
47
}
51
48
52
49
func (d * Deleter ) DeleteServicesWithLoadBalancer (ctx context.Context ) error {
53
- err := deleteServicesWithLoadBalancer (ctx , d .client , d .log )
54
- if err != nil {
55
- return err
56
- }
57
- return nil
50
+ return deleteServicesWithLoadBalancer (ctx , d .client , d .log )
58
51
}
59
52
60
53
func deleteServicesWithLoadBalancer (
@@ -69,7 +62,7 @@ func deleteServicesWithLoadBalancer(
69
62
return fmt .Errorf ("error listing Services: %w" , err )
70
63
}
71
64
72
- svcsFailedToBeDeleted := make ( objectMetaList , 0 )
65
+ var svcsFailedToBeDeleted objectMetaList
73
66
for i := range services .Items {
74
67
svc := & services .Items [i ]
75
68
if needsDelete (svc ) {
@@ -120,36 +113,32 @@ func waitForServiceDeletion(
120
113
ctx context.Context ,
121
114
c client.Client ,
122
115
service * corev1.Service ,
123
- ) (err error ) {
116
+ ) (error ) {
124
117
backoff := wait.Backoff {
125
118
Duration : 1 * time .Second ,
126
119
Factor : 1.5 ,
127
120
Jitter : 0 ,
128
121
Steps : 13 ,
129
122
}
130
- // the error is always nil to retry but is captured in the named return err
131
- _ = wait .ExponentialBackoff (backoff , func () (bool , error ) {
123
+ return wait .ExponentialBackoff (backoff , func () (bool , error ) {
132
124
key := client.ObjectKey {
133
125
Namespace : service .Namespace ,
134
126
Name : service .Name ,
135
127
}
136
- err = c .Get (ctx , key , service )
128
+ err : = c .Get (ctx , key , service )
137
129
if err != nil {
138
130
if errors .IsNotFound (err ) {
139
- err = nil
140
131
return true , nil
141
132
}
133
+ return false , err
142
134
}
143
135
return false , nil
144
136
})
145
-
146
- return
147
137
}
148
138
149
139
func failedToDeleteServicesError (svcsFailedToBeDeleted objectMetaList ) error {
150
- //nolint:goerr113 // This error is specific to this function
151
- return fmt .Errorf ("the following Services could not be deleted " +
152
- "and must cleaned up manually before deleting the cluster: %s" , svcsFailedToBeDeleted .asCommaSeparatedString ())
140
+ return fmt .Errorf ("%w: the following Services could not be deleted " +
141
+ "and must cleaned up manually before deleting the cluster: %s" , ErrFailedToDeleteService , svcsFailedToBeDeleted .asCommaSeparatedString ())
153
142
}
154
143
155
144
func ShouldDeleteServicesWithLoadBalancer (cluster * v1beta1.Cluster ) (bool , error ) {
@@ -168,14 +157,14 @@ func ShouldDeleteServicesWithLoadBalancer(cluster *v1beta1.Cluster) (bool, error
168
157
)
169
158
}
170
159
171
- // use the Cluster phase to determine if its safe to skip deleting
160
+ // use the Cluster phase to determine if it's safe to skip deleting
172
161
//
173
162
// when ClusterPhasePending or ClusterPhaseProvisioning Kubernetes API has not been created
174
163
// and the user would not have been able to create any Kubernetes resources that would prevent cleanup
175
164
//nolint:lll // long URL cannot be split up
176
165
// https://github.com/kubernetes-sigs/cluster-api/blob/7f879be68d15737e335b6cb39d380d1d163e06e6/controllers/cluster_controller_phases.go#L44-L50
177
166
//
178
- // when ClusterPhaseDeleting its too late to try to cleanup
167
+ // when ClusterPhaseDeleting it's too late to try to cleanup
179
168
phase := cluster .Status .GetTypedPhase ()
180
169
skipDeleteBasedOnPhase := phase == v1beta1 .ClusterPhasePending ||
181
170
phase == v1beta1 .ClusterPhaseProvisioning ||
0 commit comments