Skip to content

Commit c563f78

Browse files
dkoshkinjimmidyson
andcommitted
chore: cleanup code
Co-authored-by: Jimmi Dyson <[email protected]> Signed-off-by: Dimitri Koshkin <[email protected]>
1 parent c8bbdcb commit c563f78

File tree

4 files changed

+28
-36
lines changed

4 files changed

+28
-36
lines changed

pkg/constants/constants.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
package constants
55

66
const (
7-
LoadBalancerGCAnnotation = "capi-runtime-extensions.d2iq-labs.com/loadbalancer-gc"
7+
LoadBalancerGCAnnotation = "labs.d2iq.io/loadbalancer-gc"
88
)

pkg/k8s/annotations/annotations.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@ package annotations
66
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
77

88
// Get will get the value of the supplied annotation.
9-
func Get(obj metav1.Object, name string) (value string, found bool) {
9+
func Get(obj metav1.Object, name string) (string, bool) {
1010
annotations := obj.GetAnnotations()
11-
if len(annotations) == 0 {
12-
return "", false
13-
}
14-
15-
value, found = annotations[name]
16-
17-
return
11+
val, found := annotations[name]
12+
return val, found
1813
}

pkg/k8s/deleter/deleter.go

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ package deleter
55

66
import (
77
"context"
8+
"errors"
89
"fmt"
910
"strconv"
11+
"strings"
1012
"time"
1113

1214
"github.com/go-logr/logr"
1315
corev1 "k8s.io/api/core/v1"
14-
"k8s.io/apimachinery/pkg/api/errors"
16+
apierrors "k8s.io/apimachinery/pkg/api/errors"
1517
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1618
"k8s.io/apimachinery/pkg/util/wait"
1719
"sigs.k8s.io/cluster-api/api/v1beta1"
@@ -22,6 +24,8 @@ import (
2224
"github.com/d2iq-labs/capi-runtime-extensions/pkg/k8s/annotations"
2325
)
2426

27+
var ErrFailedToDeleteService = errors.New("kubernetes Services deletion failed")
28+
2529
type Deleter struct {
2630
cluster *v1beta1.Cluster
2731
client client.Client
@@ -31,14 +35,12 @@ type Deleter struct {
3135
type objectMetaList []metav1.ObjectMeta
3236

3337
func (ol objectMetaList) asCommaSeparatedString() string {
34-
out := ""
35-
separator := ""
38+
names := make([]string, 0, len(ol))
3639
for n := range ol {
37-
object := ol[n]
38-
out += fmt.Sprintf("%s%s/%s", separator, object.Namespace, object.Name)
39-
separator = ", "
40+
obj := ol[n]
41+
names = append(names, fmt.Sprintf("%s/%s", obj.Namespace, obj.Name))
4042
}
41-
return out
43+
return strings.Join(names, ", ")
4244
}
4345

4446
func New(log logr.Logger, cluster *v1beta1.Cluster, remoteClient client.Client) Deleter {
@@ -50,11 +52,7 @@ func New(log logr.Logger, cluster *v1beta1.Cluster, remoteClient client.Client)
5052
}
5153

5254
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
55+
return deleteServicesWithLoadBalancer(ctx, d.client, d.log)
5856
}
5957

6058
func deleteServicesWithLoadBalancer(
@@ -69,7 +67,7 @@ func deleteServicesWithLoadBalancer(
6967
return fmt.Errorf("error listing Services: %w", err)
7068
}
7169

72-
svcsFailedToBeDeleted := make(objectMetaList, 0)
70+
var svcsFailedToBeDeleted objectMetaList
7371
for i := range services.Items {
7472
svc := &services.Items[i]
7573
if needsDelete(svc) {
@@ -120,36 +118,35 @@ func waitForServiceDeletion(
120118
ctx context.Context,
121119
c client.Client,
122120
service *corev1.Service,
123-
) (err error) {
121+
) error {
124122
backoff := wait.Backoff{
125123
Duration: 1 * time.Second,
126124
Factor: 1.5,
127125
Jitter: 0,
128126
Steps: 13,
129127
}
130-
// the error is always nil to retry but is captured in the named return err
131-
_ = wait.ExponentialBackoff(backoff, func() (bool, error) {
128+
return wait.ExponentialBackoff(backoff, func() (bool, error) {
132129
key := client.ObjectKey{
133130
Namespace: service.Namespace,
134131
Name: service.Name,
135132
}
136-
err = c.Get(ctx, key, service)
133+
err := c.Get(ctx, key, service)
137134
if err != nil {
138-
if errors.IsNotFound(err) {
139-
err = nil
135+
if apierrors.IsNotFound(err) {
140136
return true, nil
141137
}
138+
return false, err
142139
}
143140
return false, nil
144141
})
145-
146-
return
147142
}
148143

149144
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())
145+
return fmt.Errorf("%w: the following Services could not be deleted "+
146+
"and must cleaned up manually before deleting the cluster: %s",
147+
ErrFailedToDeleteService,
148+
svcsFailedToBeDeleted.asCommaSeparatedString(),
149+
)
153150
}
154151

155152
func ShouldDeleteServicesWithLoadBalancer(cluster *v1beta1.Cluster) (bool, error) {
@@ -168,14 +165,14 @@ func ShouldDeleteServicesWithLoadBalancer(cluster *v1beta1.Cluster) (bool, error
168165
)
169166
}
170167

171-
// use the Cluster phase to determine if its safe to skip deleting
168+
// use the Cluster phase to determine if it's safe to skip deleting
172169
//
173170
// when ClusterPhasePending or ClusterPhaseProvisioning Kubernetes API has not been created
174171
// and the user would not have been able to create any Kubernetes resources that would prevent cleanup
175172
//nolint:lll // long URL cannot be split up
176173
// https://github.com/kubernetes-sigs/cluster-api/blob/7f879be68d15737e335b6cb39d380d1d163e06e6/controllers/cluster_controller_phases.go#L44-L50
177174
//
178-
// when ClusterPhaseDeleting its too late to try to cleanup
175+
// when ClusterPhaseDeleting it's too late to try to cleanup
179176
phase := cluster.Status.GetTypedPhase()
180177
skipDeleteBasedOnPhase := phase == v1beta1.ClusterPhasePending ||
181178
phase == v1beta1.ClusterPhaseProvisioning ||

pkg/k8s/deleter/deleter_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,6 @@ func Test_failedToDeleteServicesError(t *testing.T) {
302302
metav1.ObjectMeta{Namespace: "ns-5", Name: "svc-5"},
303303
}
304304
//nolint:lll // want to show the full error in one line
305-
expectedErrString := "the following Services could not be deleted and must cleaned up manually before deleting the cluster: ns-1/svc-1, ns-2/svc-2, ns-3/svc-3, ns-4/svc-4, ns-5/svc-5"
305+
expectedErrString := "kubernetes Services deletion failed: the following Services could not be deleted and must cleaned up manually before deleting the cluster: ns-1/svc-1, ns-2/svc-2, ns-3/svc-3, ns-4/svc-4, ns-5/svc-5"
306306
assert.EqualError(t, failedToDeleteServicesError(svcs), expectedErrString)
307307
}

0 commit comments

Comments
 (0)