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

     1  package route
     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/i18n"
     8  	"github.com/cloudfoundry/cli/cf/requirements"
     9  	"github.com/cloudfoundry/cli/cf/terminal"
    10  	"github.com/cloudfoundry/cli/flags"
    11  )
    12  
    13  type CheckRoute struct {
    14  	ui         terminal.UI
    15  	config     core_config.Reader
    16  	routeRepo  api.RouteRepository
    17  	domainRepo api.DomainRepository
    18  }
    19  
    20  func init() {
    21  	command_registry.Register(&CheckRoute{})
    22  }
    23  
    24  func (cmd *CheckRoute) MetaData() command_registry.CommandMetadata {
    25  	return command_registry.CommandMetadata{
    26  		Name:        "check-route",
    27  		Description: T("Perform a simple check to determine whether a route currently exists or not."),
    28  		Usage:       T("CF_NAME check-route HOST DOMAIN"),
    29  	}
    30  }
    31  
    32  func (cmd *CheckRoute) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) (reqs []requirements.Requirement, err error) {
    33  	if len(fc.Args()) != 2 {
    34  		cmd.ui.Failed(T("Incorrect Usage. Requires host and domain as arguments\n\n") + command_registry.Commands.CommandUsage("check-route"))
    35  	}
    36  
    37  	reqs = []requirements.Requirement{
    38  		requirementsFactory.NewTargetedOrgRequirement(),
    39  		requirementsFactory.NewLoginRequirement(),
    40  	}
    41  	return
    42  }
    43  
    44  func (cmd *CheckRoute) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command {
    45  	cmd.ui = deps.Ui
    46  	cmd.config = deps.Config
    47  	cmd.routeRepo = deps.RepoLocator.GetRouteRepository()
    48  	cmd.domainRepo = deps.RepoLocator.GetDomainRepository()
    49  	return cmd
    50  }
    51  
    52  func (cmd *CheckRoute) Execute(c flags.FlagContext) {
    53  	hostName := c.Args()[0]
    54  	domainName := c.Args()[1]
    55  
    56  	cmd.ui.Say(T("Checking for route..."))
    57  
    58  	exists, err := cmd.CheckRoute(hostName, domainName)
    59  	if err != nil {
    60  		cmd.ui.Failed(err.Error())
    61  	}
    62  
    63  	cmd.ui.Ok()
    64  
    65  	if exists {
    66  		cmd.ui.Say(T("Route {{.HostName}}.{{.DomainName}} does exist",
    67  			map[string]interface{}{"HostName": hostName, "DomainName": domainName},
    68  		))
    69  	} else {
    70  		cmd.ui.Say(T("Route {{.HostName}}.{{.DomainName}} does not exist",
    71  			map[string]interface{}{"HostName": hostName, "DomainName": domainName},
    72  		))
    73  	}
    74  }
    75  
    76  func (cmd *CheckRoute) CheckRoute(hostName, domainName string) (bool, error) {
    77  	orgGuid := cmd.config.OrganizationFields().Guid
    78  	domain, err := cmd.domainRepo.FindByNameInOrg(domainName, orgGuid)
    79  	if err != nil {
    80  		return false, err
    81  	}
    82  
    83  	found, err := cmd.routeRepo.CheckIfExists(hostName, domain)
    84  	if err != nil {
    85  		return false, err
    86  	}
    87  
    88  	return found, nil
    89  }