Skip to content

Commit d305454

Browse files
committed
DefaultApplications: refactor .get() into single method
1 parent 9b32880 commit d305454

File tree

1 file changed

+60
-58
lines changed

1 file changed

+60
-58
lines changed

cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java

Lines changed: 60 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@
168168
import reactor.core.publisher.Flux;
169169
import reactor.core.publisher.Mono;
170170
import reactor.util.function.Tuple2;
171-
import reactor.util.function.Tuple5;
172171
import reactor.util.function.Tuples;
173172

174173
public final class DefaultApplications implements Applications {
@@ -313,8 +312,7 @@ public Mono<Void> enableSsh(EnableApplicationSshRequest request) {
313312
@Override
314313
public Mono<ApplicationDetail> get(GetApplicationRequest request) {
315314
return getApplicationV3(request.getName())
316-
.flatMap(this::getAuxiliaryContent)
317-
.map(function(DefaultApplications::toApplicationDetail))
315+
.flatMap(this::getApplicationDetails)
318316
.transform(OperationsLogging.log("Get Application"))
319317
.checkpoint();
320318
}
@@ -1085,29 +1083,72 @@ private Mono<ApplicationResource> getApplicationV3(String application) {
10851083
"Application %s does not exist", application));
10861084
}
10871085

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) {
10961087
String applicationId = applicationResource.getId();
10971088
LifecycleData data = applicationResource.getLifecycle().getData();
1098-
String stackName = "<UNKNOWN>";
1089+
String s = "<UNKNOWN>";
10991090
if (data instanceof CnbData) {
1100-
stackName = ((CnbData) data).getStack();
1091+
s = ((CnbData) data).getStack();
11011092
} else if (data instanceof BuildpackData) {
1102-
stackName = ((BuildpackData) data).getStack();
1093+
s = ((BuildpackData) data).getStack();
11031094
}
1095+
String stackName = s;
11041096

11051097
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+
}));
11111152
}
11121153

11131154
private Mono<String> getDefaultDomainId() {
@@ -2273,45 +2314,6 @@ private Mono<AbstractApplicationResource> stopApplicationIfNotStopped(
22732314
: Mono.just(resource);
22742315
}
22752316

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-
23152317
private static ApplicationEnvironments toApplicationEnvironments(
23162318
GetApplicationEnvironmentResponse response) {
23172319
return ApplicationEnvironments.builder()

0 commit comments

Comments
 (0)