github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/command/v6/v3_restart_app_instance_command.go (about) 1 package v6 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v3action" 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccversion" 7 "code.cloudfoundry.org/cli/command" 8 "code.cloudfoundry.org/cli/command/flag" 9 "code.cloudfoundry.org/cli/command/v6/shared" 10 ) 11 12 //go:generate counterfeiter . V3RestartAppInstanceActor 13 14 type V3RestartAppInstanceActor interface { 15 CloudControllerAPIVersion() string 16 DeleteInstanceByApplicationNameSpaceProcessTypeAndIndex(appName string, spaceGUID string, processType string, instanceIndex int) (v3action.Warnings, error) 17 } 18 19 type V3RestartAppInstanceCommand struct { 20 RequiredArgs flag.AppInstance `positional-args:"yes"` 21 ProcessType string `long:"process" default:"web" description:"Process to restart"` 22 usage interface{} `usage:"CF_NAME v3-restart-app-instance APP_NAME INDEX [--process PROCESS]"` 23 relatedCommands interface{} `related_commands:"v3-restart"` 24 25 UI command.UI 26 Config command.Config 27 SharedActor command.SharedActor 28 Actor V3RestartAppInstanceActor 29 } 30 31 func (cmd *V3RestartAppInstanceCommand) Setup(config command.Config, ui command.UI) error { 32 cmd.UI = ui 33 cmd.Config = config 34 cmd.SharedActor = sharedaction.NewActor(config) 35 36 ccClient, _, err := shared.NewV3BasedClients(config, ui, true, "") 37 if err != nil { 38 return err 39 } 40 cmd.Actor = v3action.NewActor(ccClient, config, nil, nil) 41 42 return nil 43 } 44 45 func (cmd V3RestartAppInstanceCommand) Execute(args []string) error { 46 cmd.UI.DisplayWarning(command.ExperimentalWarning) 47 48 err := command.MinimumCCAPIVersionCheck(cmd.Actor.CloudControllerAPIVersion(), ccversion.MinVersionApplicationFlowV3) 49 if err != nil { 50 return err 51 } 52 53 err = cmd.SharedActor.CheckTarget(true, true) 54 if err != nil { 55 return err 56 } 57 58 user, err := cmd.Config.CurrentUser() 59 if err != nil { 60 return err 61 } 62 63 cmd.UI.DisplayTextWithFlavor("Restarting instance {{.InstanceIndex}} of process {{.ProcessType}} of app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ 64 "InstanceIndex": cmd.RequiredArgs.Index, 65 "ProcessType": cmd.ProcessType, 66 "AppName": cmd.RequiredArgs.AppName, 67 "Username": user.Name, 68 "OrgName": cmd.Config.TargetedOrganization().Name, 69 "SpaceName": cmd.Config.TargetedSpace().Name, 70 }) 71 72 warnings, err := cmd.Actor.DeleteInstanceByApplicationNameSpaceProcessTypeAndIndex(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID, cmd.ProcessType, cmd.RequiredArgs.Index) 73 cmd.UI.DisplayWarnings(warnings) 74 if err != nil { 75 return err 76 } 77 78 cmd.UI.DisplayOK() 79 return nil 80 }