Skip to content

Commit

Permalink
feat: delete receiver private to public (#230)
Browse files Browse the repository at this point in the history
  • Loading branch information
lynnleelhl authored Jan 11, 2024
1 parent feebf49 commit bc6c0e8
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 22 deletions.
2 changes: 1 addition & 1 deletion addons
Submodule addons updated 119 files
47 changes: 31 additions & 16 deletions pkg/cmd/alert/delete_receiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,35 +38,50 @@ var (
kbcli alert delete-receiver my-receiver`)
)

type deleteReceiverOptions struct {
type DeleteReceiverOptions struct {
baseOptions
names []string
Names []string
}

func NewDeleteReceiverOption(f cmdutil.Factory, streams genericiooptions.IOStreams) *DeleteReceiverOptions {
return &DeleteReceiverOptions{baseOptions: baseOptions{Factory: f, IOStreams: streams}}
}

func newDeleteReceiverCmd(f cmdutil.Factory, streams genericiooptions.IOStreams) *cobra.Command {
o := &deleteReceiverOptions{baseOptions: baseOptions{Factory: f, IOStreams: streams}}
o := NewDeleteReceiverOption(f, streams)
cmd := &cobra.Command{
Use: "delete-receiver NAME",
Short: "Delete alert receiver.",
Example: deleteReceiverExample,
Run: func(cmd *cobra.Command, args []string) {
util.CheckErr(o.complete())
util.CheckErr(o.validate(args))
util.CheckErr(o.run())
o.Names = args
util.CheckErr(o.Exec())
},
}
return cmd
}

func (o *deleteReceiverOptions) validate(args []string) error {
if len(args) == 0 {
func (o *DeleteReceiverOptions) Exec() error {
if err := o.complete(); err != nil {
return err
}
if err := o.validate(); err != nil {
return err
}
if err := o.run(); err != nil {
return err
}
return nil
}

func (o *DeleteReceiverOptions) validate() error {
if len(o.Names) == 0 {
return fmt.Errorf("receiver name is required")
}
o.names = args
return nil
}

func (o *deleteReceiverOptions) run() error {
func (o *DeleteReceiverOptions) run() error {
// delete receiver from alert manager config
if err := o.deleteReceiver(); err != nil {
return err
Expand All @@ -77,11 +92,11 @@ func (o *deleteReceiverOptions) run() error {
return err
}

fmt.Fprintf(o.Out, "Receiver %s deleted successfully\n", strings.Join(o.names, ","))
fmt.Fprintf(o.Out, "Receiver %s deleted successfully\n", strings.Join(o.Names, ","))
return nil
}

func (o *deleteReceiverOptions) deleteReceiver() error {
func (o *DeleteReceiverOptions) deleteReceiver() error {
data, err := getConfigData(o.alertConfigMap, o.AlertConfigFileName)
if err != nil {
return err
Expand All @@ -101,7 +116,7 @@ func (o *deleteReceiverOptions) deleteReceiver() error {
for i, rec := range receivers {
var found bool
name := rec.(map[string]interface{})["name"].(string)
for _, n := range o.names {
for _, n := range o.Names {
if n == name {
found = true
break
Expand All @@ -120,15 +135,15 @@ func (o *deleteReceiverOptions) deleteReceiver() error {

// check if receiver exists
if len(receivers) == len(newReceivers) {
return fmt.Errorf("receiver %s not found", strings.Join(o.names, ","))
return fmt.Errorf("receiver %s not found", strings.Join(o.Names, ","))
}

data["receivers"] = newReceivers
data["route"].(map[string]interface{})["routes"] = newRoutes
return updateConfig(o.client, o.alertConfigMap, o.AlertConfigFileName, data)
}

func (o *deleteReceiverOptions) deleteWebhookReceivers() error {
func (o *DeleteReceiverOptions) deleteWebhookReceivers() error {
data, err := getConfigData(o.webhookConfigMap, webhookAdaptorFileName)
if err != nil {
return err
Expand All @@ -138,7 +153,7 @@ func (o *deleteReceiverOptions) deleteWebhookReceivers() error {
for i, rec := range receivers {
var found bool
name := rec.(map[string]interface{})["name"].(string)
for _, n := range o.names {
for _, n := range o.Names {
if n == name {
found = true
break
Expand Down
12 changes: 7 additions & 5 deletions pkg/cmd/alert/delete_receiver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,17 @@ var _ = Describe("alert", func() {
})

It("validate", func() {
o := &deleteReceiverOptions{baseOptions: baseOptions{IOStreams: s}}
Expect(o.validate([]string{})).Should(HaveOccurred())
Expect(o.validate([]string{"test"})).Should(Succeed())
o := &DeleteReceiverOptions{baseOptions: baseOptions{IOStreams: s}}
o.Names = []string{}
Expect(o.validate()).Should(HaveOccurred())
o.Names = []string{"test"}
Expect(o.validate()).Should(Succeed())
})

It("run", func() {
o := &deleteReceiverOptions{baseOptions: mockBaseOptions(s)}
o := &DeleteReceiverOptions{baseOptions: mockBaseOptions(s)}
o.client = testing.FakeClientSet(o.baseOptions.alertConfigMap, o.baseOptions.webhookConfigMap)
o.names = []string{"receiver-7pb52"}
o.Names = []string{"receiver-7pb52"}
o.AlertConfigFileName = alertConfigFileName
Expect(o.run()).Should(Succeed())
})
Expand Down

0 comments on commit bc6c0e8

Please sign in to comment.