github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/servicekey/delete_service_key.go (about)

     1  package servicekey
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf/api"
     5  	"github.com/cloudfoundry/cli/cf/command_registry"
     6  	"github.com/cloudfoundry/cli/cf/configuration/core_config"
     7  	"github.com/cloudfoundry/cli/cf/errors"
     8  	"github.com/cloudfoundry/cli/cf/requirements"
     9  	"github.com/cloudfoundry/cli/cf/terminal"
    10  	"github.com/cloudfoundry/cli/flags"
    11  	"github.com/cloudfoundry/cli/flags/flag"
    12  
    13  	. "github.com/cloudfoundry/cli/cf/i18n"
    14  )
    15  
    16  type DeleteServiceKey struct {
    17  	ui             terminal.UI
    18  	config         core_config.Reader
    19  	serviceRepo    api.ServiceRepository
    20  	serviceKeyRepo api.ServiceKeyRepository
    21  }
    22  
    23  func init() {
    24  	command_registry.Register(&DeleteServiceKey{})
    25  }
    26  
    27  func (cmd *DeleteServiceKey) MetaData() command_registry.CommandMetadata {
    28  	fs := make(map[string]flags.FlagSet)
    29  	fs["f"] = &cliFlags.BoolFlag{Name: "f", Usage: T("Force deletion without confirmation")}
    30  
    31  	return command_registry.CommandMetadata{
    32  		Name:        "delete-service-key",
    33  		ShortName:   "dsk",
    34  		Description: T("Delete a service key"),
    35  		Usage: T(`CF_NAME delete-service-key SERVICE_INSTANCE SERVICE_KEY [-f]
    36  
    37  EXAMPLE:
    38     CF_NAME delete-service-key mydb mykey`),
    39  		Flags: fs,
    40  	}
    41  }
    42  
    43  func (cmd *DeleteServiceKey) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) ([]requirements.Requirement, error) {
    44  	if len(fc.Args()) != 2 {
    45  		cmd.ui.Failed(T("Incorrect Usage. Requires SERVICE_INSTANCE SERVICE_KEY as arguments\n\n") + command_registry.Commands.CommandUsage("delete-service-key"))
    46  	}
    47  
    48  	loginRequirement := requirementsFactory.NewLoginRequirement()
    49  	targetSpaceRequirement := requirementsFactory.NewTargetedSpaceRequirement()
    50  
    51  	reqs := []requirements.Requirement{loginRequirement, targetSpaceRequirement}
    52  	return reqs, nil
    53  }
    54  
    55  func (cmd *DeleteServiceKey) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command {
    56  	cmd.ui = deps.Ui
    57  	cmd.config = deps.Config
    58  	cmd.serviceRepo = deps.RepoLocator.GetServiceRepository()
    59  	cmd.serviceKeyRepo = deps.RepoLocator.GetServiceKeyRepository()
    60  	return cmd
    61  }
    62  
    63  func (cmd *DeleteServiceKey) Execute(c flags.FlagContext) {
    64  	serviceInstanceName := c.Args()[0]
    65  	serviceKeyName := c.Args()[1]
    66  
    67  	if !c.Bool("f") {
    68  		if !cmd.ui.ConfirmDelete(T("service key"), serviceKeyName) {
    69  			return
    70  		}
    71  	}
    72  
    73  	cmd.ui.Say(T("Deleting key {{.ServiceKeyName}} for service instance {{.ServiceInstanceName}} as {{.CurrentUser}}...",
    74  		map[string]interface{}{
    75  			"ServiceKeyName":      terminal.EntityNameColor(serviceKeyName),
    76  			"ServiceInstanceName": terminal.EntityNameColor(serviceInstanceName),
    77  			"CurrentUser":         terminal.EntityNameColor(cmd.config.Username()),
    78  		}))
    79  
    80  	serviceInstance, err := cmd.serviceRepo.FindInstanceByName(serviceInstanceName)
    81  	if err != nil {
    82  		cmd.ui.Ok()
    83  		cmd.ui.Warn(T("Service instance {{.ServiceInstanceName}} does not exist.",
    84  			map[string]interface{}{
    85  				"ServiceInstanceName": serviceInstanceName,
    86  			}))
    87  		return
    88  	}
    89  
    90  	serviceKey, err := cmd.serviceKeyRepo.GetServiceKey(serviceInstance.Guid, serviceKeyName)
    91  	if err != nil || serviceKey.Fields.Guid == "" {
    92  		switch err.(type) {
    93  		case *errors.NotAuthorizedError:
    94  			cmd.ui.Say(T("No service key {{.ServiceKeyName}} found for service instance {{.ServiceInstanceName}}",
    95  				map[string]interface{}{
    96  					"ServiceKeyName":      terminal.EntityNameColor(serviceKeyName),
    97  					"ServiceInstanceName": terminal.EntityNameColor(serviceInstanceName)}))
    98  			return
    99  		default:
   100  			cmd.ui.Ok()
   101  			cmd.ui.Warn(T("Service key {{.ServiceKeyName}} does not exist for service instance {{.ServiceInstanceName}}.",
   102  				map[string]interface{}{
   103  					"ServiceKeyName":      serviceKeyName,
   104  					"ServiceInstanceName": serviceInstanceName,
   105  				}))
   106  			return
   107  		}
   108  	}
   109  
   110  	err = cmd.serviceKeyRepo.DeleteServiceKey(serviceKey.Fields.Guid)
   111  	if err != nil {
   112  		cmd.ui.Failed(err.Error())
   113  		return
   114  	}
   115  
   116  	cmd.ui.Ok()
   117  }