github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/actor/v7action/application_summary.go (about) 1 package v7action 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/v2action" 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 7 ) 8 9 //go:generate counterfeiter . RouteActor 10 11 type RouteActor interface { 12 GetApplicationRoutes(appGUID string) (v2action.Routes, v2action.Warnings, error) 13 } 14 15 // ApplicationSummary represents an application with its processes and droplet. 16 type ApplicationSummary struct { 17 Application 18 CurrentDroplet Droplet 19 ProcessSummaries ProcessSummaries 20 Routes v2action.Routes 21 } 22 23 func (a ApplicationSummary) GetIsolationSegmentName() (string, bool) { 24 if a.hasIsolationSegment() { 25 return a.ProcessSummaries[0].InstanceDetails[0].IsolationSegment, true 26 } 27 return "", false 28 } 29 30 func (a ApplicationSummary) hasIsolationSegment() bool { 31 return len(a.ProcessSummaries) > 0 && 32 len(a.ProcessSummaries[0].InstanceDetails) > 0 && 33 len(a.ProcessSummaries[0].InstanceDetails[0].IsolationSegment) > 0 34 } 35 36 // GetApplicationSummaryByNameAndSpace returns an application with process and 37 // instance stats. 38 func (actor Actor) GetApplicationSummaryByNameAndSpace(appName string, spaceGUID string, withObfuscatedValues bool, routeActor RouteActor) (ApplicationSummary, Warnings, error) { 39 app, allWarnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID) 40 if err != nil { 41 return ApplicationSummary{}, allWarnings, err 42 } 43 44 processSummaries, processWarnings, err := actor.getProcessSummariesForApp(app.GUID, withObfuscatedValues) 45 allWarnings = append(allWarnings, processWarnings...) 46 if err != nil { 47 return ApplicationSummary{}, allWarnings, err 48 } 49 50 droplet, warnings, err := actor.GetCurrentDropletByApplication(app.GUID) 51 allWarnings = append(allWarnings, Warnings(warnings)...) 52 if err != nil { 53 if _, ok := err.(actionerror.DropletNotFoundError); !ok { 54 return ApplicationSummary{}, allWarnings, err 55 } 56 } 57 58 var appRoutes v2action.Routes 59 if routeActor != nil { 60 routes, warnings, err := routeActor.GetApplicationRoutes(app.GUID) 61 allWarnings = append(allWarnings, Warnings(warnings)...) 62 if err != nil { 63 if _, ok := err.(ccerror.ResourceNotFoundError); !ok { 64 return ApplicationSummary{}, allWarnings, err 65 } 66 } 67 appRoutes = routes 68 } 69 70 summary := ApplicationSummary{ 71 Application: app, 72 ProcessSummaries: processSummaries, 73 CurrentDroplet: droplet, 74 Routes: appRoutes, 75 } 76 return summary, allWarnings, nil 77 }