Skip to content

Commit 037b3a6

Browse files
Add update and delete secret mapping cli command
1 parent fba1bb2 commit 037b3a6

2 files changed

Lines changed: 117 additions & 0 deletions

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package flink
2+
3+
import (
4+
"github.com/spf13/cobra"
5+
6+
pcmd "github.com/confluentinc/cli/v4/pkg/cmd"
7+
"github.com/confluentinc/cli/v4/pkg/deletion"
8+
"github.com/confluentinc/cli/v4/pkg/errors"
9+
"github.com/confluentinc/cli/v4/pkg/resource"
10+
)
11+
12+
func (c *command) newSecretMappingDeleteCommand() *cobra.Command {
13+
cmd := &cobra.Command{
14+
Use: "delete <name-1> [name-2] ... [name-n]",
15+
Short: "Delete one or more Flink secret mappings.",
16+
Long: "Delete one or more Flink environment secret mappings in Confluent Platform.",
17+
Args: cobra.MinimumNArgs(1),
18+
RunE: c.secretMappingDelete,
19+
}
20+
21+
cmd.Flags().String("environment", "", "Name of the Flink environment.")
22+
cobra.CheckErr(cmd.MarkFlagRequired("environment"))
23+
addCmfFlagSet(cmd)
24+
pcmd.AddForceFlag(cmd)
25+
26+
return cmd
27+
}
28+
29+
func (c *command) secretMappingDelete(cmd *cobra.Command, args []string) error {
30+
environment, err := cmd.Flags().GetString("environment")
31+
if err != nil {
32+
return err
33+
}
34+
35+
client, err := c.GetCmfClient(cmd)
36+
if err != nil {
37+
return err
38+
}
39+
40+
existenceFunc := func(name string) bool {
41+
_, err := client.DescribeSecretMapping(c.createContext(), environment, name)
42+
return err == nil
43+
}
44+
45+
if err := deletion.ValidateAndConfirm(cmd, args, existenceFunc, resource.FlinkSecretMapping); err != nil {
46+
suggestions := "List available Flink secret mappings with `confluent flink secret-mapping list --environment <envName>`."
47+
suggestions += "\nCheck that CMF is running and accessible."
48+
return errors.NewErrorWithSuggestions(err.Error(), suggestions)
49+
}
50+
51+
deleteFunc := func(name string) error {
52+
return client.DeleteSecretMapping(c.createContext(), environment, name)
53+
}
54+
55+
_, err = deletion.Delete(cmd, args, deleteFunc, resource.FlinkSecretMapping)
56+
return err
57+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package flink
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/spf13/cobra"
7+
8+
pcmd "github.com/confluentinc/cli/v4/pkg/cmd"
9+
)
10+
11+
func (c *command) newSecretMappingUpdateCommand() *cobra.Command {
12+
cmd := &cobra.Command{
13+
Use: "update <resourceFilePath>",
14+
Short: "Update a Flink secret mapping.",
15+
Long: "Update a Flink environment secret mapping in Confluent Platform.",
16+
Args: cobra.ExactArgs(1),
17+
RunE: c.secretMappingUpdate,
18+
}
19+
20+
cmd.Flags().String("environment", "", "Name of the Flink environment.")
21+
cobra.CheckErr(cmd.MarkFlagRequired("environment"))
22+
addCmfFlagSet(cmd)
23+
pcmd.AddOutputFlag(cmd)
24+
25+
return cmd
26+
}
27+
28+
func (c *command) secretMappingUpdate(cmd *cobra.Command, args []string) error {
29+
resourceFilePath := args[0]
30+
31+
environment, err := cmd.Flags().GetString("environment")
32+
if err != nil {
33+
return err
34+
}
35+
36+
client, err := c.GetCmfClient(cmd)
37+
if err != nil {
38+
return err
39+
}
40+
41+
sdkMapping, err := readSecretMappingResourceFile(resourceFilePath)
42+
if err != nil {
43+
return err
44+
}
45+
46+
var mappingName string
47+
if sdkMapping.Metadata != nil && sdkMapping.Metadata.Name != nil {
48+
mappingName = *sdkMapping.Metadata.Name
49+
}
50+
if mappingName == "" {
51+
return fmt.Errorf(`secret mapping name is required: ensure the resource file contains a non-empty "metadata.name" field`)
52+
}
53+
54+
sdkOutputMapping, err := client.UpdateSecretMapping(c.createContext(), environment, mappingName, sdkMapping)
55+
if err != nil {
56+
return err
57+
}
58+
59+
return printSecretMappingOutput(cmd, sdkOutputMapping)
60+
}

0 commit comments

Comments
 (0)