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

     1  package servicebroker
     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/i18n"
     9  	"github.com/cloudfoundry/cli/cf/requirements"
    10  	"github.com/cloudfoundry/cli/cf/terminal"
    11  	"github.com/cloudfoundry/cli/flags"
    12  	"github.com/cloudfoundry/cli/flags/flag"
    13  )
    14  
    15  type DeleteServiceBroker struct {
    16  	ui     terminal.UI
    17  	config core_config.Reader
    18  	repo   api.ServiceBrokerRepository
    19  }
    20  
    21  func init() {
    22  	command_registry.Register(&DeleteServiceBroker{})
    23  }
    24  
    25  func (cmd *DeleteServiceBroker) MetaData() command_registry.CommandMetadata {
    26  	fs := make(map[string]flags.FlagSet)
    27  	fs["f"] = &cliFlags.BoolFlag{Name: "f", Usage: T("Force deletion without confirmation")}
    28  
    29  	return command_registry.CommandMetadata{
    30  		Name:        "delete-service-broker",
    31  		Description: T("Delete a service broker"),
    32  		Usage:       T("CF_NAME delete-service-broker SERVICE_BROKER [-f]"),
    33  		Flags:       fs,
    34  	}
    35  }
    36  
    37  func (cmd *DeleteServiceBroker) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) (reqs []requirements.Requirement, err error) {
    38  	if len(fc.Args()) != 1 {
    39  		cmd.ui.Failed(T("Incorrect Usage. Requires an argument\n\n") + command_registry.Commands.CommandUsage("delete-service-broker"))
    40  	}
    41  
    42  	reqs = append(reqs, requirementsFactory.NewLoginRequirement())
    43  	return
    44  }
    45  
    46  func (cmd *DeleteServiceBroker) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command {
    47  	cmd.ui = deps.Ui
    48  	cmd.config = deps.Config
    49  	cmd.repo = deps.RepoLocator.GetServiceBrokerRepository()
    50  	return cmd
    51  }
    52  
    53  func (cmd *DeleteServiceBroker) Execute(c flags.FlagContext) {
    54  	brokerName := c.Args()[0]
    55  	if !c.Bool("f") && !cmd.ui.ConfirmDelete(T("service-broker"), brokerName) {
    56  		return
    57  	}
    58  
    59  	cmd.ui.Say(T("Deleting service broker {{.Name}} as {{.Username}}...",
    60  		map[string]interface{}{
    61  			"Name":     terminal.EntityNameColor(brokerName),
    62  			"Username": terminal.EntityNameColor(cmd.config.Username()),
    63  		}))
    64  
    65  	broker, apiErr := cmd.repo.FindByName(brokerName)
    66  
    67  	switch apiErr.(type) {
    68  	case nil:
    69  	case *errors.ModelNotFoundError:
    70  		cmd.ui.Ok()
    71  		cmd.ui.Warn(T("Service Broker {{.Name}} does not exist.", map[string]interface{}{"Name": brokerName}))
    72  		return
    73  	default:
    74  		cmd.ui.Failed(apiErr.Error())
    75  		return
    76  	}
    77  
    78  	apiErr = cmd.repo.Delete(broker.Guid)
    79  	if apiErr != nil {
    80  		cmd.ui.Failed(apiErr.Error())
    81  		return
    82  	}
    83  
    84  	cmd.ui.Ok()
    85  	return
    86  }