From bd801af98405155effe9d17156fa063f6e238f5a Mon Sep 17 00:00:00 2001 From: sophia Date: Fri, 9 Sep 2022 14:50:07 -0400 Subject: [PATCH] Add details to errors --- internal/core/vagrantfile.go | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/internal/core/vagrantfile.go b/internal/core/vagrantfile.go index 54d25394a..7758b4c60 100644 --- a/internal/core/vagrantfile.go +++ b/internal/core/vagrantfile.go @@ -5,10 +5,9 @@ import ( "fmt" "sync" - "github.com/gogo/googleapis/google/rpc" - "github.com/golang/protobuf/ptypes" "github.com/hashicorp/go-argmapper" "github.com/hashicorp/go-hclog" + "google.golang.org/genproto/googleapis/rpc/errdetails" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -530,28 +529,16 @@ func (v *Vagrantfile) TargetConfig( "provider_not_usable", map[string]string{"Provider": provider, "Machine": name}, ) - // st := status.New(codes.Unknown, msg) - - // protoMsg := &wrapperspb.StringValue{ - // Value: msg, - // } - localizedProtoMsg := &rpc.LocalizedMessage{ + localizedProtoMsg := &errdetails.LocalizedMessage{ Message: msg, - Locale: "en-US", + Locale: "en", } - protoMsgAny, _ := ptypes.MarshalAny(localizedProtoMsg) - // st, _ = st.WithDetails(protoMsg) - // for _, d := range errStatus.Details() { - // st, _ = st.WithDetails(d.(proto.Message)) - // } - errStatusProto := errStatus.Proto() - errStatusProto.Message = msg - errStatusProto.Details = append(errStatusProto.Details, protoMsgAny) - // errStatusProto.Details = []*anypb.Any{protoMsgAny} - - // TODO: include message provided in the error - errStatusP := status.FromProto(errStatusProto) - return nil, errStatusP.Err() + returnErr := status.New(errStatus.Code(), msg) + returnErr, _ = returnErr.WithDetails(localizedProtoMsg) + for _, d := range errStatus.Details() { + returnErr, _ = returnErr.WithDetails(d.(*errdetails.LocalizedMessage)) + } + return nil, returnErr.Err() } if err != nil { return nil, err