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 }