From de14ca2d023ddbf1e1e5065c954df70d4375305f Mon Sep 17 00:00:00 2001 From: Daniel Garnier-Moiroux Date: Tue, 16 Dec 2025 22:05:14 +0100 Subject: [PATCH 1/6] DefaultApplications: add constructor non-reactive params --- .../_DefaultCloudFoundryOperations.java | 16 +- .../applications/DefaultApplications.java | 762 ++++++------------ .../DefaultCloudFoundryOperationsTest.java | 45 +- .../applications/DefaultApplicationsTest.java | 5 +- .../IntegrationTestConfiguration.java | 1 + 5 files changed, 274 insertions(+), 555 deletions(-) diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java index 1d21f29b2b..2b0a9996c2 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java @@ -79,7 +79,7 @@ public Advanced advanced() { @Override @Value.Derived public Applications applications() { - return new DefaultApplications(getCloudFoundryClientPublisher(), getDopplerClientPublisher(), getSpaceId()); + return new DefaultApplications(getCloudFoundryClient(), getDopplerClient(), getSpaceId().block()); } @Override @@ -318,12 +318,14 @@ private static boolean hasText(CharSequence str) { private static Flux requestOrganizations(Mono cloudFoundryClientPublisher, String organization) { return cloudFoundryClientPublisher - .flatMapMany(cloudFoundryClient -> PaginationUtils - .requestClientV3Resources(page -> cloudFoundryClient.organizationsV3() - .list(ListOrganizationsRequest.builder() - .name(organization) - .page(page) - .build()))); + .flatMapMany(cloudFoundryClient -> PaginationUtils + .requestClientV3Resources(page -> cloudFoundryClient.organizationsV3() + .list(ListOrganizationsRequest.builder() + .name(organization) + .page(page) + .build()) + ) + ); } private static Flux requestSpaces(Mono cloudFoundryClientPublisher, String organizationId, String space) { diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java index e51ddbb472..b670f2c70b 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java @@ -19,7 +19,6 @@ import static org.cloudfoundry.client.v3.LifecycleType.BUILDPACK; import static org.cloudfoundry.util.DelayUtils.exponentialBackOff; import static org.cloudfoundry.util.tuple.TupleUtils.function; -import static org.cloudfoundry.util.tuple.TupleUtils.predicate; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -210,26 +209,35 @@ public final class DefaultApplications implements Applications { private static final String APP_FEATURE_SSH = "ssh"; - private final Mono cloudFoundryClient; + private final CloudFoundryClient cloudFoundryClient; - private final Mono dopplerClient; + private final DopplerClient dopplerClient; private final RandomWords randomWords; - private final Mono spaceId; + private final String spaceId; + public DefaultApplications( + CloudFoundryClient cloudFoundryClient, DopplerClient dopplerClient, String spaceId) { + this(cloudFoundryClient, dopplerClient, new WordListRandomWords(), spaceId); + } + + /** + * @deprecated Please use {@link DefaultApplications(CloudFoundryClient, DopplerClient, String)} instead. + */ + @Deprecated public DefaultApplications( Mono cloudFoundryClient, Mono dopplerClient, Mono spaceId) { - this(cloudFoundryClient, dopplerClient, new WordListRandomWords(), spaceId); + this(cloudFoundryClient.block(), dopplerClient.block(), spaceId.block()); } DefaultApplications( - Mono cloudFoundryClient, - Mono dopplerClient, + CloudFoundryClient cloudFoundryClient, + DopplerClient dopplerClient, RandomWords randomWords, - Mono spaceId) { + String spaceId) { this.cloudFoundryClient = cloudFoundryClient; this.dopplerClient = dopplerClient; this.randomWords = randomWords; @@ -238,74 +246,49 @@ public DefaultApplications( @Override public Mono copySource(CopySourceApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationId( - cloudFoundryClient, - request.getName(), - spaceId), - getApplicationIdFromOrgSpace( - cloudFoundryClient, - request.getTargetName(), - spaceId, - request.getTargetOrganization(), - request.getTargetSpace())))) + return Mono.zip( + getApplicationId(this.cloudFoundryClient, request.getName(), spaceId), + getApplicationIdFromOrgSpace( + cloudFoundryClient, + request.getTargetName(), + spaceId, + request.getTargetOrganization(), + request.getTargetSpace())) .flatMap( function( - (cloudFoundryClient, sourceApplicationId, targetApplicationId) -> + (sourceApplicationId, targetApplicationId) -> copyBits( cloudFoundryClient, request.getStagingTimeout(), sourceApplicationId, targetApplicationId) - .thenReturn( - Tuples.of( - cloudFoundryClient, - targetApplicationId)))) + .thenReturn(targetApplicationId))) .filter( - predicate( - (cloudFoundryClient, targetApplicationId) -> - Optional.ofNullable(request.getRestart()).orElse(false))) + targetApplicationId -> + Optional.ofNullable(request.getRestart()).orElse(false)) .flatMap( - function( - (cloudFoundryClient, targetApplicationId) -> - restartApplication( - cloudFoundryClient, - request.getTargetName(), - targetApplicationId, - request.getStagingTimeout(), - request.getStartupTimeout()))) + targetApplicationId -> + restartApplication( + cloudFoundryClient, + request.getTargetName(), + targetApplicationId, + request.getStagingTimeout(), + request.getStartupTimeout())) .transform(OperationsLogging.log("Copy Application Source")) .checkpoint(); } @Override public Mono delete(DeleteApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) + return getRoutesAndApplicationId( + cloudFoundryClient, + request, + spaceId, + Optional.ofNullable(request.getDeleteRoutes()).orElse(false)) + .map(function((routes, applicationId) -> Tuples.of(routes, applicationId))) .flatMap( function( - (cloudFoundryClient, spaceId) -> - getRoutesAndApplicationId( - cloudFoundryClient, - request, - spaceId, - Optional.ofNullable( - request.getDeleteRoutes()) - .orElse(false)) - .map( - function( - (routes, applicationId) -> - Tuples.of( - cloudFoundryClient, - routes, - applicationId))))) - .flatMap( - function( - (cloudFoundryClient, routes, applicationId) -> + (routes, applicationId) -> deleteRoutes( cloudFoundryClient, request.getCompletionTimeout(), @@ -322,32 +305,13 @@ public Mono delete(DeleteApplicationRequest request) { @Override public Mono disableSsh(DisableApplicationSshRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdV3( - cloudFoundryClient, - request.getName(), - spaceId)))) - .flatMap( - function( - (cloudFoundryClient, applicationId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - Mono.just(applicationId), - getSshEnabled(cloudFoundryClient, applicationId)))) - .filter( - predicate( - (cloudFoundryClient, applicationId, sshEnabled) -> - sshEnabled.equals(true))) + return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) + // TODO dgarnier: is this correct? + .filterWhen(applicationId -> getSshEnabled(cloudFoundryClient, applicationId)) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - requestUpdateApplicationSsh( - cloudFoundryClient, applicationId, false))) + applicationId -> + requestUpdateApplicationSsh( + cloudFoundryClient, applicationId, false)) .then() .transform(OperationsLogging.log("Disable Application SSH")) .checkpoint(); @@ -355,32 +319,15 @@ public Mono disableSsh(DisableApplicationSshRequest request) { @Override public Mono enableSsh(EnableApplicationSshRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdV3( - cloudFoundryClient, - request.getName(), - spaceId)))) - .flatMap( - function( - (cloudFoundryClient, applicationId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - Mono.just(applicationId), - getSshEnabled(cloudFoundryClient, applicationId)))) - .filter( - predicate( - (cloudFoundryClient, applicationId, sshEnabled) -> - sshEnabled.equals(false))) + return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) + .filterWhen( + applicationId -> + getSshEnabled(cloudFoundryClient, applicationId) + .map(enabled -> !enabled)) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - requestUpdateApplicationSsh( - cloudFoundryClient, applicationId, true))) + applicationId -> + requestUpdateApplicationSsh( + cloudFoundryClient, applicationId, true)) .then() .transform(OperationsLogging.log("Enable Application SSH")) .checkpoint(); @@ -388,52 +335,32 @@ public Mono enableSsh(EnableApplicationSshRequest request) { @Override public Mono get(GetApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplication( - cloudFoundryClient, - request.getName(), - spaceId)))) - .flatMap(function(DefaultApplications::getAuxiliaryContent)) + return getApplication(cloudFoundryClient, request.getName(), spaceId) + .flatMap(app -> getAuxiliaryContent(cloudFoundryClient, app)) .map(function(DefaultApplications::toApplicationDetail)) .transform(OperationsLogging.log("Get Application")) .checkpoint(); } + // TODO dgarnier: manifest v3? @Override public Mono getApplicationManifest(GetApplicationManifestRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationId( - cloudFoundryClient, - request.getName(), - spaceId)))) + return getApplicationId(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - Mono.just(applicationId), - requestApplicationSummary( - cloudFoundryClient, applicationId)))) + applicationId -> + Mono.zip( + Mono.just(applicationId), + requestApplicationSummary( + cloudFoundryClient, applicationId))) .flatMap( function( - (cloudFoundryClient, applicationId, response) -> + (applicationId, summary) -> Mono.zip( getApplicationBuildpacks( cloudFoundryClient, applicationId), - Mono.just(response), + Mono.just(summary), getStackName( - cloudFoundryClient, - response.getStackId())))) + cloudFoundryClient, summary.getStackId())))) .flatMap(function(DefaultApplications::toApplicationManifest)) .transform(OperationsLogging.log("Get Application Manifest")) .checkpoint(); @@ -442,17 +369,10 @@ public Mono getApplicationManifest(GetApplicationManifestRe @Override public Mono getEnvironments( GetApplicationEnvironmentsRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) + return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdV3( - cloudFoundryClient, - request.getName(), - spaceId)))) - .flatMap(function(DefaultApplications::requestApplicationEnvironment)) + applicationId -> + requestApplicationEnvironment(cloudFoundryClient, applicationId)) .map(DefaultApplications::toApplicationEnvironments) .transform(OperationsLogging.log("Get Application Environments")) .checkpoint(); @@ -460,26 +380,13 @@ public Mono getEnvironments( @Override public Flux getEvents(GetApplicationEventsRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationId( - cloudFoundryClient, - request.getName(), - spaceId)))) + return getApplicationId(cloudFoundryClient, request.getName(), spaceId) .flatMapMany( - function( - (cloudFoundryClient, applicationId) -> - requestEvents(applicationId, cloudFoundryClient) - .take( - Optional.ofNullable( - request - .getMaxNumberOfEvents()) - .orElse( - MAX_NUMBER_OF_RECENT_EVENTS)))) + applicationId -> + requestEvents(applicationId, cloudFoundryClient) + .take( + Optional.ofNullable(request.getMaxNumberOfEvents()) + .orElse(MAX_NUMBER_OF_RECENT_EVENTS))) .map(DefaultApplications::convertToApplicationEvent) .transform(OperationsLogging.log("Get Application Events")) .checkpoint(); @@ -487,12 +394,7 @@ public Flux getEvents(GetApplicationEventsRequest request) { @Override public Mono getHealthCheck(GetApplicationHealthCheckRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - getApplication( - cloudFoundryClient, request.getName(), spaceId))) + return getApplication(cloudFoundryClient, request.getName(), spaceId) .map(DefaultApplications::toHealthCheck) .transform(OperationsLogging.log("Get Application Health Check")) .checkpoint(); @@ -500,8 +402,7 @@ public Mono getHealthCheck(GetApplicationHealthCheckRequ @Override public Flux list() { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap(function(DefaultApplications::requestSpaceSummary)) + return requestSpaceSummary(cloudFoundryClient, spaceId) .flatMapMany(DefaultApplications::extractApplications) .map(DefaultApplications::toApplicationSummary) .transform(OperationsLogging.log("List Applications")) @@ -510,20 +411,8 @@ public Flux list() { @Override public Flux listTasks(ListApplicationTasksRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdV3( - cloudFoundryClient, - request.getName(), - spaceId)))) - .flatMapMany( - function( - (cloudFoundryClient, applicationId) -> - requestListTasks(cloudFoundryClient, applicationId))) + return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) + .flatMapMany(applicationId -> requestListTasks(cloudFoundryClient, applicationId)) .map(DefaultApplications::toTask) .transform(OperationsLogging.log("List Application Tasks")) .checkpoint(); @@ -531,12 +420,7 @@ public Flux listTasks(ListApplicationTasksRequest request) { @Override public Flux logs(LogsRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - getApplicationId( - cloudFoundryClient, request.getName(), spaceId))) + return getApplicationId(cloudFoundryClient, request.getName(), spaceId) .flatMapMany( applicationId -> getLogs(this.dopplerClient, applicationId, request.getRecent())) @@ -610,55 +494,41 @@ public Mono push(PushApplicationRequest request) { .checkpoint(); } + // TODO dgarnier: pass orgId to constructor? @Override public Mono pushManifest(PushApplicationManifestRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getSpaceOrganizationId(cloudFoundryClient, spaceId), - Mono.just(spaceId)))) - .flatMap( - function( - (cloudFoundryClient, organizationId, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - listAvailableDomains( - cloudFoundryClient, organizationId), - Mono.just(spaceId)))) + return getSpaceOrganizationId(cloudFoundryClient, spaceId) + .flatMap(organizationId -> listAvailableDomains(cloudFoundryClient, organizationId)) .flatMapMany( - function( - (cloudFoundryClient, availableDomains, spaceId) -> - Flux.fromIterable(request.getManifests()) - .flatMap( - manifest -> { - if (manifest.getPath() != null) { - return pushApplication( - cloudFoundryClient, - availableDomains, - manifest, - this.randomWords, - request, - spaceId); - } else if (!manifest.getDocker() - .getImage() - .isEmpty()) { - return pushDocker( - cloudFoundryClient, - availableDomains, - manifest, - this.randomWords, - request, - spaceId); - } else { - throw new IllegalStateException( - "One of application or" - + " dockerImage must be" - + " supplied"); - } - }))) + availableDomains -> + Flux.fromIterable(request.getManifests()) + .flatMap( + manifest -> { + if (manifest.getPath() != null) { + return pushApplication( + cloudFoundryClient, + availableDomains, + manifest, + this.randomWords, + request, + spaceId); + } else if (!manifest.getDocker() + .getImage() + .isEmpty()) { + return pushDocker( + cloudFoundryClient, + availableDomains, + manifest, + this.randomWords, + request, + spaceId); + } else { + throw new IllegalStateException( + "One of application or" + + " dockerImage must be" + + " supplied"); + } + })) .then() .transform(OperationsLogging.log("Push Manifest")) .checkpoint(); @@ -674,74 +544,38 @@ public Mono pushManifestV3(PushManifestV3Request request) { throw new RuntimeException("Could not serialize manifest", e); } - return Mono.zip(this.cloudFoundryClient, this.spaceId) + return applyManifestAndWaitForCompletion(cloudFoundryClient, spaceId, manifestSerialized) + .flatMapMany(ignored -> Flux.fromIterable(request.getManifest().getApplications())) .flatMap( - function( - (cloudFoundryClient, spaceId) -> - applyManifestAndWaitForCompletion( - cloudFoundryClient, - spaceId, - manifestSerialized) - .then( - Mono.just( - Tuples.of( + manifestApp -> + getApplicationIdV3( + cloudFoundryClient, manifestApp.getName(), spaceId) + .flatMap( + appId -> + Mono.zip( + Mono.just(appId), + createPackage( cloudFoundryClient, - spaceId))))) - .flatMapMany( - function( - (cloudFoundryClient, spaceId) -> - Flux.fromIterable(request.getManifest().getApplications()) - .map( - manifestApp -> - Tuples.of( + appId, + manifestApp))) + .flatMap( + function( + (appId, packageId) -> + buildAndStageAndWaitForRunning( cloudFoundryClient, - spaceId, - manifestApp)))) - .flatMap( - function( - (cloudFoundryClient, spaceId, manifestApp) -> - getApplicationIdV3( - cloudFoundryClient, - manifestApp.getName(), - spaceId) - .flatMap( - appId -> - Mono.zip( - Mono.just(appId), - createPackage( - cloudFoundryClient, - appId, - manifestApp))) - .flatMap( - function( - (appId, packageId) -> - buildAndStageAndWaitForRunning( - cloudFoundryClient, - manifestApp, - packageId, - appId))))) + manifestApp, + packageId, + appId)))) .then(); } @Override public Mono rename(RenameApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationId( - cloudFoundryClient, - request.getName(), - spaceId)))) + return getApplicationId(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - requestUpdateApplicationName( - cloudFoundryClient, - applicationId, - request.getNewName()))) + applicationId -> + requestUpdateApplicationName( + cloudFoundryClient, applicationId, request.getNewName())) .then() .transform(OperationsLogging.log("Rename Application")) .checkpoint(); @@ -749,101 +583,54 @@ public Mono rename(RenameApplicationRequest request) { @Override public Mono restage(RestageApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationId( - cloudFoundryClient, - request.getName(), - spaceId)))) + return getApplicationId(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - restageApplication( - cloudFoundryClient, - request.getName(), - applicationId, - request.getStagingTimeout(), - request.getStartupTimeout()))) + applicationId -> + restageApplication( + cloudFoundryClient, + request.getName(), + applicationId, + request.getStagingTimeout(), + request.getStartupTimeout())) .transform(OperationsLogging.log("Restage Application")) .checkpoint(); } @Override public Mono restart(RestartApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) + return getApplication(cloudFoundryClient, request.getName(), spaceId) + .flatMap(resource -> stopApplicationIfNotStopped(cloudFoundryClient, resource)) .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplication( - cloudFoundryClient, - request.getName(), - spaceId)))) - .flatMap( - function( - (cloudFoundryClient, resource) -> - Mono.zip( - Mono.just(cloudFoundryClient), - stopApplicationIfNotStopped( - cloudFoundryClient, resource)))) - .flatMap( - function( - (cloudFoundryClient, stoppedApplication) -> - startApplicationAndWait( - cloudFoundryClient, - request.getName(), - ResourceUtils.getId(stoppedApplication), - request.getStagingTimeout(), - request.getStartupTimeout()))) + stoppedApplication -> + startApplicationAndWait( + cloudFoundryClient, + request.getName(), + ResourceUtils.getId(stoppedApplication), + request.getStagingTimeout(), + request.getStartupTimeout())) .transform(OperationsLogging.log("Restart Application")) .checkpoint(); } @Override public Mono restartInstance(RestartApplicationInstanceRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationId( - cloudFoundryClient, - request.getName(), - spaceId)))) + return getApplicationId(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - requestTerminateApplicationInstance( - cloudFoundryClient, - applicationId, - String.valueOf(request.getInstanceIndex())))) + applicationId -> + requestTerminateApplicationInstance( + cloudFoundryClient, + applicationId, + String.valueOf(request.getInstanceIndex()))) .transform(OperationsLogging.log("Restart Application Instance")) .checkpoint(); } @Override public Mono runTask(RunApplicationTaskRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) + return getApplicationIdV3(cloudFoundryClient, request.getApplicationName(), spaceId) .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdV3( - cloudFoundryClient, - request.getApplicationName(), - spaceId)))) - .flatMap( - function( - (cloudFoundryClient, applicationId) -> - requestCreateTask( - cloudFoundryClient, applicationId, request))) + applicationId -> + requestCreateTask(cloudFoundryClient, applicationId, request)) .map(DefaultApplications::toTask) .transform(OperationsLogging.log("Run Application Task Instance")) .checkpoint(); @@ -851,67 +638,43 @@ public Mono runTask(RunApplicationTaskRequest request) { @Override public Mono scale(ScaleApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .filter(predicate((cloudFoundryClient, spaceId) -> areModifiersPresent(request))) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationId( - cloudFoundryClient, - request.getName(), - spaceId)))) + if (!areModifiersPresent(request)) { + return Mono.empty(); + } + return getApplicationId(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - requestUpdateApplicationScale( - cloudFoundryClient, - applicationId, - request.getDiskLimit(), - request.getInstances(), - request.getMemoryLimit())))) - .filter( - predicate( - (cloudFoundryClient, resource) -> - isRestartRequired(request, resource))) + applicationId -> + requestUpdateApplicationScale( + cloudFoundryClient, + applicationId, + request.getDiskLimit(), + request.getInstances(), + request.getMemoryLimit())) + .filter(resource -> isRestartRequired(request, resource)) .flatMap( - function( - (cloudFoundryClient, resource) -> - restartApplication( - cloudFoundryClient, - request.getName(), - ResourceUtils.getId(resource), - request.getStagingTimeout(), - request.getStartupTimeout()))) + resource -> + restartApplication( + cloudFoundryClient, + request.getName(), + ResourceUtils.getId(resource), + request.getStagingTimeout(), + request.getStartupTimeout())) .transform(OperationsLogging.log("Scale Application")) .checkpoint(); } @Override public Mono setEnvironmentVariable(SetEnvironmentVariableApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) + return getApplication(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplication( - cloudFoundryClient, - request.getName(), - spaceId)))) - .flatMap( - function( - (cloudFoundryClient, resource) -> - requestUpdateApplicationEnvironment( - cloudFoundryClient, - ResourceUtils.getId(resource), - addToEnvironment( - getEnvironment(resource), - request.getVariableName(), - request.getVariableValue())))) + resource -> + requestUpdateApplicationEnvironment( + cloudFoundryClient, + ResourceUtils.getId(resource), + addToEnvironment( + getEnvironment(resource), + request.getVariableName(), + request.getVariableValue()))) .then() .transform(OperationsLogging.log("Set Application Environment Variable")) .checkpoint(); @@ -919,23 +682,11 @@ public Mono setEnvironmentVariable(SetEnvironmentVariableApplicationReques @Override public Mono setHealthCheck(SetApplicationHealthCheckRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationId( - cloudFoundryClient, - request.getName(), - spaceId)))) + return getApplicationId(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - requestUpdateApplicationHealthCheckType( - cloudFoundryClient, - applicationId, - request.getType()))) + applicationId -> + requestUpdateApplicationHealthCheckType( + cloudFoundryClient, applicationId, request.getType())) .then() .transform(OperationsLogging.log("Set Application Health Check")) .checkpoint(); @@ -943,17 +694,8 @@ public Mono setHealthCheck(SetApplicationHealthCheckRequest request) { @Override public Mono sshEnabled(ApplicationSshEnabledRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdV3( - cloudFoundryClient, - request.getName(), - spaceId)))) - .flatMap(function(DefaultApplications::getSshEnabled)) + return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) + .flatMap(applicationId -> getSshEnabled(cloudFoundryClient, applicationId)) .transform(OperationsLogging.log("Is Application SSH Enabled")) .checkpoint(); } @@ -971,44 +713,25 @@ private static Mono getSshEnabled( @Override public Mono start(StartApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdWhere( - cloudFoundryClient, - request.getName(), - spaceId, - isNotIn(STARTED_STATE))))) + return getApplicationIdWhere( + cloudFoundryClient, request.getName(), spaceId, isNotIn(STARTED_STATE)) .flatMap( - function( - (cloudFoundryClient, applicationId) -> - startApplicationAndWait( - cloudFoundryClient, - request.getName(), - applicationId, - request.getStagingTimeout(), - request.getStartupTimeout()))) + applicationId -> + startApplicationAndWait( + cloudFoundryClient, + request.getName(), + applicationId, + request.getStagingTimeout(), + request.getStartupTimeout())) .transform(OperationsLogging.log("Start Application")) .checkpoint(); } @Override public Mono stop(StopApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdWhere( - cloudFoundryClient, - request.getName(), - spaceId, - isNotIn(STOPPED_STATE))))) - .flatMap(function(DefaultApplications::stopApplication)) + return getApplicationIdWhere( + cloudFoundryClient, request.getName(), spaceId, isNotIn(STOPPED_STATE)) + .flatMap(applicationId -> stopApplication(cloudFoundryClient, applicationId)) .then() .transform(OperationsLogging.log("Stop Application")) .checkpoint(); @@ -1016,26 +739,12 @@ public Mono stop(StopApplicationRequest request) { @Override public Mono terminateTask(TerminateApplicationTaskRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) + return getApplicationIdV3(cloudFoundryClient, request.getApplicationName(), spaceId) .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplicationIdV3( - cloudFoundryClient, - request.getApplicationName(), - spaceId)))) - .flatMap( - function( - (cloudFoundryClient, applicationId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getTaskId( - cloudFoundryClient, - applicationId, - request.getSequenceId())))) - .flatMap(function(DefaultApplications::requestTerminateTask)) + applicationId -> + getTaskId( + cloudFoundryClient, applicationId, request.getSequenceId())) + .flatMap(taskId -> requestTerminateTask(cloudFoundryClient, taskId)) .then() .transform(OperationsLogging.log("Terminate Application Task Instance")) .checkpoint(); @@ -1043,25 +752,15 @@ public Mono terminateTask(TerminateApplicationTaskRequest request) { @Override public Mono unsetEnvironmentVariable(UnsetEnvironmentVariableApplicationRequest request) { - return Mono.zip(this.cloudFoundryClient, this.spaceId) - .flatMap( - function( - (cloudFoundryClient, spaceId) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getApplication( - cloudFoundryClient, - request.getName(), - spaceId)))) + return getApplication(cloudFoundryClient, request.getName(), spaceId) .flatMap( - function( - (cloudFoundryClient, resource) -> - requestUpdateApplicationEnvironment( - cloudFoundryClient, - ResourceUtils.getId(resource), - removeFromEnvironment( - getEnvironment(resource), - request.getVariableName())))) + resource -> + requestUpdateApplicationEnvironment( + cloudFoundryClient, + ResourceUtils.getId(resource), + removeFromEnvironment( + getEnvironment(resource), + request.getVariableName()))) .then() .transform(OperationsLogging.log("Unset Application Environment Variable")) .checkpoint(); @@ -1601,7 +1300,7 @@ private static int getInstances(AbstractApplicationResource resource) { } private static Flux getLogs( - Mono dopplerClient, String applicationId, Boolean recent) { + DopplerClient dopplerClient, String applicationId, Boolean recent) { if (Optional.ofNullable(recent).orElse(false)) { return requestLogsRecent(dopplerClient, applicationId) .filter(e -> EventType.LOG_MESSAGE == e.getEventType()) @@ -2502,19 +2201,14 @@ private static Flux requestListTasks( } private static Flux requestLogsRecent( - Mono dopplerClient, String applicationId) { - return dopplerClient.flatMapMany( - client -> - client.recentLogs( - RecentLogsRequest.builder().applicationId(applicationId).build())); + DopplerClient dopplerClient, String applicationId) { + return dopplerClient.recentLogs( + RecentLogsRequest.builder().applicationId(applicationId).build()); } private static Flux requestLogsStream( - Mono dopplerClient, String applicationId) { - return dopplerClient.flatMapMany( - client -> - client.stream( - StreamRequest.builder().applicationId(applicationId).build())); + DopplerClient dopplerClient, String applicationId) { + return dopplerClient.stream(StreamRequest.builder().applicationId(applicationId).build()); } private static Flux requestOrganizationSpacesByName( diff --git a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/DefaultCloudFoundryOperationsTest.java b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/DefaultCloudFoundryOperationsTest.java index 02e671a3e6..2dfa183183 100644 --- a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/DefaultCloudFoundryOperationsTest.java +++ b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/DefaultCloudFoundryOperationsTest.java @@ -17,20 +17,45 @@ package org.cloudfoundry.operations; import static org.assertj.core.api.Assertions.assertThat; - +import static org.cloudfoundry.operations.TestObjects.fill; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import org.cloudfoundry.client.v3.organizations.ListOrganizationsResponse; +import org.cloudfoundry.client.v3.organizations.OrganizationResource; +import org.cloudfoundry.client.v3.spaces.ListSpacesResponse; +import org.cloudfoundry.client.v3.spaces.SpaceResource; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; final class DefaultCloudFoundryOperationsTest extends AbstractOperationsTest { - private final DefaultCloudFoundryOperations operations = - DefaultCloudFoundryOperations.builder() - .cloudFoundryClient(this.cloudFoundryClient) - .dopplerClient(this.dopplerClient) - .routingClient(this.routingClient) - .organization(TEST_ORGANIZATION_NAME) - .space(TEST_SPACE_NAME) - .uaaClient(this.uaaClient) - .build(); + private DefaultCloudFoundryOperations operations; + + @BeforeEach + void setUp() { + ListOrganizationsResponse orgsResponse = + fill(ListOrganizationsResponse.builder()) + .resource(fill(OrganizationResource.builder()).build()) + .build(); + when(this.organizationsV3.list(any())).thenReturn(Mono.just(orgsResponse)); + ListSpacesResponse spacesResponse = + fill(ListSpacesResponse.builder()) + .resource(fill(SpaceResource.builder()).build()) + .build(); + when(this.spacesV3.list(any())).thenReturn(Mono.just(spacesResponse)); + + operations = + DefaultCloudFoundryOperations.builder() + .cloudFoundryClient(this.cloudFoundryClient) + .dopplerClient(this.dopplerClient) + .routingClient(this.routingClient) + .organization(TEST_ORGANIZATION_NAME) + .space(TEST_SPACE_NAME) + .uaaClient(this.uaaClient) + .build(); + } @Test void advanced() { diff --git a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java index cdc9619d2d..2398d3325d 100644 --- a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java +++ b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java @@ -161,10 +161,7 @@ final class DefaultApplicationsTest extends AbstractOperationsTest { private final DefaultApplications applications = new DefaultApplications( - Mono.just(this.cloudFoundryClient), - Mono.just(this.dopplerClient), - this.randomWords, - Mono.just(TEST_SPACE_ID)); + this.cloudFoundryClient, this.dopplerClient, this.randomWords, TEST_SPACE_ID); @Test void copySourceNoRestartOrgSpace() { diff --git a/integration-test/src/test/java/org/cloudfoundry/IntegrationTestConfiguration.java b/integration-test/src/test/java/org/cloudfoundry/IntegrationTestConfiguration.java index c0b3f44b30..6622fbef8b 100644 --- a/integration-test/src/test/java/org/cloudfoundry/IntegrationTestConfiguration.java +++ b/integration-test/src/test/java/org/cloudfoundry/IntegrationTestConfiguration.java @@ -263,6 +263,7 @@ ReactorCloudFoundryClient cloudFoundryClient( } @Bean + @DependsOn({"organizationId", "spaceId"}) DefaultCloudFoundryOperations cloudFoundryOperations( CloudFoundryClient cloudFoundryClient, DopplerClient dopplerClient, From 68b3dcfa5bd7b67c908a235e707d7d40ee3eca5c Mon Sep 17 00:00:00 2001 From: Daniel Garnier-Moiroux Date: Tue, 16 Dec 2025 22:51:19 +0100 Subject: [PATCH 2/6] DefaultApplications: remove parameter CloudFoundryClient and use this. instead --- .../applications/DefaultApplications.java | 1131 ++++++----------- 1 file changed, 393 insertions(+), 738 deletions(-) diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java index b670f2c70b..50b0fdd087 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java @@ -124,8 +124,6 @@ import org.cloudfoundry.client.v3.builds.CreateBuildResponse; import org.cloudfoundry.client.v3.builds.GetBuildRequest; import org.cloudfoundry.client.v3.builds.GetBuildResponse; -import org.cloudfoundry.client.v3.domains.DomainResource; -import org.cloudfoundry.client.v3.domains.ListDomainsRequest; import org.cloudfoundry.client.v3.packages.BitsData; import org.cloudfoundry.client.v3.packages.CreatePackageRequest; import org.cloudfoundry.client.v3.packages.CreatePackageResponse; @@ -247,9 +245,8 @@ public DefaultApplications( @Override public Mono copySource(CopySourceApplicationRequest request) { return Mono.zip( - getApplicationId(this.cloudFoundryClient, request.getName(), spaceId), + getApplicationId(request.getName(), spaceId), getApplicationIdFromOrgSpace( - cloudFoundryClient, request.getTargetName(), spaceId, request.getTargetOrganization(), @@ -258,7 +255,6 @@ public Mono copySource(CopySourceApplicationRequest request) { function( (sourceApplicationId, targetApplicationId) -> copyBits( - cloudFoundryClient, request.getStagingTimeout(), sourceApplicationId, targetApplicationId) @@ -269,7 +265,6 @@ public Mono copySource(CopySourceApplicationRequest request) { .flatMap( targetApplicationId -> restartApplication( - cloudFoundryClient, request.getTargetName(), targetApplicationId, request.getStagingTimeout(), @@ -281,37 +276,26 @@ public Mono copySource(CopySourceApplicationRequest request) { @Override public Mono delete(DeleteApplicationRequest request) { return getRoutesAndApplicationId( - cloudFoundryClient, request, spaceId, Optional.ofNullable(request.getDeleteRoutes()).orElse(false)) - .map(function((routes, applicationId) -> Tuples.of(routes, applicationId))) .flatMap( function( (routes, applicationId) -> - deleteRoutes( - cloudFoundryClient, - request.getCompletionTimeout(), - routes) - .thenReturn( - Tuples.of( - cloudFoundryClient, - applicationId)))) - .delayUntil(function(DefaultApplications::removeServiceBindings)) - .flatMap(function(DefaultApplications::requestDeleteApplication)) + deleteRoutes(request.getCompletionTimeout(), routes) + .thenReturn(applicationId))) + .delayUntil(this::removeServiceBindings) + .flatMap(this::requestDeleteApplication) .transform(OperationsLogging.log("Delete Application")) .checkpoint(); } @Override public Mono disableSsh(DisableApplicationSshRequest request) { - return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) + return getApplicationIdV3(request.getName(), spaceId) // TODO dgarnier: is this correct? - .filterWhen(applicationId -> getSshEnabled(cloudFoundryClient, applicationId)) - .flatMap( - applicationId -> - requestUpdateApplicationSsh( - cloudFoundryClient, applicationId, false)) + .filterWhen(applicationId -> getSshEnabled(applicationId)) + .flatMap(applicationId -> requestUpdateApplicationSsh(applicationId, false)) .then() .transform(OperationsLogging.log("Disable Application SSH")) .checkpoint(); @@ -319,15 +303,9 @@ public Mono disableSsh(DisableApplicationSshRequest request) { @Override public Mono enableSsh(EnableApplicationSshRequest request) { - return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) - .filterWhen( - applicationId -> - getSshEnabled(cloudFoundryClient, applicationId) - .map(enabled -> !enabled)) - .flatMap( - applicationId -> - requestUpdateApplicationSsh( - cloudFoundryClient, applicationId, true)) + return getApplicationIdV3(request.getName(), spaceId) + .filterWhen(applicationId -> getSshEnabled(applicationId).map(enabled -> !enabled)) + .flatMap(applicationId -> requestUpdateApplicationSsh(applicationId, true)) .then() .transform(OperationsLogging.log("Enable Application SSH")) .checkpoint(); @@ -335,8 +313,8 @@ public Mono enableSsh(EnableApplicationSshRequest request) { @Override public Mono get(GetApplicationRequest request) { - return getApplication(cloudFoundryClient, request.getName(), spaceId) - .flatMap(app -> getAuxiliaryContent(cloudFoundryClient, app)) + return getApplication(request.getName(), spaceId) + .flatMap(app -> getAuxiliaryContent(app)) .map(function(DefaultApplications::toApplicationDetail)) .transform(OperationsLogging.log("Get Application")) .checkpoint(); @@ -345,23 +323,20 @@ public Mono get(GetApplicationRequest request) { // TODO dgarnier: manifest v3? @Override public Mono getApplicationManifest(GetApplicationManifestRequest request) { - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) + return getApplicationId(request.getName(), spaceId) .flatMap( applicationId -> Mono.zip( Mono.just(applicationId), - requestApplicationSummary( - cloudFoundryClient, applicationId))) + requestApplicationSummary(applicationId))) .flatMap( function( (applicationId, summary) -> Mono.zip( - getApplicationBuildpacks( - cloudFoundryClient, applicationId), + getApplicationBuildpacks(applicationId), Mono.just(summary), - getStackName( - cloudFoundryClient, summary.getStackId())))) - .flatMap(function(DefaultApplications::toApplicationManifest)) + getStackName(summary.getStackId())))) + .flatMap(function(this::toApplicationManifest)) .transform(OperationsLogging.log("Get Application Manifest")) .checkpoint(); } @@ -369,10 +344,8 @@ public Mono getApplicationManifest(GetApplicationManifestRe @Override public Mono getEnvironments( GetApplicationEnvironmentsRequest request) { - return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) - .flatMap( - applicationId -> - requestApplicationEnvironment(cloudFoundryClient, applicationId)) + return getApplicationIdV3(request.getName(), spaceId) + .flatMap(applicationId -> requestApplicationEnvironment(applicationId)) .map(DefaultApplications::toApplicationEnvironments) .transform(OperationsLogging.log("Get Application Environments")) .checkpoint(); @@ -380,10 +353,10 @@ public Mono getEnvironments( @Override public Flux getEvents(GetApplicationEventsRequest request) { - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) + return getApplicationId(request.getName(), spaceId) .flatMapMany( applicationId -> - requestEvents(applicationId, cloudFoundryClient) + requestEvents(applicationId) .take( Optional.ofNullable(request.getMaxNumberOfEvents()) .orElse(MAX_NUMBER_OF_RECENT_EVENTS))) @@ -394,7 +367,7 @@ public Flux getEvents(GetApplicationEventsRequest request) { @Override public Mono getHealthCheck(GetApplicationHealthCheckRequest request) { - return getApplication(cloudFoundryClient, request.getName(), spaceId) + return getApplication(request.getName(), spaceId) .map(DefaultApplications::toHealthCheck) .transform(OperationsLogging.log("Get Application Health Check")) .checkpoint(); @@ -402,7 +375,7 @@ public Mono getHealthCheck(GetApplicationHealthCheckRequ @Override public Flux list() { - return requestSpaceSummary(cloudFoundryClient, spaceId) + return requestSpaceSummary(spaceId) .flatMapMany(DefaultApplications::extractApplications) .map(DefaultApplications::toApplicationSummary) .transform(OperationsLogging.log("List Applications")) @@ -411,8 +384,8 @@ public Flux list() { @Override public Flux listTasks(ListApplicationTasksRequest request) { - return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) - .flatMapMany(applicationId -> requestListTasks(cloudFoundryClient, applicationId)) + return getApplicationIdV3(request.getName(), spaceId) + .flatMapMany(applicationId -> requestListTasks(applicationId)) .map(DefaultApplications::toTask) .transform(OperationsLogging.log("List Application Tasks")) .checkpoint(); @@ -420,10 +393,8 @@ public Flux listTasks(ListApplicationTasksRequest request) { @Override public Flux logs(LogsRequest request) { - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) - .flatMapMany( - applicationId -> - getLogs(this.dopplerClient, applicationId, request.getRecent())) + return getApplicationId(request.getName(), spaceId) + .flatMapMany(applicationId -> getLogs(applicationId, request.getRecent())) .transform(OperationsLogging.log("Get Application Logs")) .checkpoint(); } @@ -497,8 +468,8 @@ public Mono push(PushApplicationRequest request) { // TODO dgarnier: pass orgId to constructor? @Override public Mono pushManifest(PushApplicationManifestRequest request) { - return getSpaceOrganizationId(cloudFoundryClient, spaceId) - .flatMap(organizationId -> listAvailableDomains(cloudFoundryClient, organizationId)) + return getSpaceOrganizationId(spaceId) + .flatMap(organizationId -> listAvailableDomains(organizationId)) .flatMapMany( availableDomains -> Flux.fromIterable(request.getManifests()) @@ -506,7 +477,6 @@ public Mono pushManifest(PushApplicationManifestRequest request) { manifest -> { if (manifest.getPath() != null) { return pushApplication( - cloudFoundryClient, availableDomains, manifest, this.randomWords, @@ -516,7 +486,6 @@ public Mono pushManifest(PushApplicationManifestRequest request) { .getImage() .isEmpty()) { return pushDocker( - cloudFoundryClient, availableDomains, manifest, this.randomWords, @@ -544,25 +513,20 @@ public Mono pushManifestV3(PushManifestV3Request request) { throw new RuntimeException("Could not serialize manifest", e); } - return applyManifestAndWaitForCompletion(cloudFoundryClient, spaceId, manifestSerialized) + return applyManifestAndWaitForCompletion(spaceId, manifestSerialized) .flatMapMany(ignored -> Flux.fromIterable(request.getManifest().getApplications())) .flatMap( manifestApp -> - getApplicationIdV3( - cloudFoundryClient, manifestApp.getName(), spaceId) + getApplicationIdV3(manifestApp.getName(), spaceId) .flatMap( appId -> Mono.zip( Mono.just(appId), - createPackage( - cloudFoundryClient, - appId, - manifestApp))) + createPackage(appId, manifestApp))) .flatMap( function( (appId, packageId) -> buildAndStageAndWaitForRunning( - cloudFoundryClient, manifestApp, packageId, appId)))) @@ -571,11 +535,10 @@ public Mono pushManifestV3(PushManifestV3Request request) { @Override public Mono rename(RenameApplicationRequest request) { - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) + return getApplicationId(request.getName(), spaceId) .flatMap( applicationId -> - requestUpdateApplicationName( - cloudFoundryClient, applicationId, request.getNewName())) + requestUpdateApplicationName(applicationId, request.getNewName())) .then() .transform(OperationsLogging.log("Rename Application")) .checkpoint(); @@ -583,11 +546,10 @@ public Mono rename(RenameApplicationRequest request) { @Override public Mono restage(RestageApplicationRequest request) { - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) + return getApplicationId(request.getName(), spaceId) .flatMap( applicationId -> restageApplication( - cloudFoundryClient, request.getName(), applicationId, request.getStagingTimeout(), @@ -598,12 +560,11 @@ public Mono restage(RestageApplicationRequest request) { @Override public Mono restart(RestartApplicationRequest request) { - return getApplication(cloudFoundryClient, request.getName(), spaceId) - .flatMap(resource -> stopApplicationIfNotStopped(cloudFoundryClient, resource)) + return getApplication(request.getName(), spaceId) + .flatMap(resource -> stopApplicationIfNotStopped(resource)) .flatMap( stoppedApplication -> startApplicationAndWait( - cloudFoundryClient, request.getName(), ResourceUtils.getId(stoppedApplication), request.getStagingTimeout(), @@ -614,23 +575,19 @@ public Mono restart(RestartApplicationRequest request) { @Override public Mono restartInstance(RestartApplicationInstanceRequest request) { - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) + return getApplicationId(request.getName(), spaceId) .flatMap( applicationId -> requestTerminateApplicationInstance( - cloudFoundryClient, - applicationId, - String.valueOf(request.getInstanceIndex()))) + applicationId, String.valueOf(request.getInstanceIndex()))) .transform(OperationsLogging.log("Restart Application Instance")) .checkpoint(); } @Override public Mono runTask(RunApplicationTaskRequest request) { - return getApplicationIdV3(cloudFoundryClient, request.getApplicationName(), spaceId) - .flatMap( - applicationId -> - requestCreateTask(cloudFoundryClient, applicationId, request)) + return getApplicationIdV3(request.getApplicationName(), spaceId) + .flatMap(applicationId -> requestCreateTask(applicationId, request)) .map(DefaultApplications::toTask) .transform(OperationsLogging.log("Run Application Task Instance")) .checkpoint(); @@ -641,11 +598,10 @@ public Mono scale(ScaleApplicationRequest request) { if (!areModifiersPresent(request)) { return Mono.empty(); } - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) + return getApplicationId(request.getName(), spaceId) .flatMap( applicationId -> requestUpdateApplicationScale( - cloudFoundryClient, applicationId, request.getDiskLimit(), request.getInstances(), @@ -654,7 +610,6 @@ public Mono scale(ScaleApplicationRequest request) { .flatMap( resource -> restartApplication( - cloudFoundryClient, request.getName(), ResourceUtils.getId(resource), request.getStagingTimeout(), @@ -665,11 +620,10 @@ public Mono scale(ScaleApplicationRequest request) { @Override public Mono setEnvironmentVariable(SetEnvironmentVariableApplicationRequest request) { - return getApplication(cloudFoundryClient, request.getName(), spaceId) + return getApplication(request.getName(), spaceId) .flatMap( resource -> requestUpdateApplicationEnvironment( - cloudFoundryClient, ResourceUtils.getId(resource), addToEnvironment( getEnvironment(resource), @@ -682,11 +636,11 @@ public Mono setEnvironmentVariable(SetEnvironmentVariableApplicationReques @Override public Mono setHealthCheck(SetApplicationHealthCheckRequest request) { - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) + return getApplicationId(request.getName(), spaceId) .flatMap( applicationId -> requestUpdateApplicationHealthCheckType( - cloudFoundryClient, applicationId, request.getType())) + applicationId, request.getType())) .then() .transform(OperationsLogging.log("Set Application Health Check")) .checkpoint(); @@ -694,31 +648,18 @@ public Mono setHealthCheck(SetApplicationHealthCheckRequest request) { @Override public Mono sshEnabled(ApplicationSshEnabledRequest request) { - return getApplicationIdV3(cloudFoundryClient, request.getName(), spaceId) - .flatMap(applicationId -> getSshEnabled(cloudFoundryClient, applicationId)) + return getApplicationIdV3(request.getName(), spaceId) + .flatMap(applicationId -> getSshEnabled(applicationId)) .transform(OperationsLogging.log("Is Application SSH Enabled")) .checkpoint(); } - private static Mono getSshEnabled( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient - .applicationsV3() - .getSshEnabled( - GetApplicationSshEnabledRequest.builder() - .applicationId(applicationId) - .build()) - .map(GetApplicationSshEnabledResponse::getEnabled); - } - @Override public Mono start(StartApplicationRequest request) { - return getApplicationIdWhere( - cloudFoundryClient, request.getName(), spaceId, isNotIn(STARTED_STATE)) + return getApplicationIdWhere(request.getName(), spaceId, isNotIn(STARTED_STATE)) .flatMap( applicationId -> startApplicationAndWait( - cloudFoundryClient, request.getName(), applicationId, request.getStagingTimeout(), @@ -729,9 +670,8 @@ public Mono start(StartApplicationRequest request) { @Override public Mono stop(StopApplicationRequest request) { - return getApplicationIdWhere( - cloudFoundryClient, request.getName(), spaceId, isNotIn(STOPPED_STATE)) - .flatMap(applicationId -> stopApplication(cloudFoundryClient, applicationId)) + return getApplicationIdWhere(request.getName(), spaceId, isNotIn(STOPPED_STATE)) + .flatMap(applicationId -> stopApplication(applicationId)) .then() .transform(OperationsLogging.log("Stop Application")) .checkpoint(); @@ -739,12 +679,9 @@ public Mono stop(StopApplicationRequest request) { @Override public Mono terminateTask(TerminateApplicationTaskRequest request) { - return getApplicationIdV3(cloudFoundryClient, request.getApplicationName(), spaceId) - .flatMap( - applicationId -> - getTaskId( - cloudFoundryClient, applicationId, request.getSequenceId())) - .flatMap(taskId -> requestTerminateTask(cloudFoundryClient, taskId)) + return getApplicationIdV3(request.getApplicationName(), spaceId) + .flatMap(applicationId -> getTaskId(applicationId, request.getSequenceId())) + .flatMap(taskId -> requestTerminateTask(taskId)) .then() .transform(OperationsLogging.log("Terminate Application Task Instance")) .checkpoint(); @@ -752,11 +689,10 @@ public Mono terminateTask(TerminateApplicationTaskRequest request) { @Override public Mono unsetEnvironmentVariable(UnsetEnvironmentVariableApplicationRequest request) { - return getApplication(cloudFoundryClient, request.getName(), spaceId) + return getApplication(request.getName(), spaceId) .flatMap( resource -> requestUpdateApplicationEnvironment( - cloudFoundryClient, ResourceUtils.getId(resource), removeFromEnvironment( getEnvironment(resource), @@ -766,6 +702,16 @@ public Mono unsetEnvironmentVariable(UnsetEnvironmentVariableApplicationRe .checkpoint(); } + private Mono getSshEnabled(String applicationId) { + return this.cloudFoundryClient + .applicationsV3() + .getSshEnabled( + GetApplicationSshEnabledRequest.builder() + .applicationId(applicationId) + .build()) + .map(GetApplicationSshEnabledResponse::getEnabled); + } + private static Map addToEnvironment( Map environment, String variableName, Object variableValue) { return FluentMap.builder() @@ -774,9 +720,9 @@ private static Map addToEnvironment( .build(); } - private static Mono applyDropletAndWaitForRunning( - CloudFoundryClient cloudFoundryClient, String appname, String appId, String dropletId) { - return cloudFoundryClient + private Mono applyDropletAndWaitForRunning( + String appname, String appId, String dropletId) { + return this.cloudFoundryClient .applicationsV3() .setCurrentDroplet( SetApplicationCurrentDropletRequest.builder() @@ -784,19 +730,19 @@ private static Mono applyDropletAndWaitForRunning( .data(Relationship.builder().id(dropletId).build()) .build()) .then( - cloudFoundryClient + this.cloudFoundryClient .applicationsV3() .restart( org.cloudfoundry.client.v3.applications .RestartApplicationRequest.builder() .applicationId(appId) .build())) - .then(waitForRunningV3(cloudFoundryClient, appname, appId, null)); + .then(waitForRunningV3(appname, appId, null)); } - private static Mono applyManifestAndWaitForCompletion( - CloudFoundryClient cloudFoundryClient, String spaceId, byte[] manifestSerialized) { - return cloudFoundryClient + private Mono applyManifestAndWaitForCompletion( + String spaceId, byte[] manifestSerialized) { + return this.cloudFoundryClient .spacesV3() .applyManifest( ApplyManifestRequest.builder() @@ -814,7 +760,7 @@ private static Mono applyManifestAndWaitForCompletion( .flatMap( jobId -> JobUtils.waitForCompletion( - cloudFoundryClient, Duration.ofMinutes(5), jobId)); + this.cloudFoundryClient, Duration.ofMinutes(5), jobId)); } private static boolean areModifiersPresent(ScaleApplicationRequest request) { @@ -823,84 +769,56 @@ private static boolean areModifiersPresent(ScaleApplicationRequest request) { || request.getInstances() != null; } - private static Flux associateDefaultDomain( - CloudFoundryClient cloudFoundryClient, + private Flux associateDefaultDomain( String applicationId, List availableDomains, ApplicationManifest manifest, RandomWords randomWords, String spaceId) { - return getDefaultDomainId(cloudFoundryClient) + return getDefaultDomainId() .flatMapMany( domainId -> getPushRouteIdFromDomain( - cloudFoundryClient, - availableDomains, - domainId, - manifest, - randomWords, - spaceId)) - .flatMap( - routeId -> - requestAssociateRoute(cloudFoundryClient, applicationId, routeId)) + availableDomains, domainId, manifest, randomWords, spaceId)) + .flatMap(routeId -> requestAssociateRoute(applicationId, routeId)) .map(ResourceUtils::getId); } - private static Mono bindServices( - CloudFoundryClient cloudFoundryClient, - String applicationId, - ApplicationManifest manifest, - String spaceId) { + private Mono bindServices( + String applicationId, ApplicationManifest manifest, String spaceId) { if (manifest.getServices() == null || manifest.getServices().size() == 0) { return Mono.empty(); } return Flux.fromIterable(manifest.getServices()) - .flatMap( - serviceInstanceName -> - getServiceId(cloudFoundryClient, serviceInstanceName, spaceId)) + .flatMap(serviceInstanceName -> getServiceId(serviceInstanceName, spaceId)) .flatMap( serviceInstanceId -> - requestCreateServiceBinding( - cloudFoundryClient, - applicationId, - serviceInstanceId) + requestCreateServiceBinding(applicationId, serviceInstanceId) .onErrorResume( ExceptionUtils.statusCode(CF_SERVICE_ALREADY_BOUND), t -> Mono.empty())) .then(); } - private static Mono buildAndStageAndWaitForRunning( - CloudFoundryClient cloudFoundryClient, - ManifestV3Application manifestApp, - String packageId, - String appId) { - return buildAndStage(cloudFoundryClient, manifestApp, packageId) + private Mono buildAndStageAndWaitForRunning( + ManifestV3Application manifestApp, String packageId, String appId) { + return buildAndStage(manifestApp, packageId) .flatMap( dropletId -> applyDropletAndWaitForRunning( - cloudFoundryClient, - manifestApp.getName(), - appId, - dropletId)); + manifestApp.getName(), appId, dropletId)); } - private static Mono buildAndStage( - CloudFoundryClient cloudFoundryClient, - ManifestV3Application manifestApp, - String packageId) { - return cloudFoundryClient + private Mono buildAndStage(ManifestV3Application manifestApp, String packageId) { + return this.cloudFoundryClient .builds() .create( CreateBuildRequest.builder() .getPackage(Relationship.builder().id(packageId).build()) .build()) .map(CreateBuildResponse::getId) - .flatMap( - buildId -> - waitForBuildStaging( - cloudFoundryClient, buildId, manifestApp.getName(), null)) + .flatMap(buildId -> waitForBuildStaging(buildId, manifestApp.getName(), null)) .map(build -> build.getDroplet().getId()); } @@ -941,24 +859,18 @@ private static ApplicationEvent convertToApplicationEvent(EventResource resource .build(); } - private static Mono copyBits( - CloudFoundryClient cloudFoundryClient, - Duration completionTimeout, - String sourceApplicationId, - String targetApplicationId) { - return requestCopyBits(cloudFoundryClient, sourceApplicationId, targetApplicationId) + private Mono copyBits( + Duration completionTimeout, String sourceApplicationId, String targetApplicationId) { + return requestCopyBits(sourceApplicationId, targetApplicationId) .flatMap( job -> JobUtils.waitForCompletion( - cloudFoundryClient, completionTimeout, job)); + this.cloudFoundryClient, completionTimeout, job)); } - private static Mono createPackage( - CloudFoundryClient cloudFoundryClient, - String appId, - ManifestV3Application manifestApp) { + private Mono createPackage(String appId, ManifestV3Application manifestApp) { if (manifestApp.getDocker() != null) { - return cloudFoundryClient + return this.cloudFoundryClient .packages() .create( CreatePackageRequest.builder() @@ -982,7 +894,7 @@ private static Mono createPackage( .build()) .map(CreatePackageResponse::getId); } else { - return cloudFoundryClient + return this.cloudFoundryClient .packages() .create( CreatePackageRequest.builder() @@ -1009,11 +921,10 @@ private static Mono createPackage( .flatMap( packageId -> ResourceMatchingUtilsV3.getMatchedResources( - cloudFoundryClient, manifestApp.getPath()) + this.cloudFoundryClient, manifestApp.getPath()) .flatMap( matchedResources -> uploadPackageBitsAndWait( - cloudFoundryClient, packageId, manifestApp.getPath(), matchedResources, @@ -1022,23 +933,21 @@ private static Mono createPackage( } } - private static Mono deleteRoute( - CloudFoundryClient cloudFoundryClient, String routeId, Duration completionTimeout) { - return requestDeleteRoute(cloudFoundryClient, routeId) + private Mono deleteRoute(String routeId, Duration completionTimeout) { + return requestDeleteRoute(routeId) .flatMap( job -> JobUtils.waitForCompletion( - cloudFoundryClient, completionTimeout, job)); + this.cloudFoundryClient, completionTimeout, job)); } - private static Mono deleteRoutes( - CloudFoundryClient cloudFoundryClient, + private Mono deleteRoutes( Duration completionTimeout, Optional> routes) { return routes.map(Flux::fromIterable) .orElse(Flux.empty()) .map(org.cloudfoundry.client.v2.routes.Route::getId) - .flatMap(routeId -> deleteRoute(cloudFoundryClient, routeId, completionTimeout)) + .flatMap(routeId -> deleteRoute(routeId, completionTimeout)) .then(); } @@ -1093,9 +1002,8 @@ private static Flux extractApplications( return Flux.fromIterable(getSpaceSummaryResponse.getApplications()); } - private static Mono getApplication( - CloudFoundryClient cloudFoundryClient, String application, String spaceId) { - return requestApplications(cloudFoundryClient, application, spaceId) + private Mono getApplication(String application, String spaceId) { + return requestApplications(application, spaceId) .single() .onErrorResume( NoSuchElementException.class, @@ -1104,9 +1012,8 @@ private static Mono getApplication( "Application %s does not exist", application)); } - private static Mono> getApplicationBuildpacks( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient + private Mono> getApplicationBuildpacks(String applicationId) { + return this.cloudFoundryClient .applicationsV3() .get( org.cloudfoundry.client.v3.applications.GetApplicationRequest.builder() @@ -1120,17 +1027,13 @@ private static Mono> getApplicationBuildpacks( .defaultIfEmpty(Collections.emptyList()); } - private static Mono getApplicationId( - CloudFoundryClient cloudFoundryClient, String application, String spaceId) { - return getApplication(cloudFoundryClient, application, spaceId).map(ResourceUtils::getId); + private Mono getApplicationId(String application, String spaceId) { + return getApplication(application, spaceId).map(ResourceUtils::getId); } - private static Mono getApplicationId( - CloudFoundryClient cloudFoundryClient, - ApplicationManifest manifest, - String spaceId, - String stackId) { - return requestApplications(cloudFoundryClient, manifest.getName(), spaceId) + private Mono getApplicationId( + ApplicationManifest manifest, String spaceId, String stackId) { + return requestApplications(manifest.getName(), spaceId) .singleOrEmpty() .flatMap( application -> { @@ -1143,7 +1046,6 @@ private static Mono getApplicationId( .ifPresent(merge::putAll); return requestUpdateApplication( - cloudFoundryClient, ResourceUtils.getId(application), merge, manifest, @@ -1151,49 +1053,37 @@ private static Mono getApplicationId( .map(ResourceUtils::getId); }) .switchIfEmpty( - requestCreateApplication(cloudFoundryClient, manifest, spaceId, stackId) + requestCreateApplication(manifest, spaceId, stackId) .map(ResourceUtils::getId)); } - private static Mono getApplicationIdFromOrgSpace( - CloudFoundryClient cloudFoundryClient, - String application, - String spaceId, - String organization, - String space) { - return getSpaceOrganizationId(cloudFoundryClient, spaceId) + private Mono getApplicationIdFromOrgSpace( + String application, String spaceId, String organization, String space) { + return getSpaceOrganizationId(spaceId) .flatMap( organizationId -> organization != null - ? getOrganizationId(cloudFoundryClient, organization) + ? getOrganizationId(organization) : Mono.just(organizationId)) .flatMap( organizationId -> space != null - ? getSpaceId(cloudFoundryClient, organizationId, space) + ? getSpaceId(organizationId, space) : Mono.just(spaceId)) - .flatMap(spaceId1 -> getApplicationId(cloudFoundryClient, application, spaceId1)); + .flatMap(spaceId1 -> getApplicationId(application, spaceId1)); } - private static Mono getApplicationIdV3( - CloudFoundryClient cloudFoundryClient, String applicationName, String spaceId) { - return getApplicationV3(cloudFoundryClient, applicationName, spaceId) - .map(ApplicationResource::getId); + private Mono getApplicationIdV3(String applicationName, String spaceId) { + return getApplicationV3(applicationName, spaceId).map(ApplicationResource::getId); } - private static Mono getApplicationIdWhere( - CloudFoundryClient cloudFoundryClient, - String application, - String spaceId, - Predicate predicate) { - return getApplication(cloudFoundryClient, application, spaceId) - .filter(predicate) - .map(ResourceUtils::getId); + private Mono getApplicationIdWhere( + String application, String spaceId, Predicate predicate) { + return getApplication(application, spaceId).filter(predicate).map(ResourceUtils::getId); } - private static Mono getApplicationInstances( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return requestApplicationInstances(cloudFoundryClient, applicationId) + private Mono getApplicationInstances(String applicationId) { + return requestApplicationInstances(applicationId) .onErrorResume( ExceptionUtils.statusCode( CF_BUILDPACK_COMPILED_FAILED, @@ -1205,22 +1095,19 @@ private static Mono getApplicationInstances( t -> Mono.just(ApplicationInstancesResponse.builder().build())); } - private static Mono> getApplicationRoutes( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return requestApplicationRoutes(cloudFoundryClient, applicationId).collectList(); + private Mono> getApplicationRoutes(String applicationId) { + return requestApplicationRoutes(applicationId).collectList(); } - private static Mono getApplicationStatistics( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return requestApplicationStatistics(cloudFoundryClient, applicationId) + private Mono getApplicationStatistics(String applicationId) { + return requestApplicationStatistics(applicationId) .onErrorResume( ExceptionUtils.statusCode(CF_APP_STOPPED_STATS_ERROR), t -> Mono.just(ApplicationStatisticsResponse.builder().build())); } - private static Mono getApplicationV3( - CloudFoundryClient cloudFoundryClient, String application, String spaceId) { - return requestApplicationsV3(cloudFoundryClient, application, spaceId) + private Mono getApplicationV3(String application, String spaceId) { + return requestApplicationsV3(application, spaceId) .single() .onErrorResume( NoSuchElementException.class, @@ -1229,41 +1116,38 @@ private static Mono getApplicationV3( "Application %s does not exist", application)); } - private static Mono< + private Mono< Tuple5< List, SummaryApplicationResponse, GetStackResponse, List, List>> - getAuxiliaryContent( - CloudFoundryClient cloudFoundryClient, - AbstractApplicationResource applicationResource) { + getAuxiliaryContent(AbstractApplicationResource applicationResource) { String applicationId = ResourceUtils.getId(applicationResource); String stackId = ResourceUtils.getEntity(applicationResource).getStackId(); return Mono.zip( - getApplicationStatistics(cloudFoundryClient, applicationId), - requestApplicationSummary(cloudFoundryClient, applicationId), - getApplicationInstances(cloudFoundryClient, applicationId)) + getApplicationStatistics(applicationId), + requestApplicationSummary(applicationId), + getApplicationInstances(applicationId)) .flatMap( function( (applicationStatisticsResponse, summaryApplicationResponse, applicationInstancesResponse) -> Mono.zip( - getApplicationBuildpacks( - cloudFoundryClient, applicationId), + getApplicationBuildpacks(applicationId), Mono.just(summaryApplicationResponse), - requestStack(cloudFoundryClient, stackId), + requestStack(stackId), toInstanceDetailList( applicationInstancesResponse, applicationStatisticsResponse), toUrls(summaryApplicationResponse.getRoutes())))); } - private static Mono getDefaultDomainId(CloudFoundryClient cloudFoundryClient) { - return requestSharedDomains(cloudFoundryClient) + private Mono getDefaultDomainId() { + return requestSharedDomains() .filter( resource -> !Optional.ofNullable( @@ -1299,16 +1183,15 @@ private static int getInstances(AbstractApplicationResource resource) { .orElse(0); } - private static Flux getLogs( - DopplerClient dopplerClient, String applicationId, Boolean recent) { + private Flux getLogs(String applicationId, Boolean recent) { if (Optional.ofNullable(recent).orElse(false)) { - return requestLogsRecent(dopplerClient, applicationId) + return requestLogsRecent(applicationId) .filter(e -> EventType.LOG_MESSAGE == e.getEventType()) .map(Envelope::getLogMessage) .collectSortedList(LOG_MESSAGE_COMPARATOR) .flatMapIterable(d -> d); } else { - return requestLogsStream(dopplerClient, applicationId) + return requestLogsStream(applicationId) .filter(e -> EventType.LOG_MESSAGE == e.getEventType()) .map(Envelope::getLogMessage) .transformDeferred( @@ -1333,25 +1216,23 @@ private static Map getMetadataRequest(EventEntity entity) { } } - private static Mono>> getOptionalRoutes( - CloudFoundryClient cloudFoundryClient, boolean deleteRoutes, String applicationId) { + private Mono>> getOptionalRoutes( + boolean deleteRoutes, String applicationId) { if (deleteRoutes) { - return getRoutes(cloudFoundryClient, applicationId).map(Optional::of); + return getRoutes(applicationId).map(Optional::of); } else { return Mono.just(Optional.empty()); } } - private static Mono> getOptionalStackId( - CloudFoundryClient cloudFoundryClient, String stack) { + private Mono> getOptionalStackId(String stack) { return Optional.ofNullable(stack) - .map(stack1 -> getStackId(cloudFoundryClient, stack1).map(Optional::of)) + .map(stack1 -> getStackId(stack1).map(Optional::of)) .orElse(Mono.just(Optional.empty())); } - private static Mono getOrganization( - CloudFoundryClient cloudFoundryClient, String organization) { - return requestOrganizations(cloudFoundryClient, organization) + private Mono getOrganization(String organization) { + return requestOrganizations(organization) .single() .onErrorResume( NoSuchElementException.class, @@ -1360,14 +1241,12 @@ private static Mono getOrganization( "Organization %s not found", organization)); } - private static Mono getOrganizationId( - CloudFoundryClient cloudFoundryClient, String organization) { - return getOrganization(cloudFoundryClient, organization).map(ResourceUtils::getId); + private Mono getOrganizationId(String organization) { + return getOrganization(organization).map(ResourceUtils::getId); } - private static Mono getOrganizationSpaceByName( - CloudFoundryClient cloudFoundryClient, String organizationId, String space) { - return requestOrganizationSpacesByName(cloudFoundryClient, organizationId, space) + private Mono getOrganizationSpaceByName(String organizationId, String space) { + return requestOrganizationSpacesByName(organizationId, space) .single() .onErrorResume( NoSuchElementException.class, @@ -1380,17 +1259,14 @@ private static String getPassword(DockerCredentials dockerCredentials) { .orElse(null); } - private static Flux getPushRouteIdFromDomain( - CloudFoundryClient cloudFoundryClient, + private Flux getPushRouteIdFromDomain( List availableDomains, String domainId, ApplicationManifest manifest, RandomWords randomWords, String spaceId) { if (isTcpDomain(availableDomains, domainId)) { - return requestCreateTcpRoute(cloudFoundryClient, domainId, spaceId) - .map(ResourceUtils::getId) - .flux(); + return requestCreateTcpRoute(domainId, spaceId).map(ResourceUtils::getId).flux(); } List hosts; @@ -1414,14 +1290,9 @@ private static Flux getPushRouteIdFromDomain( return Flux.fromIterable(hosts) .flatMap( host -> - getRouteId( - cloudFoundryClient, - domainId, - host, - manifest.getRoutePath()) + getRouteId(domainId, host, manifest.getRoutePath()) .switchIfEmpty( requestCreateRoute( - cloudFoundryClient, domainId, host, manifest.getRoutePath(), @@ -1429,8 +1300,7 @@ private static Flux getPushRouteIdFromDomain( .map(ResourceUtils::getId))); } - private static Flux getPushRouteIdFromRoute( - CloudFoundryClient cloudFoundryClient, + private Flux getPushRouteIdFromRoute( List availableDomains, ApplicationManifest manifest, RandomWords randomWords, @@ -1448,26 +1318,16 @@ private static Flux getPushRouteIdFromRoute( getDomainId(availableDomains, decomposedRoute.getDomain()); if (isTcpDomain(availableDomains, domainId)) { return getRouteIdForTcpRoute( - cloudFoundryClient, - decomposedRoute, - domainId, - manifest, - spaceId); + decomposedRoute, domainId, manifest, spaceId); } else { return getRouteIdForHttpRoute( - cloudFoundryClient, - decomposedRoute, - domainId, - manifest, - randomWords, - spaceId); + decomposedRoute, domainId, manifest, randomWords, spaceId); } }); } - private static Mono getRouteId( - CloudFoundryClient cloudFoundryClient, String domainId, String host, String routePath) { - return requestRoutes(cloudFoundryClient, domainId, host, null, routePath) + private Mono getRouteId(String domainId, String host, String routePath) { + return requestRoutes(domainId, host, null, routePath) .filter(resource -> isIdentical(host, ResourceUtils.getEntity(resource).getHost())) .filter( resource -> @@ -1478,68 +1338,51 @@ private static Mono getRouteId( .map(ResourceUtils::getId); } - private static Mono getRouteIdForHttpRoute( - CloudFoundryClient cloudFoundryClient, + private Mono getRouteIdForHttpRoute( DecomposedRoute decomposedRoute, String domainId, ApplicationManifest manifest, RandomWords randomWords, String spaceId) { String derivedHost = deriveHostname(decomposedRoute.getHost(), manifest, randomWords); - return getRouteId(cloudFoundryClient, domainId, derivedHost, decomposedRoute.getPath()) + return getRouteId(domainId, derivedHost, decomposedRoute.getPath()) .switchIfEmpty( requestCreateRoute( - cloudFoundryClient, - domainId, - derivedHost, - decomposedRoute.getPath(), - spaceId) + domainId, derivedHost, decomposedRoute.getPath(), spaceId) .map(ResourceUtils::getId)); } - private static Mono getRouteIdForTcpRoute( - CloudFoundryClient cloudFoundryClient, + private Mono getRouteIdForTcpRoute( DecomposedRoute decomposedRoute, String domainId, ApplicationManifest manifest, String spaceId) { if (Optional.ofNullable(manifest.getRandomRoute()).orElse(false)) { - return requestCreateTcpRoute(cloudFoundryClient, domainId, spaceId) - .map(ResourceUtils::getId); + return requestCreateTcpRoute(domainId, spaceId).map(ResourceUtils::getId); } - return getTcpRouteId(cloudFoundryClient, domainId, decomposedRoute.getPort()) + return getTcpRouteId(domainId, decomposedRoute.getPort()) .switchIfEmpty( - requestCreateTcpRoute( - cloudFoundryClient, - domainId, - decomposedRoute.getPort(), - spaceId) + requestCreateTcpRoute(domainId, decomposedRoute.getPort(), spaceId) .map(ResourceUtils::getId)); } - private static Mono> getRoutes( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return requestApplicationSummary(cloudFoundryClient, applicationId) - .map(SummaryApplicationResponse::getRoutes); + private Mono> getRoutes(String applicationId) { + return requestApplicationSummary(applicationId).map(SummaryApplicationResponse::getRoutes); } - private static Mono>, String>> + private Mono>, String>> getRoutesAndApplicationId( - CloudFoundryClient cloudFoundryClient, - DeleteApplicationRequest request, - String spaceId, - boolean deleteRoutes) { - return getApplicationId(cloudFoundryClient, request.getName(), spaceId) + DeleteApplicationRequest request, String spaceId, boolean deleteRoutes) { + return getApplicationId(request.getName(), spaceId) .flatMap( applicationId -> - getOptionalRoutes(cloudFoundryClient, deleteRoutes, applicationId) + getOptionalRoutes(deleteRoutes, applicationId) .zipWith(Mono.just(applicationId))); } - private static Mono getServiceId( - CloudFoundryClient cloudFoundryClient, String serviceInstanceName, String spaceId) { - return requestListServiceInstances(cloudFoundryClient, serviceInstanceName, spaceId) + private Mono getServiceId(String serviceInstanceName, String spaceId) { + return requestListServiceInstances(serviceInstanceName, spaceId) .map(ResourceUtils::getId) .single() .onErrorResume( @@ -1550,20 +1393,17 @@ private static Mono getServiceId( serviceInstanceName)); } - private static Mono getSpaceId( - CloudFoundryClient cloudFoundryClient, String organizationId, String space) { - return getOrganizationSpaceByName(cloudFoundryClient, organizationId, space) - .map(ResourceUtils::getId); + private Mono getSpaceId(String organizationId, String space) { + return getOrganizationSpaceByName(organizationId, space).map(ResourceUtils::getId); } - private static Mono getSpaceOrganizationId( - CloudFoundryClient cloudFoundryClient, String spaceId) { - return requestSpace(cloudFoundryClient, spaceId) + private Mono getSpaceOrganizationId(String spaceId) { + return requestSpace(spaceId) .map(response -> ResourceUtils.getEntity(response).getOrganizationId()); } - private static Mono getStackId(CloudFoundryClient cloudFoundryClient, String stack) { - return requestStacks(cloudFoundryClient, stack) + private Mono getStackId(String stack) { + return requestStacks(stack) .map(ResourceUtils::getId) .single() .onErrorResume( @@ -1571,15 +1411,13 @@ private static Mono getStackId(CloudFoundryClient cloudFoundryClient, St t -> ExceptionUtils.illegalArgument("Stack %s does not exist", stack)); } - private static Mono getStackName( - CloudFoundryClient cloudFoundryClient, String stackId) { - return requestStack(cloudFoundryClient, stackId) + private Mono getStackName(String stackId) { + return requestStack(stackId) .map(getStackResponse -> getStackResponse.getEntity().getName()); } - private static Mono getTaskId( - CloudFoundryClient cloudFoundryClient, String applicationId, Integer sequenceId) { - return listTasks(cloudFoundryClient, applicationId, sequenceId) + private Mono getTaskId(String applicationId, Integer sequenceId) { + return listTasks(applicationId, sequenceId) .single() .map(Resource::getId) .onErrorResume( @@ -1589,11 +1427,8 @@ private static Mono getTaskId( "Task with sequence id of %s does not exist", sequenceId)); } - private static Mono getTcpRouteId( - CloudFoundryClient cloudFoundryClient, String domainId, Integer port) { - return requestRoutes(cloudFoundryClient, domainId, null, port, null) - .singleOrEmpty() - .map(ResourceUtils::getId); + private Mono getTcpRouteId(String domainId, Integer port) { + return requestRoutes(domainId, null, port, null).singleOrEmpty().map(ResourceUtils::getId); } private static String getUsername(DockerCredentials dockerCredentials) { @@ -1646,24 +1481,20 @@ private static boolean isTcpDomain(List availableDomains, String return tcpDomainIds.contains(domainId); } - private static Mono> listAvailableDomains( - CloudFoundryClient cloudFoundryClient, String organizationId) { - return requestListPrivateDomains(cloudFoundryClient, organizationId) + private Mono> listAvailableDomains(String organizationId) { + return requestListPrivateDomains(organizationId) .map(DefaultApplications::toDomain) - .mergeWith( - requestListSharedDomains(cloudFoundryClient) - .map(DefaultApplications::toDomain)) + .mergeWith(requestListSharedDomains().map(DefaultApplications::toDomain)) .collectList(); } - private static Flux listTasks( - CloudFoundryClient cloudFoundryClient, String applicationId, Integer sequenceId) { - return requestListTasks(cloudFoundryClient, applicationId, sequenceId) + private Flux listTasks( + String applicationId, Integer sequenceId) { + return requestListTasks(applicationId, sequenceId) .cast(org.cloudfoundry.client.v3.tasks.Task.class); } - private static Mono prepareDomainsAndRoutes( - CloudFoundryClient cloudFoundryClient, + private Mono prepareDomainsAndRoutes( String applicationId, List availableDomains, ApplicationManifest manifest, @@ -1673,10 +1504,7 @@ private static Mono prepareDomainsAndRoutes( if (Optional.ofNullable(manifest.getNoRoute()).orElse(false)) { return Flux.fromIterable(existingRoutes) .map(ResourceUtils::getId) - .flatMap( - routeId -> - requestRemoveRouteFromApplication( - cloudFoundryClient, applicationId, routeId)) + .flatMap(routeId -> requestRemoveRouteFromApplication(applicationId, routeId)) .then(); } @@ -1684,12 +1512,7 @@ private static Mono prepareDomainsAndRoutes( if (manifest.getDomains() == null) { if (existingRoutes.isEmpty()) { return associateDefaultDomain( - cloudFoundryClient, - applicationId, - availableDomains, - manifest, - randomWords, - spaceId) + applicationId, availableDomains, manifest, randomWords, spaceId) .then(); } return Mono.empty(); // A route already exists for the application, do nothing @@ -1698,7 +1521,6 @@ private static Mono prepareDomainsAndRoutes( .flatMap( domain -> getPushRouteIdFromDomain( - cloudFoundryClient, availableDomains, getDomainId(availableDomains, domain), manifest, @@ -1707,53 +1529,39 @@ private static Mono prepareDomainsAndRoutes( .flatMap( routeId -> requestAssociateRoute( - cloudFoundryClient, - applicationId, - routeId))) + applicationId, routeId))) .then(); } List existingRouteIds = existingRoutes.stream().map(ResourceUtils::getId).collect(Collectors.toList()); - return getPushRouteIdFromRoute( - cloudFoundryClient, availableDomains, manifest, randomWords, spaceId) + return getPushRouteIdFromRoute(availableDomains, manifest, randomWords, spaceId) .filter(routeId -> !existingRouteIds.contains(routeId)) - .flatMapSequential( - routeId -> - requestAssociateRoute(cloudFoundryClient, applicationId, routeId), - 1) + .flatMapSequential(routeId -> requestAssociateRoute(applicationId, routeId), 1) .then(); } - private static Flux pushApplication( - CloudFoundryClient cloudFoundryClient, + private Flux pushApplication( List availableDomains, ApplicationManifest manifest, RandomWords randomWords, PushApplicationManifestRequest request, String spaceId) { - return getOptionalStackId(cloudFoundryClient, manifest.getStack()) - .flatMapMany( - stackId -> - getApplicationId( - cloudFoundryClient, - manifest, - spaceId, - stackId.orElse(null))) + return getOptionalStackId(manifest.getStack()) + .flatMapMany(stackId -> getApplicationId(manifest, spaceId, stackId.orElse(null))) .flatMap( applicationId -> Mono.zip( Mono.just(applicationId), - getApplicationRoutes(cloudFoundryClient, applicationId), + getApplicationRoutes(applicationId), ResourceMatchingUtils.getMatchedResources( - cloudFoundryClient, manifest.getPath()))) + this.cloudFoundryClient, manifest.getPath()))) .flatMap( function( (applicationId, existingRoutes, matchedResources) -> prepareDomainsAndRoutes( - cloudFoundryClient, applicationId, availableDomains, manifest, @@ -1768,16 +1576,9 @@ private static Flux pushApplication( (applicationId, matchedResources) -> Mono.when( bindServices( - cloudFoundryClient, - applicationId, - manifest, - spaceId), - updateBuildpacks( - cloudFoundryClient, - applicationId, - manifest), + applicationId, manifest, spaceId), + updateBuildpacks(applicationId, manifest), uploadApplicationAndWait( - cloudFoundryClient, applicationId, manifest.getPath(), matchedResources, @@ -1786,38 +1587,27 @@ private static Flux pushApplication( .flatMap( applicationId -> stopAndStartApplication( - cloudFoundryClient, - applicationId, - manifest.getName(), - request)); + applicationId, manifest.getName(), request)); } - private static Flux pushDocker( - CloudFoundryClient cloudFoundryClient, + private Flux pushDocker( List availableDomains, ApplicationManifest manifest, RandomWords randomWords, PushApplicationManifestRequest request, String spaceId) { - return getOptionalStackId(cloudFoundryClient, manifest.getStack()) - .flatMapMany( - stackId -> - getApplicationId( - cloudFoundryClient, - manifest, - spaceId, - stackId.orElse(null))) + return getOptionalStackId(manifest.getStack()) + .flatMapMany(stackId -> getApplicationId(manifest, spaceId, stackId.orElse(null))) .flatMap( applicationId -> Mono.zip( Mono.just(applicationId), - getApplicationRoutes(cloudFoundryClient, applicationId))) + getApplicationRoutes(applicationId))) .flatMap( function( (applicationId, existingRoutes) -> prepareDomainsAndRoutes( - cloudFoundryClient, applicationId, availableDomains, manifest, @@ -1825,16 +1615,11 @@ private static Flux pushDocker( randomWords, spaceId) .thenReturn(applicationId))) - .delayUntil( - applicationId -> - bindServices(cloudFoundryClient, applicationId, manifest, spaceId)) + .delayUntil(applicationId -> bindServices(applicationId, manifest, spaceId)) .flatMap( applicationId -> stopAndStartApplication( - cloudFoundryClient, - applicationId, - manifest.getName(), - request)); + applicationId, manifest.getName(), request)); } private static Map removeFromEnvironment( @@ -1844,20 +1629,18 @@ private static Map removeFromEnvironment( return modified; } - private static Mono removeServiceBindings( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return requestListServiceBindings(cloudFoundryClient, applicationId) + private Mono removeServiceBindings(String applicationId) { + return requestListServiceBindings(applicationId) .map(ResourceUtils::getId) .flatMap( serviceBindingId -> - requestRemoveServiceBinding( - cloudFoundryClient, applicationId, serviceBindingId)) + requestRemoveServiceBinding(applicationId, serviceBindingId)) .then(); } - private static Mono requestApplicationEnvironment( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient + private Mono requestApplicationEnvironment( + String applicationId) { + return this.cloudFoundryClient .applicationsV3() .getEnvironment( GetApplicationEnvironmentRequest.builder() @@ -1865,19 +1648,17 @@ private static Mono requestApplicationEnviron .build()); } - private static Mono requestApplicationInstances( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient + private Mono requestApplicationInstances(String applicationId) { + return this.cloudFoundryClient .applicationsV2() .instances( ApplicationInstancesRequest.builder().applicationId(applicationId).build()); } - private static Flux requestApplicationRoutes( - CloudFoundryClient cloudFoundryClient, String applicationId) { + private Flux requestApplicationRoutes(String applicationId) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .applicationsV2() .listRoutes( ListApplicationRoutesRequest.builder() @@ -1886,9 +1667,8 @@ private static Flux requestApplicationRoutes( .build())); } - private static Mono requestApplicationStatistics( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient + private Mono requestApplicationStatistics(String applicationId) { + return this.cloudFoundryClient .applicationsV2() .statistics( ApplicationStatisticsRequest.builder() @@ -1896,18 +1676,17 @@ private static Mono requestApplicationStatistics( .build()); } - private static Mono requestApplicationSummary( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient + private Mono requestApplicationSummary(String applicationId) { + return this.cloudFoundryClient .applicationsV2() .summary(SummaryApplicationRequest.builder().applicationId(applicationId).build()); } - private static Flux requestApplications( - CloudFoundryClient cloudFoundryClient, String application, String spaceId) { + private Flux requestApplications( + String application, String spaceId) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .spaces() .listApplications( ListSpaceApplicationsRequest.builder() @@ -1918,11 +1697,10 @@ private static Flux requestApplications( .cast(AbstractApplicationResource.class); } - private static Flux requestApplicationsV3( - CloudFoundryClient cloudFoundryClient, String application, String spaceId) { + private Flux requestApplicationsV3(String application, String spaceId) { return PaginationUtils.requestClientV3Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .applicationsV3() .list( ListApplicationsRequest.builder() @@ -1932,9 +1710,9 @@ private static Flux requestApplicationsV3( .build())); } - private static Mono requestAssociateRoute( - CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { - return cloudFoundryClient + private Mono requestAssociateRoute( + String applicationId, String routeId) { + return this.cloudFoundryClient .applicationsV2() .associateRoute( AssociateApplicationRouteRequest.builder() @@ -1943,11 +1721,9 @@ private static Mono requestAssociateRoute( .build()); } - private static Mono requestCopyBits( - CloudFoundryClient cloudFoundryClient, - String sourceApplicationId, - String targetApplicationId) { - return cloudFoundryClient + private Mono requestCopyBits( + String sourceApplicationId, String targetApplicationId) { + return this.cloudFoundryClient .applicationsV2() .copy( CopyApplicationRequest.builder() @@ -1956,11 +1732,8 @@ private static Mono requestCopyBits( .build()); } - private static Mono requestCreateApplication( - CloudFoundryClient cloudFoundryClient, - ApplicationManifest manifest, - String spaceId, - String stackId) { + private Mono requestCreateApplication( + ApplicationManifest manifest, String spaceId, String stackId) { CreateApplicationRequest.Builder builder = CreateApplicationRequest.builder() .command(manifest.getCommand()) @@ -1998,16 +1771,12 @@ private static Mono requestCreateApplication( }); } - return cloudFoundryClient.applicationsV2().create(builder.build()); + return this.cloudFoundryClient.applicationsV2().create(builder.build()); } - private static Mono requestCreateRoute( - CloudFoundryClient cloudFoundryClient, - String domainId, - String host, - String routePath, - String spaceId) { - return cloudFoundryClient + private Mono requestCreateRoute( + String domainId, String host, String routePath, String spaceId) { + return this.cloudFoundryClient .routes() .create( org.cloudfoundry.client.v2.routes.CreateRouteRequest.builder() @@ -2018,9 +1787,9 @@ private static Mono requestCreateRoute( .build()); } - private static Mono requestCreateServiceBinding( - CloudFoundryClient cloudFoundryClient, String applicationId, String serviceInstanceId) { - return cloudFoundryClient + private Mono requestCreateServiceBinding( + String applicationId, String serviceInstanceId) { + return this.cloudFoundryClient .serviceBindingsV2() .create( CreateServiceBindingRequest.builder() @@ -2029,11 +1798,9 @@ private static Mono requestCreateServiceBinding( .build()); } - private static Mono requestCreateTask( - CloudFoundryClient cloudFoundryClient, - String applicationId, - RunApplicationTaskRequest request) { - return cloudFoundryClient + private Mono requestCreateTask( + String applicationId, RunApplicationTaskRequest request) { + return this.cloudFoundryClient .tasks() .create( CreateTaskRequest.builder() @@ -2045,9 +1812,8 @@ private static Mono requestCreateTask( .build()); } - private static Mono requestCreateTcpRoute( - CloudFoundryClient cloudFoundryClient, String domainId, String spaceId) { - return cloudFoundryClient + private Mono requestCreateTcpRoute(String domainId, String spaceId) { + return this.cloudFoundryClient .routes() .create( org.cloudfoundry.client.v2.routes.CreateRouteRequest.builder() @@ -2057,9 +1823,9 @@ private static Mono requestCreateTcpRoute( .build()); } - private static Mono requestCreateTcpRoute( - CloudFoundryClient cloudFoundryClient, String domainId, Integer port, String spaceId) { - return cloudFoundryClient + private Mono requestCreateTcpRoute( + String domainId, Integer port, String spaceId) { + return this.cloudFoundryClient .routes() .create( org.cloudfoundry.client.v2.routes.CreateRouteRequest.builder() @@ -2069,9 +1835,8 @@ private static Mono requestCreateTcpRoute( .build()); } - private static Mono requestDeleteApplication( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient + private Mono requestDeleteApplication(String applicationId) { + return this.cloudFoundryClient .applicationsV2() .delete( org.cloudfoundry.client.v2.applications.DeleteApplicationRequest.builder() @@ -2079,18 +1844,16 @@ private static Mono requestDeleteApplication( .build()); } - private static Mono requestDeleteRoute( - CloudFoundryClient cloudFoundryClient, String routeId) { - return cloudFoundryClient + private Mono requestDeleteRoute(String routeId) { + return this.cloudFoundryClient .routes() .delete(DeleteRouteRequest.builder().async(true).routeId(routeId).build()); } - private static Flux requestEvents( - String applicationId, CloudFoundryClient cloudFoundryClient) { + private Flux requestEvents(String applicationId) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .events() .list( ListEventsRequest.builder() @@ -2101,9 +1864,8 @@ private static Flux requestEvents( .build())); } - private static Mono requestGetApplication( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient + private Mono requestGetApplication(String applicationId) { + return this.cloudFoundryClient .applicationsV2() .get( org.cloudfoundry.client.v2.applications.GetApplicationRequest.builder() @@ -2112,20 +1874,10 @@ private static Mono requestGetApplication( .cast(AbstractApplicationResource.class); } - private static Flux requestListDomains( - CloudFoundryClient cloudFoundryClient, String organizationId) { - return PaginationUtils.requestClientV3Resources( - page -> - cloudFoundryClient - .domainsV3() - .list(ListDomainsRequest.builder().page(page).build())); - } - - private static Flux requestListPrivateDomains( - CloudFoundryClient cloudFoundryClient, String organizationId) { + private Flux requestListPrivateDomains(String organizationId) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .organizations() .listPrivateDomains( ListOrganizationPrivateDomainsRequest.builder() @@ -2134,11 +1886,10 @@ private static Flux requestListPrivateDomains( .build())); } - private static Flux requestListServiceBindings( - CloudFoundryClient cloudFoundryClient, String applicationId) { + private Flux requestListServiceBindings(String applicationId) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .applicationsV2() .listServiceBindings( ListApplicationServiceBindingsRequest.builder() @@ -2147,11 +1898,11 @@ private static Flux requestListServiceBindings( .build())); } - private static Flux requestListServiceInstances( - CloudFoundryClient cloudFoundryClient, String serviceInstanceName, String spaceId) { + private Flux requestListServiceInstances( + String serviceInstanceName, String spaceId) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .spaces() .listServiceInstances( ListSpaceServiceInstancesRequest.builder() @@ -2162,20 +1913,18 @@ private static Flux requestListServiceInstances( .build())); } - private static Flux requestListSharedDomains( - CloudFoundryClient cloudFoundryClient) { + private Flux requestListSharedDomains() { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .sharedDomains() .list(ListSharedDomainsRequest.builder().page(page).build())); } - private static Flux requestListTasks( - CloudFoundryClient cloudFoundryClient, String applicationId) { + private Flux requestListTasks(String applicationId) { return PaginationUtils.requestClientV3Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .applicationsV3() .listTasks( org.cloudfoundry.client.v3.applications @@ -2185,11 +1934,10 @@ private static Flux requestListTasks( .build())); } - private static Flux requestListTasks( - CloudFoundryClient cloudFoundryClient, String applicationId, Integer sequenceId) { + private Flux requestListTasks(String applicationId, Integer sequenceId) { return PaginationUtils.requestClientV3Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .applicationsV3() .listTasks( org.cloudfoundry.client.v3.applications @@ -2200,22 +1948,20 @@ private static Flux requestListTasks( .build())); } - private static Flux requestLogsRecent( - DopplerClient dopplerClient, String applicationId) { + private Flux requestLogsRecent(String applicationId) { return dopplerClient.recentLogs( RecentLogsRequest.builder().applicationId(applicationId).build()); } - private static Flux requestLogsStream( - DopplerClient dopplerClient, String applicationId) { + private Flux requestLogsStream(String applicationId) { return dopplerClient.stream(StreamRequest.builder().applicationId(applicationId).build()); } - private static Flux requestOrganizationSpacesByName( - CloudFoundryClient cloudFoundryClient, String organizationId, String space) { + private Flux requestOrganizationSpacesByName( + String organizationId, String space) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .organizations() .listSpaces( ListOrganizationSpacesRequest.builder() @@ -2225,11 +1971,10 @@ private static Flux requestOrganizationSpacesByName( .build())); } - private static Flux requestOrganizations( - CloudFoundryClient cloudFoundryClient, String organization) { + private Flux requestOrganizations(String organization) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .organizations() .list( ListOrganizationsRequest.builder() @@ -2238,9 +1983,8 @@ private static Flux requestOrganizations( .build())); } - private static Mono requestRemoveRouteFromApplication( - CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { - return cloudFoundryClient + private Mono requestRemoveRouteFromApplication(String applicationId, String routeId) { + return this.cloudFoundryClient .applicationsV2() .removeRoute( RemoveApplicationRouteRequest.builder() @@ -2249,9 +1993,8 @@ private static Mono requestRemoveRouteFromApplication( .build()); } - private static Mono requestRemoveServiceBinding( - CloudFoundryClient cloudFoundryClient, String applicationId, String serviceBindingId) { - return cloudFoundryClient + private Mono requestRemoveServiceBinding(String applicationId, String serviceBindingId) { + return this.cloudFoundryClient .applicationsV2() .removeServiceBinding( RemoveApplicationServiceBindingRequest.builder() @@ -2260,9 +2003,8 @@ private static Mono requestRemoveServiceBinding( .build()); } - private static Mono requestRestageApplication( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return cloudFoundryClient + private Mono requestRestageApplication(String applicationId) { + return this.cloudFoundryClient .applicationsV2() .restage( org.cloudfoundry.client.v2.applications.RestageApplicationRequest.builder() @@ -2270,59 +2012,54 @@ private static Mono requestRestageApplication( .build()); } - private static Flux requestRoutes( - CloudFoundryClient cloudFoundryClient, - String domainId, - String host, - Integer port, - String routePath) { + private Flux requestRoutes( + String domainId, String host, Integer port, String routePath) { ListRoutesRequest.Builder requestBuilder = ListRoutesRequest.builder().domainId(domainId); Optional.ofNullable(host).ifPresent(requestBuilder::host); Optional.ofNullable(routePath).ifPresent(requestBuilder::path); Optional.ofNullable(port).ifPresent(requestBuilder::port); return PaginationUtils.requestClientV2Resources( - page -> cloudFoundryClient.routes().list(requestBuilder.page(page).build())); + page -> this.cloudFoundryClient.routes().list(requestBuilder.page(page).build())); } - private static Flux requestSharedDomains( - CloudFoundryClient cloudFoundryClient) { + private Flux requestSharedDomains() { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .sharedDomains() .list(ListSharedDomainsRequest.builder().page(page).build())); } - private static Mono requestSpace( - CloudFoundryClient cloudFoundryClient, String spaceId) { - return cloudFoundryClient.spaces().get(GetSpaceRequest.builder().spaceId(spaceId).build()); + private Mono requestSpace(String spaceId) { + return this.cloudFoundryClient + .spaces() + .get(GetSpaceRequest.builder().spaceId(spaceId).build()); } - private static Mono requestSpaceSummary( - CloudFoundryClient cloudFoundryClient, String spaceId) { - return cloudFoundryClient + private Mono requestSpaceSummary(String spaceId) { + return this.cloudFoundryClient .spaces() .getSummary(GetSpaceSummaryRequest.builder().spaceId(spaceId).build()); } - private static Mono requestStack( - CloudFoundryClient cloudFoundryClient, String stackId) { - return cloudFoundryClient.stacks().get(GetStackRequest.builder().stackId(stackId).build()); + private Mono requestStack(String stackId) { + return this.cloudFoundryClient + .stacks() + .get(GetStackRequest.builder().stackId(stackId).build()); } - private static Flux requestStacks( - CloudFoundryClient cloudFoundryClient, String stack) { + private Flux requestStacks(String stack) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .stacks() .list(ListStacksRequest.builder().page(page).name(stack).build())); } - private static Mono requestTerminateApplicationInstance( - CloudFoundryClient cloudFoundryClient, String applicationId, String instanceIndex) { - return cloudFoundryClient + private Mono requestTerminateApplicationInstance( + String applicationId, String instanceIndex) { + return this.cloudFoundryClient .applicationsV2() .terminateInstance( TerminateApplicationInstanceRequest.builder() @@ -2331,21 +2068,18 @@ private static Mono requestTerminateApplicationInstance( .build()); } - private static Mono requestTerminateTask( - CloudFoundryClient cloudFoundryClient, String taskId) { - return cloudFoundryClient + private Mono requestTerminateTask(String taskId) { + return this.cloudFoundryClient .tasks() .cancel(CancelTaskRequest.builder().taskId(taskId).build()); } - private static Mono requestUpdateApplication( - CloudFoundryClient cloudFoundryClient, + private Mono requestUpdateApplication( String applicationId, Map environmentJsons, ApplicationManifest manifest, String stackId) { return requestUpdateApplication( - cloudFoundryClient, applicationId, builder -> { builder.command(manifest.getCommand()) @@ -2386,11 +2120,9 @@ private static Mono requestUpdateApplication( }); } - private static Mono requestUpdateApplication( - CloudFoundryClient cloudFoundryClient, - String applicationId, - UnaryOperator modifier) { - return cloudFoundryClient + private Mono requestUpdateApplication( + String applicationId, UnaryOperator modifier) { + return this.cloudFoundryClient .applicationsV2() .update( modifier.apply( @@ -2400,45 +2132,32 @@ private static Mono requestUpdateApplication( .cast(AbstractApplicationResource.class); } - private static Mono requestUpdateApplicationEnvironment( - CloudFoundryClient cloudFoundryClient, - String applicationId, - Map environment) { + private Mono requestUpdateApplicationEnvironment( + String applicationId, Map environment) { return requestUpdateApplication( - cloudFoundryClient, - applicationId, - builder -> builder.environmentJsons(environment)); + applicationId, builder -> builder.environmentJsons(environment)); } - private static Mono requestUpdateApplicationHealthCheckType( - CloudFoundryClient cloudFoundryClient, - String applicationId, - ApplicationHealthCheck type) { + private Mono requestUpdateApplicationHealthCheckType( + String applicationId, ApplicationHealthCheck type) { return requestUpdateApplication( - cloudFoundryClient, - applicationId, - builder -> builder.healthCheckType(type.getValue())); + applicationId, builder -> builder.healthCheckType(type.getValue())); } - private static Mono requestUpdateApplicationName( - CloudFoundryClient cloudFoundryClient, String applicationId, String name) { - return requestUpdateApplication( - cloudFoundryClient, applicationId, builder -> builder.name(name)); + private Mono requestUpdateApplicationName( + String applicationId, String name) { + return requestUpdateApplication(applicationId, builder -> builder.name(name)); } - private static Mono requestUpdateApplicationSsh( - CloudFoundryClient cloudFoundryClient, String applicationId, boolean enabled) { + private Mono requestUpdateApplicationSsh( + String applicationId, boolean enabled) { return requestUpdateApplicationFeature( - cloudFoundryClient, - applicationId, - builder -> builder.featureName(APP_FEATURE_SSH).enabled(enabled)); + applicationId, builder -> builder.featureName(APP_FEATURE_SSH).enabled(enabled)); } - private static Mono requestUpdateApplicationFeature( - CloudFoundryClient cloudFoundryClient, - String applicationId, - UnaryOperator modifier) { - return cloudFoundryClient + private Mono requestUpdateApplicationFeature( + String applicationId, UnaryOperator modifier) { + return this.cloudFoundryClient .applicationsV3() .updateFeature( modifier.apply( @@ -2449,32 +2168,24 @@ private static Mono requestUpdateApplicationFeature( .cast(ApplicationFeature.class); } - private static Mono requestUpdateApplicationScale( - CloudFoundryClient cloudFoundryClient, - String applicationId, - Integer disk, - Integer instances, - Integer memory) { + private Mono requestUpdateApplicationScale( + String applicationId, Integer disk, Integer instances, Integer memory) { return requestUpdateApplication( - cloudFoundryClient, applicationId, builder -> builder.diskQuota(disk).instances(instances).memory(memory)); } - private static Mono requestUpdateApplicationSsh( - CloudFoundryClient cloudFoundryClient, String applicationId, Boolean enabled) { - return requestUpdateApplication( - cloudFoundryClient, applicationId, builder -> builder.enableSsh(enabled)); + private Mono requestUpdateApplicationSsh( + String applicationId, Boolean enabled) { + return requestUpdateApplication(applicationId, builder -> builder.enableSsh(enabled)); } - private static Mono requestUpdateApplicationState( - CloudFoundryClient cloudFoundryClient, String applicationId, String state) { - return requestUpdateApplication( - cloudFoundryClient, applicationId, builder -> builder.state(state)); + private Mono requestUpdateApplicationState( + String applicationId, String state) { + return requestUpdateApplication(applicationId, builder -> builder.state(state)); } - private static Mono requestUploadApplication( - CloudFoundryClient cloudFoundryClient, + private Mono requestUploadApplication( String applicationId, Path application, List matchedResources) { @@ -2497,15 +2208,12 @@ private static Mono requestUploadApplication( (a, b) -> a) .build(); - return cloudFoundryClient.applicationsV2().upload(request); + return this.cloudFoundryClient.applicationsV2().upload(request); } - private static Mono requestUploadPackage( - CloudFoundryClient cloudFoundryClient, - String packageId, - Path bits, - List matchedResources) { - return cloudFoundryClient + private Mono requestUploadPackage( + String packageId, Path bits, List matchedResources) { + return this.cloudFoundryClient .packages() .upload( UploadPackageRequest.builder() @@ -2516,39 +2224,25 @@ private static Mono requestUploadPackage( .then(); } - private static Mono restageApplication( - CloudFoundryClient cloudFoundryClient, + private Mono restageApplication( String application, String applicationId, Duration stagingTimeout, Duration startupTimeout) { - return requestRestageApplication(cloudFoundryClient, applicationId) - .flatMap( - response -> - waitForStaging( - cloudFoundryClient, - application, - applicationId, - stagingTimeout)) - .then( - waitForRunning( - cloudFoundryClient, application, applicationId, startupTimeout)); + return requestRestageApplication(applicationId) + .flatMap(response -> waitForStaging(application, applicationId, stagingTimeout)) + .then(waitForRunning(application, applicationId, startupTimeout)); } - private static Mono restartApplication( - CloudFoundryClient cloudFoundryClient, + private Mono restartApplication( String application, String applicationId, Duration stagingTimeout, Duration startupTimeout) { - return stopApplication(cloudFoundryClient, applicationId) + return stopApplication(applicationId) .then( startApplicationAndWait( - cloudFoundryClient, - application, - applicationId, - stagingTimeout, - startupTimeout)); + application, applicationId, stagingTimeout, startupTimeout)); } private static boolean shouldStartApplication( @@ -2560,51 +2254,37 @@ private static boolean shouldStartApplication(PushApplicationManifestRequest req return !Optional.ofNullable(request.getNoStart()).orElse(false); } - private static Mono startApplicationAndWait( - CloudFoundryClient cloudFoundryClient, + private Mono startApplicationAndWait( String application, String applicationId, Duration stagingTimeout, Duration startupTimeout) { - return requestUpdateApplicationState(cloudFoundryClient, applicationId, STARTED_STATE) - .flatMap( - response -> - waitForStaging( - cloudFoundryClient, - application, - applicationId, - stagingTimeout)) - .then( - waitForRunning( - cloudFoundryClient, application, applicationId, startupTimeout)); + return requestUpdateApplicationState(applicationId, STARTED_STATE) + .flatMap(response -> waitForStaging(application, applicationId, stagingTimeout)) + .then(waitForRunning(application, applicationId, startupTimeout)); } - private static Mono stopAndStartApplication( - CloudFoundryClient cloudFoundryClient, - String applicationId, - String name, - PushApplicationManifestRequest request) { - return stopApplication(cloudFoundryClient, applicationId) + private Mono stopAndStartApplication( + String applicationId, String name, PushApplicationManifestRequest request) { + return stopApplication(applicationId) .filter(resource -> shouldStartApplication(request, resource)) .flatMap( resource -> startApplicationAndWait( - cloudFoundryClient, name, applicationId, request.getStagingTimeout(), request.getStartupTimeout())); } - private static Mono stopApplication( - CloudFoundryClient cloudFoundryClient, String applicationId) { - return requestUpdateApplicationState(cloudFoundryClient, applicationId, STOPPED_STATE); + private Mono stopApplication(String applicationId) { + return requestUpdateApplicationState(applicationId, STOPPED_STATE); } - private static Mono stopApplicationIfNotStopped( - CloudFoundryClient cloudFoundryClient, AbstractApplicationResource resource) { + private Mono stopApplicationIfNotStopped( + AbstractApplicationResource resource) { return isNotIn(resource, STOPPED_STATE) - ? stopApplication(cloudFoundryClient, ResourceUtils.getId(resource)) + ? stopApplication(ResourceUtils.getId(resource)) : Mono.just(resource); } @@ -2645,7 +2325,7 @@ private static ApplicationEnvironments toApplicationEnvironments( .build(); } - private static Mono toApplicationManifest( + private Mono toApplicationManifest( List buildpacks, SummaryApplicationResponse response, String stackName) { ApplicationManifest.Builder builder = ApplicationManifest.builder() @@ -2773,7 +2453,7 @@ private static InstanceDetail toInstanceDetail( .build(); } - private static Mono> toInstanceDetailList( + private Mono> toInstanceDetailList( ApplicationInstancesResponse instancesResponse, ApplicationStatisticsResponse statisticsResponse) { return Flux.fromIterable(instancesResponse.getInstances().entrySet()) @@ -2807,19 +2487,16 @@ private static String toUrl(org.cloudfoundry.client.v2.routes.Route route) { return sb.toString(); } - private static Mono> toUrls(List routes) { + private Mono> toUrls(List routes) { return Flux.fromIterable(routes).map(DefaultApplications::toUrl).collectList(); } - private static Mono updateBuildpacks( - CloudFoundryClient cloudFoundryClient, - String applicationId, - ApplicationManifest manifest) { + private Mono updateBuildpacks(String applicationId, ApplicationManifest manifest) { if (manifest.getBuildpacks() == null || manifest.getBuildpacks().size() < 2) { return Mono.empty(); } - return cloudFoundryClient + return this.cloudFoundryClient .applicationsV3() .update( org.cloudfoundry.client.v3.applications.UpdateApplicationRequest.builder() @@ -2837,8 +2514,7 @@ private static Mono updateBuildpacks( .then(); } - private static Mono uploadApplicationAndWait( - CloudFoundryClient cloudFoundryClient, + private Mono uploadApplicationAndWait( String applicationId, Path application, List matchedResources, @@ -2847,10 +2523,7 @@ private static Mono uploadApplicationAndWait( () -> { if (matchedResources.isEmpty()) { return requestUploadApplication( - cloudFoundryClient, - applicationId, - application, - matchedResources); + applicationId, application, matchedResources); } else { List paths = matchedResources.stream() @@ -2863,7 +2536,6 @@ private static Mono uploadApplicationAndWait( .flatMap( filteredApplication -> requestUploadApplication( - cloudFoundryClient, applicationId, filteredApplication, matchedResources) @@ -2882,11 +2554,12 @@ private static Mono uploadApplicationAndWait( } }) .flatMap( - job -> JobUtils.waitForCompletion(cloudFoundryClient, stagingTimeout, job)); + job -> + JobUtils.waitForCompletion( + this.cloudFoundryClient, stagingTimeout, job)); } - private static Mono uploadPackageBitsAndWait( - CloudFoundryClient cloudFoundryClient, + private Mono uploadPackageBitsAndWait( String packageId, Path application, List matchedResources, @@ -2895,10 +2568,7 @@ private static Mono uploadPackageBitsAndWait( () -> { if (matchedResources.isEmpty()) { return requestUploadPackage( - cloudFoundryClient, - packageId, - application, - matchedResources); + packageId, application, matchedResources); } else { List paths = matchedResources.stream() @@ -2909,7 +2579,6 @@ private static Mono uploadPackageBitsAndWait( .flatMap( filteredApplication -> requestUploadPackage( - cloudFoundryClient, packageId, filteredApplication, matchedResources) @@ -2927,18 +2596,13 @@ private static Mono uploadPackageBitsAndWait( })); } }) - .then( - waitForUploadProcessingCompleted( - cloudFoundryClient, packageId, processingTimeout)); + .then(waitForUploadProcessingCompleted(packageId, processingTimeout)); } - private static Mono waitForBuildStaging( - CloudFoundryClient cloudFoundryClient, - String buildId, - String applicationName, - Duration stagingTimeout) { + private Mono waitForBuildStaging( + String buildId, String applicationName, Duration stagingTimeout) { Duration timeout = Optional.ofNullable(stagingTimeout).orElse(Duration.ofMinutes(15)); - return cloudFoundryClient + return this.cloudFoundryClient .builds() .get(GetBuildRequest.builder().buildId(buildId).build()) .filter( @@ -2960,14 +2624,11 @@ private static Mono waitForBuildStaging( buildId, applicationName)); } - private static Mono waitForRunning( - CloudFoundryClient cloudFoundryClient, - String application, - String applicationId, - Duration startupTimeout) { + private Mono waitForRunning( + String application, String applicationId, Duration startupTimeout) { Duration timeout = Optional.ofNullable(startupTimeout).orElse(Duration.ofMinutes(5)); - return requestApplicationInstances(cloudFoundryClient, applicationId) + return requestApplicationInstances(applicationId) .flatMapMany(response -> Flux.fromIterable(response.getInstances().values())) .map(ApplicationInstanceInfo::getState) .reduce("UNKNOWN", collectStates()) @@ -2986,16 +2647,13 @@ private static Mono waitForRunning( .then(); } - private static Mono waitForRunningV3( - CloudFoundryClient cloudFoundryClient, - String applicationName, - String applicationId, - Duration startupTimeout) { + private Mono waitForRunningV3( + String applicationName, String applicationId, Duration startupTimeout) { Duration timeout = Optional.ofNullable(startupTimeout).orElse(Duration.ofMinutes(5)); return PaginationUtils.requestClientV3Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .applicationsV3() .listProcesses( ListApplicationProcessesRequest.builder() @@ -3005,7 +2663,7 @@ private static Mono waitForRunningV3( .filter(p -> p.getInstances() != 0) .flatMap( process -> - cloudFoundryClient + this.cloudFoundryClient .processes() .getStatistics( GetProcessStatisticsRequest.builder() @@ -3048,14 +2706,11 @@ private static Mono waitForRunningV3( .then(); } - private static Mono waitForStaging( - CloudFoundryClient cloudFoundryClient, - String application, - String applicationId, - Duration stagingTimeout) { + private Mono waitForStaging( + String application, String applicationId, Duration stagingTimeout) { Duration timeout = Optional.ofNullable(stagingTimeout).orElse(Duration.ofMinutes(15)); - return requestGetApplication(cloudFoundryClient, applicationId) + return requestGetApplication(applicationId) .map(response -> ResourceUtils.getEntity(response).getPackageState()) .filter(isStagingComplete()) .repeatWhenEmpty( @@ -3072,9 +2727,9 @@ private static Mono waitForStaging( .then(); } - private static Mono waitForUploadProcessingCompleted( - CloudFoundryClient cloudFoundryClient, String packageId, Duration processingTimeout) { - return cloudFoundryClient + private Mono waitForUploadProcessingCompleted( + String packageId, Duration processingTimeout) { + return this.cloudFoundryClient .packages() .get(GetPackageRequest.builder().packageId(packageId).build()) .filter( From 63ae428a302cefe8b3c2514608f5077ab5db222a Mon Sep 17 00:00:00 2001 From: Daniel Garnier-Moiroux Date: Wed, 17 Dec 2025 17:54:20 +0100 Subject: [PATCH 3/6] DefaultApplications: remove parameter spaceId and use this. instead --- .../applications/DefaultApplications.java | 206 +++++++++--------- 1 file changed, 97 insertions(+), 109 deletions(-) diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java index 50b0fdd087..34fd46da09 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java @@ -245,10 +245,10 @@ public DefaultApplications( @Override public Mono copySource(CopySourceApplicationRequest request) { return Mono.zip( - getApplicationId(request.getName(), spaceId), + getApplicationId(request.getName()), getApplicationIdFromOrgSpace( request.getTargetName(), - spaceId, + this.spaceId, request.getTargetOrganization(), request.getTargetSpace())) .flatMap( @@ -292,7 +292,7 @@ public Mono delete(DeleteApplicationRequest request) { @Override public Mono disableSsh(DisableApplicationSshRequest request) { - return getApplicationIdV3(request.getName(), spaceId) + return getApplicationIdV3(request.getName()) // TODO dgarnier: is this correct? .filterWhen(applicationId -> getSshEnabled(applicationId)) .flatMap(applicationId -> requestUpdateApplicationSsh(applicationId, false)) @@ -303,7 +303,7 @@ public Mono disableSsh(DisableApplicationSshRequest request) { @Override public Mono enableSsh(EnableApplicationSshRequest request) { - return getApplicationIdV3(request.getName(), spaceId) + return getApplicationIdV3(request.getName()) .filterWhen(applicationId -> getSshEnabled(applicationId).map(enabled -> !enabled)) .flatMap(applicationId -> requestUpdateApplicationSsh(applicationId, true)) .then() @@ -313,7 +313,7 @@ public Mono enableSsh(EnableApplicationSshRequest request) { @Override public Mono get(GetApplicationRequest request) { - return getApplication(request.getName(), spaceId) + return getApplication(request.getName()) .flatMap(app -> getAuxiliaryContent(app)) .map(function(DefaultApplications::toApplicationDetail)) .transform(OperationsLogging.log("Get Application")) @@ -323,7 +323,7 @@ public Mono get(GetApplicationRequest request) { // TODO dgarnier: manifest v3? @Override public Mono getApplicationManifest(GetApplicationManifestRequest request) { - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMap( applicationId -> Mono.zip( @@ -344,7 +344,7 @@ public Mono getApplicationManifest(GetApplicationManifestRe @Override public Mono getEnvironments( GetApplicationEnvironmentsRequest request) { - return getApplicationIdV3(request.getName(), spaceId) + return getApplicationIdV3(request.getName()) .flatMap(applicationId -> requestApplicationEnvironment(applicationId)) .map(DefaultApplications::toApplicationEnvironments) .transform(OperationsLogging.log("Get Application Environments")) @@ -353,7 +353,7 @@ public Mono getEnvironments( @Override public Flux getEvents(GetApplicationEventsRequest request) { - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMapMany( applicationId -> requestEvents(applicationId) @@ -367,7 +367,7 @@ public Flux getEvents(GetApplicationEventsRequest request) { @Override public Mono getHealthCheck(GetApplicationHealthCheckRequest request) { - return getApplication(request.getName(), spaceId) + return getApplication(request.getName()) .map(DefaultApplications::toHealthCheck) .transform(OperationsLogging.log("Get Application Health Check")) .checkpoint(); @@ -375,7 +375,7 @@ public Mono getHealthCheck(GetApplicationHealthCheckRequ @Override public Flux list() { - return requestSpaceSummary(spaceId) + return requestSpaceSummary() .flatMapMany(DefaultApplications::extractApplications) .map(DefaultApplications::toApplicationSummary) .transform(OperationsLogging.log("List Applications")) @@ -384,7 +384,7 @@ public Flux list() { @Override public Flux listTasks(ListApplicationTasksRequest request) { - return getApplicationIdV3(request.getName(), spaceId) + return getApplicationIdV3(request.getName()) .flatMapMany(applicationId -> requestListTasks(applicationId)) .map(DefaultApplications::toTask) .transform(OperationsLogging.log("List Application Tasks")) @@ -393,7 +393,7 @@ public Flux listTasks(ListApplicationTasksRequest request) { @Override public Flux logs(LogsRequest request) { - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMapMany(applicationId -> getLogs(applicationId, request.getRecent())) .transform(OperationsLogging.log("Get Application Logs")) .checkpoint(); @@ -468,7 +468,7 @@ public Mono push(PushApplicationRequest request) { // TODO dgarnier: pass orgId to constructor? @Override public Mono pushManifest(PushApplicationManifestRequest request) { - return getSpaceOrganizationId(spaceId) + return getSpaceOrganizationId(this.spaceId) .flatMap(organizationId -> listAvailableDomains(organizationId)) .flatMapMany( availableDomains -> @@ -480,8 +480,7 @@ public Mono pushManifest(PushApplicationManifestRequest request) { availableDomains, manifest, this.randomWords, - request, - spaceId); + request); } else if (!manifest.getDocker() .getImage() .isEmpty()) { @@ -489,8 +488,7 @@ public Mono pushManifest(PushApplicationManifestRequest request) { availableDomains, manifest, this.randomWords, - request, - spaceId); + request); } else { throw new IllegalStateException( "One of application or" @@ -513,11 +511,11 @@ public Mono pushManifestV3(PushManifestV3Request request) { throw new RuntimeException("Could not serialize manifest", e); } - return applyManifestAndWaitForCompletion(spaceId, manifestSerialized) + return applyManifestAndWaitForCompletion(manifestSerialized) .flatMapMany(ignored -> Flux.fromIterable(request.getManifest().getApplications())) .flatMap( manifestApp -> - getApplicationIdV3(manifestApp.getName(), spaceId) + getApplicationIdV3(manifestApp.getName()) .flatMap( appId -> Mono.zip( @@ -535,7 +533,7 @@ public Mono pushManifestV3(PushManifestV3Request request) { @Override public Mono rename(RenameApplicationRequest request) { - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMap( applicationId -> requestUpdateApplicationName(applicationId, request.getNewName())) @@ -546,7 +544,7 @@ public Mono rename(RenameApplicationRequest request) { @Override public Mono restage(RestageApplicationRequest request) { - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMap( applicationId -> restageApplication( @@ -560,7 +558,7 @@ public Mono restage(RestageApplicationRequest request) { @Override public Mono restart(RestartApplicationRequest request) { - return getApplication(request.getName(), spaceId) + return getApplication(request.getName()) .flatMap(resource -> stopApplicationIfNotStopped(resource)) .flatMap( stoppedApplication -> @@ -575,7 +573,7 @@ public Mono restart(RestartApplicationRequest request) { @Override public Mono restartInstance(RestartApplicationInstanceRequest request) { - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMap( applicationId -> requestTerminateApplicationInstance( @@ -586,7 +584,7 @@ public Mono restartInstance(RestartApplicationInstanceRequest request) { @Override public Mono runTask(RunApplicationTaskRequest request) { - return getApplicationIdV3(request.getApplicationName(), spaceId) + return getApplicationIdV3(request.getApplicationName()) .flatMap(applicationId -> requestCreateTask(applicationId, request)) .map(DefaultApplications::toTask) .transform(OperationsLogging.log("Run Application Task Instance")) @@ -598,7 +596,7 @@ public Mono scale(ScaleApplicationRequest request) { if (!areModifiersPresent(request)) { return Mono.empty(); } - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMap( applicationId -> requestUpdateApplicationScale( @@ -620,7 +618,7 @@ public Mono scale(ScaleApplicationRequest request) { @Override public Mono setEnvironmentVariable(SetEnvironmentVariableApplicationRequest request) { - return getApplication(request.getName(), spaceId) + return getApplication(request.getName()) .flatMap( resource -> requestUpdateApplicationEnvironment( @@ -636,7 +634,7 @@ public Mono setEnvironmentVariable(SetEnvironmentVariableApplicationReques @Override public Mono setHealthCheck(SetApplicationHealthCheckRequest request) { - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMap( applicationId -> requestUpdateApplicationHealthCheckType( @@ -648,7 +646,7 @@ public Mono setHealthCheck(SetApplicationHealthCheckRequest request) { @Override public Mono sshEnabled(ApplicationSshEnabledRequest request) { - return getApplicationIdV3(request.getName(), spaceId) + return getApplicationIdV3(request.getName()) .flatMap(applicationId -> getSshEnabled(applicationId)) .transform(OperationsLogging.log("Is Application SSH Enabled")) .checkpoint(); @@ -656,7 +654,7 @@ public Mono sshEnabled(ApplicationSshEnabledRequest request) { @Override public Mono start(StartApplicationRequest request) { - return getApplicationIdWhere(request.getName(), spaceId, isNotIn(STARTED_STATE)) + return getApplicationIdWhere(request.getName(), isNotIn(STARTED_STATE)) .flatMap( applicationId -> startApplicationAndWait( @@ -670,7 +668,7 @@ public Mono start(StartApplicationRequest request) { @Override public Mono stop(StopApplicationRequest request) { - return getApplicationIdWhere(request.getName(), spaceId, isNotIn(STOPPED_STATE)) + return getApplicationIdWhere(request.getName(), isNotIn(STOPPED_STATE)) .flatMap(applicationId -> stopApplication(applicationId)) .then() .transform(OperationsLogging.log("Stop Application")) @@ -679,7 +677,7 @@ public Mono stop(StopApplicationRequest request) { @Override public Mono terminateTask(TerminateApplicationTaskRequest request) { - return getApplicationIdV3(request.getApplicationName(), spaceId) + return getApplicationIdV3(request.getApplicationName()) .flatMap(applicationId -> getTaskId(applicationId, request.getSequenceId())) .flatMap(taskId -> requestTerminateTask(taskId)) .then() @@ -689,7 +687,7 @@ public Mono terminateTask(TerminateApplicationTaskRequest request) { @Override public Mono unsetEnvironmentVariable(UnsetEnvironmentVariableApplicationRequest request) { - return getApplication(request.getName(), spaceId) + return getApplication(request.getName()) .flatMap( resource -> requestUpdateApplicationEnvironment( @@ -740,14 +738,13 @@ private Mono applyDropletAndWaitForRunning( .then(waitForRunningV3(appname, appId, null)); } - private Mono applyManifestAndWaitForCompletion( - String spaceId, byte[] manifestSerialized) { + private Mono applyManifestAndWaitForCompletion(byte[] manifestSerialized) { return this.cloudFoundryClient .spacesV3() .applyManifest( ApplyManifestRequest.builder() .manifest(manifestSerialized) - .spaceId(spaceId) + .spaceId(this.spaceId) .build()) .map( response -> @@ -773,25 +770,23 @@ private Flux associateDefaultDomain( String applicationId, List availableDomains, ApplicationManifest manifest, - RandomWords randomWords, - String spaceId) { + RandomWords randomWords) { return getDefaultDomainId() .flatMapMany( domainId -> getPushRouteIdFromDomain( - availableDomains, domainId, manifest, randomWords, spaceId)) + availableDomains, domainId, manifest, randomWords)) .flatMap(routeId -> requestAssociateRoute(applicationId, routeId)) .map(ResourceUtils::getId); } - private Mono bindServices( - String applicationId, ApplicationManifest manifest, String spaceId) { + private Mono bindServices(String applicationId, ApplicationManifest manifest) { if (manifest.getServices() == null || manifest.getServices().size() == 0) { return Mono.empty(); } return Flux.fromIterable(manifest.getServices()) - .flatMap(serviceInstanceName -> getServiceId(serviceInstanceName, spaceId)) + .flatMap(serviceInstanceName -> getServiceId(serviceInstanceName)) .flatMap( serviceInstanceId -> requestCreateServiceBinding(applicationId, serviceInstanceId) @@ -1002,6 +997,10 @@ private static Flux extractApplications( return Flux.fromIterable(getSpaceSummaryResponse.getApplications()); } + private Mono getApplication(String application) { + return getApplication(application, spaceId); + } + private Mono getApplication(String application, String spaceId) { return requestApplications(application, spaceId) .single() @@ -1027,13 +1026,16 @@ private Mono> getApplicationBuildpacks(String applicationId) { .defaultIfEmpty(Collections.emptyList()); } + private Mono getApplicationId(String application) { + return getApplicationId(application, spaceId); + } + private Mono getApplicationId(String application, String spaceId) { return getApplication(application, spaceId).map(ResourceUtils::getId); } - private Mono getApplicationId( - ApplicationManifest manifest, String spaceId, String stackId) { - return requestApplications(manifest.getName(), spaceId) + private Mono getApplicationId(ApplicationManifest manifest, String stackId) { + return requestApplications(manifest.getName()) .singleOrEmpty() .flatMap( application -> { @@ -1053,8 +1055,7 @@ private Mono getApplicationId( .map(ResourceUtils::getId); }) .switchIfEmpty( - requestCreateApplication(manifest, spaceId, stackId) - .map(ResourceUtils::getId)); + requestCreateApplication(manifest, stackId).map(ResourceUtils::getId)); } private Mono getApplicationIdFromOrgSpace( @@ -1073,13 +1074,13 @@ private Mono getApplicationIdFromOrgSpace( .flatMap(spaceId1 -> getApplicationId(application, spaceId1)); } - private Mono getApplicationIdV3(String applicationName, String spaceId) { - return getApplicationV3(applicationName, spaceId).map(ApplicationResource::getId); + private Mono getApplicationIdV3(String applicationName) { + return getApplicationV3(applicationName).map(ApplicationResource::getId); } private Mono getApplicationIdWhere( - String application, String spaceId, Predicate predicate) { - return getApplication(application, spaceId).filter(predicate).map(ResourceUtils::getId); + String application, Predicate predicate) { + return getApplication(application).filter(predicate).map(ResourceUtils::getId); } private Mono getApplicationInstances(String applicationId) { @@ -1106,8 +1107,8 @@ private Mono getApplicationStatistics(String appl t -> Mono.just(ApplicationStatisticsResponse.builder().build())); } - private Mono getApplicationV3(String application, String spaceId) { - return requestApplicationsV3(application, spaceId) + private Mono getApplicationV3(String application) { + return requestApplicationsV3(application) .single() .onErrorResume( NoSuchElementException.class, @@ -1263,10 +1264,9 @@ private Flux getPushRouteIdFromDomain( List availableDomains, String domainId, ApplicationManifest manifest, - RandomWords randomWords, - String spaceId) { + RandomWords randomWords) { if (isTcpDomain(availableDomains, domainId)) { - return requestCreateTcpRoute(domainId, spaceId).map(ResourceUtils::getId).flux(); + return requestCreateTcpRoute(domainId).map(ResourceUtils::getId).flux(); } List hosts; @@ -1295,16 +1295,14 @@ private Flux getPushRouteIdFromDomain( requestCreateRoute( domainId, host, - manifest.getRoutePath(), - spaceId) + manifest.getRoutePath()) .map(ResourceUtils::getId))); } private Flux getPushRouteIdFromRoute( List availableDomains, ApplicationManifest manifest, - RandomWords randomWords, - String spaceId) { + RandomWords randomWords) { return Flux.fromIterable(manifest.getRoutes()) .flatMap( route -> @@ -1317,11 +1315,10 @@ private Flux getPushRouteIdFromRoute( String domainId = getDomainId(availableDomains, decomposedRoute.getDomain()); if (isTcpDomain(availableDomains, domainId)) { - return getRouteIdForTcpRoute( - decomposedRoute, domainId, manifest, spaceId); + return getRouteIdForTcpRoute(decomposedRoute, domainId, manifest); } else { return getRouteIdForHttpRoute( - decomposedRoute, domainId, manifest, randomWords, spaceId); + decomposedRoute, domainId, manifest, randomWords); } }); } @@ -1342,28 +1339,23 @@ private Mono getRouteIdForHttpRoute( DecomposedRoute decomposedRoute, String domainId, ApplicationManifest manifest, - RandomWords randomWords, - String spaceId) { + RandomWords randomWords) { String derivedHost = deriveHostname(decomposedRoute.getHost(), manifest, randomWords); return getRouteId(domainId, derivedHost, decomposedRoute.getPath()) .switchIfEmpty( - requestCreateRoute( - domainId, derivedHost, decomposedRoute.getPath(), spaceId) + requestCreateRoute(domainId, derivedHost, decomposedRoute.getPath()) .map(ResourceUtils::getId)); } private Mono getRouteIdForTcpRoute( - DecomposedRoute decomposedRoute, - String domainId, - ApplicationManifest manifest, - String spaceId) { + DecomposedRoute decomposedRoute, String domainId, ApplicationManifest manifest) { if (Optional.ofNullable(manifest.getRandomRoute()).orElse(false)) { - return requestCreateTcpRoute(domainId, spaceId).map(ResourceUtils::getId); + return requestCreateTcpRoute(domainId).map(ResourceUtils::getId); } return getTcpRouteId(domainId, decomposedRoute.getPort()) .switchIfEmpty( - requestCreateTcpRoute(domainId, decomposedRoute.getPort(), spaceId) + requestCreateTcpRoute(domainId, decomposedRoute.getPort()) .map(ResourceUtils::getId)); } @@ -1374,15 +1366,15 @@ private Mono> getRoutes(String app private Mono>, String>> getRoutesAndApplicationId( DeleteApplicationRequest request, String spaceId, boolean deleteRoutes) { - return getApplicationId(request.getName(), spaceId) + return getApplicationId(request.getName()) .flatMap( applicationId -> getOptionalRoutes(deleteRoutes, applicationId) .zipWith(Mono.just(applicationId))); } - private Mono getServiceId(String serviceInstanceName, String spaceId) { - return requestListServiceInstances(serviceInstanceName, spaceId) + private Mono getServiceId(String serviceInstanceName) { + return requestListServiceInstances(serviceInstanceName) .map(ResourceUtils::getId) .single() .onErrorResume( @@ -1499,8 +1491,7 @@ private Mono prepareDomainsAndRoutes( List availableDomains, ApplicationManifest manifest, List existingRoutes, - RandomWords randomWords, - String spaceId) { + RandomWords randomWords) { if (Optional.ofNullable(manifest.getNoRoute()).orElse(false)) { return Flux.fromIterable(existingRoutes) .map(ResourceUtils::getId) @@ -1512,7 +1503,7 @@ private Mono prepareDomainsAndRoutes( if (manifest.getDomains() == null) { if (existingRoutes.isEmpty()) { return associateDefaultDomain( - applicationId, availableDomains, manifest, randomWords, spaceId) + applicationId, availableDomains, manifest, randomWords) .then(); } return Mono.empty(); // A route already exists for the application, do nothing @@ -1524,8 +1515,7 @@ private Mono prepareDomainsAndRoutes( availableDomains, getDomainId(availableDomains, domain), manifest, - randomWords, - spaceId) + randomWords) .flatMap( routeId -> requestAssociateRoute( @@ -1536,7 +1526,7 @@ private Mono prepareDomainsAndRoutes( List existingRouteIds = existingRoutes.stream().map(ResourceUtils::getId).collect(Collectors.toList()); - return getPushRouteIdFromRoute(availableDomains, manifest, randomWords, spaceId) + return getPushRouteIdFromRoute(availableDomains, manifest, randomWords) .filter(routeId -> !existingRouteIds.contains(routeId)) .flatMapSequential(routeId -> requestAssociateRoute(applicationId, routeId), 1) .then(); @@ -1546,11 +1536,10 @@ private Flux pushApplication( List availableDomains, ApplicationManifest manifest, RandomWords randomWords, - PushApplicationManifestRequest request, - String spaceId) { + PushApplicationManifestRequest request) { return getOptionalStackId(manifest.getStack()) - .flatMapMany(stackId -> getApplicationId(manifest, spaceId, stackId.orElse(null))) + .flatMapMany(stackId -> getApplicationId(manifest, stackId.orElse(null))) .flatMap( applicationId -> Mono.zip( @@ -1566,8 +1555,7 @@ private Flux pushApplication( availableDomains, manifest, existingRoutes, - randomWords, - spaceId) + randomWords) .thenReturn( Tuples.of( applicationId, matchedResources)))) @@ -1575,8 +1563,7 @@ private Flux pushApplication( function( (applicationId, matchedResources) -> Mono.when( - bindServices( - applicationId, manifest, spaceId), + bindServices(applicationId, manifest), updateBuildpacks(applicationId, manifest), uploadApplicationAndWait( applicationId, @@ -1594,11 +1581,10 @@ private Flux pushDocker( List availableDomains, ApplicationManifest manifest, RandomWords randomWords, - PushApplicationManifestRequest request, - String spaceId) { + PushApplicationManifestRequest request) { return getOptionalStackId(manifest.getStack()) - .flatMapMany(stackId -> getApplicationId(manifest, spaceId, stackId.orElse(null))) + .flatMapMany(stackId -> getApplicationId(manifest, stackId.orElse(null))) .flatMap( applicationId -> Mono.zip( @@ -1612,10 +1598,9 @@ private Flux pushDocker( availableDomains, manifest, existingRoutes, - randomWords, - spaceId) + randomWords) .thenReturn(applicationId))) - .delayUntil(applicationId -> bindServices(applicationId, manifest, spaceId)) + .delayUntil(applicationId -> bindServices(applicationId, manifest)) .flatMap( applicationId -> stopAndStartApplication( @@ -1682,6 +1667,10 @@ private Mono requestApplicationSummary(String applic .summary(SummaryApplicationRequest.builder().applicationId(applicationId).build()); } + private Flux requestApplications(String application) { + return requestApplications(application, spaceId); + } + private Flux requestApplications( String application, String spaceId) { return PaginationUtils.requestClientV2Resources( @@ -1697,7 +1686,7 @@ private Flux requestApplications( .cast(AbstractApplicationResource.class); } - private Flux requestApplicationsV3(String application, String spaceId) { + private Flux requestApplicationsV3(String application) { return PaginationUtils.requestClientV3Resources( page -> this.cloudFoundryClient @@ -1705,7 +1694,7 @@ private Flux requestApplicationsV3(String application, Stri .list( ListApplicationsRequest.builder() .name(application) - .spaceId(spaceId) + .spaceId(this.spaceId) .page(page) .build())); } @@ -1733,7 +1722,7 @@ private Mono requestCopyBits( } private Mono requestCreateApplication( - ApplicationManifest manifest, String spaceId, String stackId) { + ApplicationManifest manifest, String stackId) { CreateApplicationRequest.Builder builder = CreateApplicationRequest.builder() .command(manifest.getCommand()) @@ -1748,7 +1737,7 @@ private Mono requestCreateApplication( .instances(manifest.getInstances()) .memory(manifest.getMemory()) .name(manifest.getName()) - .spaceId(spaceId) + .spaceId(this.spaceId) .stackId(stackId); if (manifest.getBuildpacks() != null && manifest.getBuildpacks().size() == 1) { @@ -1775,7 +1764,7 @@ private Mono requestCreateApplication( } private Mono requestCreateRoute( - String domainId, String host, String routePath, String spaceId) { + String domainId, String host, String routePath) { return this.cloudFoundryClient .routes() .create( @@ -1783,7 +1772,7 @@ private Mono requestCreateRoute( .domainId(domainId) .host(host) .path(routePath) - .spaceId(spaceId) + .spaceId(this.spaceId) .build()); } @@ -1812,26 +1801,25 @@ private Mono requestCreateTask( .build()); } - private Mono requestCreateTcpRoute(String domainId, String spaceId) { + private Mono requestCreateTcpRoute(String domainId) { return this.cloudFoundryClient .routes() .create( org.cloudfoundry.client.v2.routes.CreateRouteRequest.builder() .domainId(domainId) .generatePort(true) - .spaceId(spaceId) + .spaceId(this.spaceId) .build()); } - private Mono requestCreateTcpRoute( - String domainId, Integer port, String spaceId) { + private Mono requestCreateTcpRoute(String domainId, Integer port) { return this.cloudFoundryClient .routes() .create( org.cloudfoundry.client.v2.routes.CreateRouteRequest.builder() .domainId(domainId) .port(port) - .spaceId(spaceId) + .spaceId(this.spaceId) .build()); } @@ -1899,7 +1887,7 @@ private Flux requestListServiceBindings(String applicati } private Flux requestListServiceInstances( - String serviceInstanceName, String spaceId) { + String serviceInstanceName) { return PaginationUtils.requestClientV2Resources( page -> this.cloudFoundryClient @@ -1909,7 +1897,7 @@ private Flux requestListServiceInstances( .page(page) .returnUserProvidedServiceInstances(true) .name(serviceInstanceName) - .spaceId(spaceId) + .spaceId(this.spaceId) .build())); } @@ -2037,10 +2025,10 @@ private Mono requestSpace(String spaceId) { .get(GetSpaceRequest.builder().spaceId(spaceId).build()); } - private Mono requestSpaceSummary(String spaceId) { + private Mono requestSpaceSummary() { return this.cloudFoundryClient .spaces() - .getSummary(GetSpaceSummaryRequest.builder().spaceId(spaceId).build()); + .getSummary(GetSpaceSummaryRequest.builder().spaceId(this.spaceId).build()); } private Mono requestStack(String stackId) { From f13e97bccc2c203f955dd86da3ff46c11591db78 Mon Sep 17 00:00:00 2001 From: Daniel Garnier-Moiroux Date: Wed, 17 Dec 2025 18:12:47 +0100 Subject: [PATCH 4/6] DefaultApplications: use applicationsV3 for routes --- .../applications/DefaultApplications.java | 20 ++++++++------ .../applications/DefaultApplicationsTest.java | 27 ++++++++++--------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java index 34fd46da09..fa94c962d0 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java @@ -56,7 +56,6 @@ import org.cloudfoundry.client.v2.applications.CreateApplicationResponse; import org.cloudfoundry.client.v2.applications.DockerCredentials; import org.cloudfoundry.client.v2.applications.InstanceStatistics; -import org.cloudfoundry.client.v2.applications.ListApplicationRoutesRequest; import org.cloudfoundry.client.v2.applications.ListApplicationServiceBindingsRequest; import org.cloudfoundry.client.v2.applications.RemoveApplicationRouteRequest; import org.cloudfoundry.client.v2.applications.RemoveApplicationServiceBindingRequest; @@ -116,6 +115,7 @@ import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledRequest; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledResponse; import org.cloudfoundry.client.v3.applications.ListApplicationProcessesRequest; +import org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest; import org.cloudfoundry.client.v3.applications.ListApplicationsRequest; import org.cloudfoundry.client.v3.applications.SetApplicationCurrentDropletRequest; import org.cloudfoundry.client.v3.applications.UpdateApplicationFeatureRequest; @@ -1096,7 +1096,8 @@ private Mono getApplicationInstances(String applic t -> Mono.just(ApplicationInstancesResponse.builder().build())); } - private Mono> getApplicationRoutes(String applicationId) { + private Mono> getApplicationRoutes( + String applicationId) { return requestApplicationRoutes(applicationId).collectList(); } @@ -1490,11 +1491,11 @@ private Mono prepareDomainsAndRoutes( String applicationId, List availableDomains, ApplicationManifest manifest, - List existingRoutes, + List existingRoutes, RandomWords randomWords) { if (Optional.ofNullable(manifest.getNoRoute()).orElse(false)) { return Flux.fromIterable(existingRoutes) - .map(ResourceUtils::getId) + .map(org.cloudfoundry.client.v3.routes.RouteResource::getId) .flatMap(routeId -> requestRemoveRouteFromApplication(applicationId, routeId)) .then(); } @@ -1524,7 +1525,9 @@ private Mono prepareDomainsAndRoutes( } List existingRouteIds = - existingRoutes.stream().map(ResourceUtils::getId).collect(Collectors.toList()); + existingRoutes.stream() + .map(org.cloudfoundry.client.v3.routes.RouteResource::getId) + .collect(Collectors.toList()); return getPushRouteIdFromRoute(availableDomains, manifest, randomWords) .filter(routeId -> !existingRouteIds.contains(routeId)) @@ -1640,11 +1643,12 @@ private Mono requestApplicationInstances(String ap ApplicationInstancesRequest.builder().applicationId(applicationId).build()); } - private Flux requestApplicationRoutes(String applicationId) { - return PaginationUtils.requestClientV2Resources( + private Flux requestApplicationRoutes( + String applicationId) { + return PaginationUtils.requestClientV3Resources( page -> this.cloudFoundryClient - .applicationsV2() + .applicationsV3() .listRoutes( ListApplicationRoutesRequest.builder() .applicationId(applicationId) diff --git a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java index 2398d3325d..608629f602 100644 --- a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java +++ b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java @@ -55,8 +55,6 @@ import org.cloudfoundry.client.v2.applications.DockerCredentials; import org.cloudfoundry.client.v2.applications.GetApplicationResponse; import org.cloudfoundry.client.v2.applications.InstanceStatistics; -import org.cloudfoundry.client.v2.applications.ListApplicationRoutesRequest; -import org.cloudfoundry.client.v2.applications.ListApplicationRoutesResponse; import org.cloudfoundry.client.v2.applications.ListApplicationServiceBindingsRequest; import org.cloudfoundry.client.v2.applications.ListApplicationServiceBindingsResponse; import org.cloudfoundry.client.v2.applications.RemoveApplicationRouteRequest; @@ -124,11 +122,14 @@ import org.cloudfoundry.client.v3.BuildpackData; import org.cloudfoundry.client.v3.DockerData; import org.cloudfoundry.client.v3.Lifecycle; +import org.cloudfoundry.client.v3.Pagination; import org.cloudfoundry.client.v3.applications.ApplicationState; import org.cloudfoundry.client.v3.applications.GetApplicationEnvironmentRequest; import org.cloudfoundry.client.v3.applications.GetApplicationEnvironmentResponse; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledRequest; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledResponse; +import org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest; +import org.cloudfoundry.client.v3.applications.ListApplicationRoutesResponse; import org.cloudfoundry.client.v3.applications.ListApplicationsRequest; import org.cloudfoundry.client.v3.applications.ListApplicationsResponse; import org.cloudfoundry.client.v3.applications.UpdateApplicationFeatureRequest; @@ -4241,30 +4242,30 @@ private static void requestApplicationNullUsage( private static void requestApplicationRoutes( CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { when(cloudFoundryClient - .applicationsV2() + .applicationsV3() .listRoutes( - ListApplicationRoutesRequest.builder() + org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest + .builder() .applicationId(applicationId) .page(1) .build())) .thenReturn( Mono.just( - fill(ListApplicationRoutesResponse.builder()) + fill(org.cloudfoundry.client.v3.applications + .ListApplicationRoutesResponse.builder()) .resource( - fill(RouteResource.builder()) - .metadata( - fill(Metadata.builder()) - .id(routeId) - .build()) + fill(org.cloudfoundry.client.v3.routes.RouteResource + .builder()) + .id(routeId) .build()) - .totalPages(1) + .pagination(Pagination.builder().totalPages(1).build()) .build())); } private static void requestApplicationRoutesEmpty( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() + .applicationsV3() .listRoutes( ListApplicationRoutesRequest.builder() .applicationId(applicationId) @@ -4273,7 +4274,7 @@ private static void requestApplicationRoutesEmpty( .thenReturn( Mono.just( fill(ListApplicationRoutesResponse.builder()) - .totalPages(1) + .pagination(Pagination.builder().totalPages(1).build()) .build())); } From b287d5827e5d47c057ee7c0935c487ae151b1436 Mon Sep 17 00:00:00 2001 From: Daniel Garnier-Moiroux Date: Thu, 18 Dec 2025 18:06:28 +0100 Subject: [PATCH 5/6] ch4: JsonComparator and RequestPostProcessor --- .../applications/DefaultApplications.java | 40 +- .../applications/DefaultApplicationsTest.java | 1283 +++++++++-------- 2 files changed, 703 insertions(+), 620 deletions(-) diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java index fa94c962d0..7d2cac7464 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java @@ -111,6 +111,8 @@ import org.cloudfoundry.client.v3.applications.ApplicationResource; import org.cloudfoundry.client.v3.applications.GetApplicationEnvironmentRequest; import org.cloudfoundry.client.v3.applications.GetApplicationEnvironmentResponse; +import org.cloudfoundry.client.v3.applications.GetApplicationProcessStatisticsRequest; +import org.cloudfoundry.client.v3.applications.GetApplicationProcessStatisticsResponse; import org.cloudfoundry.client.v3.applications.GetApplicationResponse; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledRequest; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledResponse; @@ -821,14 +823,15 @@ private static String cleanName(ApplicationManifest manifest) { return manifest.getName().replaceAll("\\.", ""); } - private static BiFunction collectStates() { + public static BiFunction collectStates() { return (totalState, instanceState) -> { - if ("RUNNING".equals(instanceState) || "RUNNING".equals(totalState)) { - return "RUNNING"; + if (ProcessState.RUNNING.equals(instanceState) + || ProcessState.RUNNING.equals(totalState)) { + return ProcessState.RUNNING; } - if ("FLAPPING".equals(instanceState) || "CRASHED".equals(instanceState)) { - return "FAILED"; + if (ProcessState.CRASHED.equals(instanceState)) { + return ProcessState.CRASHED; } return totalState; @@ -1434,8 +1437,8 @@ private static boolean isIdentical(String s, String t) { return Objects.equals(s, t); } - private static Predicate isInstanceComplete() { - return state -> "RUNNING".equals(state) || "FAILED".equals(state); + private static Predicate isInstanceComplete() { + return state -> ProcessState.RUNNING.equals(state) || ProcessState.CRASHED.equals(state); } private static Predicate isNotIn(String expectedState) { @@ -1452,8 +1455,8 @@ private static boolean isRestartRequired( && STARTED_STATE.equals(ResourceUtils.getEntity(applicationResource).getState()); } - private static Predicate isRunning() { - return "RUNNING"::equals; + private static Predicate isRunning() { + return ProcessState.RUNNING::equals; } private static Predicate isStaged() { @@ -1643,6 +1646,17 @@ private Mono requestApplicationInstances(String ap ApplicationInstancesRequest.builder().applicationId(applicationId).build()); } + private Mono requestApplicationStatisticsV3( + String applicationId) { + return this.cloudFoundryClient + .applicationsV3() + .getProcessStatistics( + GetApplicationProcessStatisticsRequest.builder() + .applicationId(applicationId) + .type("web") + .build()); + } + private Flux requestApplicationRoutes( String applicationId) { return PaginationUtils.requestClientV3Resources( @@ -2620,10 +2634,10 @@ private Mono waitForRunning( String application, String applicationId, Duration startupTimeout) { Duration timeout = Optional.ofNullable(startupTimeout).orElse(Duration.ofMinutes(5)); - return requestApplicationInstances(applicationId) - .flatMapMany(response -> Flux.fromIterable(response.getInstances().values())) - .map(ApplicationInstanceInfo::getState) - .reduce("UNKNOWN", collectStates()) + return requestApplicationStatisticsV3(applicationId) + .flatMapIterable(GetApplicationProcessStatisticsResponse::getResources) + .map(ProcessStatisticsResource::getState) + .reduce(ProcessState.STARTING, collectStates()) .filter(isInstanceComplete()) .repeatWhenEmpty( exponentialBackOff(Duration.ofSeconds(1), Duration.ofSeconds(15), timeout)) diff --git a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java index 608629f602..14b20a5eb3 100644 --- a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java +++ b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java @@ -16,14 +16,6 @@ package org.cloudfoundry.operations.applications; -import static org.assertj.core.api.Assertions.assertThat; -import static org.cloudfoundry.client.v3.LifecycleType.BUILDPACK; -import static org.cloudfoundry.client.v3.LifecycleType.DOCKER; -import static org.cloudfoundry.operations.TestObjects.fill; -import static org.mockito.Mockito.RETURNS_SMART_NULLS; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - import java.io.IOException; import java.nio.file.Path; import java.time.Duration; @@ -36,6 +28,7 @@ import java.util.Optional; import java.util.Queue; import java.util.function.Supplier; + import org.cloudfoundry.client.CloudFoundryClient; import org.cloudfoundry.client.v2.ClientV2Exception; import org.cloudfoundry.client.v2.Metadata; @@ -126,6 +119,7 @@ import org.cloudfoundry.client.v3.applications.ApplicationState; import org.cloudfoundry.client.v3.applications.GetApplicationEnvironmentRequest; import org.cloudfoundry.client.v3.applications.GetApplicationEnvironmentResponse; +import org.cloudfoundry.client.v3.applications.GetApplicationProcessStatisticsResponse; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledRequest; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledResponse; import org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest; @@ -134,6 +128,8 @@ import org.cloudfoundry.client.v3.applications.ListApplicationsResponse; import org.cloudfoundry.client.v3.applications.UpdateApplicationFeatureRequest; import org.cloudfoundry.client.v3.applications.UpdateApplicationFeatureResponse; +import org.cloudfoundry.client.v3.processes.ProcessState; +import org.cloudfoundry.client.v3.processes.ProcessStatisticsResource; import org.cloudfoundry.client.v3.tasks.CancelTaskRequest; import org.cloudfoundry.client.v3.tasks.CancelTaskResponse; import org.cloudfoundry.client.v3.tasks.CreateTaskRequest; @@ -150,12 +146,21 @@ import org.cloudfoundry.util.FluentMap; import org.cloudfoundry.util.ResourceMatchingUtils; import org.junit.jupiter.api.Test; -import org.springframework.core.io.ClassPathResource; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import reactor.test.scheduler.VirtualTimeScheduler; +import org.springframework.core.io.ClassPathResource; +import static org.assertj.core.api.Assertions.assertThat; +import static org.cloudfoundry.client.v3.LifecycleType.BUILDPACK; +import static org.cloudfoundry.client.v3.LifecycleType.DOCKER; +import static org.cloudfoundry.operations.TestObjects.fill; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.RETURNS_SMART_NULLS; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + final class DefaultApplicationsTest extends AbstractOperationsTest { private RandomWords randomWords = mock(RandomWords.class, RETURNS_SMART_NULLS); @@ -363,7 +368,7 @@ void deleteAndDeleteRoutesFailure() { .isInstanceOf(ClientV2Exception.class) .hasMessage( "test-error-details-errorCode(1):" - + " test-error-details-description")) + + " test-error-details-description")) .verify(Duration.ofSeconds(5)); } @@ -804,7 +809,7 @@ void getEvents() { .actor("test-event-actorName") .description( "instances: 1, memory: 2, state: test-state," - + " environment_json: test-data") + + " environment_json: test-data") .event("test-event-type") .id("test-event-id") .time(DateUtils.parseFromIso8601("2016-02-08T15:45:59Z")) @@ -950,7 +955,7 @@ void getEventsTwo() { .actor("test-event-actorName") .description( "instances: 1, memory: 2, state: test-state," - + " environment_json: test-data") + + " environment_json: test-data") .event("test-event-type") .id("test-event-id") .time(DateUtils.parseFromIso8601("2016-02-08T15:45:59Z")) @@ -3198,7 +3203,7 @@ void pushUploadFails() throws IOException { .isInstanceOf(ClientV2Exception.class) .hasMessage( "test-error-details-errorCode(1):" - + " test-error-details-description")) + + " test-error-details-description")) .verify(Duration.ofSeconds(5)); } @@ -3297,7 +3302,7 @@ void restageStagingFailure() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name failed during" - + " staging")) + + " staging")) .verify(Duration.ofSeconds(5)); } @@ -3347,7 +3352,7 @@ void restageStartingFailureTotal() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name failed during" - + " start")) + + " start")) .verify(Duration.ofSeconds(5)); } @@ -3375,7 +3380,7 @@ void restageTimeout() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name timed out during" - + " staging")) + + " staging")) .verify(Duration.ofSeconds(5)); } @@ -3462,7 +3467,7 @@ void restartNoApp() { .isInstanceOf(IllegalArgumentException.class) .hasMessage( "Application test-non-existent-app-name does not" - + " exist")) + + " exist")) .verify(Duration.ofSeconds(5)); } @@ -3775,7 +3780,7 @@ void startApplicationFailureTotal() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name failed during" - + " start")) + + " start")) .verify(Duration.ofSeconds(5)); } @@ -3800,7 +3805,7 @@ void startApplicationTimeout() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name timed out during" - + " start")) + + " start")) .verify(Duration.ofSeconds(5)); } @@ -3996,11 +4001,11 @@ private static void provideRandomWords(RandomWords randomWords) { private static void requestApplicationEmptyInstance( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationInstancesResponse.builder() @@ -4013,22 +4018,22 @@ private static void requestApplicationEmptyInstance( private static void requestApplicationEmptyStats( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn(Mono.just(ApplicationStatisticsResponse.builder().build())); } private static void requestApplicationEnvironment( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .getEnvironment( - GetApplicationEnvironmentRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .getEnvironment( + GetApplicationEnvironmentRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( GetApplicationEnvironmentResponse.builder() @@ -4047,19 +4052,19 @@ private static void requestApplicationEnvironment( private static void requestApplicationInstances( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationInstancesResponse.builder() .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .build()) .build())); } @@ -4067,11 +4072,11 @@ private static void requestApplicationInstances( private static void requestApplicationInstancesError( CloudFoundryClient cloudFoundryClient, String applicationId, Integer code) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.error( new ClientV2Exception( @@ -4084,129 +4089,193 @@ private static void requestApplicationInstancesError( private static void requestApplicationInstancesFailingPartial( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("RUNNING") .build()) .instance( "instance-1", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("FLAPPING") .build()) .build())); + when(cloudFoundryClient.applicationsV3().getProcessStatistics(any())) + .thenReturn( + Mono.just( + GetApplicationProcessStatisticsResponse.builder() + .resources( + fill( + ProcessStatisticsResource.builder()) + .state(ProcessState.RUNNING) + .type("web") + .uptime(1L) + .fileDescriptorQuota(1L) + .host("test-host") + .build(), + fill(ProcessStatisticsResource.builder()) + .state(ProcessState.CRASHED) + .type("web") + .uptime(1L) + .fileDescriptorQuota(1L) + .host("test-host") + .build()) + .build())); } private static void requestApplicationInstancesFailingTotal( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("FLAPPING") .build()) .build())); + when(cloudFoundryClient.applicationsV3().getProcessStatistics(any())) + .thenReturn( + Mono.just( + GetApplicationProcessStatisticsResponse.builder() + .resource( + fill( + ProcessStatisticsResource.builder()) + .state(ProcessState.CRASHED) + .type("web") + .uptime(1L) + .fileDescriptorQuota(1L) + .host("test-host") + .build()) + .build())); } private static void requestApplicationInstancesRunning( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("RUNNING") .build()) .build())); + + when(cloudFoundryClient.applicationsV3().getProcessStatistics(any())) + .thenReturn( + Mono.just( + GetApplicationProcessStatisticsResponse.builder() + .resource( + fill( + ProcessStatisticsResource.builder()) + .state(ProcessState.RUNNING) + .type("web") + .uptime(1L) + .fileDescriptorQuota(1L) + .host("test-host") + .build()) + .build())); } private static void requestApplicationInstancesTimeout( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("STARTING") .build()) .build())); + when(cloudFoundryClient.applicationsV3().getProcessStatistics(any())) + .thenReturn( + Mono.just( + GetApplicationProcessStatisticsResponse.builder() + .resource( + fill( + ProcessStatisticsResource.builder()) + .state(ProcessState.STARTING) + .type("web") + .uptime(1L) + .fileDescriptorQuota(1L) + .host("test-host") + .build()) + .build())); } private static void requestApplicationNoInstances( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn(Mono.just(ApplicationInstancesResponse.builder().build())); } private static void requestApplicationNullStats( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationStatisticsResponse.builder() .instance( "instance-0", fill( - InstanceStatistics.builder(), - "instance-statistics-") + InstanceStatistics.builder(), + "instance-statistics-") .statistics(null) .build()) .build())); @@ -4215,24 +4284,24 @@ private static void requestApplicationNullStats( private static void requestApplicationNullUsage( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationStatisticsResponse.builder() .instance( "instance-0", fill( - InstanceStatistics.builder(), - "instance-statistics-") + InstanceStatistics.builder(), + "instance-statistics-") .statistics( fill( - Statistics - .builder(), - "statistics-") + Statistics + .builder(), + "statistics-") .usage(null) .build()) .build()) @@ -4242,20 +4311,20 @@ private static void requestApplicationNullUsage( private static void requestApplicationRoutes( CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { when(cloudFoundryClient - .applicationsV3() - .listRoutes( - org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest - .builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV3() + .listRoutes( + org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest + .builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn( Mono.just( fill(org.cloudfoundry.client.v3.applications - .ListApplicationRoutesResponse.builder()) + .ListApplicationRoutesResponse.builder()) .resource( fill(org.cloudfoundry.client.v3.routes.RouteResource - .builder()) + .builder()) .id(routeId) .build()) .pagination(Pagination.builder().totalPages(1).build()) @@ -4265,12 +4334,12 @@ private static void requestApplicationRoutes( private static void requestApplicationRoutesEmpty( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .listRoutes( - ListApplicationRoutesRequest.builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV3() + .listRoutes( + ListApplicationRoutesRequest.builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListApplicationRoutesResponse.builder()) @@ -4281,17 +4350,17 @@ private static void requestApplicationRoutesEmpty( private static void requestApplicationServiceBindings( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .listServiceBindings( - ListApplicationServiceBindingsRequest.builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV2() + .listServiceBindings( + ListApplicationServiceBindingsRequest.builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn( Mono.just( fill( - ListApplicationServiceBindingsResponse.builder(), - "test-service-binding-") + ListApplicationServiceBindingsResponse.builder(), + "test-service-binding-") .resource( fill(ServiceBindingResource.builder()) .metadata( @@ -4307,41 +4376,41 @@ private static void requestApplicationServiceBindings( private static void requestApplicationServiceBindingsEmpty( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .listServiceBindings( - ListApplicationServiceBindingsRequest.builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV2() + .listServiceBindings( + ListApplicationServiceBindingsRequest.builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn(Mono.empty()); } private static void requestApplicationStatistics( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationStatisticsResponse.builder() .instance( "instance-0", fill( - InstanceStatistics.builder(), - "instance-statistics-") + InstanceStatistics.builder(), + "instance-statistics-") .statistics( fill( - Statistics - .builder(), - "statistics-") + Statistics + .builder(), + "statistics-") .usage( fill( - Usage - .builder(), - "usage-") + Usage + .builder(), + "usage-") .build()) .build()) .build()) @@ -4351,11 +4420,11 @@ private static void requestApplicationStatistics( private static void requestApplicationStatisticsError( CloudFoundryClient cloudFoundryClient, String applicationId, Integer code) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.error( new ClientV2Exception( @@ -4368,11 +4437,11 @@ private static void requestApplicationStatisticsError( private static void requestApplicationSummary( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") @@ -4381,17 +4450,17 @@ private static void requestApplicationSummary( .packageUpdatedAt(DateUtils.formatToIso8601(new Date(0))) .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .path("/test-path") .port(null) @@ -4408,27 +4477,27 @@ private static void requestApplicationSummary( private static void requestApplicationSummaryDetectedBuildpack( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .build()) .buildpack(null) @@ -4439,11 +4508,11 @@ private static void requestApplicationSummaryDetectedBuildpack( private static void requestApplicationSummaryDocker( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") @@ -4452,17 +4521,17 @@ private static void requestApplicationSummaryDocker( .packageUpdatedAt(DateUtils.formatToIso8601(new Date(0))) .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .path("/test-path") .port(null) @@ -4483,27 +4552,27 @@ private static void requestApplicationSummaryDocker( private static void requestApplicationSummaryNoBuildpack( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .build()) .buildpack(null) @@ -4515,11 +4584,11 @@ private static void requestApplicationSummaryNoBuildpack( private static void requestApplicationSummaryNoRoutes( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") @@ -4534,11 +4603,11 @@ private static void requestApplicationSummaryNoRoutes( private static void requestApplicationSummaryTcp( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") @@ -4547,17 +4616,17 @@ private static void requestApplicationSummaryTcp( .packageUpdatedAt(DateUtils.formatToIso8601(new Date(0))) .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .port(999) .build()) @@ -4590,13 +4659,13 @@ private static void requestApplications( String applicationId, Map envResponse) { when(cloudFoundryClient - .spaces() - .listApplications( - ListSpaceApplicationsRequest.builder() - .name(application) - .page(1) - .spaceId(spaceId) - .build())) + .spaces() + .listApplications( + ListSpaceApplicationsRequest.builder() + .name(application) + .page(1) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(ListSpaceApplicationsResponse.builder()) @@ -4608,9 +4677,9 @@ private static void requestApplications( .build()) .entity( fill( - ApplicationEntity - .builder(), - "application-") + ApplicationEntity + .builder(), + "application-") .environmentJsons( envResponse) .healthCheckType( @@ -4626,26 +4695,26 @@ private static void requestApplications( private static void requestApplicationsEmpty( CloudFoundryClient cloudFoundryClient, String application, String spaceId) { when(cloudFoundryClient - .spaces() - .listApplications( - ListSpaceApplicationsRequest.builder() - .name(application) - .page(1) - .spaceId(spaceId) - .build())) + .spaces() + .listApplications( + ListSpaceApplicationsRequest.builder() + .name(application) + .page(1) + .spaceId(spaceId) + .build())) .thenReturn(Mono.just(fill(ListSpaceApplicationsResponse.builder()).build())); } private static void requestApplicationsEmptyV3( CloudFoundryClient cloudFoundryClient, String application, String spaceId) { when(cloudFoundryClient - .applicationsV3() - .list( - ListApplicationsRequest.builder() - .name(application) - .spaceId(spaceId) - .page(1) - .build())) + .applicationsV3() + .list( + ListApplicationsRequest.builder() + .name(application) + .spaceId(spaceId) + .page(1) + .build())) .thenReturn(Mono.just(fill(ListApplicationsResponse.builder()).build())); } @@ -4655,13 +4724,13 @@ private static void requestApplicationsSpecificState( String spaceId, String stateReturned) { when(cloudFoundryClient - .spaces() - .listApplications( - ListSpaceApplicationsRequest.builder() - .name(application) - .page(1) - .spaceId(spaceId) - .build())) + .spaces() + .listApplications( + ListSpaceApplicationsRequest.builder() + .name(application) + .page(1) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(ListSpaceApplicationsResponse.builder()) @@ -4669,9 +4738,9 @@ private static void requestApplicationsSpecificState( fill(ApplicationResource.builder(), "application-") .entity( fill( - ApplicationEntity - .builder(), - "application-entity-") + ApplicationEntity + .builder(), + "application-entity-") .state(stateReturned) .build()) .build()) @@ -4684,13 +4753,13 @@ private static void requestApplicationsV3( String spaceId, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .list( - ListApplicationsRequest.builder() - .name(application) - .page(1) - .spaceId(spaceId) - .build())) + .applicationsV3() + .list( + ListApplicationsRequest.builder() + .name(application) + .page(1) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(ListApplicationsResponse.builder()) @@ -4722,13 +4791,13 @@ private static void requestApplicationsWithSsh( String spaceId, Boolean sshEnabled) { when(cloudFoundryClient - .spaces() - .listApplications( - ListSpaceApplicationsRequest.builder() - .name(application) - .spaceId(spaceId) - .page(1) - .build())) + .spaces() + .listApplications( + ListSpaceApplicationsRequest.builder() + .name(application) + .spaceId(spaceId) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListSpaceApplicationsResponse.builder()) @@ -4740,9 +4809,9 @@ private static void requestApplicationsWithSsh( .build()) .entity( fill( - ApplicationEntity - .builder(), - "application-") + ApplicationEntity + .builder(), + "application-") .environmentJson( "test-var", "test-value") @@ -4756,12 +4825,12 @@ private static void requestApplicationsWithSsh( private static void requestAssociateRoute( CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { when(cloudFoundryClient - .applicationsV2() - .associateRoute( - AssociateApplicationRouteRequest.builder() - .applicationId(applicationId) - .routeId(routeId) - .build())) + .applicationsV2() + .associateRoute( + AssociateApplicationRouteRequest.builder() + .applicationId(applicationId) + .routeId(routeId) + .build())) .thenReturn(Mono.empty()); } @@ -4775,12 +4844,12 @@ private static void requestCopyBits( String sourceApplicationId, String targetApplicationId) { when(cloudFoundryClient - .applicationsV2() - .copy( - CopyApplicationRequest.builder() - .applicationId(targetApplicationId) - .sourceApplicationId(sourceApplicationId) - .build())) + .applicationsV2() + .copy( + CopyApplicationRequest.builder() + .applicationId(targetApplicationId) + .sourceApplicationId(sourceApplicationId) + .build())) .thenReturn( Mono.just(fill(CopyApplicationResponse.builder(), "copy-bits-").build())); } @@ -4835,24 +4904,24 @@ private static void requestCreateDockerApplication( .build()); when(cloudFoundryClient - .applicationsV2() - .create( - requestBuilder - .command(request.getCommand()) - .diego(true) - .diskQuota(request.getDiskQuota()) - .dockerImage(request.getDockerImage()) - .healthCheckTimeout(request.getTimeout()) - .healthCheckType( - Optional.ofNullable(request.getHealthCheckType()) - .map(ApplicationHealthCheck::getValue) - .orElse(null)) - .instances(request.getInstances()) - .memory(request.getMemory()) - .name(request.getName()) - .spaceId(spaceId) - .stackId(stackId) - .build())) + .applicationsV2() + .create( + requestBuilder + .command(request.getCommand()) + .diego(true) + .diskQuota(request.getDiskQuota()) + .dockerImage(request.getDockerImage()) + .healthCheckTimeout(request.getTimeout()) + .healthCheckType( + Optional.ofNullable(request.getHealthCheckType()) + .map(ApplicationHealthCheck::getValue) + .orElse(null)) + .instances(request.getInstances()) + .memory(request.getMemory()) + .name(request.getName()) + .spaceId(spaceId) + .stackId(stackId) + .build())) .thenReturn( Mono.just( fill(CreateApplicationResponse.builder(), "create-") @@ -4870,15 +4939,15 @@ private static void requestCreateRoute( String spaceId, String routeId) { when(cloudFoundryClient - .routes() - .create( - CreateRouteRequest.builder() - .domainId(domainId) - .host(host) - .path(path) - .port(port) - .spaceId(spaceId) - .build())) + .routes() + .create( + CreateRouteRequest.builder() + .domainId(domainId) + .host(host) + .path(path) + .port(port) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(CreateRouteResponse.builder()) @@ -4895,14 +4964,14 @@ private static void requestCreateRoute( String spaceId, String routeId) { when(cloudFoundryClient - .routes() - .create( - CreateRouteRequest.builder() - .domainId(domainId) - .generatePort(generatePort) - .port(port) - .spaceId(spaceId) - .build())) + .routes() + .create( + CreateRouteRequest.builder() + .domainId(domainId) + .generatePort(generatePort) + .port(port) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(CreateRouteResponse.builder()) @@ -4914,23 +4983,23 @@ private static void requestCreateRoute( private static void requestDeleteApplication( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .delete( - org.cloudfoundry.client.v2.applications.DeleteApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .delete( + org.cloudfoundry.client.v2.applications.DeleteApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn(Mono.empty()); } private static void requestDeleteRoute(CloudFoundryClient cloudFoundryClient, String routeId) { when(cloudFoundryClient - .routes() - .delete( - org.cloudfoundry.client.v2.routes.DeleteRouteRequest.builder() - .async(true) - .routeId(routeId) - .build())) + .routes() + .delete( + org.cloudfoundry.client.v2.routes.DeleteRouteRequest.builder() + .async(true) + .routeId(routeId) + .build())) .thenReturn( Mono.just( fill(DeleteRouteResponse.builder()) @@ -4951,26 +5020,26 @@ private static void requestEvents( } when(cloudFoundryClient - .events() - .list( - ListEventsRequest.builder() - .actee(applicationId) - .orderDirection(OrderDirection.DESCENDING) - .resultsPerPage(50) - .page(1) - .build())) + .events() + .list( + ListEventsRequest.builder() + .actee(applicationId) + .orderDirection(OrderDirection.DESCENDING) + .resultsPerPage(50) + .page(1) + .build())) .thenReturn(Mono.just(responseBuilder.totalPages(1).build())); } private static void requestGetApplication( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .get( - org.cloudfoundry.client.v2.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .get( + org.cloudfoundry.client.v2.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.defer( new Supplier>() { @@ -4979,23 +5048,23 @@ private static void requestGetApplication( new LinkedList<>( Arrays.asList( fill( - GetApplicationResponse - .builder(), - "job-") + GetApplicationResponse + .builder(), + "job-") .entity( fill(ApplicationEntity - .builder()) + .builder()) .packageState( "STAGING") .build()) .build(), fill( - GetApplicationResponse - .builder(), - "job-") + GetApplicationResponse + .builder(), + "job-") .entity( fill(ApplicationEntity - .builder()) + .builder()) .packageState( "STAGED") .build()) @@ -5011,12 +5080,12 @@ public Mono get() { private static void requestGetApplicationFailing( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .get( - org.cloudfoundry.client.v2.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .get( + org.cloudfoundry.client.v2.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(GetApplicationResponse.builder()) @@ -5030,21 +5099,21 @@ private static void requestGetApplicationFailing( private static void requestInstancesApplicationFailing( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("FAILED") .build()) .build())); @@ -5053,12 +5122,12 @@ private static void requestInstancesApplicationFailing( private static void requestGetApplicationTimeout( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .get( - org.cloudfoundry.client.v2.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .get( + org.cloudfoundry.client.v2.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(GetApplicationResponse.builder()) @@ -5072,12 +5141,12 @@ private static void requestGetApplicationTimeout( private static void requestGetApplicationV3Buildpack( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .get( - org.cloudfoundry.client.v3.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .get( + org.cloudfoundry.client.v3.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( org.cloudfoundry.client.v3.applications.GetApplicationResponse @@ -5101,12 +5170,12 @@ private static void requestGetApplicationV3Buildpack( private static void requestGetApplicationV3BuildpackMultiple( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .get( - org.cloudfoundry.client.v3.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .get( + org.cloudfoundry.client.v3.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( org.cloudfoundry.client.v3.applications.GetApplicationResponse @@ -5132,12 +5201,12 @@ private static void requestGetApplicationV3BuildpackMultiple( private static void requestGetApplicationV3Docker( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .get( - org.cloudfoundry.client.v3.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .get( + org.cloudfoundry.client.v3.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( org.cloudfoundry.client.v3.applications.GetApplicationResponse @@ -5158,8 +5227,8 @@ private static void requestGetApplicationV3Docker( private static void requestGetSharedDomain( CloudFoundryClient cloudFoundryClient, String domainId) { when(cloudFoundryClient - .sharedDomains() - .get(GetSharedDomainRequest.builder().sharedDomainId(domainId).build())) + .sharedDomains() + .get(GetSharedDomainRequest.builder().sharedDomainId(domainId).build())) .thenReturn( Mono.just( fill(GetSharedDomainResponse.builder()) @@ -5179,7 +5248,7 @@ private static void requestJobFailure(CloudFoundryClient cloudFoundryClient, Str fill(GetJobResponse.builder(), "job-") .entity( fill(JobEntity - .builder()) + .builder()) .status( "running") .build()) @@ -5187,12 +5256,12 @@ private static void requestJobFailure(CloudFoundryClient cloudFoundryClient, Str fill(GetJobResponse.builder(), "job-") .entity( fill(JobEntity - .builder()) + .builder()) .errorDetails( fill( - ErrorDetails - .builder(), - "error-details-") + ErrorDetails + .builder(), + "error-details-") .build()) .status( "failed") @@ -5218,7 +5287,7 @@ private static void requestJobSuccess(CloudFoundryClient cloudFoundryClient, Str fill(GetJobResponse.builder(), "job-") .entity( fill(JobEntity - .builder()) + .builder()) .status( "running") .build()) @@ -5226,7 +5295,7 @@ private static void requestJobSuccess(CloudFoundryClient cloudFoundryClient, Str fill(GetJobResponse.builder(), "job-") .entity( fill(JobEntity - .builder()) + .builder()) .status( "finished") .build()) @@ -5263,17 +5332,17 @@ private static void requestListMatchingResources( private static void requestListTasks( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .listTasks( - org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest - .builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV3() + .listTasks( + org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest + .builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn( Mono.just( fill(org.cloudfoundry.client.v3.applications - .ListApplicationTasksResponse.builder()) + .ListApplicationTasksResponse.builder()) .resource(fill(TaskResource.builder()).build()) .build())); } @@ -5281,18 +5350,18 @@ private static void requestListTasks( private static void requestListTasks( CloudFoundryClient cloudFoundryClient, String applicationId, Integer sequenceId) { when(cloudFoundryClient - .applicationsV3() - .listTasks( - org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest - .builder() - .applicationId(applicationId) - .page(1) - .sequenceId(sequenceId.toString()) - .build())) + .applicationsV3() + .listTasks( + org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest + .builder() + .applicationId(applicationId) + .page(1) + .sequenceId(sequenceId.toString()) + .build())) .thenReturn( Mono.just( fill(org.cloudfoundry.client.v3.applications - .ListApplicationTasksResponse.builder()) + .ListApplicationTasksResponse.builder()) .resource(fill(TaskResource.builder()).build()) .build())); } @@ -5300,24 +5369,24 @@ private static void requestListTasks( private static void requestListTasksEmpty( CloudFoundryClient cloudFoundryClient, String applicationId, Integer sequenceId) { when(cloudFoundryClient - .applicationsV3() - .listTasks( - org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest - .builder() - .applicationId(applicationId) - .page(1) - .sequenceId(sequenceId.toString()) - .build())) + .applicationsV3() + .listTasks( + org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest + .builder() + .applicationId(applicationId) + .page(1) + .sequenceId(sequenceId.toString()) + .build())) .thenReturn( Mono.just( fill(org.cloudfoundry.client.v3.applications - .ListApplicationTasksResponse.builder()) + .ListApplicationTasksResponse.builder()) .build())); } private static void requestLogsRecent(DopplerClient dopplerClient, String applicationId) { when(dopplerClient.recentLogs( - RecentLogsRequest.builder().applicationId(applicationId).build())) + RecentLogsRequest.builder().applicationId(applicationId).build())) .thenReturn( Flux.just( Envelope.builder() @@ -5343,13 +5412,13 @@ private static void requestLogsStream(DopplerClient dopplerClient, String applic private static void requestOrganizationSpacesByName( CloudFoundryClient cloudFoundryClient, String organizationId, String space) { when(cloudFoundryClient - .organizations() - .listSpaces( - ListOrganizationSpacesRequest.builder() - .organizationId(organizationId) - .name(space) - .page(1) - .build())) + .organizations() + .listSpaces( + ListOrganizationSpacesRequest.builder() + .organizationId(organizationId) + .name(space) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListOrganizationSpacesResponse.builder()) @@ -5357,8 +5426,8 @@ private static void requestOrganizationSpacesByName( SpaceResource.builder() .metadata( fill( - Metadata.builder(), - "space-resource-metadata-") + Metadata.builder(), + "space-resource-metadata-") .build()) .entity(fill(SpaceEntity.builder()).build()) .build()) @@ -5369,13 +5438,13 @@ private static void requestOrganizationSpacesByName( private static void requestOrganizationSpacesByNameNotFound( CloudFoundryClient cloudFoundryClient, String organizationId, String space) { when(cloudFoundryClient - .organizations() - .listSpaces( - ListOrganizationSpacesRequest.builder() - .organizationId(organizationId) - .name(space) - .page(1) - .build())) + .organizations() + .listSpaces( + ListOrganizationSpacesRequest.builder() + .organizationId(organizationId) + .name(space) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListOrganizationSpacesResponse.builder()) @@ -5386,12 +5455,12 @@ private static void requestOrganizationSpacesByNameNotFound( private static void requestOrganizations( CloudFoundryClient cloudFoundryClient, String organization) { when(cloudFoundryClient - .organizations() - .list( - ListOrganizationsRequest.builder() - .name(organization) - .page(1) - .build())) + .organizations() + .list( + ListOrganizationsRequest.builder() + .name(organization) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListOrganizationsResponse.builder()) @@ -5399,8 +5468,8 @@ private static void requestOrganizations( OrganizationResource.builder() .metadata( fill( - Metadata.builder(), - "organization-resource-metadata-") + Metadata.builder(), + "organization-resource-metadata-") .build()) .entity( fill(OrganizationEntity.builder()) @@ -5413,12 +5482,12 @@ private static void requestOrganizations( private static void requestOrganizationsNotFound( CloudFoundryClient cloudFoundryClient, String organization) { when(cloudFoundryClient - .organizations() - .list( - ListOrganizationsRequest.builder() - .name(organization) - .page(1) - .build())) + .organizations() + .list( + ListOrganizationsRequest.builder() + .name(organization) + .page(1) + .build())) .thenReturn( Mono.just(fill(ListOrganizationsResponse.builder()).totalPages(1).build())); } @@ -5426,13 +5495,13 @@ private static void requestOrganizationsNotFound( private static void requestPrivateDomainNotFound( CloudFoundryClient cloudFoundryClient, String domain, String organizationId) { when(cloudFoundryClient - .organizations() - .listPrivateDomains( - ListOrganizationPrivateDomainsRequest.builder() - .name(domain) - .organizationId(organizationId) - .page(1) - .build())) + .organizations() + .listPrivateDomains( + ListOrganizationPrivateDomainsRequest.builder() + .name(domain) + .organizationId(organizationId) + .page(1) + .build())) .thenReturn( Mono.just(fill(ListOrganizationPrivateDomainsResponse.builder()).build())); } @@ -5440,12 +5509,12 @@ private static void requestPrivateDomainNotFound( private static void requestPrivateDomains( CloudFoundryClient cloudFoundryClient, String organizationId, String domainId) { when(cloudFoundryClient - .organizations() - .listPrivateDomains( - ListOrganizationPrivateDomainsRequest.builder() - .organizationId(organizationId) - .page(1) - .build())) + .organizations() + .listPrivateDomains( + ListOrganizationPrivateDomainsRequest.builder() + .organizationId(organizationId) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListOrganizationPrivateDomainsResponse.builder()) @@ -5466,12 +5535,12 @@ private static void requestPrivateDomains( private static void requestPrivateDomainsEmpty( CloudFoundryClient cloudFoundryClient, String organizationId) { when(cloudFoundryClient - .organizations() - .listPrivateDomains( - ListOrganizationPrivateDomainsRequest.builder() - .organizationId(organizationId) - .page(1) - .build())) + .organizations() + .listPrivateDomains( + ListOrganizationPrivateDomainsRequest.builder() + .organizationId(organizationId) + .page(1) + .build())) .thenReturn( Mono.just(fill(ListOrganizationPrivateDomainsResponse.builder()).build())); } @@ -5479,36 +5548,36 @@ private static void requestPrivateDomainsEmpty( private static void requestRemoveApplicationRoute( CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { when(cloudFoundryClient - .applicationsV2() - .removeRoute( - RemoveApplicationRouteRequest.builder() - .applicationId(applicationId) - .routeId(routeId) - .build())) + .applicationsV2() + .removeRoute( + RemoveApplicationRouteRequest.builder() + .applicationId(applicationId) + .routeId(routeId) + .build())) .thenReturn(Mono.empty()); } private static void requestRemoveServiceBinding( CloudFoundryClient cloudFoundryClient, String applicationId, String serviceBindingId) { when(cloudFoundryClient - .applicationsV2() - .removeServiceBinding( - RemoveApplicationServiceBindingRequest.builder() - .applicationId(applicationId) - .serviceBindingId(serviceBindingId) - .build())) + .applicationsV2() + .removeServiceBinding( + RemoveApplicationServiceBindingRequest.builder() + .applicationId(applicationId) + .serviceBindingId(serviceBindingId) + .build())) .thenReturn(Mono.empty()); } private static void requestRestageApplication( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .restage( - org.cloudfoundry.client.v2.applications.RestageApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .restage( + org.cloudfoundry.client.v2.applications.RestageApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(RestageApplicationResponse.builder(), "application-") @@ -5571,20 +5640,20 @@ private static void requestRoutesEmpty( private static void requestRunTask( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .tasks() - .create( - CreateTaskRequest.builder() - .applicationId(applicationId) - .command("test-command") - .build())) + .tasks() + .create( + CreateTaskRequest.builder() + .applicationId(applicationId) + .command("test-command") + .build())) .thenReturn(Mono.just(fill(CreateTaskResponse.builder()).build())); } private static void requestSharedDomain( CloudFoundryClient cloudFoundryClient, String domain, String domainId) { when(cloudFoundryClient - .sharedDomains() - .list(ListSharedDomainsRequest.builder().page(1).name(domain).build())) + .sharedDomains() + .list(ListSharedDomainsRequest.builder().page(1).name(domain).build())) .thenReturn( Mono.just( fill(ListSharedDomainsResponse.builder()) @@ -5605,8 +5674,8 @@ private static void requestSharedDomain( private static void requestSharedDomains( CloudFoundryClient cloudFoundryClient, String domain, String domainId) { when(cloudFoundryClient - .sharedDomains() - .list(ListSharedDomainsRequest.builder().page(1).build())) + .sharedDomains() + .list(ListSharedDomainsRequest.builder().page(1).build())) .thenReturn( Mono.just( fill(ListSharedDomainsResponse.builder()) @@ -5627,8 +5696,8 @@ private static void requestSharedDomains( private static void requestSharedDomainsEmpty(CloudFoundryClient cloudFoundryClient) { when(cloudFoundryClient - .sharedDomains() - .list(ListSharedDomainsRequest.builder().page(1).build())) + .sharedDomains() + .list(ListSharedDomainsRequest.builder().page(1).build())) .thenReturn(Mono.just(fill(ListSharedDomainsResponse.builder()).build())); } @@ -5647,15 +5716,15 @@ private static void requestSpace( private static void requestSpaceSummary(CloudFoundryClient cloudFoundryClient, String spaceId) { when(cloudFoundryClient - .spaces() - .getSummary(GetSpaceSummaryRequest.builder().spaceId(spaceId).build())) + .spaces() + .getSummary(GetSpaceSummaryRequest.builder().spaceId(spaceId).build())) .thenReturn( Mono.just( fill(GetSpaceSummaryResponse.builder(), "space-summary-") .application( fill( - SpaceApplicationSummary.builder(), - "application-summary-") + SpaceApplicationSummary.builder(), + "application-summary-") .build()) .build())); } @@ -5673,16 +5742,16 @@ private static void requestStack(CloudFoundryClient cloudFoundryClient, String s private static void requestStackIdEmpty(CloudFoundryClient cloudFoundryClient, String stack) { when(cloudFoundryClient - .stacks() - .list(ListStacksRequest.builder().name(stack).page(1).build())) + .stacks() + .list(ListStacksRequest.builder().name(stack).page(1).build())) .thenReturn(Mono.just(fill(ListStacksResponse.builder()).build())); } private static void requestTcpDomains( CloudFoundryClient cloudFoundryClient, String domain, String domainId) { when(cloudFoundryClient - .sharedDomains() - .list(ListSharedDomainsRequest.builder().page(1).build())) + .sharedDomains() + .list(ListSharedDomainsRequest.builder().page(1).build())) .thenReturn( Mono.just( fill(ListSharedDomainsResponse.builder()) @@ -5704,12 +5773,12 @@ private static void requestTcpDomains( private static void requestTerminateApplicationInstance( CloudFoundryClient cloudFoundryClient, String applicationId, String instanceIndex) { when(cloudFoundryClient - .applicationsV2() - .terminateInstance( - TerminateApplicationInstanceRequest.builder() - .applicationId(applicationId) - .index(instanceIndex) - .build())) + .applicationsV2() + .terminateInstance( + TerminateApplicationInstanceRequest.builder() + .applicationId(applicationId) + .index(instanceIndex) + .build())) .thenReturn(Mono.empty()); } @@ -5735,22 +5804,22 @@ private static void requestUpdateApplication( } when(cloudFoundryClient - .applicationsV2() - .update( - builder.applicationId(applicationId) - .command(manifest.getCommand()) - .diskQuota(manifest.getDisk()) - .environmentJsons(manifest.getEnvironmentVariables()) - .healthCheckTimeout(manifest.getTimeout()) - .healthCheckType( - Optional.ofNullable(manifest.getHealthCheckType()) - .map(ApplicationHealthCheck::getValue) - .orElse(null)) - .instances(manifest.getInstances()) - .memory(manifest.getMemory()) - .name(manifest.getName()) - .stackId(stackId) - .build())) + .applicationsV2() + .update( + builder.applicationId(applicationId) + .command(manifest.getCommand()) + .diskQuota(manifest.getDisk()) + .environmentJsons(manifest.getEnvironmentVariables()) + .healthCheckTimeout(manifest.getTimeout()) + .healthCheckType( + Optional.ofNullable(manifest.getHealthCheckType()) + .map(ApplicationHealthCheck::getValue) + .orElse(null)) + .instances(manifest.getInstances()) + .memory(manifest.getMemory()) + .name(manifest.getName()) + .stackId(stackId) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) @@ -5764,12 +5833,12 @@ private static void requestUpdateApplicationEnvironment( String applicationId, Map environment) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .environmentJsons(environment) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .environmentJsons(environment) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) @@ -5785,19 +5854,19 @@ private static void requestUpdateApplicationHealthCheck( String applicationId, ApplicationHealthCheck type) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .healthCheckType(type.getValue()) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .healthCheckType(type.getValue()) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) .entity( fill( - ApplicationEntity.builder(), - "application-entity-") + ApplicationEntity.builder(), + "application-entity-") .build()) .build())); } @@ -5805,19 +5874,19 @@ private static void requestUpdateApplicationHealthCheck( private static void requestUpdateApplicationRename( CloudFoundryClient cloudFoundryClient, String applicationId, String name) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .name(name) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .name(name) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) .entity( fill( - ApplicationEntity.builder(), - "application-entity-") + ApplicationEntity.builder(), + "application-entity-") .build()) .build())); } @@ -5829,14 +5898,14 @@ private static void requestUpdateApplicationScale( Integer instances, Integer memory) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .diskQuota(disk) - .instances(instances) - .memory(memory) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .diskQuota(disk) + .instances(instances) + .memory(memory) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) @@ -5847,19 +5916,19 @@ private static void requestUpdateApplicationScale( private static void requestUpdateApplicationSsh( CloudFoundryClient cloudFoundryClient, String applicationId, Boolean enabled) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .enableSsh(enabled) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .enableSsh(enabled) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) .entity( fill( - ApplicationEntity.builder(), - "application-entity-") + ApplicationEntity.builder(), + "application-entity-") .build()) .build())); } @@ -5868,13 +5937,13 @@ private static void requestUpdateApplicationSshV3( CloudFoundryClient cloudFoundryClient, String applicationId, Boolean enabled) { when(cloudFoundryClient - .applicationsV3() - .updateFeature( - UpdateApplicationFeatureRequest.builder() - .applicationId(applicationId) - .featureName(APP_FEATURE_SSH) - .enabled(enabled) - .build())) + .applicationsV3() + .updateFeature( + UpdateApplicationFeatureRequest.builder() + .applicationId(applicationId) + .featureName(APP_FEATURE_SSH) + .enabled(enabled) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationFeatureResponse.builder()) @@ -5887,11 +5956,11 @@ private static void requestUpdateApplicationSshV3( private static void requestGetSshEnabled( CloudFoundryClient cloudFoundryClient, String applicationId, boolean status) { when(cloudFoundryClient - .applicationsV3() - .getSshEnabled( - GetApplicationSshEnabledRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .getSshEnabled( + GetApplicationSshEnabledRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(GetApplicationSshEnabledResponse.builder()) @@ -5911,12 +5980,12 @@ private static void requestUpdateApplicationState( String state, int instances) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .state(state) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .state(state) + .build())) .thenReturn( Mono.just( UpdateApplicationResponse.builder() @@ -5936,13 +6005,13 @@ private static void requestUpload( Path application, String jobId) { when(cloudFoundryClient - .applicationsV2() - .upload( - UploadApplicationRequest.builder() - .applicationId(applicationId) - .async(true) - .application(application) - .build())) + .applicationsV2() + .upload( + UploadApplicationRequest.builder() + .applicationId(applicationId) + .async(true) + .application(application) + .build())) .thenReturn( Mono.just( fill(UploadApplicationResponse.builder()) From 00e022e759ca178b3dc7db5f824db56aa6e3ae5c Mon Sep 17 00:00:00 2001 From: Daniel Garnier-Moiroux Date: Thu, 18 Dec 2025 18:07:51 +0100 Subject: [PATCH 6/6] DefaultApplications: use applicationsV3 to determine app started --- .../applications/DefaultApplications.java | 59 +- .../operations/AbstractOperationsTest.java | 3 + .../applications/DefaultApplicationsTest.java | 1243 +++++++++-------- 3 files changed, 630 insertions(+), 675 deletions(-) diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java index 7d2cac7464..9d915cd1e1 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/applications/DefaultApplications.java @@ -116,7 +116,6 @@ import org.cloudfoundry.client.v3.applications.GetApplicationResponse; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledRequest; import org.cloudfoundry.client.v3.applications.GetApplicationSshEnabledResponse; -import org.cloudfoundry.client.v3.applications.ListApplicationProcessesRequest; import org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest; import org.cloudfoundry.client.v3.applications.ListApplicationsRequest; import org.cloudfoundry.client.v3.applications.SetApplicationCurrentDropletRequest; @@ -136,8 +135,6 @@ import org.cloudfoundry.client.v3.packages.PackageState; import org.cloudfoundry.client.v3.packages.PackageType; import org.cloudfoundry.client.v3.packages.UploadPackageRequest; -import org.cloudfoundry.client.v3.processes.GetProcessStatisticsRequest; -import org.cloudfoundry.client.v3.processes.GetProcessStatisticsResponse; import org.cloudfoundry.client.v3.processes.ProcessState; import org.cloudfoundry.client.v3.processes.ProcessStatisticsResource; import org.cloudfoundry.client.v3.resourcematch.MatchedResource; @@ -2655,61 +2652,7 @@ private Mono waitForRunning( private Mono waitForRunningV3( String applicationName, String applicationId, Duration startupTimeout) { - Duration timeout = Optional.ofNullable(startupTimeout).orElse(Duration.ofMinutes(5)); - - return PaginationUtils.requestClientV3Resources( - page -> - this.cloudFoundryClient - .applicationsV3() - .listProcesses( - ListApplicationProcessesRequest.builder() - .applicationId(applicationId) - .page(page) - .build())) - .filter(p -> p.getInstances() != 0) - .flatMap( - process -> - this.cloudFoundryClient - .processes() - .getStatistics( - GetProcessStatisticsRequest.builder() - .processId(process.getId()) - .build()) - .flatMapIterable(GetProcessStatisticsResponse::getResources) - .map(ProcessStatisticsResource::getState) - .filter( - state -> - EnumSet.of( - ProcessState.RUNNING, - ProcessState.CRASHED) - .contains(state)) - .reduce( - (totalState, instanceState) -> - totalState.ordinal() - < instanceState.ordinal() - ? totalState - : instanceState) // CRASHED takes - // precedence over - // RUNNING - .repeatWhenEmpty( - exponentialBackOff( - Duration.ofSeconds(1), - Duration.ofSeconds(15), - timeout)) - .filter(state -> state == ProcessState.RUNNING) - .switchIfEmpty( - ExceptionUtils.illegalState( - "Process %s of Application %s failed during" - + " start", - process.getId(), applicationName)) - .onErrorResume( - DelayTimeoutException.class, - t -> - ExceptionUtils.illegalState( - "Process %s of Application %s timed" - + " out during start", - process.getId(), applicationName))) - .then(); + return waitForRunning(applicationName, applicationId, startupTimeout); } private Mono waitForStaging( diff --git a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/AbstractOperationsTest.java b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/AbstractOperationsTest.java index ab1250658a..168e0756c8 100644 --- a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/AbstractOperationsTest.java +++ b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/AbstractOperationsTest.java @@ -48,6 +48,7 @@ import org.cloudfoundry.client.v3.domains.DomainsV3; import org.cloudfoundry.client.v3.jobs.JobsV3; import org.cloudfoundry.client.v3.organizations.OrganizationsV3; +import org.cloudfoundry.client.v3.processes.Processes; import org.cloudfoundry.client.v3.routes.RoutesV3; import org.cloudfoundry.client.v3.spaces.SpacesV3; import org.cloudfoundry.client.v3.stacks.StacksV3; @@ -117,6 +118,7 @@ public abstract class AbstractOperationsTest { protected final Organizations organizations = mock(Organizations.class, RETURNS_SMART_NULLS); protected final OrganizationsV3 organizationsV3 = mock(OrganizationsV3.class, RETURNS_SMART_NULLS); + protected final Processes processes = mock(Processes.class, RETURNS_SMART_NULLS); protected final PrivateDomains privateDomains = mock(PrivateDomains.class, RETURNS_SMART_NULLS); @@ -188,6 +190,7 @@ public final void mockClient() { when(this.cloudFoundryClient.organizationQuotaDefinitions()) .thenReturn(this.organizationQuotaDefinitions); when(this.cloudFoundryClient.privateDomains()).thenReturn(this.privateDomains); + when(this.cloudFoundryClient.processes()).thenReturn(this.processes); when(this.cloudFoundryClient.resourceMatch()).thenReturn(this.resourceMatch); when(this.cloudFoundryClient.routes()).thenReturn(this.routes); when(this.cloudFoundryClient.routesV3()).thenReturn(this.routesV3); diff --git a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java index 14b20a5eb3..cf74e13f80 100644 --- a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java +++ b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/applications/DefaultApplicationsTest.java @@ -16,6 +16,15 @@ package org.cloudfoundry.operations.applications; +import static org.assertj.core.api.Assertions.assertThat; +import static org.cloudfoundry.client.v3.LifecycleType.BUILDPACK; +import static org.cloudfoundry.client.v3.LifecycleType.DOCKER; +import static org.cloudfoundry.operations.TestObjects.fill; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.RETURNS_SMART_NULLS; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import java.io.IOException; import java.nio.file.Path; import java.time.Duration; @@ -28,7 +37,6 @@ import java.util.Optional; import java.util.Queue; import java.util.function.Supplier; - import org.cloudfoundry.client.CloudFoundryClient; import org.cloudfoundry.client.v2.ClientV2Exception; import org.cloudfoundry.client.v2.Metadata; @@ -146,21 +154,12 @@ import org.cloudfoundry.util.FluentMap; import org.cloudfoundry.util.ResourceMatchingUtils; import org.junit.jupiter.api.Test; +import org.springframework.core.io.ClassPathResource; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import reactor.test.scheduler.VirtualTimeScheduler; -import org.springframework.core.io.ClassPathResource; -import static org.assertj.core.api.Assertions.assertThat; -import static org.cloudfoundry.client.v3.LifecycleType.BUILDPACK; -import static org.cloudfoundry.client.v3.LifecycleType.DOCKER; -import static org.cloudfoundry.operations.TestObjects.fill; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.RETURNS_SMART_NULLS; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - final class DefaultApplicationsTest extends AbstractOperationsTest { private RandomWords randomWords = mock(RandomWords.class, RETURNS_SMART_NULLS); @@ -368,7 +367,7 @@ void deleteAndDeleteRoutesFailure() { .isInstanceOf(ClientV2Exception.class) .hasMessage( "test-error-details-errorCode(1):" - + " test-error-details-description")) + + " test-error-details-description")) .verify(Duration.ofSeconds(5)); } @@ -809,7 +808,7 @@ void getEvents() { .actor("test-event-actorName") .description( "instances: 1, memory: 2, state: test-state," - + " environment_json: test-data") + + " environment_json: test-data") .event("test-event-type") .id("test-event-id") .time(DateUtils.parseFromIso8601("2016-02-08T15:45:59Z")) @@ -955,7 +954,7 @@ void getEventsTwo() { .actor("test-event-actorName") .description( "instances: 1, memory: 2, state: test-state," - + " environment_json: test-data") + + " environment_json: test-data") .event("test-event-type") .id("test-event-id") .time(DateUtils.parseFromIso8601("2016-02-08T15:45:59Z")) @@ -3203,7 +3202,7 @@ void pushUploadFails() throws IOException { .isInstanceOf(ClientV2Exception.class) .hasMessage( "test-error-details-errorCode(1):" - + " test-error-details-description")) + + " test-error-details-description")) .verify(Duration.ofSeconds(5)); } @@ -3302,7 +3301,7 @@ void restageStagingFailure() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name failed during" - + " staging")) + + " staging")) .verify(Duration.ofSeconds(5)); } @@ -3352,7 +3351,7 @@ void restageStartingFailureTotal() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name failed during" - + " start")) + + " start")) .verify(Duration.ofSeconds(5)); } @@ -3380,7 +3379,7 @@ void restageTimeout() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name timed out during" - + " staging")) + + " staging")) .verify(Duration.ofSeconds(5)); } @@ -3467,7 +3466,7 @@ void restartNoApp() { .isInstanceOf(IllegalArgumentException.class) .hasMessage( "Application test-non-existent-app-name does not" - + " exist")) + + " exist")) .verify(Duration.ofSeconds(5)); } @@ -3780,7 +3779,7 @@ void startApplicationFailureTotal() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name failed during" - + " start")) + + " start")) .verify(Duration.ofSeconds(5)); } @@ -3805,7 +3804,7 @@ void startApplicationTimeout() { .isInstanceOf(IllegalStateException.class) .hasMessage( "Application test-application-name timed out during" - + " start")) + + " start")) .verify(Duration.ofSeconds(5)); } @@ -4001,11 +4000,11 @@ private static void provideRandomWords(RandomWords randomWords) { private static void requestApplicationEmptyInstance( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationInstancesResponse.builder() @@ -4018,22 +4017,22 @@ private static void requestApplicationEmptyInstance( private static void requestApplicationEmptyStats( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn(Mono.just(ApplicationStatisticsResponse.builder().build())); } private static void requestApplicationEnvironment( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .getEnvironment( - GetApplicationEnvironmentRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .getEnvironment( + GetApplicationEnvironmentRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( GetApplicationEnvironmentResponse.builder() @@ -4052,19 +4051,19 @@ private static void requestApplicationEnvironment( private static void requestApplicationInstances( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationInstancesResponse.builder() .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .build()) .build())); } @@ -4072,11 +4071,11 @@ private static void requestApplicationInstances( private static void requestApplicationInstancesError( CloudFoundryClient cloudFoundryClient, String applicationId, Integer code) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.error( new ClientV2Exception( @@ -4089,28 +4088,28 @@ private static void requestApplicationInstancesError( private static void requestApplicationInstancesFailingPartial( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("RUNNING") .build()) .instance( "instance-1", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("FLAPPING") .build()) .build())); @@ -4119,8 +4118,7 @@ private static void requestApplicationInstancesFailingPartial( Mono.just( GetApplicationProcessStatisticsResponse.builder() .resources( - fill( - ProcessStatisticsResource.builder()) + fill(ProcessStatisticsResource.builder()) .state(ProcessState.RUNNING) .type("web") .uptime(1L) @@ -4140,21 +4138,21 @@ private static void requestApplicationInstancesFailingPartial( private static void requestApplicationInstancesFailingTotal( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("FLAPPING") .build()) .build())); @@ -4163,8 +4161,7 @@ private static void requestApplicationInstancesFailingTotal( Mono.just( GetApplicationProcessStatisticsResponse.builder() .resource( - fill( - ProcessStatisticsResource.builder()) + fill(ProcessStatisticsResource.builder()) .state(ProcessState.CRASHED) .type("web") .uptime(1L) @@ -4177,21 +4174,21 @@ private static void requestApplicationInstancesFailingTotal( private static void requestApplicationInstancesRunning( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("RUNNING") .build()) .build())); @@ -4201,8 +4198,7 @@ private static void requestApplicationInstancesRunning( Mono.just( GetApplicationProcessStatisticsResponse.builder() .resource( - fill( - ProcessStatisticsResource.builder()) + fill(ProcessStatisticsResource.builder()) .state(ProcessState.RUNNING) .type("web") .uptime(1L) @@ -4215,21 +4211,21 @@ private static void requestApplicationInstancesRunning( private static void requestApplicationInstancesTimeout( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("STARTING") .build()) .build())); @@ -4238,8 +4234,7 @@ private static void requestApplicationInstancesTimeout( Mono.just( GetApplicationProcessStatisticsResponse.builder() .resource( - fill( - ProcessStatisticsResource.builder()) + fill(ProcessStatisticsResource.builder()) .state(ProcessState.STARTING) .type("web") .uptime(1L) @@ -4252,30 +4247,30 @@ private static void requestApplicationInstancesTimeout( private static void requestApplicationNoInstances( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn(Mono.just(ApplicationInstancesResponse.builder().build())); } private static void requestApplicationNullStats( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationStatisticsResponse.builder() .instance( "instance-0", fill( - InstanceStatistics.builder(), - "instance-statistics-") + InstanceStatistics.builder(), + "instance-statistics-") .statistics(null) .build()) .build())); @@ -4284,24 +4279,24 @@ private static void requestApplicationNullStats( private static void requestApplicationNullUsage( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationStatisticsResponse.builder() .instance( "instance-0", fill( - InstanceStatistics.builder(), - "instance-statistics-") + InstanceStatistics.builder(), + "instance-statistics-") .statistics( fill( - Statistics - .builder(), - "statistics-") + Statistics + .builder(), + "statistics-") .usage(null) .build()) .build()) @@ -4311,20 +4306,20 @@ private static void requestApplicationNullUsage( private static void requestApplicationRoutes( CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { when(cloudFoundryClient - .applicationsV3() - .listRoutes( - org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest - .builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV3() + .listRoutes( + org.cloudfoundry.client.v3.applications.ListApplicationRoutesRequest + .builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn( Mono.just( fill(org.cloudfoundry.client.v3.applications - .ListApplicationRoutesResponse.builder()) + .ListApplicationRoutesResponse.builder()) .resource( fill(org.cloudfoundry.client.v3.routes.RouteResource - .builder()) + .builder()) .id(routeId) .build()) .pagination(Pagination.builder().totalPages(1).build()) @@ -4334,12 +4329,12 @@ private static void requestApplicationRoutes( private static void requestApplicationRoutesEmpty( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .listRoutes( - ListApplicationRoutesRequest.builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV3() + .listRoutes( + ListApplicationRoutesRequest.builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListApplicationRoutesResponse.builder()) @@ -4350,17 +4345,17 @@ private static void requestApplicationRoutesEmpty( private static void requestApplicationServiceBindings( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .listServiceBindings( - ListApplicationServiceBindingsRequest.builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV2() + .listServiceBindings( + ListApplicationServiceBindingsRequest.builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn( Mono.just( fill( - ListApplicationServiceBindingsResponse.builder(), - "test-service-binding-") + ListApplicationServiceBindingsResponse.builder(), + "test-service-binding-") .resource( fill(ServiceBindingResource.builder()) .metadata( @@ -4376,41 +4371,41 @@ private static void requestApplicationServiceBindings( private static void requestApplicationServiceBindingsEmpty( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .listServiceBindings( - ListApplicationServiceBindingsRequest.builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV2() + .listServiceBindings( + ListApplicationServiceBindingsRequest.builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn(Mono.empty()); } private static void requestApplicationStatistics( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( ApplicationStatisticsResponse.builder() .instance( "instance-0", fill( - InstanceStatistics.builder(), - "instance-statistics-") + InstanceStatistics.builder(), + "instance-statistics-") .statistics( fill( - Statistics - .builder(), - "statistics-") + Statistics + .builder(), + "statistics-") .usage( fill( - Usage - .builder(), - "usage-") + Usage + .builder(), + "usage-") .build()) .build()) .build()) @@ -4420,11 +4415,11 @@ private static void requestApplicationStatistics( private static void requestApplicationStatisticsError( CloudFoundryClient cloudFoundryClient, String applicationId, Integer code) { when(cloudFoundryClient - .applicationsV2() - .statistics( - ApplicationStatisticsRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .statistics( + ApplicationStatisticsRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.error( new ClientV2Exception( @@ -4437,11 +4432,11 @@ private static void requestApplicationStatisticsError( private static void requestApplicationSummary( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") @@ -4450,17 +4445,17 @@ private static void requestApplicationSummary( .packageUpdatedAt(DateUtils.formatToIso8601(new Date(0))) .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .path("/test-path") .port(null) @@ -4477,27 +4472,27 @@ private static void requestApplicationSummary( private static void requestApplicationSummaryDetectedBuildpack( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .build()) .buildpack(null) @@ -4508,11 +4503,11 @@ private static void requestApplicationSummaryDetectedBuildpack( private static void requestApplicationSummaryDocker( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") @@ -4521,17 +4516,17 @@ private static void requestApplicationSummaryDocker( .packageUpdatedAt(DateUtils.formatToIso8601(new Date(0))) .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .path("/test-path") .port(null) @@ -4552,27 +4547,27 @@ private static void requestApplicationSummaryDocker( private static void requestApplicationSummaryNoBuildpack( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .build()) .buildpack(null) @@ -4584,11 +4579,11 @@ private static void requestApplicationSummaryNoBuildpack( private static void requestApplicationSummaryNoRoutes( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") @@ -4603,11 +4598,11 @@ private static void requestApplicationSummaryNoRoutes( private static void requestApplicationSummaryTcp( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .summary( - SummaryApplicationRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .summary( + SummaryApplicationRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(SummaryApplicationResponse.builder(), "application-summary-") @@ -4616,17 +4611,17 @@ private static void requestApplicationSummaryTcp( .packageUpdatedAt(DateUtils.formatToIso8601(new Date(0))) .route( fill( - org.cloudfoundry.client.v2.routes - .Route.builder(), - "route-") + org.cloudfoundry.client.v2.routes + .Route.builder(), + "route-") .domain( fill( - org.cloudfoundry - .client.v2 - .domains - .Domain - .builder(), - "domain-") + org.cloudfoundry + .client.v2 + .domains + .Domain + .builder(), + "domain-") .build()) .port(999) .build()) @@ -4659,13 +4654,13 @@ private static void requestApplications( String applicationId, Map envResponse) { when(cloudFoundryClient - .spaces() - .listApplications( - ListSpaceApplicationsRequest.builder() - .name(application) - .page(1) - .spaceId(spaceId) - .build())) + .spaces() + .listApplications( + ListSpaceApplicationsRequest.builder() + .name(application) + .page(1) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(ListSpaceApplicationsResponse.builder()) @@ -4677,9 +4672,9 @@ private static void requestApplications( .build()) .entity( fill( - ApplicationEntity - .builder(), - "application-") + ApplicationEntity + .builder(), + "application-") .environmentJsons( envResponse) .healthCheckType( @@ -4695,26 +4690,26 @@ private static void requestApplications( private static void requestApplicationsEmpty( CloudFoundryClient cloudFoundryClient, String application, String spaceId) { when(cloudFoundryClient - .spaces() - .listApplications( - ListSpaceApplicationsRequest.builder() - .name(application) - .page(1) - .spaceId(spaceId) - .build())) + .spaces() + .listApplications( + ListSpaceApplicationsRequest.builder() + .name(application) + .page(1) + .spaceId(spaceId) + .build())) .thenReturn(Mono.just(fill(ListSpaceApplicationsResponse.builder()).build())); } private static void requestApplicationsEmptyV3( CloudFoundryClient cloudFoundryClient, String application, String spaceId) { when(cloudFoundryClient - .applicationsV3() - .list( - ListApplicationsRequest.builder() - .name(application) - .spaceId(spaceId) - .page(1) - .build())) + .applicationsV3() + .list( + ListApplicationsRequest.builder() + .name(application) + .spaceId(spaceId) + .page(1) + .build())) .thenReturn(Mono.just(fill(ListApplicationsResponse.builder()).build())); } @@ -4724,13 +4719,13 @@ private static void requestApplicationsSpecificState( String spaceId, String stateReturned) { when(cloudFoundryClient - .spaces() - .listApplications( - ListSpaceApplicationsRequest.builder() - .name(application) - .page(1) - .spaceId(spaceId) - .build())) + .spaces() + .listApplications( + ListSpaceApplicationsRequest.builder() + .name(application) + .page(1) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(ListSpaceApplicationsResponse.builder()) @@ -4738,9 +4733,9 @@ private static void requestApplicationsSpecificState( fill(ApplicationResource.builder(), "application-") .entity( fill( - ApplicationEntity - .builder(), - "application-entity-") + ApplicationEntity + .builder(), + "application-entity-") .state(stateReturned) .build()) .build()) @@ -4753,13 +4748,13 @@ private static void requestApplicationsV3( String spaceId, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .list( - ListApplicationsRequest.builder() - .name(application) - .page(1) - .spaceId(spaceId) - .build())) + .applicationsV3() + .list( + ListApplicationsRequest.builder() + .name(application) + .page(1) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(ListApplicationsResponse.builder()) @@ -4791,13 +4786,13 @@ private static void requestApplicationsWithSsh( String spaceId, Boolean sshEnabled) { when(cloudFoundryClient - .spaces() - .listApplications( - ListSpaceApplicationsRequest.builder() - .name(application) - .spaceId(spaceId) - .page(1) - .build())) + .spaces() + .listApplications( + ListSpaceApplicationsRequest.builder() + .name(application) + .spaceId(spaceId) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListSpaceApplicationsResponse.builder()) @@ -4809,9 +4804,9 @@ private static void requestApplicationsWithSsh( .build()) .entity( fill( - ApplicationEntity - .builder(), - "application-") + ApplicationEntity + .builder(), + "application-") .environmentJson( "test-var", "test-value") @@ -4825,12 +4820,12 @@ private static void requestApplicationsWithSsh( private static void requestAssociateRoute( CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { when(cloudFoundryClient - .applicationsV2() - .associateRoute( - AssociateApplicationRouteRequest.builder() - .applicationId(applicationId) - .routeId(routeId) - .build())) + .applicationsV2() + .associateRoute( + AssociateApplicationRouteRequest.builder() + .applicationId(applicationId) + .routeId(routeId) + .build())) .thenReturn(Mono.empty()); } @@ -4844,12 +4839,12 @@ private static void requestCopyBits( String sourceApplicationId, String targetApplicationId) { when(cloudFoundryClient - .applicationsV2() - .copy( - CopyApplicationRequest.builder() - .applicationId(targetApplicationId) - .sourceApplicationId(sourceApplicationId) - .build())) + .applicationsV2() + .copy( + CopyApplicationRequest.builder() + .applicationId(targetApplicationId) + .sourceApplicationId(sourceApplicationId) + .build())) .thenReturn( Mono.just(fill(CopyApplicationResponse.builder(), "copy-bits-").build())); } @@ -4904,24 +4899,24 @@ private static void requestCreateDockerApplication( .build()); when(cloudFoundryClient - .applicationsV2() - .create( - requestBuilder - .command(request.getCommand()) - .diego(true) - .diskQuota(request.getDiskQuota()) - .dockerImage(request.getDockerImage()) - .healthCheckTimeout(request.getTimeout()) - .healthCheckType( - Optional.ofNullable(request.getHealthCheckType()) - .map(ApplicationHealthCheck::getValue) - .orElse(null)) - .instances(request.getInstances()) - .memory(request.getMemory()) - .name(request.getName()) - .spaceId(spaceId) - .stackId(stackId) - .build())) + .applicationsV2() + .create( + requestBuilder + .command(request.getCommand()) + .diego(true) + .diskQuota(request.getDiskQuota()) + .dockerImage(request.getDockerImage()) + .healthCheckTimeout(request.getTimeout()) + .healthCheckType( + Optional.ofNullable(request.getHealthCheckType()) + .map(ApplicationHealthCheck::getValue) + .orElse(null)) + .instances(request.getInstances()) + .memory(request.getMemory()) + .name(request.getName()) + .spaceId(spaceId) + .stackId(stackId) + .build())) .thenReturn( Mono.just( fill(CreateApplicationResponse.builder(), "create-") @@ -4939,15 +4934,15 @@ private static void requestCreateRoute( String spaceId, String routeId) { when(cloudFoundryClient - .routes() - .create( - CreateRouteRequest.builder() - .domainId(domainId) - .host(host) - .path(path) - .port(port) - .spaceId(spaceId) - .build())) + .routes() + .create( + CreateRouteRequest.builder() + .domainId(domainId) + .host(host) + .path(path) + .port(port) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(CreateRouteResponse.builder()) @@ -4964,14 +4959,14 @@ private static void requestCreateRoute( String spaceId, String routeId) { when(cloudFoundryClient - .routes() - .create( - CreateRouteRequest.builder() - .domainId(domainId) - .generatePort(generatePort) - .port(port) - .spaceId(spaceId) - .build())) + .routes() + .create( + CreateRouteRequest.builder() + .domainId(domainId) + .generatePort(generatePort) + .port(port) + .spaceId(spaceId) + .build())) .thenReturn( Mono.just( fill(CreateRouteResponse.builder()) @@ -4983,23 +4978,23 @@ private static void requestCreateRoute( private static void requestDeleteApplication( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .delete( - org.cloudfoundry.client.v2.applications.DeleteApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .delete( + org.cloudfoundry.client.v2.applications.DeleteApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn(Mono.empty()); } private static void requestDeleteRoute(CloudFoundryClient cloudFoundryClient, String routeId) { when(cloudFoundryClient - .routes() - .delete( - org.cloudfoundry.client.v2.routes.DeleteRouteRequest.builder() - .async(true) - .routeId(routeId) - .build())) + .routes() + .delete( + org.cloudfoundry.client.v2.routes.DeleteRouteRequest.builder() + .async(true) + .routeId(routeId) + .build())) .thenReturn( Mono.just( fill(DeleteRouteResponse.builder()) @@ -5020,26 +5015,26 @@ private static void requestEvents( } when(cloudFoundryClient - .events() - .list( - ListEventsRequest.builder() - .actee(applicationId) - .orderDirection(OrderDirection.DESCENDING) - .resultsPerPage(50) - .page(1) - .build())) + .events() + .list( + ListEventsRequest.builder() + .actee(applicationId) + .orderDirection(OrderDirection.DESCENDING) + .resultsPerPage(50) + .page(1) + .build())) .thenReturn(Mono.just(responseBuilder.totalPages(1).build())); } private static void requestGetApplication( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .get( - org.cloudfoundry.client.v2.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .get( + org.cloudfoundry.client.v2.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.defer( new Supplier>() { @@ -5048,23 +5043,23 @@ private static void requestGetApplication( new LinkedList<>( Arrays.asList( fill( - GetApplicationResponse - .builder(), - "job-") + GetApplicationResponse + .builder(), + "job-") .entity( fill(ApplicationEntity - .builder()) + .builder()) .packageState( "STAGING") .build()) .build(), fill( - GetApplicationResponse - .builder(), - "job-") + GetApplicationResponse + .builder(), + "job-") .entity( fill(ApplicationEntity - .builder()) + .builder()) .packageState( "STAGED") .build()) @@ -5080,12 +5075,12 @@ public Mono get() { private static void requestGetApplicationFailing( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .get( - org.cloudfoundry.client.v2.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .get( + org.cloudfoundry.client.v2.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(GetApplicationResponse.builder()) @@ -5099,35 +5094,49 @@ private static void requestGetApplicationFailing( private static void requestInstancesApplicationFailing( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .instances( - ApplicationInstancesRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .instances( + ApplicationInstancesRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill( - ApplicationInstancesResponse.builder(), - "application-instances-") + ApplicationInstancesResponse.builder(), + "application-instances-") .instance( "instance-0", fill( - ApplicationInstanceInfo.builder(), - "application-instance-info-") + ApplicationInstanceInfo.builder(), + "application-instance-info-") .state("FAILED") .build()) .build())); + + when(cloudFoundryClient.applicationsV3().getProcessStatistics(any())) + .thenReturn( + Mono.just( + GetApplicationProcessStatisticsResponse.builder() + .resources( + fill(ProcessStatisticsResource.builder()) + .state(ProcessState.CRASHED) + .type("web") + .uptime(1L) + .fileDescriptorQuota(1L) + .host("test-host") + .build()) + .build())); } private static void requestGetApplicationTimeout( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .get( - org.cloudfoundry.client.v2.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .get( + org.cloudfoundry.client.v2.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(GetApplicationResponse.builder()) @@ -5141,12 +5150,12 @@ private static void requestGetApplicationTimeout( private static void requestGetApplicationV3Buildpack( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .get( - org.cloudfoundry.client.v3.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .get( + org.cloudfoundry.client.v3.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( org.cloudfoundry.client.v3.applications.GetApplicationResponse @@ -5170,12 +5179,12 @@ private static void requestGetApplicationV3Buildpack( private static void requestGetApplicationV3BuildpackMultiple( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .get( - org.cloudfoundry.client.v3.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .get( + org.cloudfoundry.client.v3.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( org.cloudfoundry.client.v3.applications.GetApplicationResponse @@ -5201,12 +5210,12 @@ private static void requestGetApplicationV3BuildpackMultiple( private static void requestGetApplicationV3Docker( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .get( - org.cloudfoundry.client.v3.applications.GetApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .get( + org.cloudfoundry.client.v3.applications.GetApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( org.cloudfoundry.client.v3.applications.GetApplicationResponse @@ -5227,8 +5236,8 @@ private static void requestGetApplicationV3Docker( private static void requestGetSharedDomain( CloudFoundryClient cloudFoundryClient, String domainId) { when(cloudFoundryClient - .sharedDomains() - .get(GetSharedDomainRequest.builder().sharedDomainId(domainId).build())) + .sharedDomains() + .get(GetSharedDomainRequest.builder().sharedDomainId(domainId).build())) .thenReturn( Mono.just( fill(GetSharedDomainResponse.builder()) @@ -5248,7 +5257,7 @@ private static void requestJobFailure(CloudFoundryClient cloudFoundryClient, Str fill(GetJobResponse.builder(), "job-") .entity( fill(JobEntity - .builder()) + .builder()) .status( "running") .build()) @@ -5256,12 +5265,12 @@ private static void requestJobFailure(CloudFoundryClient cloudFoundryClient, Str fill(GetJobResponse.builder(), "job-") .entity( fill(JobEntity - .builder()) + .builder()) .errorDetails( fill( - ErrorDetails - .builder(), - "error-details-") + ErrorDetails + .builder(), + "error-details-") .build()) .status( "failed") @@ -5287,7 +5296,7 @@ private static void requestJobSuccess(CloudFoundryClient cloudFoundryClient, Str fill(GetJobResponse.builder(), "job-") .entity( fill(JobEntity - .builder()) + .builder()) .status( "running") .build()) @@ -5295,7 +5304,7 @@ private static void requestJobSuccess(CloudFoundryClient cloudFoundryClient, Str fill(GetJobResponse.builder(), "job-") .entity( fill(JobEntity - .builder()) + .builder()) .status( "finished") .build()) @@ -5332,17 +5341,17 @@ private static void requestListMatchingResources( private static void requestListTasks( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV3() - .listTasks( - org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest - .builder() - .applicationId(applicationId) - .page(1) - .build())) + .applicationsV3() + .listTasks( + org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest + .builder() + .applicationId(applicationId) + .page(1) + .build())) .thenReturn( Mono.just( fill(org.cloudfoundry.client.v3.applications - .ListApplicationTasksResponse.builder()) + .ListApplicationTasksResponse.builder()) .resource(fill(TaskResource.builder()).build()) .build())); } @@ -5350,18 +5359,18 @@ private static void requestListTasks( private static void requestListTasks( CloudFoundryClient cloudFoundryClient, String applicationId, Integer sequenceId) { when(cloudFoundryClient - .applicationsV3() - .listTasks( - org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest - .builder() - .applicationId(applicationId) - .page(1) - .sequenceId(sequenceId.toString()) - .build())) + .applicationsV3() + .listTasks( + org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest + .builder() + .applicationId(applicationId) + .page(1) + .sequenceId(sequenceId.toString()) + .build())) .thenReturn( Mono.just( fill(org.cloudfoundry.client.v3.applications - .ListApplicationTasksResponse.builder()) + .ListApplicationTasksResponse.builder()) .resource(fill(TaskResource.builder()).build()) .build())); } @@ -5369,24 +5378,24 @@ private static void requestListTasks( private static void requestListTasksEmpty( CloudFoundryClient cloudFoundryClient, String applicationId, Integer sequenceId) { when(cloudFoundryClient - .applicationsV3() - .listTasks( - org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest - .builder() - .applicationId(applicationId) - .page(1) - .sequenceId(sequenceId.toString()) - .build())) + .applicationsV3() + .listTasks( + org.cloudfoundry.client.v3.applications.ListApplicationTasksRequest + .builder() + .applicationId(applicationId) + .page(1) + .sequenceId(sequenceId.toString()) + .build())) .thenReturn( Mono.just( fill(org.cloudfoundry.client.v3.applications - .ListApplicationTasksResponse.builder()) + .ListApplicationTasksResponse.builder()) .build())); } private static void requestLogsRecent(DopplerClient dopplerClient, String applicationId) { when(dopplerClient.recentLogs( - RecentLogsRequest.builder().applicationId(applicationId).build())) + RecentLogsRequest.builder().applicationId(applicationId).build())) .thenReturn( Flux.just( Envelope.builder() @@ -5412,13 +5421,13 @@ private static void requestLogsStream(DopplerClient dopplerClient, String applic private static void requestOrganizationSpacesByName( CloudFoundryClient cloudFoundryClient, String organizationId, String space) { when(cloudFoundryClient - .organizations() - .listSpaces( - ListOrganizationSpacesRequest.builder() - .organizationId(organizationId) - .name(space) - .page(1) - .build())) + .organizations() + .listSpaces( + ListOrganizationSpacesRequest.builder() + .organizationId(organizationId) + .name(space) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListOrganizationSpacesResponse.builder()) @@ -5426,8 +5435,8 @@ private static void requestOrganizationSpacesByName( SpaceResource.builder() .metadata( fill( - Metadata.builder(), - "space-resource-metadata-") + Metadata.builder(), + "space-resource-metadata-") .build()) .entity(fill(SpaceEntity.builder()).build()) .build()) @@ -5438,13 +5447,13 @@ private static void requestOrganizationSpacesByName( private static void requestOrganizationSpacesByNameNotFound( CloudFoundryClient cloudFoundryClient, String organizationId, String space) { when(cloudFoundryClient - .organizations() - .listSpaces( - ListOrganizationSpacesRequest.builder() - .organizationId(organizationId) - .name(space) - .page(1) - .build())) + .organizations() + .listSpaces( + ListOrganizationSpacesRequest.builder() + .organizationId(organizationId) + .name(space) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListOrganizationSpacesResponse.builder()) @@ -5455,12 +5464,12 @@ private static void requestOrganizationSpacesByNameNotFound( private static void requestOrganizations( CloudFoundryClient cloudFoundryClient, String organization) { when(cloudFoundryClient - .organizations() - .list( - ListOrganizationsRequest.builder() - .name(organization) - .page(1) - .build())) + .organizations() + .list( + ListOrganizationsRequest.builder() + .name(organization) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListOrganizationsResponse.builder()) @@ -5468,8 +5477,8 @@ private static void requestOrganizations( OrganizationResource.builder() .metadata( fill( - Metadata.builder(), - "organization-resource-metadata-") + Metadata.builder(), + "organization-resource-metadata-") .build()) .entity( fill(OrganizationEntity.builder()) @@ -5482,12 +5491,12 @@ private static void requestOrganizations( private static void requestOrganizationsNotFound( CloudFoundryClient cloudFoundryClient, String organization) { when(cloudFoundryClient - .organizations() - .list( - ListOrganizationsRequest.builder() - .name(organization) - .page(1) - .build())) + .organizations() + .list( + ListOrganizationsRequest.builder() + .name(organization) + .page(1) + .build())) .thenReturn( Mono.just(fill(ListOrganizationsResponse.builder()).totalPages(1).build())); } @@ -5495,13 +5504,13 @@ private static void requestOrganizationsNotFound( private static void requestPrivateDomainNotFound( CloudFoundryClient cloudFoundryClient, String domain, String organizationId) { when(cloudFoundryClient - .organizations() - .listPrivateDomains( - ListOrganizationPrivateDomainsRequest.builder() - .name(domain) - .organizationId(organizationId) - .page(1) - .build())) + .organizations() + .listPrivateDomains( + ListOrganizationPrivateDomainsRequest.builder() + .name(domain) + .organizationId(organizationId) + .page(1) + .build())) .thenReturn( Mono.just(fill(ListOrganizationPrivateDomainsResponse.builder()).build())); } @@ -5509,12 +5518,12 @@ private static void requestPrivateDomainNotFound( private static void requestPrivateDomains( CloudFoundryClient cloudFoundryClient, String organizationId, String domainId) { when(cloudFoundryClient - .organizations() - .listPrivateDomains( - ListOrganizationPrivateDomainsRequest.builder() - .organizationId(organizationId) - .page(1) - .build())) + .organizations() + .listPrivateDomains( + ListOrganizationPrivateDomainsRequest.builder() + .organizationId(organizationId) + .page(1) + .build())) .thenReturn( Mono.just( fill(ListOrganizationPrivateDomainsResponse.builder()) @@ -5535,12 +5544,12 @@ private static void requestPrivateDomains( private static void requestPrivateDomainsEmpty( CloudFoundryClient cloudFoundryClient, String organizationId) { when(cloudFoundryClient - .organizations() - .listPrivateDomains( - ListOrganizationPrivateDomainsRequest.builder() - .organizationId(organizationId) - .page(1) - .build())) + .organizations() + .listPrivateDomains( + ListOrganizationPrivateDomainsRequest.builder() + .organizationId(organizationId) + .page(1) + .build())) .thenReturn( Mono.just(fill(ListOrganizationPrivateDomainsResponse.builder()).build())); } @@ -5548,36 +5557,36 @@ private static void requestPrivateDomainsEmpty( private static void requestRemoveApplicationRoute( CloudFoundryClient cloudFoundryClient, String applicationId, String routeId) { when(cloudFoundryClient - .applicationsV2() - .removeRoute( - RemoveApplicationRouteRequest.builder() - .applicationId(applicationId) - .routeId(routeId) - .build())) + .applicationsV2() + .removeRoute( + RemoveApplicationRouteRequest.builder() + .applicationId(applicationId) + .routeId(routeId) + .build())) .thenReturn(Mono.empty()); } private static void requestRemoveServiceBinding( CloudFoundryClient cloudFoundryClient, String applicationId, String serviceBindingId) { when(cloudFoundryClient - .applicationsV2() - .removeServiceBinding( - RemoveApplicationServiceBindingRequest.builder() - .applicationId(applicationId) - .serviceBindingId(serviceBindingId) - .build())) + .applicationsV2() + .removeServiceBinding( + RemoveApplicationServiceBindingRequest.builder() + .applicationId(applicationId) + .serviceBindingId(serviceBindingId) + .build())) .thenReturn(Mono.empty()); } private static void requestRestageApplication( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .applicationsV2() - .restage( - org.cloudfoundry.client.v2.applications.RestageApplicationRequest - .builder() - .applicationId(applicationId) - .build())) + .applicationsV2() + .restage( + org.cloudfoundry.client.v2.applications.RestageApplicationRequest + .builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(RestageApplicationResponse.builder(), "application-") @@ -5640,20 +5649,20 @@ private static void requestRoutesEmpty( private static void requestRunTask( CloudFoundryClient cloudFoundryClient, String applicationId) { when(cloudFoundryClient - .tasks() - .create( - CreateTaskRequest.builder() - .applicationId(applicationId) - .command("test-command") - .build())) + .tasks() + .create( + CreateTaskRequest.builder() + .applicationId(applicationId) + .command("test-command") + .build())) .thenReturn(Mono.just(fill(CreateTaskResponse.builder()).build())); } private static void requestSharedDomain( CloudFoundryClient cloudFoundryClient, String domain, String domainId) { when(cloudFoundryClient - .sharedDomains() - .list(ListSharedDomainsRequest.builder().page(1).name(domain).build())) + .sharedDomains() + .list(ListSharedDomainsRequest.builder().page(1).name(domain).build())) .thenReturn( Mono.just( fill(ListSharedDomainsResponse.builder()) @@ -5674,8 +5683,8 @@ private static void requestSharedDomain( private static void requestSharedDomains( CloudFoundryClient cloudFoundryClient, String domain, String domainId) { when(cloudFoundryClient - .sharedDomains() - .list(ListSharedDomainsRequest.builder().page(1).build())) + .sharedDomains() + .list(ListSharedDomainsRequest.builder().page(1).build())) .thenReturn( Mono.just( fill(ListSharedDomainsResponse.builder()) @@ -5696,8 +5705,8 @@ private static void requestSharedDomains( private static void requestSharedDomainsEmpty(CloudFoundryClient cloudFoundryClient) { when(cloudFoundryClient - .sharedDomains() - .list(ListSharedDomainsRequest.builder().page(1).build())) + .sharedDomains() + .list(ListSharedDomainsRequest.builder().page(1).build())) .thenReturn(Mono.just(fill(ListSharedDomainsResponse.builder()).build())); } @@ -5716,15 +5725,15 @@ private static void requestSpace( private static void requestSpaceSummary(CloudFoundryClient cloudFoundryClient, String spaceId) { when(cloudFoundryClient - .spaces() - .getSummary(GetSpaceSummaryRequest.builder().spaceId(spaceId).build())) + .spaces() + .getSummary(GetSpaceSummaryRequest.builder().spaceId(spaceId).build())) .thenReturn( Mono.just( fill(GetSpaceSummaryResponse.builder(), "space-summary-") .application( fill( - SpaceApplicationSummary.builder(), - "application-summary-") + SpaceApplicationSummary.builder(), + "application-summary-") .build()) .build())); } @@ -5742,16 +5751,16 @@ private static void requestStack(CloudFoundryClient cloudFoundryClient, String s private static void requestStackIdEmpty(CloudFoundryClient cloudFoundryClient, String stack) { when(cloudFoundryClient - .stacks() - .list(ListStacksRequest.builder().name(stack).page(1).build())) + .stacks() + .list(ListStacksRequest.builder().name(stack).page(1).build())) .thenReturn(Mono.just(fill(ListStacksResponse.builder()).build())); } private static void requestTcpDomains( CloudFoundryClient cloudFoundryClient, String domain, String domainId) { when(cloudFoundryClient - .sharedDomains() - .list(ListSharedDomainsRequest.builder().page(1).build())) + .sharedDomains() + .list(ListSharedDomainsRequest.builder().page(1).build())) .thenReturn( Mono.just( fill(ListSharedDomainsResponse.builder()) @@ -5773,12 +5782,12 @@ private static void requestTcpDomains( private static void requestTerminateApplicationInstance( CloudFoundryClient cloudFoundryClient, String applicationId, String instanceIndex) { when(cloudFoundryClient - .applicationsV2() - .terminateInstance( - TerminateApplicationInstanceRequest.builder() - .applicationId(applicationId) - .index(instanceIndex) - .build())) + .applicationsV2() + .terminateInstance( + TerminateApplicationInstanceRequest.builder() + .applicationId(applicationId) + .index(instanceIndex) + .build())) .thenReturn(Mono.empty()); } @@ -5804,22 +5813,22 @@ private static void requestUpdateApplication( } when(cloudFoundryClient - .applicationsV2() - .update( - builder.applicationId(applicationId) - .command(manifest.getCommand()) - .diskQuota(manifest.getDisk()) - .environmentJsons(manifest.getEnvironmentVariables()) - .healthCheckTimeout(manifest.getTimeout()) - .healthCheckType( - Optional.ofNullable(manifest.getHealthCheckType()) - .map(ApplicationHealthCheck::getValue) - .orElse(null)) - .instances(manifest.getInstances()) - .memory(manifest.getMemory()) - .name(manifest.getName()) - .stackId(stackId) - .build())) + .applicationsV2() + .update( + builder.applicationId(applicationId) + .command(manifest.getCommand()) + .diskQuota(manifest.getDisk()) + .environmentJsons(manifest.getEnvironmentVariables()) + .healthCheckTimeout(manifest.getTimeout()) + .healthCheckType( + Optional.ofNullable(manifest.getHealthCheckType()) + .map(ApplicationHealthCheck::getValue) + .orElse(null)) + .instances(manifest.getInstances()) + .memory(manifest.getMemory()) + .name(manifest.getName()) + .stackId(stackId) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) @@ -5833,12 +5842,12 @@ private static void requestUpdateApplicationEnvironment( String applicationId, Map environment) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .environmentJsons(environment) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .environmentJsons(environment) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) @@ -5854,19 +5863,19 @@ private static void requestUpdateApplicationHealthCheck( String applicationId, ApplicationHealthCheck type) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .healthCheckType(type.getValue()) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .healthCheckType(type.getValue()) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) .entity( fill( - ApplicationEntity.builder(), - "application-entity-") + ApplicationEntity.builder(), + "application-entity-") .build()) .build())); } @@ -5874,19 +5883,19 @@ private static void requestUpdateApplicationHealthCheck( private static void requestUpdateApplicationRename( CloudFoundryClient cloudFoundryClient, String applicationId, String name) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .name(name) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .name(name) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) .entity( fill( - ApplicationEntity.builder(), - "application-entity-") + ApplicationEntity.builder(), + "application-entity-") .build()) .build())); } @@ -5898,14 +5907,14 @@ private static void requestUpdateApplicationScale( Integer instances, Integer memory) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .diskQuota(disk) - .instances(instances) - .memory(memory) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .diskQuota(disk) + .instances(instances) + .memory(memory) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) @@ -5916,19 +5925,19 @@ private static void requestUpdateApplicationScale( private static void requestUpdateApplicationSsh( CloudFoundryClient cloudFoundryClient, String applicationId, Boolean enabled) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .enableSsh(enabled) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .enableSsh(enabled) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationResponse.builder()) .entity( fill( - ApplicationEntity.builder(), - "application-entity-") + ApplicationEntity.builder(), + "application-entity-") .build()) .build())); } @@ -5937,13 +5946,13 @@ private static void requestUpdateApplicationSshV3( CloudFoundryClient cloudFoundryClient, String applicationId, Boolean enabled) { when(cloudFoundryClient - .applicationsV3() - .updateFeature( - UpdateApplicationFeatureRequest.builder() - .applicationId(applicationId) - .featureName(APP_FEATURE_SSH) - .enabled(enabled) - .build())) + .applicationsV3() + .updateFeature( + UpdateApplicationFeatureRequest.builder() + .applicationId(applicationId) + .featureName(APP_FEATURE_SSH) + .enabled(enabled) + .build())) .thenReturn( Mono.just( fill(UpdateApplicationFeatureResponse.builder()) @@ -5956,11 +5965,11 @@ private static void requestUpdateApplicationSshV3( private static void requestGetSshEnabled( CloudFoundryClient cloudFoundryClient, String applicationId, boolean status) { when(cloudFoundryClient - .applicationsV3() - .getSshEnabled( - GetApplicationSshEnabledRequest.builder() - .applicationId(applicationId) - .build())) + .applicationsV3() + .getSshEnabled( + GetApplicationSshEnabledRequest.builder() + .applicationId(applicationId) + .build())) .thenReturn( Mono.just( fill(GetApplicationSshEnabledResponse.builder()) @@ -5980,12 +5989,12 @@ private static void requestUpdateApplicationState( String state, int instances) { when(cloudFoundryClient - .applicationsV2() - .update( - UpdateApplicationRequest.builder() - .applicationId(applicationId) - .state(state) - .build())) + .applicationsV2() + .update( + UpdateApplicationRequest.builder() + .applicationId(applicationId) + .state(state) + .build())) .thenReturn( Mono.just( UpdateApplicationResponse.builder() @@ -6005,13 +6014,13 @@ private static void requestUpload( Path application, String jobId) { when(cloudFoundryClient - .applicationsV2() - .upload( - UploadApplicationRequest.builder() - .applicationId(applicationId) - .async(true) - .application(application) - .build())) + .applicationsV2() + .upload( + UploadApplicationRequest.builder() + .applicationId(applicationId) + .async(true) + .application(application) + .build())) .thenReturn( Mono.just( fill(UploadApplicationResponse.builder())