github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/droplets_command.go (about) 1 package v7 2 3 import ( 4 "strings" 5 "time" 6 7 "code.cloudfoundry.org/cli/actor/v7action" 8 "code.cloudfoundry.org/clock" 9 10 "code.cloudfoundry.org/cli/actor/sharedaction" 11 "code.cloudfoundry.org/cli/command" 12 "code.cloudfoundry.org/cli/command/flag" 13 "code.cloudfoundry.org/cli/command/v7/shared" 14 "code.cloudfoundry.org/cli/util/ui" 15 ) 16 17 //go:generate counterfeiter . DropletsActor 18 19 type DropletsActor interface { 20 GetApplicationDroplets(appName string, spaceGUID string) ([]v7action.Droplet, v7action.Warnings, error) 21 } 22 23 type DropletsCommand struct { 24 RequiredArgs flag.AppName `positional-args:"yes"` 25 usage interface{} `usage:"CF_NAME droplets APP_NAME"` 26 relatedCommands interface{} `related_commands:"set-droplet, create-package, packages, app, push"` 27 28 UI command.UI 29 Config command.Config 30 Actor DropletsActor 31 SharedActor command.SharedActor 32 } 33 34 func (cmd *DropletsCommand) Setup(config command.Config, ui command.UI) error { 35 cmd.UI = ui 36 cmd.Config = config 37 cmd.SharedActor = sharedaction.NewActor(config) 38 39 ccClient, _, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 40 if err != nil { 41 return err 42 } 43 cmd.Actor = v7action.NewActor(ccClient, config, nil, nil, clock.NewClock()) 44 45 return nil 46 } 47 48 func (cmd DropletsCommand) Execute(args []string) error { 49 50 err := cmd.SharedActor.CheckTarget(true, true) 51 if err != nil { 52 return err 53 } 54 55 user, err := cmd.Config.CurrentUser() 56 if err != nil { 57 return err 58 } 59 60 cmd.UI.DisplayTextWithFlavor("Getting droplets of app {{.AppName}} in org {{.CurrentOrg}} / space {{.CurrentSpace}} as {{.CurrentUser}}...", map[string]interface{}{ 61 "AppName": cmd.RequiredArgs.AppName, 62 "CurrentSpace": cmd.Config.TargetedSpace().Name, 63 "CurrentOrg": cmd.Config.TargetedOrganization().Name, 64 "CurrentUser": user.Name, 65 }) 66 cmd.UI.DisplayNewline() 67 68 droplets, warnings, err := cmd.Actor.GetApplicationDroplets(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID) 69 cmd.UI.DisplayWarnings(warnings) 70 if err != nil { 71 return err 72 } 73 74 if len(droplets) == 0 { 75 cmd.UI.DisplayText("No droplets found") 76 return nil 77 } 78 79 table := [][]string{ 80 { 81 cmd.UI.TranslateText("guid"), 82 cmd.UI.TranslateText("state"), 83 cmd.UI.TranslateText("created"), 84 }, 85 } 86 87 for _, droplet := range droplets { 88 t, err := time.Parse(time.RFC3339, droplet.CreatedAt) 89 if err != nil { 90 return err 91 } 92 93 table = append(table, []string{ 94 droplet.GUID, 95 cmd.UI.TranslateText(strings.ToLower(string(droplet.State))), 96 cmd.UI.UserFriendlyDate(t), 97 }) 98 } 99 100 cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding) 101 102 return nil 103 }