github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/actor/v3action/application_summary.go (about) 1 package v3action 2 3 // ApplicationSummary represents an application with its processes and droplet. 4 type ApplicationSummary struct { 5 Application 6 Processes []Process 7 CurrentDroplet Droplet 8 } 9 10 // GetApplicationSummaryByNameAndSpace returns an application with process and 11 // instance stats. 12 func (actor Actor) GetApplicationSummaryByNameAndSpace(appName string, 13 spaceGUID string) (ApplicationSummary, Warnings, error) { 14 app, allWarnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID) 15 if err != nil { 16 return ApplicationSummary{}, allWarnings, err 17 } 18 19 ccv3Droplet, warnings, err := actor.CloudControllerClient.GetApplicationCurrentDroplet(app.GUID) 20 allWarnings = append(allWarnings, Warnings(warnings)...) 21 if err != nil { 22 return ApplicationSummary{}, allWarnings, err 23 } 24 droplet := Droplet{ 25 Stack: ccv3Droplet.Stack, 26 } 27 for _, ccv3Buildpack := range ccv3Droplet.Buildpacks { 28 droplet.Buildpacks = append(droplet.Buildpacks, Buildpack(ccv3Buildpack)) 29 } 30 31 ccv3Processes, warnings, err := actor.CloudControllerClient.GetApplicationProcesses(app.GUID) 32 allWarnings = append(allWarnings, Warnings(warnings)...) 33 if err != nil { 34 return ApplicationSummary{}, allWarnings, err 35 } 36 37 var processes []Process 38 for _, ccv3Process := range ccv3Processes { 39 processGUID := ccv3Process.GUID 40 instances, warnings, err := actor.CloudControllerClient.GetProcessInstances(processGUID) 41 allWarnings = append(allWarnings, Warnings(warnings)...) 42 if err != nil { 43 return ApplicationSummary{}, allWarnings, err 44 } 45 46 process := Process{ 47 Type: ccv3Process.Type, 48 Instances: []Instance{}, 49 MemoryInMB: ccv3Process.MemoryInMB, 50 } 51 for _, instance := range instances { 52 process.Instances = append(process.Instances, Instance(instance)) 53 } 54 55 processes = append(processes, process) 56 } 57 58 summary := ApplicationSummary{ 59 Application: app, 60 Processes: processes, 61 CurrentDroplet: droplet, 62 } 63 return summary, allWarnings, nil 64 }