|
168 | 168 | import reactor.core.publisher.Flux; |
169 | 169 | import reactor.core.publisher.Mono; |
170 | 170 | import reactor.util.function.Tuple2; |
171 | | -import reactor.util.function.Tuple5; |
172 | 171 | import reactor.util.function.Tuples; |
173 | 172 |
|
174 | 173 | public final class DefaultApplications implements Applications { |
@@ -313,8 +312,7 @@ public Mono<Void> enableSsh(EnableApplicationSshRequest request) { |
313 | 312 | @Override |
314 | 313 | public Mono<ApplicationDetail> get(GetApplicationRequest request) { |
315 | 314 | return getApplicationV3(request.getName()) |
316 | | - .flatMap(this::getAuxiliaryContent) |
317 | | - .map(function(DefaultApplications::toApplicationDetail)) |
| 315 | + .flatMap(this::getApplicationDetails) |
318 | 316 | .transform(OperationsLogging.log("Get Application")) |
319 | 317 | .checkpoint(); |
320 | 318 | } |
@@ -1085,29 +1083,72 @@ private Mono<ApplicationResource> getApplicationV3(String application) { |
1085 | 1083 | "Application %s does not exist", application)); |
1086 | 1084 | } |
1087 | 1085 |
|
1088 | | - private Mono< |
1089 | | - Tuple5< |
1090 | | - List<String>, |
1091 | | - SummaryApplicationResponse, |
1092 | | - String, |
1093 | | - GetApplicationProcessStatisticsResponse, |
1094 | | - ApplicationResource>> |
1095 | | - getAuxiliaryContent(ApplicationResource applicationResource) { |
| 1086 | + private Mono<ApplicationDetail> getApplicationDetails(ApplicationResource applicationResource) { |
1096 | 1087 | String applicationId = applicationResource.getId(); |
1097 | 1088 | LifecycleData data = applicationResource.getLifecycle().getData(); |
1098 | | - String stackName = "<UNKNOWN>"; |
| 1089 | + String s = "<UNKNOWN>"; |
1099 | 1090 | if (data instanceof CnbData) { |
1100 | | - stackName = ((CnbData) data).getStack(); |
| 1091 | + s = ((CnbData) data).getStack(); |
1101 | 1092 | } else if (data instanceof BuildpackData) { |
1102 | | - stackName = ((BuildpackData) data).getStack(); |
| 1093 | + s = ((BuildpackData) data).getStack(); |
1103 | 1094 | } |
| 1095 | + String stackName = s; |
1104 | 1096 |
|
1105 | 1097 | return Mono.zip( |
1106 | | - getApplicationBuildpacks(applicationId), |
1107 | | - requestApplicationSummary(applicationId), |
1108 | | - Mono.just(stackName), |
1109 | | - requestApplicationStatisticsV3(applicationId), |
1110 | | - Mono.just(applicationResource)); |
| 1098 | + getApplicationBuildpacks(applicationId), |
| 1099 | + requestApplicationSummary(applicationId), |
| 1100 | + requestApplicationStatisticsV3(applicationId)) |
| 1101 | + .map( |
| 1102 | + function( |
| 1103 | + (buildpacks, summaryApplicationResponse, processStats) -> { |
| 1104 | + List<InstanceDetail> instanceDetails = |
| 1105 | + toInstanceDetailList(processStats); |
| 1106 | + long runningInstanceCount = |
| 1107 | + processStats.getResources().stream() |
| 1108 | + .filter( |
| 1109 | + details -> |
| 1110 | + details.getState() |
| 1111 | + == ProcessState |
| 1112 | + .RUNNING |
| 1113 | + || details.getState() |
| 1114 | + == ProcessState |
| 1115 | + .STARTING) |
| 1116 | + .count(); |
| 1117 | + |
| 1118 | + // TODO: we should use the `/v3/apps/:guid/manifest` endpoint to |
| 1119 | + // get the requested quotas |
| 1120 | + long diskQuota = -1; |
| 1121 | + long memoryLimit = -1; |
| 1122 | + if (!instanceDetails.isEmpty()) { |
| 1123 | + diskQuota = |
| 1124 | + instanceDetails.get(0).getDiskQuota() != null |
| 1125 | + ? instanceDetails.get(0).getDiskQuota() |
| 1126 | + : -1; |
| 1127 | + memoryLimit = |
| 1128 | + instanceDetails.get(0).getMemoryQuota() != null |
| 1129 | + ? instanceDetails.get(0).getMemoryQuota() |
| 1130 | + : -1; |
| 1131 | + } |
| 1132 | + |
| 1133 | + return ApplicationDetail.builder() |
| 1134 | + .buildpacks(buildpacks) |
| 1135 | + .id(applicationResource.getId()) |
| 1136 | + .name(applicationResource.getName()) |
| 1137 | + .requestedState( |
| 1138 | + applicationResource.getState().getValue()) |
| 1139 | + .instanceDetails(instanceDetails) |
| 1140 | + .instances(processStats.getResources().size()) |
| 1141 | + .runningInstances((int) runningInstanceCount) |
| 1142 | + .diskQuota((int) diskQuota) |
| 1143 | + .memoryLimit((int) memoryLimit) |
| 1144 | + .lastUploaded( |
| 1145 | + toDate( |
| 1146 | + summaryApplicationResponse |
| 1147 | + .getPackageUpdatedAt())) |
| 1148 | + .urls(toUrls(summaryApplicationResponse.getRoutes())) |
| 1149 | + .stack(stackName) |
| 1150 | + .build(); |
| 1151 | + })); |
1111 | 1152 | } |
1112 | 1153 |
|
1113 | 1154 | private Mono<String> getDefaultDomainId() { |
@@ -2273,45 +2314,6 @@ private Mono<AbstractApplicationResource> stopApplicationIfNotStopped( |
2273 | 2314 | : Mono.just(resource); |
2274 | 2315 | } |
2275 | 2316 |
|
2276 | | - private static ApplicationDetail toApplicationDetail( |
2277 | | - List<String> buildpacks, |
2278 | | - SummaryApplicationResponse summaryApplicationResponse, |
2279 | | - String stackName, |
2280 | | - GetApplicationProcessStatisticsResponse processStats, |
2281 | | - ApplicationResource application) { |
2282 | | - List<InstanceDetail> instanceDetails = toInstanceDetailList(processStats); |
2283 | | - long runningInstances = |
2284 | | - processStats.getResources().stream() |
2285 | | - .filter( |
2286 | | - details -> |
2287 | | - details.getState() == ProcessState.RUNNING |
2288 | | - || details.getState() == ProcessState.STARTING) |
2289 | | - .count(); |
2290 | | - |
2291 | | - // TODO: we should use the `/v3/apps/:guid/manifest` endpoint to get the requested quotas |
2292 | | - long diskQuota = -1; |
2293 | | - long memoryLimit = -1; |
2294 | | - if (!instanceDetails.isEmpty()) { |
2295 | | - diskQuota = instanceDetails.get(0).getDiskQuota(); |
2296 | | - memoryLimit = instanceDetails.get(0).getMemoryQuota(); |
2297 | | - } |
2298 | | - |
2299 | | - return ApplicationDetail.builder() |
2300 | | - .buildpacks(buildpacks) |
2301 | | - .id(application.getId()) |
2302 | | - .name(application.getName()) |
2303 | | - .requestedState(application.getState().getValue()) |
2304 | | - .instanceDetails(instanceDetails) |
2305 | | - .instances(processStats.getResources().size()) |
2306 | | - .runningInstances((int) runningInstances) |
2307 | | - .diskQuota((int) diskQuota) |
2308 | | - .memoryLimit((int) memoryLimit) |
2309 | | - .lastUploaded(toDate(summaryApplicationResponse.getPackageUpdatedAt())) |
2310 | | - .urls(toUrls(summaryApplicationResponse.getRoutes())) |
2311 | | - .stack(stackName) |
2312 | | - .build(); |
2313 | | - } |
2314 | | - |
2315 | 2317 | private static ApplicationEnvironments toApplicationEnvironments( |
2316 | 2318 | GetApplicationEnvironmentResponse response) { |
2317 | 2319 | return ApplicationEnvironments.builder() |
|
0 commit comments