Skip to content

Commit e80282a

Browse files
authored
Modernize the codebase (#1868)
* golangci-lint run --fix * Explicitly ignore errors Make golangci-lint happy * modernize -fix -test ./... Except for `omitempty` removal/replacement with `omitzero` * Resolve some golangci-lint warnings
1 parent 3ac8718 commit e80282a

18 files changed

+106
-110
lines changed

api/v1beta1/rabbitmqcluster_types.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
corev1 "k8s.io/api/core/v1"
1919
k8sresource "k8s.io/apimachinery/pkg/api/resource"
2020
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21+
"slices"
2122
)
2223

2324
const DisableDefaultTopologySpreadAnnotation = "rabbitmq.com/disable-default-topology-spread-constraints"
@@ -450,12 +451,7 @@ func (cluster *RabbitmqCluster) DisableNonTLSListeners() bool {
450451
}
451452

452453
func (cluster *RabbitmqCluster) AdditionalPluginEnabled(plugin Plugin) bool {
453-
for _, p := range cluster.Spec.Rabbitmq.AdditionalPlugins {
454-
if p == plugin {
455-
return true
456-
}
457-
}
458-
return false
454+
return slices.Contains(cluster.Spec.Rabbitmq.AdditionalPlugins, plugin)
459455
}
460456

461457
// StreamNeeded returns true when stream or plugins that auto enable stream are turned on

controllers/rabbitmqcluster_controller.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func (r *RabbitmqClusterReconciler) Reconcile(ctx context.Context, req ctrl.Requ
103103
}
104104

