github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/application/restart.go (about)

     1  package application
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf/command_metadata"
     5  	"github.com/cloudfoundry/cli/cf/configuration/core_config"
     6  	. "github.com/cloudfoundry/cli/cf/i18n"
     7  	"github.com/cloudfoundry/cli/cf/models"
     8  	"github.com/cloudfoundry/cli/cf/requirements"
     9  	"github.com/cloudfoundry/cli/cf/terminal"
    10  	"github.com/codegangsta/cli"
    11  )
    12  
    13  type Restart struct {
    14  	ui      terminal.UI
    15  	config  core_config.Reader
    16  	starter ApplicationStarter
    17  	stopper ApplicationStopper
    18  	appReq  requirements.ApplicationRequirement
    19  }
    20  
    21  type ApplicationRestarter interface {
    22  	ApplicationRestart(app models.Application, orgName string, spaceName string)
    23  }
    24  
    25  func NewRestart(ui terminal.UI, config core_config.Reader, starter ApplicationStarter, stopper ApplicationStopper) (cmd *Restart) {
    26  	cmd = new(Restart)
    27  	cmd.ui = ui
    28  	cmd.config = config
    29  	cmd.starter = starter
    30  	cmd.stopper = stopper
    31  	return
    32  }
    33  
    34  func (cmd *Restart) Metadata() command_metadata.CommandMetadata {
    35  	return command_metadata.CommandMetadata{
    36  		Name:        "restart",
    37  		ShortName:   "rs",
    38  		Description: T("Restart an app"),
    39  		Usage:       T("CF_NAME restart APP_NAME"),
    40  	}
    41  }
    42  
    43  func (cmd *Restart) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) {
    44  	if len(c.Args()) != 1 {
    45  		cmd.ui.FailWithUsage(c)
    46  	}
    47  
    48  	cmd.appReq = requirementsFactory.NewApplicationRequirement(c.Args()[0])
    49  
    50  	reqs = []requirements.Requirement{
    51  		requirementsFactory.NewLoginRequirement(),
    52  		requirementsFactory.NewTargetedSpaceRequirement(),
    53  		cmd.appReq,
    54  	}
    55  	return
    56  }
    57  
    58  func (cmd *Restart) Run(c *cli.Context) {
    59  	app := cmd.appReq.GetApplication()
    60  	cmd.ApplicationRestart(app, cmd.config.OrganizationFields().Name, cmd.config.SpaceFields().Name)
    61  }
    62  
    63  func (cmd *Restart) ApplicationRestart(app models.Application, orgName, spaceName string) {
    64  	stoppedApp, err := cmd.stopper.ApplicationStop(app, orgName, spaceName)
    65  	if err != nil {
    66  		cmd.ui.Failed(err.Error())
    67  		return
    68  	}
    69  
    70  	cmd.ui.Say("")
    71  
    72  	_, err = cmd.starter.ApplicationStart(stoppedApp, orgName, spaceName)
    73  	if err != nil {
    74  		cmd.ui.Failed(err.Error())
    75  		return
    76  	}
    77  }