Browse Source

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

pull/18183/head
Semir Patel 1 year ago committed by GitHub
parent
commit
003370ded0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      agent/grpc-external/services/resource/write.go
  2. 6
      internal/resource/registry.go

8
agent/grpc-external/services/resource/write.go vendored

@ -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 {
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.
//
// This makes it possible to *safely* do things like keeping the Uid stable

6
internal/resource/registry.go

@ -42,11 +42,9 @@ type Registration struct {
// check for required fields).
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
// In the future, we'll add hooks, the controller etc. here.
// TODO: https://github.com/hashicorp/consul/pull/16622#discussion_r1134515909
}
type ACLHooks struct {

Loading…
Cancel
Save