Skip to content

Commit

Permalink
feat: add create/delete/update methods to PolicyService (#13)
Browse files Browse the repository at this point in the history
* Add policy schema

Signed-off-by: 久米 拓馬 <takuma.kume@pepabo.com>

* Add Create to PolicyService

Signed-off-by: 久米 拓馬 <takuma.kume@pepabo.com>

* Add Delete to PolicyService

Signed-off-by: 久米 拓馬 <takuma.kume@pepabo.com>

* Add Update to PolicyService

Signed-off-by: 久米 拓馬 <takuma.kume@pepabo.com>

* Add AddProject/DeleteProject to PolicyService

Signed-off-by: 久米 拓馬 <takuma.kume@pepabo.com>

* Add AddTag/DeleteTag to PolicyService

Signed-off-by: 久米 拓馬 <takuma.kume@pepabo.com>

* Add PolicyOperator, PolicyViolationState

Signed-off-by: 久米 拓馬 <takuma.kume@pepabo.com>

---------

Signed-off-by: 久米 拓馬 <takuma.kume@pepabo.com>
  • Loading branch information
takumakume committed Aug 29, 2023
1 parent f3504fe commit 9894000
Showing 1 changed file with 94 additions and 5 deletions.
99 changes: 94 additions & 5 deletions policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,36 @@ import (
)

type Policy struct {
UUID uuid.UUID
Name string `json:"name"`
Operator string `json:"operator"`
ViolationState string `json:"violationState"`
PolicyConditions []PolicyCondition `json:"policyConditions"`
UUID uuid.UUID `json:"uuid,omitempty"`
Name string `json:"name"`
Operator PolicyOperator `json:"operator"`
ViolationState PolicyViolationState `json:"violationState"`
PolicyConditions []PolicyCondition `json:"policyConditions,omitempty"`
IncludeChildren bool `json:"includeChildren,omitempty"`
Global bool `json:"global,omitempty"`
Projects []Project `json:"projects,omitempty"`
Tags []Tag `json:"tags,omitempty"`
}

type PolicyService struct {
client *Client
}

type PolicyOperator string

const (
PolicyOperatorAll PolicyOperator = "ALL"
PolicyOperatorAny PolicyOperator = "ANY"
)

type PolicyViolationState string

const (
PolicyViolationStateInfo PolicyViolationState = "INFO"
PolicyViolationStateWarn PolicyViolationState = "WARN"
PolicyViolationStateFail PolicyViolationState = "FAIL"
)

func (ps PolicyService) Get(ctx context.Context, policyUUID uuid.UUID) (p Policy, err error) {
req, err := ps.client.newRequest(ctx, http.MethodGet, fmt.Sprintf("/api/v1/policy/%s", policyUUID))
if err != nil {
Expand All @@ -44,3 +63,73 @@ func (ps PolicyService) GetAll(ctx context.Context, po PageOptions) (p Page[Poli
p.TotalCount = res.TotalCount
return
}

func (ps PolicyService) Create(ctx context.Context, policy Policy) (p Policy, err error) {
req, err := ps.client.newRequest(ctx, http.MethodPut, "/api/v1/policy", withBody(policy))
if err != nil {
return
}

_, err = ps.client.doRequest(req, &p)
return
}

func (ps PolicyService) Delete(ctx context.Context, policyUUID uuid.UUID) (err error) {
req, err := ps.client.newRequest(ctx, http.MethodDelete, fmt.Sprintf("/api/v1/policy/%s", policyUUID))
if err != nil {
return
}

_, err = ps.client.doRequest(req, nil)
return
}

func (ps PolicyService) Update(ctx context.Context, policy Policy) (p Policy, err error) {
req, err := ps.client.newRequest(ctx, http.MethodPost, "/api/v1/policy", withBody(policy))
if err != nil {
return
}

_, err = ps.client.doRequest(req, &p)
return
}

func (ps PolicyService) AddProject(ctx context.Context, policyUUID, projectUUID uuid.UUID) (p Policy, err error) {
req, err := ps.client.newRequest(ctx, http.MethodPost, fmt.Sprintf("/api/v1/policy/%s/project/%s", policyUUID, projectUUID))
if err != nil {
return
}

_, err = ps.client.doRequest(req, &p)
return
}

func (ps PolicyService) DeleteProject(ctx context.Context, policyUUID, projectUUID uuid.UUID) (p Policy, err error) {
req, err := ps.client.newRequest(ctx, http.MethodDelete, fmt.Sprintf("/api/v1/policy/%s/project/%s", policyUUID, projectUUID))
if err != nil {
return
}

_, err = ps.client.doRequest(req, &p)
return
}

func (ps PolicyService) AddTag(ctx context.Context, policyUUID uuid.UUID, tagName string) (p Policy, err error) {
req, err := ps.client.newRequest(ctx, http.MethodPost, fmt.Sprintf("/api/v1/policy/%s/tag/%s", policyUUID, tagName))
if err != nil {
return
}

_, err = ps.client.doRequest(req, &p)
return
}

func (ps PolicyService) DeleteTag(ctx context.Context, policyUUID uuid.UUID, tagName string) (p Policy, err error) {
req, err := ps.client.newRequest(ctx, http.MethodDelete, fmt.Sprintf("/api/v1/policy/%s/tag/%s", policyUUID, tagName))
if err != nil {
return
}

_, err = ps.client.doRequest(req, &p)
return
}

0 comments on commit 9894000

Please sign in to comment.