Skip to content

Commit b9f2a56

Browse files
committed
Fix pushing of applications with 0 instances
1 parent 25fac55 commit b9f2a56

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.cloudfoundry.client.CloudFoundryClient;
2020
import org.cloudfoundry.client.v2.OrderDirection;
2121
import org.cloudfoundry.client.v2.applications.AbstractApplicationResource;
22+
import org.cloudfoundry.client.v2.applications.ApplicationEntity;
2223
import org.cloudfoundry.client.v2.applications.ApplicationEnvironmentRequest;
2324
import org.cloudfoundry.client.v2.applications.ApplicationEnvironmentResponse;
2425
import org.cloudfoundry.client.v2.applications.ApplicationInstanceInfo;
@@ -1677,10 +1678,22 @@ private static Mono<Void> startApplicationAndWait(CloudFoundryClient cloudFoundr
16771678

16781679
private static Mono<Void> stopAndStartApplication(CloudFoundryClient cloudFoundryClient, String applicationId, String name, PushApplicationManifestRequest request) {
16791680
return stopApplication(cloudFoundryClient, applicationId)
1680-
.filter(resource -> !Optional.ofNullable(request.getNoStart()).orElse(false))
1681+
.filter(resource -> shouldStartApplication(request, resource))
16811682
.flatMap(resource -> startApplicationAndWait(cloudFoundryClient, name, applicationId, request.getStagingTimeout(), request.getStartupTimeout()));
16821683
}
16831684

1685+
private static boolean shouldStartApplication(PushApplicationManifestRequest request, AbstractApplicationResource resource) {
1686+
return shouldStartApplication(request) && getInstances(resource) > 0;
1687+
}
1688+
1689+
private static boolean shouldStartApplication(PushApplicationManifestRequest request) {
1690+
return !Optional.ofNullable(request.getNoStart()).orElse(false);
1691+
}
1692+
1693+
private static int getInstances(AbstractApplicationResource resource) {
1694+
return Optional.ofNullable(resource.getEntity()).map(ApplicationEntity::getInstances).orElse(0);
1695+
}
1696+
16841697
private static Mono<AbstractApplicationResource> stopApplication(CloudFoundryClient cloudFoundryClient, String applicationId) {
16851698
return requestUpdateApplicationState(cloudFoundryClient, applicationId, STOPPED_STATE);
16861699
}

0 commit comments

Comments
 (0)