func createAppEnvConfigSecret(secretsClient client.SecretsInterface, secretName string, env map[string]interface{}) error { newSecret := new(api.Secret) newSecret.Name = secretName newSecret.Type = api.SecretTypeOpaque newSecret.Data = make(map[string][]byte) for k, v := range env { newSecret.Data[k] = []byte(fmt.Sprintf("%v", v)) } if _, err := secretsClient.Create(newSecret); err != nil { if apierrors.IsAlreadyExists(err) { if _, err = secretsClient.Update(newSecret); err != nil { return err } return nil } return err } return nil }
// Get is the ClusterID interface implementation func (c clusterIDFromPersistentStorage) Get() (string, error) { c.rwm.Lock() defer c.rwm.Unlock() secret, err := c.secretGetterCreator.Get(wfmSecretName) //If we don't have the secret we shouldn't be returning error and instead a create a new one if err != nil && !apierrors.IsNotFound(err) { return "", err } // if we don't have secret data for the cluster ID we assume a new cluster // and create a new secret if secret.Data[clusterIDSecretKey] == nil { newSecret := new(api.Secret) newSecret.Name = wfmSecretName newSecret.Data = make(map[string][]byte) newSecret.Data[clusterIDSecretKey] = []byte(uuid.NewV4().String()) fromAPI, err := c.secretGetterCreator.Create(newSecret) if err != nil { return "", err } secret = fromAPI } return string(secret.Data[clusterIDSecretKey]), nil }