Call resource mutate hook before validate hook (NET-4907) (#18178)

pull/18183/head
Semir Patel 1 year ago committed by GitHub
parent 29cdb75d05
commit 003370ded0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -72,14 +72,14 @@ func (s *Server) Write(ctx context.Context, req *pbresource.WriteRequest) (*pbre
) )
} }
if err = reg.Validate(req.Resource); err != nil {
return nil, status.Error(codes.InvalidArgument, err.Error())
}
if err = reg.Mutate(req.Resource); err != nil { if err = reg.Mutate(req.Resource); err != nil {
return nil, status.Errorf(codes.Internal, "failed mutate hook: %v", err.Error()) return nil, status.Errorf(codes.Internal, "failed mutate hook: %v", err.Error())
} }
if err = reg.Validate(req.Resource); err != nil {
return nil, status.Error(codes.InvalidArgument, err.Error())
}
// At the storage backend layer, all writes are CAS operations. // At the storage backend layer, all writes are CAS operations.
// //
// This makes it possible to *safely* do things like keeping the Uid stable // This makes it possible to *safely* do things like keeping the Uid stable

@ -42,11 +42,9 @@ type Registration struct {
// check for required fields). // check for required fields).
Validate func(*pbresource.Resource) error Validate func(*pbresource.Resource) error
// Mutate is called to fill out any autogenerated fields (e.g. UUIDs). // Mutate is called to fill out any autogenerated fields (e.g. UUIDs) or
// apply defaults before validation.
Mutate func(*pbresource.Resource) error Mutate func(*pbresource.Resource) error
// In the future, we'll add hooks, the controller etc. here.
// TODO: https://github.com/hashicorp/consul/pull/16622#discussion_r1134515909
} }
type ACLHooks struct { type ACLHooks struct {

Loading…
Cancel
Save