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