mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-30 18:17:55 +00:00 
			
		
		
		
	 4391af6e71
			
		
	
	4391af6e71
	
	
	
		
			
			Done this way, existing tests pass, and it makes logical sense, so we're likely to have the least impact like this.
		
			
				
	
	
		
			99 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package command
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/mitchellh/cli"
 | |
| 	"github.com/posener/complete"
 | |
| )
 | |
| 
 | |
| var _ cli.Command = (*DeleteCommand)(nil)
 | |
| var _ cli.CommandAutocomplete = (*DeleteCommand)(nil)
 | |
| 
 | |
| type DeleteCommand struct {
 | |
| 	*BaseCommand
 | |
| }
 | |
| 
 | |
| func (c *DeleteCommand) Synopsis() string {
 | |
| 	return "Delete secrets and configuration"
 | |
| }
 | |
| 
 | |
| func (c *DeleteCommand) Help() string {
 | |
| 	helpText := `
 | |
| Usage: vault delete [options] PATH
 | |
| 
 | |
|   Deletes secrets and configuration from Vault at the given path. The behavior
 | |
|   of "delete" is delegated to the backend corresponding to the given path.
 | |
| 
 | |
|   Remove data in the status secret backend:
 | |
| 
 | |
|       $ vault delete secret/my-secret
 | |
| 
 | |
|   Uninstall an encryption key in the transit backend:
 | |
| 
 | |
|       $ vault delete transit/keys/my-key
 | |
| 
 | |
|   Delete an IAM role:
 | |
| 
 | |
|       $ vault delete aws/roles/ops
 | |
| 
 | |
|   For a full list of examples and paths, please see the documentation that
 | |
|   corresponds to the secret backend in use.
 | |
| 
 | |
| ` + c.Flags().Help()
 | |
| 
 | |
| 	return strings.TrimSpace(helpText)
 | |
| }
 | |
| 
 | |
| func (c *DeleteCommand) Flags() *FlagSets {
 | |
| 	return c.flagSet(FlagSetHTTP)
 | |
| }
 | |
| 
 | |
| func (c *DeleteCommand) AutocompleteArgs() complete.Predictor {
 | |
| 	return c.PredictVaultFiles()
 | |
| }
 | |
| 
 | |
| func (c *DeleteCommand) AutocompleteFlags() complete.Flags {
 | |
| 	return c.Flags().Completions()
 | |
| }
 | |
| 
 | |
| func (c *DeleteCommand) Run(args []string) int {
 | |
| 	f := c.Flags()
 | |
| 
 | |
| 	if err := f.Parse(args); err != nil {
 | |
| 		c.UI.Error(err.Error())
 | |
| 		return 1
 | |
| 	}
 | |
| 
 | |
| 	args = f.Args()
 | |
| 	switch {
 | |
| 	case len(args) < 1:
 | |
| 		c.UI.Error(fmt.Sprintf("Not enough arguments (expected 1, got %d)", len(args)))
 | |
| 		return 1
 | |
| 	case len(args) > 1:
 | |
| 		c.UI.Error(fmt.Sprintf("Too many arguments (expected 1, got %d)", len(args)))
 | |
| 		return 1
 | |
| 	}
 | |
| 
 | |
| 	client, err := c.Client()
 | |
| 	if err != nil {
 | |
| 		c.UI.Error(err.Error())
 | |
| 		return 2
 | |
| 	}
 | |
| 
 | |
| 	path := sanitizePath(args[0])
 | |
| 
 | |
| 	secret, err := client.Logical().Delete(path)
 | |
| 	if err != nil {
 | |
| 		c.UI.Error(fmt.Sprintf("Error deleting %s: %s", path, err))
 | |
| 		if secret != nil {
 | |
| 			OutputSecret(c.UI, secret)
 | |
| 		}
 | |
| 		return 2
 | |
| 	}
 | |
| 
 | |
| 	c.UI.Info(fmt.Sprintf("Success! Data deleted (if it existed) at: %s", path))
 | |
| 	return 0
 | |
| }
 |