From b86a992a33fbb050fd47cd6167f1793dd22a764a Mon Sep 17 00:00:00 2001 From: Daniel Valdivia Date: Mon, 10 May 2021 10:56:10 -0700 Subject: [PATCH] Fix bug when adding multiple built-in users (#729) There was a problem with the root credentials being added as a user, and the name of the built in users had collisions with the root credentials Signed-off-by: Daniel Valdivia --- restapi/admin_tenants.go | 48 +++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/restapi/admin_tenants.go b/restapi/admin_tenants.go index ff3d25520..9cfac621e 100644 --- a/restapi/admin_tenants.go +++ b/restapi/admin_tenants.go @@ -560,33 +560,35 @@ func getTenantCreatedResponse(session *models.Principal, params admin_api.Create } tenantName := *tenantReq.Name - secretName := fmt.Sprintf("%s-secret", tenantName) + imm := true var instanceSecret corev1.Secret var users []*corev1.LocalObjectReference - if !(len(tenantReq.Idp.Keys) > 0) { - instanceSecret = corev1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: secretName, - Labels: map[string]string{ - miniov2.TenantLabel: tenantName, - }, + + // Create the secret for the root credentials + secretName := fmt.Sprintf("%s-secret", tenantName) + instanceSecret = corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: secretName, + Labels: map[string]string{ + miniov2.TenantLabel: tenantName, }, - Immutable: &imm, - Data: map[string][]byte{ - "accesskey": []byte(accessKey), - "secretkey": []byte(secretKey), - }, - } - _, err = clientSet.CoreV1().Secrets(ns).Create(ctx, &instanceSecret, metav1.CreateOptions{}) - if err != nil { - return nil, prepareError(err) - } - } else { - users = append(users, &corev1.LocalObjectReference{Name: secretName}) + }, + Immutable: &imm, + Data: map[string][]byte{ + "accesskey": []byte(accessKey), + "secretkey": []byte(secretKey), + }, + } + _, err = clientSet.CoreV1().Secrets(ns).Create(ctx, &instanceSecret, metav1.CreateOptions{}) + if err != nil { + return nil, prepareError(err) + } + // Create the secret any built-in user passed + if len(tenantReq.Idp.Keys) > 0 { for i := 0; i < len(tenantReq.Idp.Keys); i++ { - users = append(users, &corev1.LocalObjectReference{Name: fmt.Sprintf("%s%d", secretName, i)}) - instanceSecret = corev1.Secret{ + users = append(users, &corev1.LocalObjectReference{Name: fmt.Sprintf("%s-user-%d", tenantName, i)}) + userSecret := corev1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("%s%d", secretName, i), Labels: map[string]string{ @@ -599,7 +601,7 @@ func getTenantCreatedResponse(session *models.Principal, params admin_api.Create "CONSOLE_SECRET_KEY": []byte(*tenantReq.Idp.Keys[i].SecretKey), }, } - _, err := clientSet.CoreV1().Secrets(ns).Create(ctx, &instanceSecret, metav1.CreateOptions{}) + _, err := clientSet.CoreV1().Secrets(ns).Create(ctx, &userSecret, metav1.CreateOptions{}) if err != nil { return nil, prepareError(err) }