MCPcopy Create free account
hub / github.com/bytebase/bytebase / GetPolicy

Method GetPolicy

backend/api/v1/org_policy_service.go:57–102  ·  view source on GitHub ↗

GetPolicy gets a policy in a specific resource.

(ctx context.Context, req *connect.Request[v1pb.GetPolicyRequest])

Source from the content-addressed store, hash-verified

55
56// GetPolicy gets a policy in a specific resource.
57func (s *OrgPolicyService) GetPolicy(ctx context.Context, req *connect.Request[v1pb.GetPolicyRequest]) (*connect.Response[v1pb.Policy], error) {
58 policy, parent, err := s.findPolicyMessage(ctx, req.Msg.Name)
59 if err != nil {
60 connectErr := connect.CodeOf(err)
61 // For ROLLOUT_POLICY, return default policy if not found
62 if connectErr == connect.CodeNotFound {
63 policyType, extractErr := extractPolicyTypeFromName(req.Msg.Name)
64 if extractErr == nil && policyType == storepb.Policy_ROLLOUT {
65 defaultPolicy, defaultErr := s.getDefaultRolloutPolicy(parent)
66 if defaultErr != nil {
67 return nil, defaultErr
68 }
69 policy = defaultPolicy
70 }
71 } else {
72 return nil, err
73 }
74 }
75 if policy == nil {
76 return nil, connect.NewError(connect.CodeNotFound, errors.Errorf("cannot found the policy %v", req.Msg.Name))
77 }
78
79 if err := validatePolicyType(policy.Type, policy.ResourceType); err != nil {
80 return nil, connect.NewError(connect.CodeInvalidArgument, err)
81 }
82
83 var perm permission.Permission
84 switch policy.Type {
85 case storepb.Policy_MASKING_EXEMPTION:
86 perm = permission.PoliciesGetMaskingExemptionPolicy
87 case storepb.Policy_MASKING_RULE:
88 perm = permission.PoliciesGetMaskingRulePolicy
89 default:
90 perm = permission.PoliciesGet
91 }
92 if err := s.checkPolicyPermission(ctx, req, perm, policy); err != nil {
93 return nil, err
94 }
95
96 response, err := convertToPolicy(policy)
97 if err != nil {
98 return nil, connect.NewError(connect.CodeInternal, err)
99 }
100
101 return connect.NewResponse(response), nil
102}
103
104// ListPolicies lists policies in a specific resource.
105func (s *OrgPolicyService) ListPolicies(ctx context.Context, req *connect.Request[v1pb.ListPoliciesRequest]) (*connect.Response[v1pb.ListPoliciesResponse], error) {

Callers

nothing calls this directly

Calls 7

findPolicyMessageMethod · 0.95
checkPolicyPermissionMethod · 0.95
validatePolicyTypeFunction · 0.85
convertToPolicyFunction · 0.85
ErrorfMethod · 0.80

Tested by

no test coverage detected