github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/delete_service_key_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror"
     5  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/flag"
     6  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/translatableerror"
     7  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/shared"
     8  )
     9  
    10  type DeleteServiceKeyCommand struct {
    11  	BaseCommand
    12  
    13  	RequiredArgs    flag.ServiceInstanceKey `positional-args:"yes"`
    14  	Force           bool                    `short:"f" description:"Force deletion without confirmation"`
    15  	Wait            bool                    `short:"w" long:"wait" description:"Wait for the operation to complete"`
    16  	relatedCommands interface{}             `related_commands:"service-keys"`
    17  }
    18  
    19  func (cmd DeleteServiceKeyCommand) Execute(args []string) error {
    20  	if err := cmd.SharedActor.CheckTarget(true, true); err != nil {
    21  		return err
    22  	}
    23  
    24  	if !cmd.Force {
    25  		delete, err := cmd.displayPrompt()
    26  		if err != nil {
    27  			return err
    28  		}
    29  
    30  		if !delete {
    31  			cmd.UI.DisplayText("Delete cancelled")
    32  			return nil
    33  		}
    34  	}
    35  
    36  	if err := cmd.displayIntro(); err != nil {
    37  		return err
    38  	}
    39  
    40  	stream, warnings, err := cmd.Actor.DeleteServiceKeyByServiceInstanceAndName(
    41  		cmd.RequiredArgs.ServiceInstance,
    42  		cmd.RequiredArgs.ServiceKey,
    43  		cmd.Config.TargetedSpace().GUID,
    44  	)
    45  	cmd.UI.DisplayWarnings(warnings)
    46  	switch err.(type) {
    47  	case nil:
    48  	case actionerror.ServiceKeyNotFoundError:
    49  		cmd.displayNotFound()
    50  	case actionerror.ServiceInstanceNotFoundError:
    51  		return translatableerror.ServiceInstanceNotFoundError{Name: cmd.RequiredArgs.ServiceInstance}
    52  	default:
    53  		return err
    54  	}
    55  
    56  	completed, err := shared.WaitForResult(stream, cmd.UI, cmd.Wait)
    57  	switch {
    58  	case err != nil:
    59  		return err
    60  	case completed:
    61  		cmd.UI.DisplayOK()
    62  		return nil
    63  	default:
    64  		cmd.UI.DisplayOK()
    65  		cmd.UI.DisplayText("Delete in progress.")
    66  		return nil
    67  	}
    68  }
    69  
    70  func (cmd DeleteServiceKeyCommand) Usage() string {
    71  	return `CF_NAME delete-service-key SERVICE_INSTANCE SERVICE_KEY [-f] [--wait]`
    72  }
    73  
    74  func (cmd DeleteServiceKeyCommand) Examples() string {
    75  	return `CF_NAME delete-service-key mydb mykey`
    76  }
    77  
    78  func (cmd DeleteServiceKeyCommand) displayPrompt() (bool, error) {
    79  	delete, err := cmd.UI.DisplayBoolPrompt(
    80  		false,
    81  		"Really delete the service key {{.ServiceKey}}?",
    82  		cmd.names(),
    83  	)
    84  	if err != nil {
    85  		return false, err
    86  	}
    87  
    88  	return delete, nil
    89  }
    90  
    91  func (cmd DeleteServiceKeyCommand) displayIntro() error {
    92  	user, err := cmd.Actor.GetCurrentUser()
    93  	if err != nil {
    94  		return err
    95  	}
    96  
    97  	names := cmd.names()
    98  	names["User"] = user.Name
    99  	cmd.UI.DisplayTextWithFlavor(
   100  		"Deleting key {{.ServiceKey}} for service instance {{.ServiceInstance}} as {{.User}}...",
   101  		names,
   102  	)
   103  
   104  	return nil
   105  }
   106  
   107  func (cmd DeleteServiceKeyCommand) displayNotFound() {
   108  	cmd.UI.DisplayNewline()
   109  	cmd.UI.DisplayText("Service key {{.ServiceKey}} does not exist for service instance {{.ServiceInstance}}.", cmd.names())
   110  }
   111  
   112  func (cmd DeleteServiceKeyCommand) names() map[string]interface{} {
   113  	return map[string]interface{}{
   114  		"ServiceInstance": cmd.RequiredArgs.ServiceInstance,
   115  		"ServiceKey":      cmd.RequiredArgs.ServiceKey,
   116  	}
   117  }