let udateSecret get the secret
This commit is contained in:
parent
11c286fe9a
commit
23b70aa49b
|
|
@ -625,23 +625,19 @@ func (c *Cluster) syncSecrets() error {
|
||||||
retentionUsers := make([]string, 0)
|
retentionUsers := make([]string, 0)
|
||||||
currentTime := time.Now()
|
currentTime := time.Now()
|
||||||
|
|
||||||
for secretUsername, generatedSecretSpec := range generatedSecrets {
|
for secretUsername, generatedSecret := range generatedSecrets {
|
||||||
secret, err := c.KubeClient.Secrets(generatedSecretSpec.Namespace).Create(context.TODO(), generatedSecretSpec, metav1.CreateOptions{})
|
secret, err := c.KubeClient.Secrets(generatedSecret.Namespace).Create(context.TODO(), generatedSecret, metav1.CreateOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
c.Secrets[secret.UID] = secret
|
c.Secrets[secret.UID] = secret
|
||||||
c.logger.Debugf("created new secret %s, namespace: %s, uid: %s", util.NameFromMeta(secret.ObjectMeta), generatedSecretSpec.Namespace, secret.UID)
|
c.logger.Debugf("created new secret %s, namespace: %s, uid: %s", util.NameFromMeta(secret.ObjectMeta), generatedSecret.Namespace, secret.UID)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if k8sutil.ResourceAlreadyExists(err) {
|
if k8sutil.ResourceAlreadyExists(err) {
|
||||||
if secret, err = c.KubeClient.Secrets(generatedSecretSpec.Namespace).Get(context.TODO(), generatedSecretSpec.Name, metav1.GetOptions{}); err != nil {
|
if err = c.updateSecret(secretUsername, generatedSecret, &rotationUsers, &retentionUsers, currentTime); err != nil {
|
||||||
return fmt.Errorf("could not get current secret: %v", err)
|
|
||||||
}
|
|
||||||
c.Secrets[secret.UID] = secret
|
|
||||||
if err = c.updateSecret(secretUsername, generatedSecretSpec, secret, &rotationUsers, &retentionUsers, currentTime); err != nil {
|
|
||||||
c.logger.Warningf("syncing secret %s failed: %v", util.NameFromMeta(secret.ObjectMeta), err)
|
c.logger.Warningf("syncing secret %s failed: %v", util.NameFromMeta(secret.ObjectMeta), err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return fmt.Errorf("could not create secret for user %s: in namespace %s: %v", secretUsername, generatedSecretSpec.Namespace, err)
|
return fmt.Errorf("could not create secret for user %s: in namespace %s: %v", secretUsername, generatedSecret.Namespace, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -680,11 +676,11 @@ func (c *Cluster) syncSecrets() error {
|
||||||
func (c *Cluster) updateSecret(
|
func (c *Cluster) updateSecret(
|
||||||
secretUsername string,
|
secretUsername string,
|
||||||
generatedSecret *v1.Secret,
|
generatedSecret *v1.Secret,
|
||||||
secret *v1.Secret,
|
|
||||||
rotationUsers *spec.PgUserMap,
|
rotationUsers *spec.PgUserMap,
|
||||||
retentionUsers *[]string,
|
retentionUsers *[]string,
|
||||||
currentTime time.Time) error {
|
currentTime time.Time) error {
|
||||||
var (
|
var (
|
||||||
|
secret *v1.Secret
|
||||||
err error
|
err error
|
||||||
updateSecret bool
|
updateSecret bool
|
||||||
updateSecretMsg string
|
updateSecretMsg string
|
||||||
|
|
@ -692,6 +688,12 @@ func (c *Cluster) updateSecret(
|
||||||
nextRotationDateStr string
|
nextRotationDateStr string
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// get the secret first
|
||||||
|
if secret, err = c.KubeClient.Secrets(generatedSecret.Namespace).Get(context.TODO(), generatedSecret.Name, metav1.GetOptions{}); err != nil {
|
||||||
|
return fmt.Errorf("could not get current secret: %v", err)
|
||||||
|
}
|
||||||
|
c.Secrets[secret.UID] = secret
|
||||||
|
|
||||||
// fetch user map to update later
|
// fetch user map to update later
|
||||||
var userMap map[string]spec.PgUser
|
var userMap map[string]spec.PgUser
|
||||||
var userKey string
|
var userKey string
|
||||||
|
|
|
||||||
|
|
@ -307,7 +307,7 @@ func TestUpdateSecret(t *testing.T) {
|
||||||
generatedSecret := cluster.Secrets[secret.UID]
|
generatedSecret := cluster.Secrets[secret.UID]
|
||||||
|
|
||||||
// now update the secret setting next rotation date (yesterday + interval)
|
// now update the secret setting next rotation date (yesterday + interval)
|
||||||
cluster.updateSecret(username, generatedSecret, secret, &rotationUsers, &retentionUsers, yesterday)
|
cluster.updateSecret(username, generatedSecret, &rotationUsers, &retentionUsers, yesterday)
|
||||||
updatedSecret, err := cluster.KubeClient.Secrets(namespace).Get(context.TODO(), secretTemplate.Format("username", username, "cluster", clusterName), metav1.GetOptions{})
|
updatedSecret, err := cluster.KubeClient.Secrets(namespace).Get(context.TODO(), secretTemplate.Format("username", username, "cluster", clusterName), metav1.GetOptions{})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
|
@ -318,7 +318,7 @@ func TestUpdateSecret(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// update secret again but use current time to trigger rotation
|
// update secret again but use current time to trigger rotation
|
||||||
cluster.updateSecret(username, generatedSecret, updatedSecret, &rotationUsers, &retentionUsers, time.Now())
|
cluster.updateSecret(username, generatedSecret, &rotationUsers, &retentionUsers, time.Now())
|
||||||
updatedSecret, err = cluster.KubeClient.Secrets(namespace).Get(context.TODO(), secretTemplate.Format("username", username, "cluster", clusterName), metav1.GetOptions{})
|
updatedSecret, err = cluster.KubeClient.Secrets(namespace).Get(context.TODO(), secretTemplate.Format("username", username, "cluster", clusterName), metav1.GetOptions{})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue