Skip to content

Commit

Permalink
K8SPSMDB-1257: Fix secret change detection after upgrade
Browse files Browse the repository at this point in the history
  • Loading branch information
egegunes committed Jan 15, 2025
1 parent e4254e1 commit 0d1d639
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions pkg/controller/perconaservermongodb/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,12 @@ import (
"github.com/percona/percona-server-mongodb-operator/pkg/psmdb/mongo"
)

func getInternalSecretData(secret *corev1.Secret) map[string][]byte {
func getInternalSecretData(cr *api.PerconaServerMongoDB, secret *corev1.Secret) map[string][]byte {
m := secret.DeepCopy().Data
for k, v := range secret.Data {
m[k+"_ESCAPED"] = []byte(url.QueryEscape(string(v)))
if cr.CompareVersion("1.19.0") >= 0 {
for k, v := range secret.Data {
m[k+"_ESCAPED"] = []byte(url.QueryEscape(string(v)))
}
}
return m
}
Expand Down Expand Up @@ -78,7 +80,7 @@ func (r *ReconcilePerconaServerMongoDB) reconcileUsers(ctx context.Context, cr *
internalSysUsersSecret.Labels = nil
}
if cr.CompareVersion("1.19.0") >= 0 {
internalSysUsersSecret.Data = getInternalSecretData(&sysUsersSecretObj)
internalSysUsersSecret.Data = getInternalSecretData(cr, &sysUsersSecretObj)
}
err = r.client.Create(ctx, internalSysUsersSecret)
if err != nil {
Expand All @@ -92,7 +94,7 @@ func (r *ReconcilePerconaServerMongoDB) reconcileUsers(ctx context.Context, cr *
return nil
}

dataChanged, err := sysUsersSecretDataChanged(&sysUsersSecretObj, &internalSysSecretObj)
dataChanged, err := sysUsersSecretDataChanged(cr, &sysUsersSecretObj, &internalSysSecretObj)
if err != nil {
return errors.Wrap(err, "check sys users data changes")
}
Expand Down Expand Up @@ -142,7 +144,7 @@ func (r *ReconcilePerconaServerMongoDB) reconcileUsers(ctx context.Context, cr *

internalSysSecretObj.Data = sysUsersSecretObj.Data
if cr.CompareVersion("1.19.0") >= 0 {
internalSysSecretObj.Data = getInternalSecretData(&sysUsersSecretObj)
internalSysSecretObj.Data = getInternalSecretData(cr, &sysUsersSecretObj)
}
err = r.client.Update(ctx, &internalSysSecretObj)
if err != nil {
Expand Down Expand Up @@ -350,8 +352,8 @@ func (u *systemUser) updateMongo(ctx context.Context, c mongo.Client) error {
return errors.Wrapf(err, "update user %s -> %s", u.currName, u.name)
}

func sysUsersSecretDataChanged(usersSecret *corev1.Secret, internalSecret *corev1.Secret) (bool, error) {
newData := getInternalSecretData(usersSecret)
func sysUsersSecretDataChanged(cr *api.PerconaServerMongoDB, usersSecret *corev1.Secret, internalSecret *corev1.Secret) (bool, error) {
newData := getInternalSecretData(cr, usersSecret)
newDataJSON, err := json.Marshal(newData)
if err != nil {
return false, err
Expand Down

0 comments on commit 0d1d639

Please sign in to comment.