Quellcode durchsuchen

Add porter stack env-group remove

Mohammed Nafees vor 3 Jahren
Ursprung
Commit
2dbf0bdb52
2 geänderte Dateien mit 87 neuen und 15 gelöschten Zeilen
  1. 17 0
      api/client/v1_stack.go
  2. 70 15
      cli/cmd/stack.go

+ 17 - 0
api/client/v1_stack.go

@@ -44,3 +44,20 @@ func (c *Client) AddEnvGroupToStack(
 
 
 	return err
 	return err
 }
 }
+
+func (c *Client) RemoveEnvGroupFromStack(
+	ctx context.Context,
+	projectID, clusterID uint,
+	namespace, stackID, envGroupName string,
+) error {
+	err := c.deleteRequest(
+		fmt.Sprintf(
+			"/v1/projects/%d/clusters/%d/namespaces/%s/stacks/%s/remove_env_group/%s",
+			projectID, clusterID, namespace, stackID, envGroupName,
+		),
+		nil,
+		nil,
+	)
+
+	return err
+}

+ 70 - 15
cli/cmd/stack.go

@@ -21,19 +21,19 @@ var stackCmd = &cobra.Command{
 	Short:   "Commands that control Porter Stacks",
 	Short:   "Commands that control Porter Stacks",
 }
 }
 
 
-var stackAddCmd = &cobra.Command{
-	Use:   "add",
-	Short: "Commands to add resources to a stack",
+var stackEnvGroupCmd = &cobra.Command{
+	Use:     "env-group",
+	Aliases: []string{"eg", "envgroup", "env-groups", "envgroups"},
+	Short:   "Commands to add or remove an env group in a stack",
 	Run: func(cmd *cobra.Command, args []string) {
 	Run: func(cmd *cobra.Command, args []string) {
 		color.New(color.FgRed).Println("need to specify an operation to continue")
 		color.New(color.FgRed).Println("need to specify an operation to continue")
 	},
 	},
 }
 }
 
 
-var stackAddEnvGroupCmd = &cobra.Command{
-	Use:     "env-group [name]",
-	Args:    cobra.ExactArgs(1),
-	Aliases: []string{"eg", "envgroup", "env-groups", "envgroups"},
-	Short:   "Add an env group to a stack",
+var stackEnvGroupAddCmd = &cobra.Command{
+	Use:   "add [name]",
+	Args:  cobra.ExactArgs(1),
+	Short: "Add an env group to a stack",
 	Run: func(cmd *cobra.Command, args []string) {
 	Run: func(cmd *cobra.Command, args []string) {
 		err := checkLoginAndRun(args, stackAddEnvGroup)
 		err := checkLoginAndRun(args, stackAddEnvGroup)
 
 
@@ -43,26 +43,39 @@ var stackAddEnvGroupCmd = &cobra.Command{
 	},
 	},
 }
 }
 
 
+var stackEnvGroupRemoveCmd = &cobra.Command{
+	Use:   "remove [name]",
+	Args:  cobra.ExactArgs(1),
+	Short: "Remove an existing env group from a stack",
+	Run: func(cmd *cobra.Command, args []string) {
+		err := checkLoginAndRun(args, stackRemoveEnvGroup)
+
+		if err != nil {
+			os.Exit(1)
+		}
+	},
+}
+
 func init() {
 func init() {
 	rootCmd.AddCommand(stackCmd)
 	rootCmd.AddCommand(stackCmd)
 
 
-	stackCmd.AddCommand(stackAddCmd)
+	stackCmd.AddCommand(stackEnvGroupCmd)
 
 
-	stackAddCmd.PersistentFlags().StringVar(
+	stackCmd.PersistentFlags().StringVar(
 		&name,
 		&name,
 		"name",
 		"name",
 		"",
 		"",
 		"the name of the stack",
 		"the name of the stack",
 	)
 	)
 
 
-	stackAddCmd.PersistentFlags().StringVar(
+	stackCmd.PersistentFlags().StringVar(
 		&namespace,
 		&namespace,
 		"namespace",
 		"namespace",
 		"default",
 		"default",
 		"the namespace of the stack",
 		"the namespace of the stack",
 	)
 	)
 
 
-	stackAddEnvGroupCmd.PersistentFlags().StringArrayVarP(
+	stackEnvGroupAddCmd.PersistentFlags().StringArrayVarP(
 		&normalEnvGroupVars,
 		&normalEnvGroupVars,
 		"normal",
 		"normal",
 		"n",
 		"n",
@@ -70,7 +83,7 @@ func init() {
 		"list of variables to set, in the form VAR=VALUE",
 		"list of variables to set, in the form VAR=VALUE",
 	)
 	)
 
 
-	stackAddEnvGroupCmd.PersistentFlags().StringArrayVarP(
+	stackEnvGroupAddCmd.PersistentFlags().StringArrayVarP(
 		&secretEnvGroupVars,
 		&secretEnvGroupVars,
 		"secret",
 		"secret",
 		"s",
 		"s",
@@ -78,14 +91,15 @@ func init() {
 		"list of secret variables to set, in the form VAR=VALUE",
 		"list of secret variables to set, in the form VAR=VALUE",
 	)
 	)
 
 
-	stackAddEnvGroupCmd.PersistentFlags().StringArrayVar(
+	stackEnvGroupAddCmd.PersistentFlags().StringArrayVar(
 		&linkedApps,
 		&linkedApps,
 		"linked-apps",
 		"linked-apps",
 		[]string{},
 		[]string{},
 		"list of stack apps to link this env group with",
 		"list of stack apps to link this env group with",
 	)
 	)
 
 
-	stackAddCmd.AddCommand(stackAddEnvGroupCmd)
+	stackEnvGroupCmd.AddCommand(stackEnvGroupAddCmd)
+	stackEnvGroupCmd.AddCommand(stackEnvGroupRemoveCmd)
 }
 }
 
 
 func stackAddEnvGroup(_ *types.GetAuthenticatedUserResponse, client *api.Client, args []string) error {
 func stackAddEnvGroup(_ *types.GetAuthenticatedUserResponse, client *api.Client, args []string) error {
@@ -160,3 +174,44 @@ func stackAddEnvGroup(_ *types.GetAuthenticatedUserResponse, client *api.Client,
 
 
 	return nil
 	return nil
 }
 }
+
+func stackRemoveEnvGroup(_ *types.GetAuthenticatedUserResponse, client *api.Client, args []string) error {
+	envGroupName := args[0]
+
+	if len(envGroupName) == 0 {
+		return fmt.Errorf("empty env group name")
+	} else if len(name) == 0 {
+		return fmt.Errorf("empty stack name")
+	}
+
+	listStacks, err := client.ListStacks(context.Background(), cliConf.Project, cliConf.Cluster, namespace)
+
+	if err != nil {
+		return err
+	}
+
+	stacks := *listStacks
+
+	var stackID string
+
+	for _, stk := range stacks {
+		if stk.Name == name {
+			stackID = stk.ID
+		}
+	}
+
+	if len(stackID) == 0 {
+		return fmt.Errorf("stack not found")
+	}
+
+	err = client.RemoveEnvGroupFromStack(context.Background(), cliConf.Project, cliConf.Cluster, namespace, stackID,
+		envGroupName)
+
+	if err != nil {
+		return err
+	}
+
+	color.New(color.FgGreen).Println("successfully removed env group")
+
+	return nil
+}