github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+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/api/cloudcontroller/ccv3" 6 ) 7 8 type ApplicationSummary struct { 9 Application 10 ProcessSummaries ProcessSummaries 11 Routes []Route 12 } 13 14 // v7action.DetailedApplicationSummary represents an application with its processes and droplet. 15 type DetailedApplicationSummary struct { 16 ApplicationSummary 17 CurrentDroplet Droplet 18 } 19 20 func (a ApplicationSummary) GetIsolationSegmentName() (string, bool) { 21 if a.hasIsolationSegment() { 22 return a.ProcessSummaries[0].InstanceDetails[0].IsolationSegment, true 23 } 24 return "", false 25 } 26 27 func (a ApplicationSummary) hasIsolationSegment() bool { 28 return len(a.ProcessSummaries) > 0 && 29 len(a.ProcessSummaries[0].InstanceDetails) > 0 && 30 len(a.ProcessSummaries[0].InstanceDetails[0].IsolationSegment) > 0 31 } 32 33 func (actor Actor) GetAppSummariesForSpace(spaceGUID string, labelSelector string) ([]ApplicationSummary, Warnings, error) { 34 var allWarnings Warnings 35 var allSummaries []ApplicationSummary 36 37 keys := []ccv3.Query{ 38 ccv3.Query{Key: ccv3.SpaceGUIDFilter, Values: []string{spaceGUID}}, 39 ccv3.Query{Key: ccv3.OrderBy, Values: []string{ccv3.NameOrder}}, 40 } 41 if len(labelSelector) > 0 { 42 keys = append(keys, ccv3.Query{Key: ccv3.LabelSelectorFilter, Values: []string{labelSelector}}) 43 } 44 apps, warnings, err := actor.CloudControllerClient.GetApplications(keys...) 45 allWarnings = append(allWarnings, warnings...) 46 if err != nil { 47 return nil, allWarnings, err 48 } 49 50 for _, app := range apps { 51 summary, summaryWarnings, err := actor.createSummary(actor.convertCCToActorApplication(app), false) 52 allWarnings = append(allWarnings, summaryWarnings...) 53 if err != nil { 54 return nil, allWarnings, err 55 } 56 allSummaries = append(allSummaries, summary) 57 58 } 59 60 return allSummaries, allWarnings, nil 61 } 62 63 func (actor Actor) GetDetailedAppSummary(appName, spaceGUID string, withObfuscatedValues bool) (DetailedApplicationSummary, Warnings, error) { 64 var allWarnings Warnings 65 66 app, actorWarnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID) 67 allWarnings = append(allWarnings, actorWarnings...) 68 if err != nil { 69 return DetailedApplicationSummary{}, actorWarnings, err 70 } 71 72 summary, warnings, err := actor.createSummary(app, withObfuscatedValues) 73 allWarnings = append(allWarnings, warnings...) 74 if err != nil { 75 return DetailedApplicationSummary{}, allWarnings, err 76 } 77 78 detailedSummary, warnings, err := actor.addDroplet(summary) 79 allWarnings = append(allWarnings, warnings...) 80 if err != nil { 81 return DetailedApplicationSummary{}, allWarnings, err 82 } 83 84 return detailedSummary, allWarnings, err 85 } 86 87 func (actor Actor) createSummary(app Application, withObfuscatedValues bool) (ApplicationSummary, Warnings, error) { 88 var allWarnings Warnings 89 90 processSummaries, processWarnings, err := actor.getProcessSummariesForApp(app.GUID, withObfuscatedValues) 91 allWarnings = append(allWarnings, processWarnings...) 92 if err != nil { 93 return ApplicationSummary{}, allWarnings, err 94 } 95 96 var appRoutes []Route 97 routes, warnings, err := actor.GetApplicationRoutes(app.GUID) 98 allWarnings = append(allWarnings, warnings...) 99 if err != nil { 100 return ApplicationSummary{}, allWarnings, err 101 } 102 appRoutes = routes 103 104 return ApplicationSummary{ 105 Application: Application{ 106 Name: app.Name, 107 GUID: app.GUID, 108 State: app.State, 109 LifecycleType: app.LifecycleType, 110 LifecycleBuildpacks: app.LifecycleBuildpacks, 111 }, 112 ProcessSummaries: processSummaries, 113 Routes: appRoutes, 114 }, allWarnings, nil 115 116 } 117 118 func (actor Actor) addDroplet(summary ApplicationSummary) (DetailedApplicationSummary, Warnings, error) { 119 var allWarnings Warnings 120 121 droplet, warnings, err := actor.GetCurrentDropletByApplication(summary.GUID) 122 allWarnings = append(allWarnings, warnings...) 123 if err != nil { 124 if _, ok := err.(actionerror.DropletNotFoundError); !ok { 125 return DetailedApplicationSummary{}, allWarnings, err 126 } 127 } 128 return DetailedApplicationSummary{ 129 ApplicationSummary: summary, 130 CurrentDroplet: droplet, 131 }, allWarnings, nil 132 }