github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v6/tasks_command.go (about) 1 package v6 2 3 import ( 4 "strconv" 5 "time" 6 7 "code.cloudfoundry.org/cli/actor/sharedaction" 8 "code.cloudfoundry.org/cli/actor/v3action" 9 "code.cloudfoundry.org/cli/command" 10 "code.cloudfoundry.org/cli/command/flag" 11 "code.cloudfoundry.org/cli/command/v6/shared" 12 "code.cloudfoundry.org/cli/util/ui" 13 ) 14 15 //These constants are only for filling in translations. 16 const ( 17 runningState = "RUNNING" 18 cancelingState = "CANCELING" 19 pendingState = "PENDING" 20 succeededState = "SUCCEEDED" 21 ) 22 23 //go:generate counterfeiter . TasksActor 24 25 type TasksActor interface { 26 GetApplicationByNameAndSpace(appName string, spaceGUID string) (v3action.Application, v3action.Warnings, error) 27 GetApplicationTasks(appGUID string, sortOrder v3action.SortOrder) ([]v3action.Task, v3action.Warnings, error) 28 } 29 30 type TasksCommand struct { 31 RequiredArgs flag.AppName `positional-args:"yes"` 32 usage interface{} `usage:"CF_NAME tasks APP_NAME"` 33 relatedCommands interface{} `related_commands:"apps, logs, run-task, terminate-task"` 34 35 UI command.UI 36 Config command.Config 37 SharedActor command.SharedActor 38 Actor TasksActor 39 } 40 41 func (cmd *TasksCommand) Setup(config command.Config, ui command.UI) error { 42 cmd.UI = ui 43 cmd.Config = config 44 cmd.SharedActor = sharedaction.NewActor(config) 45 46 client, _, err := shared.NewV3BasedClients(config, ui, true) 47 if err != nil { 48 return err 49 } 50 cmd.Actor = v3action.NewActor(client, config, nil, nil) 51 52 return nil 53 } 54 55 func (cmd TasksCommand) Execute(args []string) error { 56 err := cmd.SharedActor.CheckTarget(true, true) 57 if err != nil { 58 return err 59 } 60 61 space := cmd.Config.TargetedSpace() 62 63 user, err := cmd.Config.CurrentUser() 64 if err != nil { 65 return err 66 } 67 68 application, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(cmd.RequiredArgs.AppName, space.GUID) 69 cmd.UI.DisplayWarnings(warnings) 70 if err != nil { 71 return err 72 } 73 74 cmd.UI.DisplayTextWithFlavor("Getting tasks for app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUser}}...", map[string]interface{}{ 75 "AppName": cmd.RequiredArgs.AppName, 76 "OrgName": cmd.Config.TargetedOrganization().Name, 77 "SpaceName": space.Name, 78 "CurrentUser": user.Name, 79 }) 80 81 tasks, warnings, err := cmd.Actor.GetApplicationTasks(application.GUID, v3action.Descending) 82 cmd.UI.DisplayWarnings(warnings) 83 if err != nil { 84 return err 85 } 86 87 cmd.UI.DisplayOK() 88 89 table := [][]string{ 90 { 91 cmd.UI.TranslateText("id"), 92 cmd.UI.TranslateText("name"), 93 cmd.UI.TranslateText("state"), 94 cmd.UI.TranslateText("start time"), 95 cmd.UI.TranslateText("command"), 96 }, 97 } 98 for _, task := range tasks { 99 t, err := time.Parse(time.RFC3339, task.CreatedAt) 100 if err != nil { 101 return err 102 } 103 104 if task.Command == "" { 105 task.Command = "[hidden]" 106 } 107 108 table = append(table, []string{ 109 strconv.FormatInt(task.SequenceID, 10), 110 task.Name, 111 cmd.UI.TranslateText(string(task.State)), 112 t.Format(time.RFC1123), 113 task.Command, 114 }) 115 } 116 117 cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding) 118 119 return nil 120 }