github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/application/restart_app_instance.go (about) 1 package application 2 3 import ( 4 "strconv" 5 6 "github.com/cloudfoundry/cli/cf/api/app_instances" 7 "github.com/cloudfoundry/cli/cf/command_metadata" 8 "github.com/cloudfoundry/cli/cf/configuration/core_config" 9 . "github.com/cloudfoundry/cli/cf/i18n" 10 "github.com/cloudfoundry/cli/cf/requirements" 11 "github.com/cloudfoundry/cli/cf/terminal" 12 "github.com/codegangsta/cli" 13 ) 14 15 type RestartAppInstance struct { 16 ui terminal.UI 17 config core_config.Reader 18 appReq requirements.ApplicationRequirement 19 appInstancesRepo app_instances.AppInstancesRepository 20 } 21 22 func NewRestartAppInstance(ui terminal.UI, config core_config.Reader, appInstancesRepo app_instances.AppInstancesRepository) (cmd *RestartAppInstance) { 23 cmd = new(RestartAppInstance) 24 cmd.ui = ui 25 cmd.config = config 26 cmd.appInstancesRepo = appInstancesRepo 27 return 28 } 29 30 func (cmd *RestartAppInstance) Metadata() command_metadata.CommandMetadata { 31 return command_metadata.CommandMetadata{ 32 Name: "restart-app-instance", 33 Description: T("Terminate the running application Instance at the given index and instantiate a new instance of the application with the same index"), 34 Usage: T("CF_NAME restart-app-instance APP_NAME INDEX"), 35 } 36 } 37 38 func (cmd *RestartAppInstance) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) { 39 if len(c.Args()) != 2 { 40 cmd.ui.FailWithUsage(c) 41 } 42 43 cmd.appReq = requirementsFactory.NewApplicationRequirement(c.Args()[0]) 44 45 reqs = []requirements.Requirement{ 46 requirementsFactory.NewLoginRequirement(), 47 requirementsFactory.NewTargetedSpaceRequirement(), 48 cmd.appReq, 49 } 50 51 return 52 } 53 54 func (cmd *RestartAppInstance) Run(c *cli.Context) { 55 app := cmd.appReq.GetApplication() 56 57 instance, err := strconv.Atoi(c.Args()[1]) 58 59 if err != nil { 60 cmd.ui.Failed(T("Instance must be a non-negative integer")) 61 } 62 63 cmd.ui.Say(T("Restarting instance {{.Instance}} of application {{.AppName}} as {{.Username}}", 64 map[string]interface{}{ 65 "Instance": instance, 66 "AppName": terminal.EntityNameColor(app.Name), 67 "Username": terminal.EntityNameColor(cmd.config.Username()), 68 })) 69 70 err = cmd.appInstancesRepo.DeleteInstance(app.Guid, instance) 71 if err != nil { 72 cmd.ui.Failed(err.Error()) 73 } 74 75 cmd.ui.Ok() 76 cmd.ui.Say("") 77 78 }