[CLI] Add a confirmation prompt when deleting a policy pack (#6034)
Fixes: #4292
This commit is contained in:
parent
7979fe3ff8
commit
21de78291f
|
@ -11,6 +11,9 @@ CHANGELOG
|
||||||
|
|
||||||
- [CLI] Allow `pulumi console` to accept a stack name
|
- [CLI] Allow `pulumi console` to accept a stack name
|
||||||
[#6031](https://github.com/pulumi/pulumi/pull/6031)
|
[#6031](https://github.com/pulumi/pulumi/pull/6031)
|
||||||
|
|
||||||
|
- [CLI] Add a confirmation promt when using `pulumi policy rm`
|
||||||
|
[#6034](https://github.com/pulumi/pulumi/pull/6034)
|
||||||
|
|
||||||
- [CLI] Ensure errors with the Pulumi credentials file
|
- [CLI] Ensure errors with the Pulumi credentials file
|
||||||
give the user some information on how to resolve the problem
|
give the user some information on how to resolve the problem
|
||||||
|
|
|
@ -15,38 +15,61 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/pulumi/pulumi/pkg/v2/backend"
|
"github.com/pulumi/pulumi/pkg/v2/backend"
|
||||||
|
"github.com/pulumi/pulumi/pkg/v2/backend/display"
|
||||||
"github.com/pulumi/pulumi/sdk/v2/go/common/util/cmdutil"
|
"github.com/pulumi/pulumi/sdk/v2/go/common/util/cmdutil"
|
||||||
|
"github.com/pulumi/pulumi/sdk/v2/go/common/util/result"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
const allKeyword = "all"
|
const allKeyword = "all"
|
||||||
|
|
||||||
func newPolicyRmCmd() *cobra.Command {
|
func newPolicyRmCmd() *cobra.Command {
|
||||||
|
var yes bool
|
||||||
var cmd = &cobra.Command{
|
var cmd = &cobra.Command{
|
||||||
Use: "rm <org-name>/<policy-pack-name> <all|version>",
|
Use: "rm <org-name>/<policy-pack-name> <all|version>",
|
||||||
Args: cmdutil.ExactArgs(2),
|
Args: cmdutil.ExactArgs(2),
|
||||||
Short: "Removes a Policy Pack from a Pulumi organization",
|
Short: "Removes a Policy Pack from a Pulumi organization",
|
||||||
Long: "Removes a Policy Pack from a Pulumi organization. " +
|
Long: "Removes a Policy Pack from a Pulumi organization. " +
|
||||||
"The Policy Pack must be disabled from all Policy Groups before it can be removed.",
|
"The Policy Pack must be disabled from all Policy Groups before it can be removed.",
|
||||||
Run: cmdutil.RunFunc(func(cmd *cobra.Command, cliArgs []string) error {
|
Run: cmdutil.RunResultFunc(func(cmd *cobra.Command, args []string) result.Result {
|
||||||
|
yes = yes || skipConfirmations()
|
||||||
// Obtain current PolicyPack, tied to the Pulumi service backend.
|
// Obtain current PolicyPack, tied to the Pulumi service backend.
|
||||||
policyPack, err := requirePolicyPack(cliArgs[0])
|
policyPack, err := requirePolicyPack(args[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return result.FromError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var version *string
|
var version *string
|
||||||
if cliArgs[1] != allKeyword {
|
if args[1] != allKeyword {
|
||||||
version = &cliArgs[1]
|
version = &args[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := display.Options{
|
||||||
|
Color: cmdutil.GetGlobalColorization(),
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt := fmt.Sprintf("This will permanently remove the '%s' policy!", args[0])
|
||||||
|
if !yes && !confirmPrompt(prompt, args[0], opts) {
|
||||||
|
fmt.Println("confirmation declined")
|
||||||
|
return result.Bail()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attempt to remove the Policy Pack.
|
// Attempt to remove the Policy Pack.
|
||||||
return policyPack.Remove(commandContext(), backend.PolicyPackOperation{
|
err = policyPack.Remove(commandContext(), backend.PolicyPackOperation{
|
||||||
VersionTag: version, Scopes: cancellationScopes})
|
VersionTag: version, Scopes: cancellationScopes})
|
||||||
|
if err != nil {
|
||||||
|
return result.FromError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmd.PersistentFlags().BoolVarP(
|
||||||
|
&yes, "yes", "y", false,
|
||||||
|
"Skip confirmation prompts, and proceed with removal anyway")
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue