|
|
@@ -237,33 +237,40 @@ func (sm *ProviderGCP) SetSecret(ctx context.Context, payload []byte, remoteRef
|
|
|
},
|
|
|
}
|
|
|
|
|
|
- secret, err := sm.SecretManagerClient.CreateSecret(ctx, createSecretReq)
|
|
|
+ gcpSecret, err := sm.GetSecret(ctx, esv1beta1.ExternalSecretDataRemoteRef{
|
|
|
+ Key: remoteRef.GetRemoteKey(),
|
|
|
+ })
|
|
|
+
|
|
|
+ gErr, ok := err.(*googleapi.Error)
|
|
|
+
|
|
|
+ if err != nil && ok && gErr.Code == 404 {
|
|
|
+ _, err := sm.SecretManagerClient.CreateSecret(ctx, createSecretReq)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if err != nil && err.(*googleapi.Error).Code != 409 { //nolint
|
|
|
+ if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
+ if string(payload) == string(gcpSecret) {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
addSecretVersionReq := &secretmanagerpb.AddSecretVersionRequest{
|
|
|
- Parent: secret.Name,
|
|
|
+ Parent: fmt.Sprintf("projects/%s/secrets/%s", sm.projectID, remoteRef.GetRemoteKey()),
|
|
|
Payload: &secretmanagerpb.SecretPayload{
|
|
|
Data: payload,
|
|
|
},
|
|
|
}
|
|
|
|
|
|
- version, err := sm.SecretManagerClient.AddSecretVersion(ctx, addSecretVersionReq)
|
|
|
+ _, err = sm.SecretManagerClient.AddSecretVersion(ctx, addSecretVersionReq)
|
|
|
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- accessRequest := secretmanagerpb.AccessSecretVersionRequest{
|
|
|
- Name: version.Name,
|
|
|
- }
|
|
|
-
|
|
|
- if _, err := sm.SecretManagerClient.AccessSecretVersion(ctx, &accessRequest); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
@@ -322,10 +329,6 @@ func (sm *ProviderGCP) findByName(ctx context.Context, ref esv1beta1.ExternalSec
|
|
|
return utils.ConvertKeys(ref.ConversionStrategy, secretMap)
|
|
|
}
|
|
|
|
|
|
-// func (sm *ProviderGCP) OverwriteSecret(ctx context.Context, ref esv1beta1.ExternalSecretFind) (map[string][]byte, error) {
|
|
|
-
|
|
|
-// }
|
|
|
-
|
|
|
func (sm *ProviderGCP) getData(ctx context.Context, key string) ([]byte, error) {
|
|
|
dataRef := esv1beta1.ExternalSecretDataRemoteRef{
|
|
|
Key: key,
|