Skip to content

Commit df0fab0

Browse files
committed
Fix double-encoding of config file and update README with min RMQ
version
1 parent 0bce98a commit df0fab0

File tree

4 files changed

+21
-33
lines changed

4 files changed

+21
-33
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Manage [RabbitMQ](https://www.rabbitmq.com/) clusters deployed to [Kubernetes](h
66

77
## Supported Versions
88

9-
The operator deploys RabbitMQ `3.8.8`, and requires a Kubernetes cluster of `1.16` or above.
9+
The operator deploys RabbitMQ `3.8.8` by default, and supports versions from `3.8.4` upwards. The operator requires a Kubernetes cluster of `1.16` or above.
1010

1111
## Versioning
1212

internal/resource/admin_secret.go

+8-9
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ package resource
1111

1212
import (
1313
"bytes"
14-
"encoding/base64"
1514

1615
rabbitmqv1beta1 "github.com/rabbitmq/cluster-operator/api/v1beta1"
1716
"github.com/rabbitmq/cluster-operator/internal/metadata"
@@ -35,7 +34,7 @@ func (builder *RabbitmqResourceBuilder) AdminSecret() *AdminSecretBuilder {
3534
}
3635
}
3736

38-
func generateDefaultUserConf(username, password []byte) ([]byte, error) {
37+
func generateDefaultUserConf(username, password string) ([]byte, error) {
3938

4039
ini.PrettySection = false // Remove trailing new line because default_user.conf has only a default section.
4140
cfg, err := ini.Load([]byte{})
@@ -44,11 +43,11 @@ func generateDefaultUserConf(username, password []byte) ([]byte, error) {
4443
}
4544
defaultSection := cfg.Section("")
4645

47-
if _, err := defaultSection.NewKey("default_user", string(username)); err != nil {
46+
if _, err := defaultSection.NewKey("default_user", username); err != nil {
4847
return nil, err
4948
}
5049

51-
if _, err := defaultSection.NewKey("default_pass", string(password)); err != nil {
50+
if _, err := defaultSection.NewKey("default_pass", password); err != nil {
5251
return nil, err
5352
}
5453

@@ -72,12 +71,12 @@ func (builder *AdminSecretBuilder) Update(object runtime.Object) error {
7271
}
7372

7473
func (builder *AdminSecretBuilder) Build() (runtime.Object, error) {
75-
username, err := randomBytes(24)
74+
username, err := randomEncodedString(24)
7675
if err != nil {
7776
return nil, err
7877
}
7978

80-
password, err := randomBytes(24)
79+
password, err := randomEncodedString(24)
8180
if err != nil {
8281
return nil, err
8382
}
@@ -94,9 +93,9 @@ func (builder *AdminSecretBuilder) Build() (runtime.Object, error) {
9493
},
9594
Type: corev1.SecretTypeOpaque,
9695
Data: map[string][]byte{
97-
"username": []byte(base64.URLEncoding.EncodeToString(username)),
98-
"password": []byte(base64.URLEncoding.EncodeToString(password)),
99-
"default_user.conf": []byte(base64.URLEncoding.EncodeToString(defaultUserConf)),
96+
"username": []byte(username),
97+
"password": []byte(password),
98+
"default_user.conf": defaultUserConf,
10099
},
101100
}, nil
102101
}

internal/resource/admin_secret_test.go

+10-13
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ var _ = Describe("AdminSecret", func() {
4646

4747
Context("Build with defaults", func() {
4848
It("creates the necessary admin secret", func() {
49-
var decodedUsername []byte
50-
var decodedPassword []byte
51-
var err error
49+
var username []byte
50+
var password []byte
51+
var ok bool
5252

5353
obj, err := adminSecretBuilder.Build()
5454
Expect(err).NotTo(HaveOccurred())
@@ -64,18 +64,18 @@ var _ = Describe("AdminSecret", func() {
6464
})
6565

6666
By("creating a rabbitmq username that is base64 encoded and 24 characters in length", func() {
67-
username, ok := secret.Data["username"]
67+
username, ok = secret.Data["username"]
6868
Expect(ok).NotTo(BeFalse())
69-
decodedUsername, err = b64.URLEncoding.DecodeString(string(username))
69+
decodedUsername, err := b64.URLEncoding.DecodeString(string(username))
7070
Expect(err).NotTo(HaveOccurred())
7171
Expect(len(decodedUsername)).To(Equal(24))
7272

7373
})
7474

7575
By("creating a rabbitmq password that is base64 encoded and 24 characters in length", func() {
76-
password, ok := secret.Data["password"]
76+
password, ok = secret.Data["password"]
7777
Expect(ok).NotTo(BeFalse())
78-
decodedPassword, err = b64.URLEncoding.DecodeString(string(password))
78+
decodedPassword, err := b64.URLEncoding.DecodeString(string(password))
7979
Expect(err).NotTo(HaveOccurred())
8080
Expect(len(decodedPassword)).To(Equal(24))
8181
})
@@ -84,17 +84,14 @@ var _ = Describe("AdminSecret", func() {
8484
defaultUserConf, ok := secret.Data["default_user.conf"]
8585
Expect(ok).NotTo(BeFalse())
8686

87-
decodedDefaultUserConf, err := b64.URLEncoding.DecodeString(string(defaultUserConf))
88-
Expect(err).NotTo(HaveOccurred())
89-
90-
cfg, err := ini.Load(decodedDefaultUserConf)
87+
cfg, err := ini.Load(defaultUserConf)
9188
Expect(err).NotTo(HaveOccurred())
9289

9390
Expect(cfg.Section("").HasKey("default_user")).To(BeTrue())
9491
Expect(cfg.Section("").HasKey("default_pass")).To(BeTrue())
9592

96-
Expect(cfg.Section("").Key("default_user").Value()).To(Equal(string(decodedUsername)))
97-
Expect(cfg.Section("").Key("default_pass").Value()).To(Equal(string(decodedPassword)))
93+
Expect(cfg.Section("").Key("default_user").Value()).To(Equal(string(username)))
94+
Expect(cfg.Section("").Key("default_pass").Value()).To(Equal(string(password)))
9895
})
9996
})
10097
})

internal/resource/erlang_cookie.go

+2-10
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,10 @@ func (builder *ErlangCookieBuilder) Update(object runtime.Object) error {
6363
return nil
6464
}
6565

66-
func randomBytes(dataLen int) ([]byte, error) {
66+
func randomEncodedString(dataLen int) (string, error) {
6767
randomBytes := make([]byte, dataLen)
6868
if _, err := rand.Read(randomBytes); err != nil {
69-
return nil, err
70-
}
71-
return randomBytes, nil
72-
}
73-
74-
func randomEncodedString(dataLen int) (string, error) {
75-
generatedBytes, err := randomBytes(dataLen)
76-
if err != nil {
7769
return "", err
7870
}
79-
return base64.URLEncoding.EncodeToString(generatedBytes), nil
71+
return base64.URLEncoding.EncodeToString(randomBytes), nil
8072
}

0 commit comments

Comments
 (0)