105105
// Check if the resource has been marked for deletion
106-
if !rabbitmqCluster.ObjectMeta.DeletionTimestamp.IsZero() {
106+
if !rabbitmqCluster.DeletionTimestamp.IsZero() {
107107
logger.Info("Deleting")
108108
return ctrl.Result{}, r.prepareForDeletion(ctx, rabbitmqCluster)
109109
}
@@ -148,7 +148,7 @@ func (r *RabbitmqClusterReconciler) Reconcile(ctx context.Context, req ctrl.Requ
148148
if err == nil {
149149
if v, ok := defaultUserSecret.Labels["app.kubernetes.io/part-of"]; !ok || v != "rabbitmq" {
150150
defaultUserSecret.Labels = metadata.GetLabels(rabbitmqCluster.Name, rabbitmqCluster.Labels)
151-
_ = r.Client.Update(ctx, defaultUserSecret)
151+
_ = r.Update(ctx, defaultUserSecret)
152152
}
153153
}
154154

@@ -273,11 +273,12 @@ func (r *RabbitmqClusterReconciler) logAndRecordOperationResult(logger logr.Logg
273273
}
274274

275275
var operation string
276-
if operationResult == controllerutil.OperationResultCreated {
276+
switch operationResult {
277+
case controllerutil.OperationResultCreated:
277278
operation = "create"
278-
} else if operationResult == controllerutil.OperationResultUpdated {
279+
case controllerutil.OperationResultUpdated:
279280
operation = "update"
280-
} else {
281+
default:
281282
operation = string(operationResult)
282283
}
283284

@@ -329,15 +330,15 @@ func (r *RabbitmqClusterReconciler) getChildResources(ctx context.Context, rmq *
329330
sts := &appsv1.StatefulSet{}
330331
endPoints := &corev1.Endpoints{}
331332

332-
if err := r.Client.Get(ctx,
333+
if err := r.Get(ctx,
333334
types.NamespacedName{Name: rmq.ChildResourceName("server"), Namespace: rmq.Namespace},
334335
sts); err != nil && !k8serrors.IsNotFound(err) {
335336
return nil, err
336337
} else if k8serrors.IsNotFound(err) {
337338
sts = nil
338339
}
339340

340-
if err := r.Client.Get(ctx,
341+
if err := r.Get(ctx,
341342
types.NamespacedName{Name: rmq.ChildResourceName(resource.ServiceSuffix), Namespace: rmq.Namespace},
342343
endPoints); err != nil && !k8serrors.IsNotFound(err) {
343344
return nil, err
@@ -397,15 +398,15 @@ func validateAndGetOwner(owner *metav1.OwnerReference) []string {
397398
}
398399

399400
func (r *RabbitmqClusterReconciler) markForQueueRebalance(ctx context.Context, rmq *rabbitmqv1beta1.RabbitmqCluster) error {
400-
if rmq.ObjectMeta.Annotations == nil {
401-
rmq.ObjectMeta.Annotations = make(map[string]string)
401+
if rmq.Annotations == nil {
402+
rmq.Annotations = make(map[string]string)
402403
}
403404

404-
if len(rmq.ObjectMeta.Annotations[queueRebalanceAnnotation]) > 0 {
405+
if len(rmq.Annotations[queueRebalanceAnnotation]) > 0 {
405406
return nil
406407
}
407408

408-
rmq.ObjectMeta.Annotations[queueRebalanceAnnotation] = time.Now().Format(time.RFC3339)
409+
rmq.Annotations[queueRebalanceAnnotation] = time.Now().Format(time.RFC3339)
409410

410411
return r.Update(ctx, rmq)
411412
}

controllers/reconcile_cli.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,21 @@ func (r *RabbitmqClusterReconciler) runRabbitmqCLICommandsIfAnnotated(ctx contex
4242
return 2 * time.Second, nil
4343
}
4444

45-
if pluginsConfig.ObjectMeta.Annotations != nil && pluginsConfig.ObjectMeta.Annotations[pluginsUpdateAnnotation] != "" {
45+
if pluginsConfig.Annotations != nil && pluginsConfig.Annotations[pluginsUpdateAnnotation] != "" {
4646
if err = r.runSetPluginsCommand(ctx, rmq, pluginsConfig); err != nil {
4747
return 0, err
4848
}
4949
}
5050

5151
// If RabbitMQ cluster is newly created, enable all feature flags since some are disabled by default
52-
if sts.ObjectMeta.Annotations != nil && sts.ObjectMeta.Annotations[stsCreateAnnotation] != "" {
52+
if sts.Annotations != nil && sts.Annotations[stsCreateAnnotation] != "" {
5353
if err := r.runEnableFeatureFlagsCommand(ctx, rmq, sts); err != nil {
5454
return 0, err
5555
}
5656
}
5757

5858
// If the cluster has been marked as needing it, run rabbitmq-queues rebalance all
59-
if rmq.ObjectMeta.Annotations != nil && rmq.ObjectMeta.Annotations[queueRebalanceAnnotation] != "" {
59+
if rmq.Annotations != nil && rmq.Annotations[queueRebalanceAnnotation] != "" {
6060
if err := r.runQueueRebalanceCommand(ctx, rmq); err != nil {
6161
return 0, err
6262
}

controllers/reconcile_cli_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ var _ = Describe("Reconcile CLI", func() {
4646
It("enables all feature flags", func() {
4747
By("annotating that StatefulSet got created", func() {
4848
sts = statefulSet(ctx, cluster)
49-
value := sts.ObjectMeta.Annotations["rabbitmq.com/createdAt"]
49+
value := sts.Annotations["rabbitmq.com/createdAt"]
5050
_, err := time.Parse(time.RFC3339, value)
5151
Expect(err).NotTo(HaveOccurred(), "annotation rabbitmq.com/createdAt was not a valid RFC3339 timestamp")
5252
})

controllers/reconcile_finalizer.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ const deletionFinalizer = "deletion.finalizers.rabbitmqclusters.rabbitmq.com"
2020

2121
// addFinalizerIfNeeded adds a deletion finalizer if the RabbitmqCluster does not have one yet and is not marked for deletion
2222
func (r *RabbitmqClusterReconciler) addFinalizerIfNeeded(ctx context.Context, rabbitmqCluster *rabbitmqv1beta1.RabbitmqCluster) error {
23-
if rabbitmqCluster.ObjectMeta.DeletionTimestamp.IsZero() && !controllerutil.ContainsFinalizer(rabbitmqCluster, deletionFinalizer) {
23+
if rabbitmqCluster.DeletionTimestamp.IsZero() && !controllerutil.ContainsFinalizer(rabbitmqCluster, deletionFinalizer) {
2424
return clientretry.RetryOnConflict(clientretry.DefaultRetry, func() error {
2525
controllerutil.AddFinalizer(rabbitmqCluster, deletionFinalizer)
26-
return r.Client.Update(ctx, rabbitmqCluster)
26+
return r.Update(ctx, rabbitmqCluster)
2727
})
2828
}
2929
return nil
@@ -49,7 +49,7 @@ func (r *RabbitmqClusterReconciler) removeFinalizer(ctx context.Context, rabbitm
4949

5050
func (r *RabbitmqClusterReconciler) prepareForDeletion(ctx context.Context, rabbitmqCluster *rabbitmqv1beta1.RabbitmqCluster) error {
5151
if controllerutil.ContainsFinalizer(rabbitmqCluster, deletionFinalizer) {
52-
clientretry.RetryOnConflict(clientretry.DefaultRetry, func() error {
52+
_ = clientretry.RetryOnConflict(clientretry.DefaultRetry, func() error {
5353
return r.addRabbitmqDeletionLabel(ctx, rabbitmqCluster)
5454
})
5555

@@ -78,14 +78,14 @@ func (r *RabbitmqClusterReconciler) addRabbitmqDeletionLabel(ctx context.Context
7878
Namespace: rabbitmqCluster.Namespace,
7979
}
8080

81-
if err := r.Client.List(ctx, pods, &listOptions); err != nil {
81+
if err := r.List(ctx, pods, &listOptions); err != nil {
8282
return err
8383
}
8484

85-
for i := 0; i < len(pods.Items); i++ {
85+
for i := range pods.Items {
8686
pod := &pods.Items[i]
8787
pod.Labels[resource.DeletionMarker] = "true"
88-
if err := r.Client.Update(ctx, pod); client.IgnoreNotFound(err) != nil {
88+
if err := r.Update(ctx, pod); client.IgnoreNotFound(err) != nil {
8989
return fmt.Errorf("cannot Update Pod %s in Namespace %s: %w", pod.Name, pod.Namespace, err)
9090
}
9191
}

controllers/reconcile_operator_defaults.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func (r *RabbitmqClusterReconciler) reconcileOperatorDefaults(ctx context.Contex
2525
if rabbitmqCluster.Spec.ImagePullSecrets == nil {
2626
// split the comma separated list of default image pull secrets from
2727
// the 'DEFAULT_IMAGE_PULL_SECRETS' env var, but ignore empty strings.
28-
for _, reference := range strings.Split(r.DefaultImagePullSecrets, ",") {
28+
for reference := range strings.SplitSeq(r.DefaultImagePullSecrets, ",") {
2929
if len(reference) > 0 {
3030
rabbitmqCluster.Spec.ImagePullSecrets = append(rabbitmqCluster.Spec.ImagePullSecrets, corev1.LocalObjectReference{Name: reference})
3131
}

controllers/reconcile_rabbitmq_configurations.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func (r *RabbitmqClusterReconciler) restartStatefulSetIfNeeded(ctx context.Conte
9797
return 10 * time.Second, client.IgnoreNotFound(err)
9898
}
9999

100-
stsRestartedAt, ok := sts.Spec.Template.ObjectMeta.Annotations[stsRestartAnnotation]
100+
stsRestartedAt, ok := sts.Spec.Template.Annotations[stsRestartAnnotation]
101101
if ok && stsRestartedAt > serverConfigUpdatedAt {
102102
// sts was updated after the last server-conf configmap update; no need to restart sts
103103
return 0, nil
@@ -108,10 +108,10 @@ func (r *RabbitmqClusterReconciler) restartStatefulSetIfNeeded(ctx context.Conte
108108
if err := r.Get(ctx, types.NamespacedName{Name: sts.Name, Namespace: sts.Namespace}, sts); err != nil {
109109
return err
110110
}
111-
if sts.Spec.Template.ObjectMeta.Annotations == nil {
112-
sts.Spec.Template.ObjectMeta.Annotations = make(map[string]string)
111+
if sts.Spec.Template.Annotations == nil {
112+
sts.Spec.Template.Annotations = make(map[string]string)
113113
}
114-
sts.Spec.Template.ObjectMeta.Annotations[stsRestartAnnotation] = time.Now().Format(time.RFC3339)
114+
sts.Spec.Template.Annotations[stsRestartAnnotation] = time.Now().Format(time.RFC3339)
115115
return r.Update(ctx, sts)
116116
}); err != nil {
117117
msg := fmt.Sprintf("failed to restart StatefulSet %s; rabbitmq.conf configuration may be outdated", rmq.ChildResourceName("server"))

controllers/utils.go

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ package controllers
22

33
import (
44
"context"
5-
"fmt"
65

76
rabbitmqv1beta1 "github.com/rabbitmq/cluster-operator/v2/api/v1beta1"
87
appsv1 "k8s.io/api/apps/v1"
98
corev1 "k8s.io/api/core/v1"
109
"k8s.io/apimachinery/pkg/api/errors"
1110
"k8s.io/apimachinery/pkg/api/meta"
12-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1311
"k8s.io/apimachinery/pkg/types"
1412
"k8s.io/client-go/util/retry"
1513
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -67,23 +65,6 @@ func (r *RabbitmqClusterReconciler) statefulSet(ctx context.Context, rmq *rabbit
6765
return sts, nil
6866
}
6967

70-
// statefulSetUID only returns the UID successfully when the controller reference uid matches the rmq uid
71-
func (r *RabbitmqClusterReconciler) statefulSetUID(ctx context.Context, rmq *rabbitmqv1beta1.RabbitmqCluster) (types.UID, error) {
72-
var err error
73-
var sts *appsv1.StatefulSet
74-
var ref *metav1.OwnerReference
75-
if sts, err = r.statefulSet(ctx, rmq); err != nil {
76-
return "", fmt.Errorf("failed to get statefulSet: %w", err)
77-
}
78-
if ref = metav1.GetControllerOf(sts); ref == nil {
79-
return "", fmt.Errorf("failed to get controller reference for statefulSet %s", sts.GetName())
80-
}
81-
if string(rmq.GetUID()) != string(ref.UID) {
82-
return "", fmt.Errorf("statefulSet %s not owned by current RabbitmqCluster %s", sts.GetName(), rmq.GetName())
83-
}
84-
return sts.UID, nil
85-
}
86-
8768
func (r *RabbitmqClusterReconciler) configMap(ctx context.Context, rmq *rabbitmqv1beta1.RabbitmqCluster, name string) (*corev1.ConfigMap, error) {
8869
configMap := &corev1.ConfigMap{}
8970
if err := r.Get(ctx, types.NamespacedName{Namespace: rmq.Namespace, Name: name}, configMap); err != nil {

internal/resource/configmap_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ var _ = Describe("GenerateServerConfigMap", func() {
134134
})
135135

136136
It("sets owner reference", func() {
137-
instance.ObjectMeta.Name = "rabbit1"
137+
instance.Name = "rabbit1"
138138

139139
Expect(configMapBuilder.Update(configMap)).To(Succeed())
140140
Expect(configMap.OwnerReferences[0].Name).To(Equal(instance.Name))
@@ -260,7 +260,7 @@ CONSOLE_LOG=new`
260260

261261
Context("TLS", func() {
262262
It("adds TLS config when TLS is enabled", func() {
263-
instance.ObjectMeta.Name = "rabbit-tls"
263+
instance.Name = "rabbit-tls"
264264
instance.Spec.TLS.SecretName = "tls-secret"
265265

266266
expectedConfiguration := iniString(`ssl_options.certfile = /etc/rabbitmq-tls/tls.crt
@@ -283,7 +283,7 @@ CONSOLE_LOG=new`
283283
It("adds TLS config for the additional plugins", func() {
284284
additionalPlugins := []rabbitmqv1beta1.Plugin{"rabbitmq_mqtt", "rabbitmq_stomp", "rabbitmq_amqp_1_0", "rabbitmq_stream"}
285285

286-
instance.ObjectMeta.Name = "rabbit-tls"
286+
instance.Name = "rabbit-tls"
287287
instance.Spec.TLS.SecretName = "tls-secret"
288288
instance.Spec.Rabbitmq.AdditionalPlugins = additionalPlugins
289289

@@ -308,7 +308,7 @@ CONSOLE_LOG=new`
308308
})
309309

310310
It("preserves user configuration over Operator generated settings", func() {
311-
instance.ObjectMeta.Name = "rabbit-tls-with-user-conf"
311+
instance.Name = "rabbit-tls-with-user-conf"
312312
instance.Spec.TLS.SecretName = "tls-secret"
313313
instance.Spec.Rabbitmq.AdditionalConfig = "listeners.ssl.default = 12345"
314314

@@ -331,7 +331,7 @@ CONSOLE_LOG=new`
331331

332332
Context("Mutual TLS", func() {
333333
It("adds TLS config when TLS is enabled", func() {
334-
instance.ObjectMeta.Name = "rabbit-tls"
334+
instance.Name = "rabbit-tls"
335335
instance.Spec.TLS.SecretName = "tls-secret"
336336
instance.Spec.TLS.CaSecretName = "tls-mutual-secret"
337337

@@ -359,7 +359,7 @@ CONSOLE_LOG=new`
359359
It("adds TLS config for the additional plugins", func() {
360360
additionalPlugins := []rabbitmqv1beta1.Plugin{"rabbitmq_web_mqtt", "rabbitmq_web_stomp"}
361361

362-
instance.ObjectMeta.Name = "rabbit-tls"
362+
instance.Name = "rabbit-tls"
363363
instance.Spec.TLS.SecretName = "tls-secret"
364364
instance.Spec.TLS.CaSecretName = "tls-mutual-secret"
365365
instance.Spec.Rabbitmq.AdditionalPlugins = additionalPlugins
@@ -541,7 +541,7 @@ CONSOLE_LOG=new`
541541
Context("Memory Limits", func() {
542542
It("sets a RabbitMQ memory limit with headroom when memory limits are specified", func() {
543543
const GiB int64 = 1073741824
544-
instance.ObjectMeta.Name = "rabbit-mem-limit"
544+
instance.Name = "rabbit-mem-limit"
545545
instance.Spec.Resources.Limits = map[corev1.ResourceName]k8sresource.Quantity{corev1.ResourceMemory: k8sresource.MustParse("10Gi")}
546546

547547
expectedConfiguration := iniString(fmt.Sprintf("total_memory_available_override_value = %d", 8*GiB))

internal/resource/default_user_secret.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2424

2525
"github.com/rabbitmq/cluster-operator/v2/api/v1beta1"
26+
"slices"
2627
)
2728

2829
const (
@@ -149,9 +150,9 @@ func (builder *DefaultUserSecretBuilder) updatePorts(secret *corev1.Secret) {
149150

150151
func (builder *DefaultUserSecretBuilder) updateConnectionString(secret *corev1.Secret) {
151152
if builder.Instance.Spec.TLS.SecretName != "" {
152-
secret.Data["connection_string"] = []byte(fmt.Sprintf("amqps://%s:%s@%s:%s/", secret.Data["username"], secret.Data["password"], secret.Data["host"], secret.Data["port"]))
153+
secret.Data["connection_string"] = fmt.Appendf(nil, "amqps://%s:%s@%s:%s/", secret.Data["username"], secret.Data["password"], secret.Data["host"], secret.Data["port"])
153154
} else {
154-
secret.Data["connection_string"] = []byte(fmt.Sprintf("amqp://%s:%s@%s:%s/", secret.Data["username"], secret.Data["password"], secret.Data["host"], secret.Data["port"]))
155+
secret.Data["connection_string"] = fmt.Appendf(nil, "amqp://%s:%s@%s:%s/", secret.Data["username"], secret.Data["password"], secret.Data["host"], secret.Data["port"])
155156
}
156157
}
157158

@@ -168,12 +169,7 @@ func generateUsername(l int) (string, error) {
168169
}
169170

170171
func (builder *DefaultUserSecretBuilder) pluginEnabled(plugin v1beta1.Plugin) bool {
171-
for _, value := range builder.Instance.Spec.Rabbitmq.AdditionalPlugins {
172-
if value == plugin {
173-
return true
174-
}
175-
}
176-
return false
172+
return slices.Contains(builder.Instance.Spec.Rabbitmq.AdditionalPlugins, plugin)
177173
}
178174

179175
func generateDefaultUserConf(username, password string) ([]byte, error) {

0 commit comments

Comments
 (0)