Files
grafana/pkg/registry/apis/secret/mutator/secure_value.go
Matheus Macabu 01c1a6ce5b SecureValues: Run mutate and validation hooks in service layer (#109379)
* SecureValues: Run mutate and validation hooks in service layer

* add some unit tests
2025-08-08 13:15:23 +02:00

38 lines
965 B
Go

package mutator
import (
"cmp"
"fmt"
secretv1beta1 "github.com/grafana/grafana/apps/secret/pkg/apis/secret/v1beta1"
"github.com/grafana/grafana/pkg/registry/apis/secret/contracts"
"github.com/grafana/grafana/pkg/util"
"k8s.io/apiserver/pkg/admission"
)
type secureValueMutator struct{}
var _ contracts.SecureValueMutator = &secureValueMutator{}
func ProvideSecureValueMutator() contracts.SecureValueMutator {
return &secureValueMutator{}
}
func (*secureValueMutator) Mutate(sv *secretv1beta1.SecureValue, operation admission.Operation) error {
if sv == nil {
return fmt.Errorf("expected SecureValue to be non-nil")
}
if operation == admission.Create && sv.Name == "" {
sv.SetName(cmp.Or(sv.GetGenerateName(), "sv-") + util.GenerateShortUID())
}
// On any mutation to a `SecureValue`, clear the status.
if operation == admission.Create || operation == admission.Update {
sv.Status.ExternalID = ""
sv.Status.Version = 0
}
return nil
}