Skip to content

Commit bbda267

Browse files
committed
Merge branch 'hotfix/v1.42.1-scanparam-delete-option'
2 parents c353da4 + 29d27a7 commit bbda267

File tree

2 files changed

+150
-0
lines changed

2 files changed

+150
-0
lines changed

client/scanparams.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ type (
5959
ScanparamsItem struct {
6060
ID string `json:"id,omitempty"`
6161
}
62+
63+
ScanParamsDeleteParams struct {
64+
ScanParamsID string `json:"id"`
65+
ToolName string `json:"tool_name"`
66+
Branch string `json:"branch"`
67+
MetaData string `json:"meta_data"`
68+
MetaDataIsEmpty bool `json:"meta_data_is_empty"`
69+
}
6270
)
6371

6472
func (c *Client) FindScanparams(project string, params *ScanparamSearchParams) (*Scanparams, error) {
@@ -114,3 +122,20 @@ func (c *Client) CreateScanparams(pID string, sp ScanparamsDetail) (*Scanparams,
114122

115123
return &pr.Scanparams, nil
116124
}
125+
126+
func (c *Client) DeleteScanparamsBy(pID string, deleteParams ScanParamsDeleteParams) error {
127+
klog.Debug("deleting scanparams")
128+
129+
path := fmt.Sprintf("/api/v2/projects/%s/scanparams/delete", pID)
130+
req, err := c.newRequest(http.MethodPost, path, deleteParams)
131+
if err != nil {
132+
return err
133+
}
134+
135+
_, err = c.do(req, nil)
136+
if err != nil {
137+
return err
138+
}
139+
140+
return nil
141+
}

cmd/scanparams.go

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/kondukto-io/kdt/client"
7+
"github.com/kondukto-io/kdt/klog"
8+
"github.com/spf13/cobra"
9+
)
10+
11+
var scanParamsCmd = &cobra.Command{
12+
Use: "scanparams",
13+
Short: "base command for scan parameter operations",
14+
Run: func(cmd *cobra.Command, args []string) {
15+
if len(args) == 0 {
16+
_ = cmd.Help()
17+
qwm(ExitCodeSuccess, "")
18+
}
19+
},
20+
}
21+
22+
func init() {
23+
rootCmd.AddCommand(scanParamsCmd)
24+
25+
scanParamsCmd.AddCommand(deleteScanParamsCmd)
26+
27+
deleteScanParamsCmd.Flags().StringP("project", "p", "", "kondukto project id or name (required)")
28+
deleteScanParamsCmd.Flags().StringP("tool", "t", "", "tool name of scan params (required)")
29+
deleteScanParamsCmd.Flags().StringP("meta", "m", "", "meta data of scan params")
30+
deleteScanParamsCmd.Flags().StringP("branch", "b", "", "branch of scan params")
31+
deleteScanParamsCmd.Flags().BoolP("force", "f", false, "force to delete (required)")
32+
}
33+
34+
var deleteScanParamsCmd = &cobra.Command{
35+
Use: "delete",
36+
Short: "delete scan parameters and vulnerabilities from Kondukto",
37+
Run: deleteScanParamsRootCommand,
38+
}
39+
40+
func deleteScanParamsRootCommand(cmd *cobra.Command, _ []string) {
41+
c, err := client.New()
42+
if err != nil {
43+
qwe(ExitCodeError, err, "could not initialize Kondukto client")
44+
}
45+
46+
scanParams := ScanParamsDelete{
47+
cmd: cmd,
48+
client: c,
49+
}
50+
51+
if err = scanParams.delete(); err != nil {
52+
qwe(ExitCodeError, err, "failed to delete scan parameters")
53+
}
54+
}
55+
56+
type ScanParamsDelete struct {
57+
cmd *cobra.Command
58+
client *client.Client
59+
}
60+
61+
func (s *ScanParamsDelete) delete() error {
62+
projectName, err := getSanitizedFlagStr(s.cmd, "project")
63+
if err != nil {
64+
return fmt.Errorf("failed to get project flag: %w", err)
65+
}
66+
67+
if projectName == "" {
68+
return fmt.Errorf("project name is required")
69+
}
70+
71+
scanner, err := s.cmd.Flags().GetString("tool")
72+
if err != nil {
73+
return fmt.Errorf("failed to parse tool flag: %w", err)
74+
}
75+
76+
if scanner == "" {
77+
return fmt.Errorf("tool is required")
78+
}
79+
80+
branch, err := s.cmd.Flags().GetString("branch")
81+
if err != nil {
82+
return fmt.Errorf("failed to parse branch flag: %w", err)
83+
}
84+
85+
meta, err := s.cmd.Flags().GetString("meta")
86+
if err != nil {
87+
return fmt.Errorf("failed to parse meta flag: %w", err)
88+
}
89+
90+
force, err := s.cmd.Flags().GetBool("force")
91+
if err != nil {
92+
return fmt.Errorf("failed to parse force flag: %w", err)
93+
}
94+
95+
if !force {
96+
return fmt.Errorf("--force is required")
97+
}
98+
99+
var request = client.ScanParamsDeleteParams{
100+
ToolName: scanner,
101+
Branch: branch,
102+
MetaData: meta,
103+
}
104+
105+
if meta == "" && s.cmd.Flags().Changed("meta") {
106+
request.MetaDataIsEmpty = true
107+
}
108+
109+
if err := s.client.DeleteScanparamsBy(projectName, request); err != nil {
110+
return fmt.Errorf("failed to delete scan parameters: %w", err)
111+
}
112+
113+
var message = fmt.Sprintf("scan parameters deleted successfully for project: [%s] and scanner: [%s]", projectName, scanner)
114+
115+
if branch != "" {
116+
message += fmt.Sprintf(" and branch: [%s]", branch)
117+
}
118+
119+
if meta != "" {
120+
message += fmt.Sprintf(" and metadata: [%s]", meta)
121+
}
122+
123+
klog.Print(message)
124+
return nil
125+
}

0 commit comments

Comments
 (0)