-
Notifications
You must be signed in to change notification settings - Fork 6
/
delete.go
100 lines (84 loc) · 2.97 KB
/
delete.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package certmanager
import (
"context"
"fmt"
"github.com/ionos-cloud/ionosctl/v6/internal/constants"
"github.com/ionos-cloud/ionosctl/v6/internal/core"
"github.com/ionos-cloud/ionosctl/v6/internal/printer/jsontabwriter"
"github.com/ionos-cloud/ionosctl/v6/internal/printer/tabheaders"
"github.com/ionos-cloud/ionosctl/v6/pkg/confirm"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
func CertDeleteCmd() *core.Command {
cmd := core.NewCommand(
context.TODO(), nil, core.CommandBuilder{
Namespace: "certmanager",
Resource: "certificates",
Verb: "delete",
Aliases: []string{"d"},
ShortDesc: "Delete Certificate by ID or all Certificates",
LongDesc: "Use this command to delete a Certificate by ID.",
Example: "ionsoctl certificate-manager delete --certificate-id 47c5d9cc-b613-4b76-b0cc-dc531787a422",
PreCmdRun: PreCmdDelete,
CmdRun: CmdDelete,
InitClient: true,
},
)
cmd.AddStringFlag(FlagCertId, constants.FlagIdShort, "", "Response delete a single certificate (required)")
_ = cmd.Command.RegisterFlagCompletionFunc(FlagCertId, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return CertificatesIds(), cobra.ShellCompDirectiveNoFileComp
})
cmd.AddBoolFlag(constants.ArgAll, constants.ArgAllShort, false, "Response delete all certificates")
cmd.Command.Flags().StringSlice(constants.ArgCols, nil, tabheaders.ColsMessage(defaultCertificateCols))
_ = cmd.Command.RegisterFlagCompletionFunc(
constants.ArgCols,
func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return defaultCertificateCols, cobra.ShellCompDirectiveNoFileComp
},
)
return cmd
}
func CmdDelete(c *core.CommandConfig) error {
var err error
allFlag, err := c.Command.Command.Flags().GetBool(constants.ArgAll)
if err != nil {
return err
}
if allFlag {
fmt.Fprintf(c.Command.Command.ErrOrStderr(), jsontabwriter.GenerateVerboseOutput("Deleting all Certificates..."))
certs, _, err := c.CertificateManagerServices.Certs().List()
if err != nil {
return err
}
for _, cert := range *certs.Items {
msg := fmt.Sprintf("delete Certificate ID: %s", *cert.Id)
if !confirm.FAsk(c.Command.Command.InOrStdin(), msg, viper.GetBool(constants.ArgForce)) {
return fmt.Errorf(confirm.UserDenied)
}
_, err = c.CertificateManagerServices.Certs().Delete(*cert.Id)
if err != nil {
return err
}
}
} else {
id, err := c.Command.Command.Flags().GetString(FlagCertId)
if err != nil {
return err
}
msg := fmt.Sprintf("delete Certificate ID: %s", id)
if !confirm.FAsk(c.Command.Command.InOrStdin(), msg, viper.GetBool(constants.ArgForce)) {
return fmt.Errorf(confirm.UserDenied)
}
_, err = c.CertificateManagerServices.Certs().Delete(id)
return err
}
return err
}
func PreCmdDelete(c *core.PreCommandConfig) error {
return core.CheckRequiredFlagsSets(
c.Command, c.NS,
[]string{FlagCertId},
[]string{constants.ArgAll},
)
}