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