[management] remove ids from policy creation api (#2997)

This commit is contained in:
Pascal Fischer 2024-12-27 14:13:36 +01:00 committed by GitHub
parent 445b626dc8
commit fbce8bb511
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 90 additions and 31 deletions

View File

@ -725,10 +725,6 @@ components:
PolicyRuleMinimum: PolicyRuleMinimum:
type: object type: object
properties: properties:
id:
description: Policy rule ID
type: string
example: ch8i4ug6lnn4g9hqv7mg
name: name:
description: Policy rule name identifier description: Policy rule name identifier
type: string type: string
@ -790,6 +786,31 @@ components:
- end - end
PolicyRuleUpdate: PolicyRuleUpdate:
allOf:
- $ref: '#/components/schemas/PolicyRuleMinimum'
- type: object
properties:
id:
description: Policy rule ID
type: string
example: ch8i4ug6lnn4g9hqv7mg
sources:
description: Policy rule source group IDs
type: array
items:
type: string
example: "ch8i4ug6lnn4g9hqv797"
destinations:
description: Policy rule destination group IDs
type: array
items:
type: string
example: "ch8i4ug6lnn4g9h7v7m0"
required:
- sources
- destinations
PolicyRuleCreate:
allOf: allOf:
- $ref: '#/components/schemas/PolicyRuleMinimum' - $ref: '#/components/schemas/PolicyRuleMinimum'
- type: object - type: object
@ -817,6 +838,10 @@ components:
- $ref: '#/components/schemas/PolicyRuleMinimum' - $ref: '#/components/schemas/PolicyRuleMinimum'
- type: object - type: object
properties: properties:
id:
description: Policy rule ID
type: string
example: ch8i4ug6lnn4g9hqv7mg
sources: sources:
description: Policy rule source group IDs description: Policy rule source group IDs
type: array type: array
@ -836,10 +861,6 @@ components:
PolicyMinimum: PolicyMinimum:
type: object type: object
properties: properties:
id:
description: Policy ID
type: string
example: ch8i4ug6lnn4g9hqv7mg
name: name:
description: Policy name identifier description: Policy name identifier
type: string type: string
@ -854,7 +875,6 @@ components:
example: true example: true
required: required:
- name - name
- description
- enabled - enabled
PolicyUpdate: PolicyUpdate:
allOf: allOf:
@ -874,11 +894,33 @@ components:
$ref: '#/components/schemas/PolicyRuleUpdate' $ref: '#/components/schemas/PolicyRuleUpdate'
required: required:
- rules - rules
PolicyCreate:
allOf:
- $ref: '#/components/schemas/PolicyMinimum'
- type: object
properties:
source_posture_checks:
description: Posture checks ID's applied to policy source groups
type: array
items:
type: string
example: "chacdk86lnnboviihd70"
rules:
description: Policy rule object for policy UI editor
type: array
items:
$ref: '#/components/schemas/PolicyRuleUpdate'
required:
- rules
Policy: Policy:
allOf: allOf:
- $ref: '#/components/schemas/PolicyMinimum' - $ref: '#/components/schemas/PolicyMinimum'
- type: object - type: object
properties: properties:
id:
description: Policy ID
type: string
example: ch8i4ug6lnn4g9hqv7mg
source_posture_checks: source_posture_checks:
description: Posture checks ID's applied to policy source groups description: Posture checks ID's applied to policy source groups
type: array type: array
@ -2463,7 +2505,7 @@ paths:
content: content:
'application/json': 'application/json':
schema: schema:
$ref: '#/components/schemas/PolicyUpdate' $ref: '#/components/schemas/PolicyCreate'
responses: responses:
'200': '200':
description: A Policy object description: A Policy object

View File

@ -879,7 +879,7 @@ type PersonalAccessTokenRequest struct {
// Policy defines model for Policy. // Policy defines model for Policy.
type Policy struct { type Policy struct {
// Description Policy friendly description // Description Policy friendly description
Description string `json:"description"` Description *string `json:"description,omitempty"`
// Enabled Policy status // Enabled Policy status
Enabled bool `json:"enabled"` Enabled bool `json:"enabled"`
@ -897,16 +897,31 @@ type Policy struct {
SourcePostureChecks []string `json:"source_posture_checks"` SourcePostureChecks []string `json:"source_posture_checks"`
} }
// PolicyMinimum defines model for PolicyMinimum. // PolicyCreate defines model for PolicyCreate.
type PolicyMinimum struct { type PolicyCreate struct {
// Description Policy friendly description // Description Policy friendly description
Description string `json:"description"` Description *string `json:"description,omitempty"`
// Enabled Policy status // Enabled Policy status
Enabled bool `json:"enabled"` Enabled bool `json:"enabled"`
// Id Policy ID // Name Policy name identifier
Id *string `json:"id,omitempty"` Name string `json:"name"`
// Rules Policy rule object for policy UI editor
Rules []PolicyRuleUpdate `json:"rules"`
// SourcePostureChecks Posture checks ID's applied to policy source groups
SourcePostureChecks *[]string `json:"source_posture_checks,omitempty"`
}
// PolicyMinimum defines model for PolicyMinimum.
type PolicyMinimum struct {
// Description Policy friendly description
Description *string `json:"description,omitempty"`
// Enabled Policy status
Enabled bool `json:"enabled"`
// Name Policy name identifier // Name Policy name identifier
Name string `json:"name"` Name string `json:"name"`
@ -970,9 +985,6 @@ type PolicyRuleMinimum struct {
// Enabled Policy rule status // Enabled Policy rule status
Enabled bool `json:"enabled"` Enabled bool `json:"enabled"`
// Id Policy rule ID
Id *string `json:"id,omitempty"`
// Name Policy rule name identifier // Name Policy rule name identifier
Name string `json:"name"` Name string `json:"name"`
@ -1039,14 +1051,11 @@ type PolicyRuleUpdateProtocol string
// PolicyUpdate defines model for PolicyUpdate. // PolicyUpdate defines model for PolicyUpdate.
type PolicyUpdate struct { type PolicyUpdate struct {
// Description Policy friendly description // Description Policy friendly description
Description string `json:"description"` Description *string `json:"description,omitempty"`
// Enabled Policy status // Enabled Policy status
Enabled bool `json:"enabled"` Enabled bool `json:"enabled"`
// Id Policy ID
Id *string `json:"id,omitempty"`
// Name Policy name identifier // Name Policy name identifier
Name string `json:"name"` Name string `json:"name"`
@ -1473,7 +1482,7 @@ type PutApiPeersPeerIdJSONRequestBody = PeerRequest
type PostApiPoliciesJSONRequestBody = PolicyUpdate type PostApiPoliciesJSONRequestBody = PolicyUpdate
// PutApiPoliciesPolicyIdJSONRequestBody defines body for PutApiPoliciesPolicyId for application/json ContentType. // PutApiPoliciesPolicyIdJSONRequestBody defines body for PutApiPoliciesPolicyId for application/json ContentType.
type PutApiPoliciesPolicyIdJSONRequestBody = PolicyUpdate type PutApiPoliciesPolicyIdJSONRequestBody = PolicyCreate
// PostApiPostureChecksJSONRequestBody defines body for PostApiPostureChecks for application/json ContentType. // PostApiPostureChecksJSONRequestBody defines body for PostApiPostureChecks for application/json ContentType.
type PostApiPostureChecksJSONRequestBody = PostureCheckUpdate type PostApiPostureChecksJSONRequestBody = PostureCheckUpdate

View File

@ -133,16 +133,21 @@ func (h *handler) savePolicy(w http.ResponseWriter, r *http.Request, accountID s
return return
} }
description := ""
if req.Description != nil {
description = *req.Description
}
policy := &types.Policy{ policy := &types.Policy{
ID: policyID, ID: policyID,
AccountID: accountID, AccountID: accountID,
Name: req.Name, Name: req.Name,
Enabled: req.Enabled, Enabled: req.Enabled,
Description: req.Description, Description: description,
} }
for _, rule := range req.Rules { for _, rule := range req.Rules {
var ruleID string var ruleID string
if rule.Id != nil { if rule.Id != nil && policyID != "" {
ruleID = *rule.Id ruleID = *rule.Id
} }
@ -370,7 +375,7 @@ func toPolicyResponse(groups []*types.Group, policy *types.Policy) *api.Policy {
ap := &api.Policy{ ap := &api.Policy{
Id: &policy.ID, Id: &policy.ID,
Name: policy.Name, Name: policy.Name,
Description: policy.Description, Description: &policy.Description,
Enabled: policy.Enabled, Enabled: policy.Enabled,
SourcePostureChecks: policy.SourcePostureChecks, SourcePostureChecks: policy.SourcePostureChecks,
} }

View File

@ -154,6 +154,7 @@ func TestPoliciesGetPolicy(t *testing.T) {
func TestPoliciesWritePolicy(t *testing.T) { func TestPoliciesWritePolicy(t *testing.T) {
str := func(s string) *string { return &s } str := func(s string) *string { return &s }
emptyString := ""
tt := []struct { tt := []struct {
name string name string
expectedStatus int expectedStatus int
@ -186,6 +187,7 @@ func TestPoliciesWritePolicy(t *testing.T) {
expectedPolicy: &api.Policy{ expectedPolicy: &api.Policy{
Id: str("id-was-set"), Id: str("id-was-set"),
Name: "Default POSTed Policy", Name: "Default POSTed Policy",
Description: &emptyString,
Rules: []api.PolicyRule{ Rules: []api.PolicyRule{
{ {
Id: str("id-was-set"), Id: str("id-was-set"),
@ -234,6 +236,7 @@ func TestPoliciesWritePolicy(t *testing.T) {
expectedPolicy: &api.Policy{ expectedPolicy: &api.Policy{
Id: str("id-existed"), Id: str("id-existed"),
Name: "Default POSTed Policy", Name: "Default POSTed Policy",
Description: &emptyString,
Rules: []api.PolicyRule{ Rules: []api.PolicyRule{
{ {
Id: str("id-existed"), Id: str("id-existed"),