Skip to content

Commit 8429e81

Browse files
authored
Maintenance: Go 1.21, dependency updates, removal of deprecated modules and function calls (#1520)
* go mod tidy * k8s.io/utils/pointer -> k8s.io/utils/ptr * Don't rely on the deprecated ioutil * Remove unused variable * Simplify logic * Don't use deprecated strings.Title() * Simplify logic * ch.Publish -> ch.PublishWithContext * exec.Stream() -> exec.StreamWithContext() * go mod tidy * Use Go 1.21
1 parent 63ee7cc commit 8429e81

26 files changed

+198
-175
lines changed

Diff for: .github/workflows/build-test-publish.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313
branches: [ "main" ]
1414

1515
env:
16-
GO_VERSION: ~1.20
16+
GO_VERSION: ~1.21
1717
# Taken from https://github.com/kubernetes-sigs/kind/releases/tag/v0.18.0
1818
# The image here should be listed under 'Images built for this release' for the version of kind in go.mod
1919
KIND_NODE_IMAGE: "kindest/node:v1.26.3@sha256:61b92f38dff6ccc29969e7aa154d34e38b89443af1a2c14e6cfbd2df6419c66f"

Diff for: .github/workflows/codeql-analysis.yml

+5
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ jobs:
3737
- name: Checkout repository
3838
uses: actions/checkout@v4
3939

40+
- name: Install Go
41+
uses: actions/setup-go@v4
42+
with:
43+
go-version-file: go.mod
44+
4045
# Initializes the CodeQL tools for scanning.
4146
- name: Initialize CodeQL
4247
uses: github/codeql-action/init@v3

Diff for: .github/workflows/prometheus-rules.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
- observability/prometheus/rules/**/*.y*ml
88

99
env:
10-
GO_VERSION: ~1.20
10+
GO_VERSION: ~1.21
1111

1212
jobs:
1313
rules:

Diff for: Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the manager binary
2-
FROM --platform=$BUILDPLATFORM golang:1.20 as builder
2+
FROM --platform=$BUILDPLATFORM golang:1.21 as builder
33

44
WORKDIR /workspace
55

Diff for: api/v1beta1/rabbitmqcluster_types_test.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
"k8s.io/apimachinery/pkg/api/resource"
1818
k8sresource "k8s.io/apimachinery/pkg/api/resource"
1919
"k8s.io/apimachinery/pkg/runtime"
20-
"k8s.io/utils/pointer"
20+
"k8s.io/utils/ptr"
2121

2222
"golang.org/x/net/context"
2323
apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -30,7 +30,7 @@ var _ = Describe("RabbitmqCluster", func() {
3030
Context("RabbitmqClusterSpec", func() {
3131
It("can be created with a single replica", func() {
3232
created := generateRabbitmqClusterObject("rabbit1")
33-
created.Spec.Replicas = pointer.Int32(1)
33+
created.Spec.Replicas = ptr.To(int32(1))
3434
Expect(k8sClient.Create(context.Background(), created)).To(Succeed())
3535

3636
fetched := &RabbitmqCluster{}
@@ -40,7 +40,7 @@ var _ = Describe("RabbitmqCluster", func() {
4040

4141
It("can be created with three replicas", func() {
4242
created := generateRabbitmqClusterObject("rabbit2")
43-
created.Spec.Replicas = pointer.Int32(3)
43+
created.Spec.Replicas = ptr.To(int32(3))
4444
Expect(k8sClient.Create(context.Background(), created)).To(Succeed())
4545

4646
fetched := &RabbitmqCluster{}
@@ -50,7 +50,7 @@ var _ = Describe("RabbitmqCluster", func() {
5050

5151
It("can be created with five replicas", func() {
5252
created := generateRabbitmqClusterObject("rabbit3")
53-
created.Spec.Replicas = pointer.Int32(5)
53+
created.Spec.Replicas = ptr.To(int32(5))
5454
Expect(k8sClient.Create(context.Background(), created)).To(Succeed())
5555

5656
fetched := &RabbitmqCluster{}
@@ -124,7 +124,7 @@ var _ = Describe("RabbitmqCluster", func() {
124124
It("is validated", func() {
125125
By("checking the replica count", func() {
126126
invalidReplica := generateRabbitmqClusterObject("rabbit4")
127-
invalidReplica.Spec.Replicas = pointer.Int32(-1)
127+
invalidReplica.Spec.Replicas = ptr.To(int32(-1))
128128
Expect(apierrors.IsInvalid(k8sClient.Create(context.Background(), invalidReplica))).To(BeTrue())
129129
Expect(k8sClient.Create(context.Background(), invalidReplica)).To(MatchError(ContainSubstring("spec.replicas in body should be greater than or equal to 0")))
130130
})
@@ -198,10 +198,10 @@ var _ = Describe("RabbitmqCluster", func() {
198198
Namespace: "default",
199199
},
200200
Spec: RabbitmqClusterSpec{
201-
Replicas: pointer.Int32(3),
201+
Replicas: ptr.To(int32(3)),
202202
Image: "rabbitmq-image-from-cr",
203203
ImagePullSecrets: []corev1.LocalObjectReference{{Name: "my-super-secret"}},
204-
TerminationGracePeriodSeconds: pointer.Int64(0),
204+
TerminationGracePeriodSeconds: ptr.To(int64(0)),
205205
Service: RabbitmqClusterServiceSpec{
206206
Type: "NodePort",
207207
Annotations: map[string]string{
@@ -528,9 +528,9 @@ func generateRabbitmqClusterObject(clusterName string) *RabbitmqCluster {
528528
Namespace: "default",
529529
},
530530
Spec: RabbitmqClusterSpec{
531-
Replicas: pointer.Int32(1),
532-
TerminationGracePeriodSeconds: pointer.Int64(604800),
533-
DelayStartSeconds: pointer.Int32(30),
531+
Replicas: ptr.To(int32(1)),
532+
TerminationGracePeriodSeconds: ptr.To(int64(604800)),
533+
DelayStartSeconds: ptr.To(int32(30)),
534534
Service: RabbitmqClusterServiceSpec{
535535
Type: "ClusterIP",
536536
},

Diff for: controllers/pod_executor.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package controllers
33
import (
44
"bufio"
55
"bytes"
6+
"context"
67

78
corev1 "k8s.io/api/core/v1"
89
"k8s.io/client-go/kubernetes"
@@ -42,7 +43,7 @@ func (p *rabbitmqPodExecutor) Exec(clientset *kubernetes.Clientset, clusterConfi
4243
stdOut := bytes.Buffer{}
4344
stdErr := bytes.Buffer{}
4445

45-
err = exec.Stream(remotecommand.StreamOptions{
46+
err = exec.StreamWithContext(context.TODO(), remotecommand.StreamOptions{
4647
Stdout: bufio.NewWriter(&stdOut),
4748
Stderr: bufio.NewWriter(&stdErr),
4849
Stdin: nil,

Diff for: controllers/rabbitmqcluster_controller.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ import (
1616
"errors"
1717
"fmt"
1818
"reflect"
19-
"strings"
2019
"time"
2120

2221
"github.com/go-logr/logr"
22+
"golang.org/x/text/cases"
23+
"golang.org/x/text/language"
2324

2425
"github.com/rabbitmq/cluster-operator/v2/internal/resource"
2526
"github.com/rabbitmq/cluster-operator/v2/internal/status"
@@ -266,16 +267,17 @@ func (r *RabbitmqClusterReconciler) logAndRecordOperationResult(logger logr.Logg
266267
operation = "update"
267268
}
268269

270+
caser := cases.Title(language.English)
269271
if err == nil {
270272
msg := fmt.Sprintf("%sd resource %s of Type %T", operation, resource.(metav1.Object).GetName(), resource.(metav1.Object))
271273
logger.Info(msg)
272-
r.Recorder.Event(rmq, corev1.EventTypeNormal, fmt.Sprintf("Successful%s", strings.Title(operation)), msg)
274+
r.Recorder.Event(rmq, corev1.EventTypeNormal, fmt.Sprintf("Successful%s", caser.String(operation)), msg)
273275
}
274276

275277
if err != nil {
276278
msg := fmt.Sprintf("failed to %s resource %s of Type %T", operation, resource.(metav1.Object).GetName(), resource.(metav1.Object))
277279
logger.Error(err, msg)
278-
r.Recorder.Event(rmq, corev1.EventTypeWarning, fmt.Sprintf("Failed%s", strings.Title(operation)), msg)
280+
r.Recorder.Event(rmq, corev1.EventTypeWarning, fmt.Sprintf("Failed%s", caser.String(operation)), msg)
279281
}
280282
}
281283

Diff for: controllers/rabbitmqcluster_controller_test.go

+7-8
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ package controllers_test
1313
import (
1414
"context"
1515
"fmt"
16-
"k8s.io/utils/ptr"
1716
"time"
1817

19-
"k8s.io/utils/pointer"
18+
"k8s.io/utils/ptr"
2019

2120
"k8s.io/apimachinery/pkg/util/intstr"
2221

@@ -744,7 +743,7 @@ var _ = Describe("RabbitmqClusterController", func() {
744743
Namespace: defaultNamespace,
745744
},
746745
}
747-
cluster.Spec.Replicas = pointer.Int32(1)
746+
cluster.Spec.Replicas = ptr.To(int32(1))
748747
})
749748

750749
It("exposes ReconcileSuccess condition", func() {
@@ -788,7 +787,7 @@ var _ = Describe("RabbitmqClusterController", func() {
788787
Namespace: defaultNamespace,
789788
},
790789
Spec: rabbitmqv1beta1.RabbitmqClusterSpec{
791-
Replicas: pointer.Int32(10),
790+
Replicas: ptr.To(int32(10)),
792791
Override: rabbitmqv1beta1.RabbitmqClusterOverrideSpec{
793792
StatefulSet: &rabbitmqv1beta1.StatefulSet{
794793
Spec: &rabbitmqv1beta1.StatefulSetSpec{
@@ -1030,7 +1029,7 @@ var _ = Describe("RabbitmqClusterController", func() {
10301029

10311030
It("updates", func() {
10321031
Expect(updateWithRetry(cluster, func(r *rabbitmqv1beta1.RabbitmqCluster) {
1033-
cluster.Spec.Override.StatefulSet.Spec.Replicas = pointer.Int32(15)
1032+
cluster.Spec.Override.StatefulSet.Spec.Replicas = ptr.To(int32(15))
10341033
cluster.Spec.Override.StatefulSet.Spec.Template.Spec.Containers = []corev1.Container{
10351034
{
10361035
Name: "additional-container-2",
@@ -1130,21 +1129,21 @@ var _ = Describe("RabbitmqClusterController", func() {
11301129
Port: 5672,
11311130
Protocol: corev1.ProtocolTCP,
11321131
TargetPort: amqpTargetPort,
1133-
AppProtocol: pointer.String("amqp"),
1132+
AppProtocol: ptr.To("amqp"),
11341133
},
11351134
corev1.ServicePort{
11361135
Name: "management",
11371136
Port: 15672,
11381137
Protocol: corev1.ProtocolTCP,
11391138
TargetPort: managementTargetPort,
1140-
AppProtocol: pointer.String("http"),
1139+
AppProtocol: ptr.To("http"),
11411140
},
11421141
corev1.ServicePort{
11431142
Name: "prometheus",
11441143
Port: 15692,
11451144
Protocol: corev1.ProtocolTCP,
11461145
TargetPort: prometheusTargetPort,
1147-
AppProtocol: pointer.String("prometheus.io/metrics"),
1146+
AppProtocol: ptr.To("prometheus.io/metrics"),
11481147
},
11491148
corev1.ServicePort{
11501149
Protocol: corev1.ProtocolTCP,

Diff for: controllers/reconcile_cli_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"time"
55

66
"k8s.io/apimachinery/pkg/types"
7-
"k8s.io/utils/pointer"
7+
"k8s.io/utils/ptr"
88

99
appsv1 "k8s.io/api/apps/v1"
1010
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -73,7 +73,7 @@ var _ = Describe("Reconcile CLI", func() {
7373
Namespace: defaultNamespace,
7474
},
7575
Spec: rabbitmqv1beta1.RabbitmqClusterSpec{
76-
Replicas: pointer.Int32(3),
76+
Replicas: ptr.To(int32(3)),
7777
},
7878
}
7979
Expect(client.Create(ctx, cluster)).To(Succeed())
@@ -147,7 +147,7 @@ var _ = Describe("Reconcile CLI", func() {
147147
Namespace: defaultNamespace,
148148
},
149149
Spec: rabbitmqv1beta1.RabbitmqClusterSpec{
150-
Replicas: pointer.Int32(3),
150+
Replicas: ptr.To(int32(3)),
151151
SkipPostDeploySteps: true,
152152
},
153153
}
@@ -205,7 +205,7 @@ var _ = Describe("Reconcile CLI", func() {
205205
Namespace: defaultNamespace,
206206
},
207207
Spec: rabbitmqv1beta1.RabbitmqClusterSpec{
208-
Replicas: pointer.Int32(1),
208+
Replicas: ptr.To(int32(1)),
209209
SkipPostDeploySteps: false,
210210
},
211211
}

Diff for: controllers/reconcile_no_persistence_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
k8sresource "k8s.io/apimachinery/pkg/api/resource"
1414
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1515
"k8s.io/apimachinery/pkg/types"
16-
"k8s.io/utils/pointer"
16+
"k8s.io/utils/ptr"
1717
runtimeClient "sigs.k8s.io/controller-runtime/pkg/client"
1818
)
1919

@@ -32,7 +32,7 @@ var _ = Describe("Persistence", func() {
3232
Namespace: defaultNamespace,
3333
},
3434
Spec: rabbitmqv1beta1.RabbitmqClusterSpec{
35-
Replicas: pointer.Int32(5),
35+
Replicas: ptr.To(int32(5)),
3636
Persistence: rabbitmqv1beta1.RabbitmqClusterPersistenceSpec{
3737
Storage: &zeroGi,
3838
},

Diff for: controllers/reconcile_persistence_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
k8sresource "k8s.io/apimachinery/pkg/api/resource"
1414
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1515
"k8s.io/apimachinery/pkg/types"
16-
"k8s.io/utils/pointer"
16+
"k8s.io/utils/ptr"
1717
runtimeClient "sigs.k8s.io/controller-runtime/pkg/client"
1818
)
1919

@@ -31,7 +31,7 @@ var _ = Describe("Persistence", func() {
3131
Namespace: defaultNamespace,
3232
},
3333
Spec: rabbitmqv1beta1.RabbitmqClusterSpec{
34-
Replicas: pointer.Int32(5),
34+
Replicas: ptr.To(int32(5)),
3535
},
3636
}
3737
Expect(client.Create(ctx, cluster)).To(Succeed())

Diff for: controllers/reconcile_scale_down_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
apierrors "k8s.io/apimachinery/pkg/api/errors"
1212
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1313
"k8s.io/apimachinery/pkg/types"
14-
"k8s.io/utils/pointer"
14+
"k8s.io/utils/ptr"
1515
runtimeClient "sigs.k8s.io/controller-runtime/pkg/client"
1616
)
1717

@@ -39,14 +39,14 @@ var _ = Describe("Cluster scale down", func() {
3939
Namespace: defaultNamespace,
4040
},
4141
Spec: rabbitmqv1beta1.RabbitmqClusterSpec{
42-
Replicas: pointer.Int32(5),
42+
Replicas: ptr.To(int32(5)),
4343
},
4444
}
4545
Expect(client.Create(ctx, cluster)).To(Succeed())
4646
waitForClusterCreation(ctx, cluster, client)
4747

4848
Expect(updateWithRetry(cluster, func(r *rabbitmqv1beta1.RabbitmqCluster) {
49-
r.Spec.Replicas = pointer.Int32(3)
49+
r.Spec.Replicas = ptr.To(int32(3))
5050
})).To(Succeed())
5151
Consistently(func() int32 {
5252
sts, err := clientSet.AppsV1().StatefulSets(defaultNamespace).Get(ctx, cluster.ChildResourceName("server"), metav1.GetOptions{})

Diff for: controllers/reconcile_tls_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66
"github.com/rabbitmq/cluster-operator/v2/internal/status"
7-
"k8s.io/utils/pointer"
7+
"k8s.io/utils/ptr"
88
runtimeClient "sigs.k8s.io/controller-runtime/pkg/client"
99

1010
rabbitmqv1beta1 "github.com/rabbitmq/cluster-operator/v2/api/v1beta1"
@@ -57,11 +57,11 @@ var _ = Describe("Reconcile TLS", func() {
5757
LocalObjectReference: corev1.LocalObjectReference{
5858
Name: "tls-secret",
5959
},
60-
Optional: pointer.Bool(true),
60+
Optional: ptr.To(true),
6161
},
6262
},
6363
},
64-
DefaultMode: pointer.Int32(400),
64+
DefaultMode: ptr.To(int32(400)),
6565
},
6666
},
6767
}))

Diff for: docs/api/rabbitmq.com.ref.asciidoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ The settings for the persistent storage desired for each Pod in the RabbitmqClus
228228
|===
229229
| Field | Description
230230
| *`storageClassName`* __string__ | The name of the StorageClass to claim a PersistentVolume from.
231-
| *`storage`* __Quantity__ | The requested size of the persistent volume attached to each Pod in the RabbitmqCluster. The format of this field matches that defined by kubernetes/apimachinery. See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field.
231+
| *`storage`* __xref:{anchor_prefix}-k8s-io-apimachinery-pkg-api-resource-quantity[$$Quantity$$]__ | The requested size of the persistent volume attached to each Pod in the RabbitmqCluster. The format of this field matches that defined by kubernetes/apimachinery. See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field.
232232
|===
233233

234234

@@ -332,7 +332,7 @@ Status presents the observed state of RabbitmqCluster
332332
[cols="25a,75a", options="header"]
333333
|===
334334
| Field | Description
335-
| *`conditions`* __xref:{anchor_prefix}-gb.xjqchip.workers.dev-rabbitmq-cluster-operator-v2-internal-status-rabbitmqclustercondition[$$RabbitmqClusterCondition$$] array__ | Set of Conditions describing the current state of the RabbitmqCluster
335+
| *`conditions`* __RabbitmqClusterCondition array__ | Set of Conditions describing the current state of the RabbitmqCluster
336336
| *`defaultUser`* __xref:{anchor_prefix}-gb.xjqchip.workers.dev-rabbitmq-cluster-operator-v2-api-v1beta1-rabbitmqclusterdefaultuser[$$RabbitmqClusterDefaultUser$$]__ | Identifying information on internal resources
337337
| *`binding`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#localobjectreference-v1-core[$$LocalObjectReference$$]__ | Binding exposes a secret containing the binding information for this RabbitmqCluster. It implements the service binding Provisioned Service duck type. See: https://github.com/servicebinding/spec#provisioned-service
338338
| *`observedGeneration`* __integer__ | observedGeneration is the most recent successful generation observed for this RabbitmqCluster. It corresponds to the RabbitmqCluster's generation, which is updated on mutation by the API Server.

Diff for: go.mod

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
module github.com/rabbitmq/cluster-operator/v2
22

3-
go 1.20
3+
go 1.21
4+
5+
toolchain go1.21.5
46

57
require (
68
github.com/cloudflare/cfssl v1.6.4
@@ -9,14 +11,14 @@ require (
911
github.com/go-logr/logr v1.4.1
1012
github.com/go-stomp/stomp v2.1.4+incompatible
1113
github.com/michaelklishin/rabbit-hole/v2 v2.15.0
12-
github.com/mikefarah/yq/v4 v4.40.5
1314
github.com/onsi/ginkgo/v2 v2.13.2
1415
github.com/onsi/gomega v1.30.0
1516
github.com/rabbitmq/amqp091-go v1.9.0
1617
github.com/rabbitmq/rabbitmq-stream-go-client v1.3.0
1718
github.com/sclevine/yj v0.0.0-20200815061347-554173e71934
1819
golang.org/x/mod v0.14.0
1920
golang.org/x/net v0.19.0
21+
golang.org/x/text v0.14.0
2022
golang.org/x/vuln v1.0.1
2123
gopkg.in/ini.v1 v1.67.0
2224
k8s.io/api v0.28.4
@@ -117,7 +119,6 @@ require (
117119
golang.org/x/sync v0.4.0 // indirect
118120
golang.org/x/sys v0.15.0 // indirect
119121
golang.org/x/term v0.15.0 // indirect
120-
golang.org/x/text v0.14.0 // indirect
121122
golang.org/x/time v0.3.0 // indirect
122123
golang.org/x/tools v0.14.0 // indirect
123124
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect

0 commit comments

Comments
 (0)