From 77683a6ce9c513275e6115fb3dbf6c52845544f2 Mon Sep 17 00:00:00 2001 From: Rahmat Hidayat Date: Wed, 29 Nov 2023 11:41:12 +0700 Subject: [PATCH] chore: logs internal error in handler --- api/handler/v1beta1/activity.go | 12 ++++++------ api/handler/v1beta1/appeal.go | 20 ++++++++++---------- api/handler/v1beta1/approval.go | 18 +++++++++--------- api/handler/v1beta1/grant.go | 28 ++++++++++++++-------------- api/handler/v1beta1/grpc.go | 6 ++++++ api/handler/v1beta1/policy.go | 18 +++++++++--------- api/handler/v1beta1/provider.go | 24 ++++++++++++------------ api/handler/v1beta1/resource.go | 16 ++++++++-------- internal/server/server.go | 5 ++--- 9 files changed, 76 insertions(+), 71 deletions(-) diff --git a/api/handler/v1beta1/activity.go b/api/handler/v1beta1/activity.go index cd384c081..77364f85a 100644 --- a/api/handler/v1beta1/activity.go +++ b/api/handler/v1beta1/activity.go @@ -17,12 +17,12 @@ func (s *GRPCServer) GetActivity(ctx context.Context, req *guardianv1beta1.GetAc if errors.Is(err, activity.ErrNotFound) { return nil, status.Errorf(codes.NotFound, "activity not found") } - return nil, status.Errorf(codes.Internal, "failed to get activity: %v", err) + return nil, s.internalError(ctx, "failed to get activity: %v", err) } activityProto, err := s.adapter.ToActivityProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse proto: %v", err) + return nil, s.internalError(ctx, "failed to parse proto: %v", err) } return &guardianv1beta1.GetActivityResponse{ @@ -48,14 +48,14 @@ func (s *GRPCServer) ListActivities(ctx context.Context, req *guardianv1beta1.Li activities, err := s.activityService.Find(ctx, filter) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to list activities: %v", err) + return nil, s.internalError(ctx, "failed to list activities: %v", err) } activityProtos := []*guardianv1beta1.ProviderActivity{} for _, a := range activities { activityProto, err := s.adapter.ToActivityProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse proto: %v", err) + return nil, s.internalError(ctx, "failed to parse proto: %v", err) } activityProtos = append(activityProtos, activityProto) } @@ -82,14 +82,14 @@ func (s *GRPCServer) ImportActivities(ctx context.Context, req *guardianv1beta1. activities, err := s.activityService.Import(ctx, filter) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to import activities: %v", err) + return nil, s.internalError(ctx, "failed to import activities: %v", err) } activityProtos := []*guardianv1beta1.ProviderActivity{} for _, a := range activities { activity, err := s.adapter.ToActivityProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse proto: %v", err) + return nil, s.internalError(ctx, "failed to parse proto: %v", err) } activityProtos = append(activityProtos, activity) diff --git a/api/handler/v1beta1/appeal.go b/api/handler/v1beta1/appeal.go index 375eda042..12aa6a0e6 100644 --- a/api/handler/v1beta1/appeal.go +++ b/api/handler/v1beta1/appeal.go @@ -97,7 +97,7 @@ func (s *GRPCServer) CreateAppeal(ctx context.Context, req *guardianv1beta1.Crea appeals, err := s.adapter.FromCreateAppealProto(req, authenticatedUser) if err != nil { - return nil, status.Errorf(codes.Internal, "cannot deserialize payload: %v", err) + return nil, s.internalError(ctx, "cannot deserialize payload: %v", err) } if err := s.appealService.Create(ctx, appeals); err != nil { @@ -127,7 +127,7 @@ func (s *GRPCServer) CreateAppeal(ctx context.Context, req *guardianv1beta1.Crea errors.Is(err, domain.ErrInvalidApproverValue): return nil, status.Errorf(codes.FailedPrecondition, err.Error()) default: - return nil, status.Errorf(codes.Internal, "failed to create appeal(s): %v", err) + return nil, s.internalError(ctx, "failed to create appeal(s): %v", err) } } @@ -135,7 +135,7 @@ func (s *GRPCServer) CreateAppeal(ctx context.Context, req *guardianv1beta1.Crea for _, appeal := range appeals { appealProto, err := s.adapter.ToAppealProto(appeal) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse appeal: %v", err) + return nil, s.internalError(ctx, "failed to parse appeal: %v", err) } appealProtos = append(appealProtos, appealProto) } @@ -153,7 +153,7 @@ func (s *GRPCServer) GetAppeal(ctx context.Context, req *guardianv1beta1.GetAppe if errors.As(err, new(appeal.InvalidError)) || errors.Is(err, appeal.ErrAppealIDEmptyParam) { return nil, status.Errorf(codes.InvalidArgument, err.Error()) } - return nil, status.Errorf(codes.Internal, "failed to retrieve appeal: %v", err) + return nil, s.internalError(ctx, "failed to retrieve appeal: %v", err) } if a == nil { @@ -162,7 +162,7 @@ func (s *GRPCServer) GetAppeal(ctx context.Context, req *guardianv1beta1.GetAppe appealProto, err := s.adapter.ToAppealProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse appeal: %v", err) + return nil, s.internalError(ctx, "failed to parse appeal: %v", err) } return &guardianv1beta1.GetAppealResponse{ @@ -188,13 +188,13 @@ func (s *GRPCServer) CancelAppeal(ctx context.Context, req *guardianv1beta1.Canc appeal.ErrAppealStatusUnrecognized: return nil, status.Errorf(codes.InvalidArgument, "unable to process the request: %v", err) default: - return nil, status.Errorf(codes.Internal, "failed to cancel appeal: %v", err) + return nil, s.internalError(ctx, "failed to cancel appeal: %v", err) } } appealProto, err := s.adapter.ToAppealProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse appeal: %v", err) + return nil, s.internalError(ctx, "failed to parse appeal: %v", err) } return &guardianv1beta1.CancelAppealResponse{ @@ -210,7 +210,7 @@ func (s *GRPCServer) listAppeals(ctx context.Context, filters *domain.ListAppeal eg.Go(func() error { appealRecords, err := s.appealService.Find(ctx, filters) if err != nil { - return status.Errorf(codes.Internal, "failed to get appeal list: %s", err) + return s.internalError(ctx, "failed to get appeal list: %s", err) } appeals = appealRecords return nil @@ -218,7 +218,7 @@ func (s *GRPCServer) listAppeals(ctx context.Context, filters *domain.ListAppeal eg.Go(func() error { totalRecord, err := s.appealService.GetAppealsTotalCount(ctx, filters) if err != nil { - return status.Errorf(codes.Internal, "failed to get appeal total count: %s", err) + return s.internalError(ctx, "failed to get appeal total count: %s", err) } total = totalRecord return nil @@ -232,7 +232,7 @@ func (s *GRPCServer) listAppeals(ctx context.Context, filters *domain.ListAppeal for _, a := range appeals { appealProto, err := s.adapter.ToAppealProto(a) if err != nil { - return nil, 0, status.Errorf(codes.Internal, "failed to parse appeal: %s", err) + return nil, 0, s.internalError(ctx, "failed to parse appeal: %s", err) } appealProtos = append(appealProtos, appealProto) } diff --git a/api/handler/v1beta1/approval.go b/api/handler/v1beta1/approval.go index f1c39ecb7..223ef544b 100644 --- a/api/handler/v1beta1/approval.go +++ b/api/handler/v1beta1/approval.go @@ -95,13 +95,13 @@ func (s *GRPCServer) UpdateApproval(ctx context.Context, req *guardianv1beta1.Up case appeal.ErrApprovalNotFound: return nil, status.Errorf(codes.NotFound, "approval not found: %v", id) default: - return nil, status.Errorf(codes.Internal, "failed to update approval: %v", err) + return nil, s.internalError(ctx, "failed to update approval: %v", err) } } appealProto, err := s.adapter.ToAppealProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse appeal: %v", err) + return nil, s.internalError(ctx, "failed to parse appeal: %v", err) } return &guardianv1beta1.UpdateApprovalResponse{ @@ -121,12 +121,12 @@ func (s *GRPCServer) AddApprover(ctx context.Context, req *guardianv1beta1.AddAp errors.Is(err, appeal.ErrApprovalNotFound): return nil, status.Errorf(codes.NotFound, "resource not found: %s", err) case err != nil: - return nil, status.Errorf(codes.Internal, "failed to add approver: %s", err) + return nil, s.internalError(ctx, "failed to add approver: %s", err) } appealProto, err := s.adapter.ToAppealProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse appeal: %s", err) + return nil, s.internalError(ctx, "failed to parse appeal: %s", err) } return &guardianv1beta1.AddApproverResponse{ @@ -146,12 +146,12 @@ func (s *GRPCServer) DeleteApprover(ctx context.Context, req *guardianv1beta1.De errors.Is(err, appeal.ErrApprovalNotFound): return nil, status.Errorf(codes.NotFound, "resource not found: %s", err) case err != nil: - return nil, status.Errorf(codes.Internal, "failed to delete approver: %s", err) + return nil, s.internalError(ctx, "failed to delete approver: %s", err) } appealProto, err := s.adapter.ToAppealProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse appeal: %s", err) + return nil, s.internalError(ctx, "failed to parse appeal: %s", err) } return &guardianv1beta1.DeleteApproverResponse{ @@ -167,7 +167,7 @@ func (s *GRPCServer) listApprovals(ctx context.Context, filters *domain.ListAppr eg.Go(func() error { approvalRecords, err := s.approvalService.ListApprovals(ctx, filters) if err != nil { - return status.Errorf(codes.Internal, "failed to get approval list: %s", err) + return s.internalError(ctx, "failed to get approval list: %s", err) } approvals = approvalRecords return nil @@ -176,7 +176,7 @@ func (s *GRPCServer) listApprovals(ctx context.Context, filters *domain.ListAppr eg.Go(func() error { totalRecord, err := s.approvalService.GetApprovalsTotalCount(ctx, filters) if err != nil { - return status.Errorf(codes.Internal, "failed to get approval list: %v", err) + return s.internalError(ctx, "failed to get approval list: %v", err) } total = totalRecord return nil @@ -190,7 +190,7 @@ func (s *GRPCServer) listApprovals(ctx context.Context, filters *domain.ListAppr for _, a := range approvals { approvalProto, err := s.adapter.ToApprovalProto(a) if err != nil { - return nil, 0, status.Errorf(codes.Internal, "failed to parse approval: %v: %s", a.ID, err) + return nil, 0, s.internalError(ctx, "failed to parse approval: %v: %s", a.ID, err) } approvalProtos = append(approvalProtos, approvalProto) } diff --git a/api/handler/v1beta1/grant.go b/api/handler/v1beta1/grant.go index 778c4a0fc..3a1e0000b 100644 --- a/api/handler/v1beta1/grant.go +++ b/api/handler/v1beta1/grant.go @@ -82,12 +82,12 @@ func (s *GRPCServer) GetGrant(ctx context.Context, req *guardianv1beta1.GetGrant if errors.Is(err, grant.ErrGrantNotFound) { return nil, status.Errorf(codes.NotFound, "grant %q not found: %v", req.GetId(), err) } - return nil, status.Errorf(codes.Internal, "failed to get grant details: %v", err) + return nil, s.internalError(ctx, "failed to get grant details: %v", err) } grantProto, err := s.adapter.ToGrantProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse grant: %v", err) + return nil, s.internalError(ctx, "failed to parse grant: %v", err) } return &guardianv1beta1.GetGrantResponse{ @@ -106,12 +106,12 @@ func (s *GRPCServer) RevokeGrant(ctx context.Context, req *guardianv1beta1.Revok if errors.Is(err, grant.ErrGrantNotFound) { return nil, status.Error(codes.NotFound, "grant not found") } - return nil, status.Errorf(codes.Internal, "failed to revoke grant: %v", err) + return nil, s.internalError(ctx, "failed to revoke grant: %v", err) } grantProto, err := s.adapter.ToGrantProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse grant: %v", err) + return nil, s.internalError(ctx, "failed to parse grant: %v", err) } return &guardianv1beta1.RevokeGrantResponse{ @@ -131,13 +131,13 @@ func (s *GRPCServer) UpdateGrant(ctx context.Context, req *guardianv1beta1.Updat case errors.Is(err, grant.ErrEmptyOwner): return nil, status.Error(codes.InvalidArgument, err.Error()) default: - return nil, status.Errorf(codes.Internal, "failed to update grant: %v", err) + return nil, s.internalError(ctx, "failed to update grant: %v", err) } } grantProto, err := s.adapter.ToGrantProto(g) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse grant: %v", err) + return nil, s.internalError(ctx, "failed to parse grant: %v", err) } return &guardianv1beta1.UpdateGrantResponse{ @@ -160,14 +160,14 @@ func (s *GRPCServer) RevokeGrants(ctx context.Context, req *guardianv1beta1.Revo } grants, err := s.grantService.BulkRevoke(ctx, filter, actor, req.GetReason()) if err != nil { - return nil, status.Error(codes.Internal, "failed to revoke grants in bulk") + return nil, s.internalError(ctx, "failed to revoke grants in bulk") } var grantsProto []*guardianv1beta1.Grant for _, a := range grants { grantProto, err := s.adapter.ToGrantProto(a) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse grant: %v", err) + return nil, s.internalError(ctx, "failed to parse grant: %v", err) } grantsProto = append(grantsProto, grantProto) } @@ -185,7 +185,7 @@ func (s *GRPCServer) listGrants(ctx context.Context, filter domain.ListGrantsFil eg.Go(func() error { grantRecords, err := s.grantService.List(ctx, filter) if err != nil { - return status.Errorf(codes.Internal, "failed to get grant list: %s", err) + return s.internalError(ctx, "failed to get grant list: %s", err) } grants = grantRecords return nil @@ -193,7 +193,7 @@ func (s *GRPCServer) listGrants(ctx context.Context, filter domain.ListGrantsFil eg.Go(func() error { totalRecord, err := s.grantService.GetGrantsTotalCount(ctx, filter) if err != nil { - return status.Errorf(codes.Internal, "failed to get grant total count: %s", err) + return s.internalError(ctx, "failed to get grant total count: %s", err) } total = totalRecord return nil @@ -207,7 +207,7 @@ func (s *GRPCServer) listGrants(ctx context.Context, filter domain.ListGrantsFil for i, a := range grants { grantProto, err := s.adapter.ToGrantProto(&grants[i]) if err != nil { - return nil, 0, status.Errorf(codes.Internal, "failed to parse grant %q: %v", a.ID, err) + return nil, 0, s.internalError(ctx, "failed to parse grant %q: %v", a.ID, err) } grantProtos = append(grantProtos, grantProto) } @@ -230,14 +230,14 @@ func (s *GRPCServer) ImportGrantsFromProvider(ctx context.Context, req *guardian return nil, status.Error(codes.InvalidArgument, err.Error()) } - return nil, status.Errorf(codes.Internal, "failed to import access: %v", err) + return nil, s.internalError(ctx, "failed to import access: %v", err) } grantsProto := []*guardianv1beta1.Grant{} for _, g := range grants { grantProto, err := s.adapter.ToGrantProto(g) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse appeal proto %q: %v", g.ID, err) + return nil, s.internalError(ctx, "failed to parse appeal proto %q: %v", g.ID, err) } grantsProto = append(grantsProto, grantProto) } @@ -255,7 +255,7 @@ func (s *GRPCServer) ListUserRoles(ctx context.Context, req *guardianv1beta1.Lis roles, err := s.grantService.ListUserRoles(ctx, user) if err != nil { - return nil, status.Error(codes.Internal, "Internal Error") + return nil, s.internalError(ctx, "Internal Error") } return &guardianv1beta1.ListUserRolesResponse{ Roles: roles, diff --git a/api/handler/v1beta1/grpc.go b/api/handler/v1beta1/grpc.go index fe5063488..ea5f7449c 100644 --- a/api/handler/v1beta1/grpc.go +++ b/api/handler/v1beta1/grpc.go @@ -2,6 +2,7 @@ package v1beta1 import ( "context" + "fmt" "strings" "github.com/goto/guardian/pkg/log" @@ -169,3 +170,8 @@ func (s *GRPCServer) getUser(ctx context.Context) (string, error) { return authenticatedEmail, nil } + +func (s *GRPCServer) internalError(ctx context.Context, format string, a ...interface{}) error { + s.logger.Error(ctx, fmt.Sprintf(format, a...)) + return status.Errorf(codes.Internal, format, a...) +} diff --git a/api/handler/v1beta1/policy.go b/api/handler/v1beta1/policy.go index 28d0173c6..b7b77c30b 100644 --- a/api/handler/v1beta1/policy.go +++ b/api/handler/v1beta1/policy.go @@ -13,14 +13,14 @@ import ( func (s *GRPCServer) ListPolicies(ctx context.Context, req *guardianv1beta1.ListPoliciesRequest) (*guardianv1beta1.ListPoliciesResponse, error) { policies, err := s.policyService.Find(ctx) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to get policy list: %v", err) + return nil, s.internalError(ctx, "failed to get policy list: %v", err) } policyProtos := []*guardianv1beta1.Policy{} for _, p := range policies { policyProto, err := s.adapter.ToPolicyProto(p) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse policy %v: %v", p.ID, err) + return nil, s.internalError(ctx, "failed to parse policy %v: %v", p.ID, err) } policyProtos = append(policyProtos, policyProto) } @@ -37,13 +37,13 @@ func (s *GRPCServer) GetPolicy(ctx context.Context, req *guardianv1beta1.GetPoli case policy.ErrPolicyNotFound: return nil, status.Error(codes.NotFound, "policy not found") default: - return nil, status.Errorf(codes.Internal, "failed to retrieve policy: %v", err) + return nil, s.internalError(ctx, "failed to retrieve policy: %v", err) } } policyProto, err := s.adapter.ToPolicyProto(p) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse policy: %v", err) + return nil, s.internalError(ctx, "failed to parse policy: %v", err) } return &guardianv1beta1.GetPolicyResponse{ @@ -59,12 +59,12 @@ func (s *GRPCServer) CreatePolicy(ctx context.Context, req *guardianv1beta1.Crea p := s.adapter.FromPolicyProto(req.GetPolicy()) if err := s.policyService.Create(ctx, p); err != nil { - return nil, status.Errorf(codes.Internal, "failed to create policy: %v", err) + return nil, s.internalError(ctx, "failed to create policy: %v", err) } policyProto, err := s.adapter.ToPolicyProto(p) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse policy: %v", err) + return nil, s.internalError(ctx, "failed to parse policy: %v", err) } return &guardianv1beta1.CreatePolicyResponse{ @@ -86,12 +86,12 @@ func (s *GRPCServer) UpdatePolicy(ctx context.Context, req *guardianv1beta1.Upda return nil, status.Error(codes.InvalidArgument, err.Error()) } - return nil, status.Errorf(codes.Internal, "failed to update policy: %v", err) + return nil, s.internalError(ctx, "failed to update policy: %v", err) } policyProto, err := s.adapter.ToPolicyProto(p) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse policy: %v", err) + return nil, s.internalError(ctx, "failed to parse policy: %v", err) } return &guardianv1beta1.UpdatePolicyResponse{ @@ -106,7 +106,7 @@ func (s *GRPCServer) GetPolicyPreferences(ctx context.Context, req *guardianv1be case policy.ErrPolicyNotFound: return nil, status.Error(codes.NotFound, "policy not found") default: - return nil, status.Errorf(codes.Internal, "failed to retrieve policy: %v", err) + return nil, s.internalError(ctx, "failed to retrieve policy: %v", err) } } diff --git a/api/handler/v1beta1/provider.go b/api/handler/v1beta1/provider.go index 982f5bfe8..267d301d9 100644 --- a/api/handler/v1beta1/provider.go +++ b/api/handler/v1beta1/provider.go @@ -14,7 +14,7 @@ import ( func (s *GRPCServer) ListProviders(ctx context.Context, req *guardianv1beta1.ListProvidersRequest) (*guardianv1beta1.ListProvidersResponse, error) { providers, err := s.providerService.Find(ctx) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to list providers: %v", err) + return nil, s.internalError(ctx, "failed to list providers: %v", err) } providerProtos := []*guardianv1beta1.Provider{} @@ -22,7 +22,7 @@ func (s *GRPCServer) ListProviders(ctx context.Context, req *guardianv1beta1.Lis p.Config.Credentials = nil providerProto, err := s.adapter.ToProviderProto(p) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse provider %s: %v", p.URN, err) + return nil, s.internalError(ctx, "failed to parse provider %s: %v", p.URN, err) } providerProtos = append(providerProtos, providerProto) } @@ -39,13 +39,13 @@ func (s *GRPCServer) GetProvider(ctx context.Context, req *guardianv1beta1.GetPr case provider.ErrRecordNotFound: return nil, status.Error(codes.NotFound, "provider not found") default: - return nil, status.Errorf(codes.Internal, "failed to retrieve provider: %v", err) + return nil, s.internalError(ctx, "failed to retrieve provider: %v", err) } } providerProto, err := s.adapter.ToProviderProto(p) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse provider %s: %v", p.URN, err) + return nil, s.internalError(ctx, "failed to parse provider %s: %v", p.URN, err) } return &guardianv1beta1.GetProviderResponse{ @@ -56,7 +56,7 @@ func (s *GRPCServer) GetProvider(ctx context.Context, req *guardianv1beta1.GetPr func (s *GRPCServer) GetProviderTypes(ctx context.Context, req *guardianv1beta1.GetProviderTypesRequest) (*guardianv1beta1.GetProviderTypesResponse, error) { providerTypes, err := s.providerService.GetTypes(ctx) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to retrieve provider types: %v", err) + return nil, s.internalError(ctx, "failed to retrieve provider types: %v", err) } var providerTypeProtos []*guardianv1beta1.ProviderType @@ -83,12 +83,12 @@ func (s *GRPCServer) CreateProvider(ctx context.Context, req *guardianv1beta1.Cr if err := s.providerService.Create(ctx, p); err != nil { s.logger.Error(ctx, "failed to create provider", "provider_urn", p.URN, "type", p.Type, "error", err) - return nil, status.Errorf(codes.Internal, "failed to create provider: %v", err) + return nil, s.internalError(ctx, "failed to create provider: %v", err) } providerProto, err := s.adapter.ToProviderProto(p) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse provider: %v", err) + return nil, s.internalError(ctx, "failed to parse provider: %v", err) } return &guardianv1beta1.CreateProviderResponse{ @@ -112,12 +112,12 @@ func (s *GRPCServer) UpdateProvider(ctx context.Context, req *guardianv1beta1.Up if err := s.providerService.Update(ctx, p); err != nil { s.logger.Error(ctx, "failed to update provider", "provider_id", id, "provider_urn", p.URN, "type", p.Type, "error", err) - return nil, status.Errorf(codes.Internal, "failed to update provider: %v", err) + return nil, s.internalError(ctx, "failed to update provider: %v", err) } providerProto, err := s.adapter.ToProviderProto(p) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse provider: %v", err) + return nil, s.internalError(ctx, "failed to parse provider: %v", err) } return &guardianv1beta1.UpdateProviderResponse{ @@ -130,7 +130,7 @@ func (s *GRPCServer) DeleteProvider(ctx context.Context, req *guardianv1beta1.De if errors.Is(err, provider.ErrRecordNotFound) { return nil, status.Errorf(codes.NotFound, "provider not found") } - return nil, status.Errorf(codes.Internal, "failed to delete provider: %v", err) + return nil, s.internalError(ctx, "failed to delete provider: %v", err) } return &guardianv1beta1.DeleteProviderResponse{}, nil @@ -139,14 +139,14 @@ func (s *GRPCServer) DeleteProvider(ctx context.Context, req *guardianv1beta1.De func (s *GRPCServer) ListRoles(ctx context.Context, req *guardianv1beta1.ListRolesRequest) (*guardianv1beta1.ListRolesResponse, error) { roles, err := s.providerService.GetRoles(ctx, req.GetId(), req.GetResourceType()) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to list roles: %v", err) + return nil, s.internalError(ctx, "failed to list roles: %v", err) } roleProtos := []*guardianv1beta1.Role{} for _, r := range roles { role, err := s.adapter.ToRole(r) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse proto: %v", err) + return nil, s.internalError(ctx, "failed to parse proto: %v", err) } roleProtos = append(roleProtos, role) diff --git a/api/handler/v1beta1/resource.go b/api/handler/v1beta1/resource.go index bd330f8a2..21200a88e 100644 --- a/api/handler/v1beta1/resource.go +++ b/api/handler/v1beta1/resource.go @@ -58,7 +58,7 @@ func (s *GRPCServer) listResources(ctx context.Context, filter domain.ListResour eg.Go(func() error { resourceRecords, err := s.resourceService.Find(ctx, filter) if err != nil { - return status.Errorf(codes.Internal, "failed to get resource list: %s", err) + return s.internalError(ctx, "failed to get resource list: %s", err) } resources = resourceRecords return nil @@ -66,7 +66,7 @@ func (s *GRPCServer) listResources(ctx context.Context, filter domain.ListResour eg.Go(func() error { totalRecord, err := s.resourceService.GetResourcesTotalCount(ctx, filter) if err != nil { - return status.Errorf(codes.Internal, "failed to get resource total count: %s", err) + return s.internalError(ctx, "failed to get resource total count: %s", err) } total = totalRecord return nil @@ -79,7 +79,7 @@ func (s *GRPCServer) listResources(ctx context.Context, filter domain.ListResour for i, r := range resources { resourceProto, err := s.adapter.ToResourceProto(resources[i]) if err != nil { - return nil, 0, status.Errorf(codes.Internal, "failed to parse resource %v: %v", r.Name, err) + return nil, 0, s.internalError(ctx, "failed to parse resource %v: %v", r.Name, err) } resourceProtos = append(resourceProtos, resourceProto) } @@ -94,13 +94,13 @@ func (s *GRPCServer) GetResource(ctx context.Context, req *guardianv1beta1.GetRe case resource.ErrRecordNotFound: return nil, status.Error(codes.NotFound, "resource not found") default: - return nil, status.Errorf(codes.Internal, "failed to retrieve resource: %v", err) + return nil, s.internalError(ctx, "failed to retrieve resource: %v", err) } } resourceProto, err := s.adapter.ToResourceProto(r) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse resource: %v", err) + return nil, s.internalError(ctx, "failed to parse resource: %v", err) } return &guardianv1beta1.GetResourceResponse{ @@ -116,12 +116,12 @@ func (s *GRPCServer) UpdateResource(ctx context.Context, req *guardianv1beta1.Up if errors.Is(err, resource.ErrRecordNotFound) { return nil, status.Error(codes.NotFound, "resource not found") } - return nil, status.Errorf(codes.Internal, "failed to update resource: %v", err) + return nil, s.internalError(ctx, "failed to update resource: %v", err) } resourceProto, err := s.adapter.ToResourceProto(r) if err != nil { - return nil, status.Errorf(codes.Internal, "failed to parse resource: %v", err) + return nil, s.internalError(ctx, "failed to parse resource: %v", err) } return &guardianv1beta1.UpdateResourceResponse{ @@ -134,7 +134,7 @@ func (s *GRPCServer) DeleteResource(ctx context.Context, req *guardianv1beta1.De if errors.Is(err, resource.ErrRecordNotFound) { return nil, status.Errorf(codes.NotFound, "resource not found") } - return nil, status.Errorf(codes.Internal, "failed to update resource: %v", err) + return nil, s.internalError(ctx, "failed to update resource: %v", err) } return &guardianv1beta1.DeleteResourceResponse{}, nil diff --git a/internal/server/server.go b/internal/server/server.go index 54648a879..1f89e48a8 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -10,9 +10,6 @@ import ( "github.com/goto/guardian/domain" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "github.com/go-playground/validator/v10" handlerv1beta1 "github.com/goto/guardian/api/handler/v1beta1" guardianv1beta1 "github.com/goto/guardian/api/proto/gotocompany/guardian/v1beta1" @@ -33,6 +30,8 @@ import ( "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "google.golang.org/api/idtoken" "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "google.golang.org/protobuf/encoding/protojson" )