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

Method UpdatePolicy

backend/api/v1/org_policy_service.go:168–259  ·  view source on GitHub ↗

UpdatePolicy updates a policy in a specific resource.

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

Source from the content-addressed store, hash-verified

166
167// UpdatePolicy updates a policy in a specific resource.
168func (s *OrgPolicyService) UpdatePolicy(ctx context.Context, req *connect.Request[v1pb.UpdatePolicyRequest]) (*connect.Response[v1pb.Policy], error) {
169 if req.Msg.Policy == nil {
170 return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("policy must be set"))
171 }
172
173 if err := s.checkPolicyFeatureGuard(ctx, req.Msg.Policy.Type); err != nil {
174 return nil, err
175 }
176
177 policy, parent, err := s.findPolicyMessage(ctx, req.Msg.Policy.Name)
178 if err != nil {
179 connectErr := connect.CodeOf(err)
180 if connectErr == connect.CodeNotFound && req.Msg.AllowMissing {
181 response, err := s.CreatePolicy(ctx, connect.NewRequest(&v1pb.CreatePolicyRequest{
182 Parent: parent,
183 Policy: req.Msg.Policy,
184 }))
185 if err != nil {
186 return nil, err
187 }
188 return response, nil
189 }
190 return nil, err
191 }
192
193 var perm permission.Permission
194 switch policy.Type {
195 case storepb.Policy_MASKING_EXEMPTION:
196 perm = permission.PoliciesUpdateMaskingExemptionPolicy
197 case storepb.Policy_MASKING_RULE:
198 perm = permission.PoliciesUpdateMaskingRulePolicy
199 default:
200 perm = permission.PoliciesUpdate
201 }
202 if err := s.checkPolicyPermission(ctx, req, perm, policy); err != nil {
203 return nil, err
204 }
205
206 if req.Msg.UpdateMask == nil {
207 return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("update_mask must be set"))
208 }
209
210 patch := &store.UpdatePolicyMessage{
211 ResourceType: policy.ResourceType,
212 Type: policy.Type,
213 Resource: policy.Resource,
214 Workspace: policy.Workspace,
215 }
216 for _, path := range req.Msg.UpdateMask.Paths {
217 switch path {
218 case "inherit_from_parent":
219 patch.InheritFromParent = &req.Msg.Policy.InheritFromParent
220 case
221 "rollout_policy",
222 "disable_copy_data_policy",
223 "masking_rule_policy",
224 "masking_exemption_policy",
225 "restrict_issue_creation_for_sql_review_policy",

Callers

nothing calls this directly

Calls 11

findPolicyMessageMethod · 0.95
CreatePolicyMethod · 0.95
checkPolicyPermissionMethod · 0.95
pathMatchTypeFunction · 0.85
validatePolicyPayloadFunction · 0.85
convertToPolicyFunction · 0.85
ErrorfMethod · 0.80
StringMethod · 0.65
UpdatePolicyMethod · 0.65

Tested by

no test coverage detected