github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+incompatible/actor/v2action/application_summary.go (about) 1 package v2action 2 3 import "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 4 5 type ApplicationSummary struct { 6 Application 7 Stack Stack 8 IsolationSegment string 9 RunningInstances []ApplicationInstanceWithStats 10 Routes []Route 11 } 12 13 func (app ApplicationSummary) StartingOrRunningInstanceCount() int { 14 count := 0 15 for _, instance := range app.RunningInstances { 16 if instance.State == ApplicationInstanceState(ccv2.ApplicationInstanceStarting) || 17 instance.State == ApplicationInstanceState(ccv2.ApplicationInstanceRunning) { 18 count += 1 19 } 20 } 21 return count 22 } 23 24 func (actor Actor) GetApplicationSummaryByNameAndSpace(name string, spaceGUID string) (ApplicationSummary, Warnings, error) { 25 var allWarnings Warnings 26 27 app, warnings, err := actor.GetApplicationByNameAndSpace(name, spaceGUID) 28 allWarnings = append(allWarnings, warnings...) 29 if err != nil { 30 return ApplicationSummary{}, allWarnings, err 31 } 32 33 applicationSummary := ApplicationSummary{Application: app} 34 35 // cloud controller calls the instance reporter only when the desired 36 // application state is STARTED 37 if app.State == ccv2.ApplicationStarted { 38 var instances []ApplicationInstanceWithStats 39 instances, warnings, err = actor.GetApplicationInstancesWithStatsByApplication(app.GUID) 40 allWarnings = append(allWarnings, warnings...) 41 42 switch err.(type) { 43 case nil: 44 applicationSummary.RunningInstances = instances 45 46 if len(instances) > 0 { 47 applicationSummary.IsolationSegment = instances[0].IsolationSegment 48 } 49 case ApplicationInstancesNotFoundError: 50 // don't set instances in summary 51 default: 52 return ApplicationSummary{}, allWarnings, err 53 } 54 } 55 56 routes, warnings, err := actor.GetApplicationRoutes(app.GUID) 57 allWarnings = append(allWarnings, warnings...) 58 if err != nil { 59 return ApplicationSummary{}, allWarnings, err 60 } 61 applicationSummary.Routes = routes 62 63 stack, warnings, err := actor.GetStack(app.StackGUID) 64 allWarnings = append(allWarnings, warnings...) 65 if err != nil { 66 return ApplicationSummary{}, allWarnings, err 67 } 68 applicationSummary.Stack = stack 69 70 return applicationSummary, allWarnings, nil 71 }