|
19 | 19 | import org.cloudfoundry.client.CloudFoundryClient; |
20 | 20 | import org.cloudfoundry.client.v2.OrderDirection; |
21 | 21 | import org.cloudfoundry.client.v2.applications.AbstractApplicationResource; |
| 22 | +import org.cloudfoundry.client.v2.applications.ApplicationEntity; |
22 | 23 | import org.cloudfoundry.client.v2.applications.ApplicationEnvironmentRequest; |
23 | 24 | import org.cloudfoundry.client.v2.applications.ApplicationEnvironmentResponse; |
24 | 25 | import org.cloudfoundry.client.v2.applications.ApplicationInstanceInfo; |
@@ -1677,10 +1678,22 @@ private static Mono<Void> startApplicationAndWait(CloudFoundryClient cloudFoundr |
1677 | 1678 |
|
1678 | 1679 | private static Mono<Void> stopAndStartApplication(CloudFoundryClient cloudFoundryClient, String applicationId, String name, PushApplicationManifestRequest request) { |
1679 | 1680 | return stopApplication(cloudFoundryClient, applicationId) |
1680 | | - .filter(resource -> !Optional.ofNullable(request.getNoStart()).orElse(false)) |
| 1681 | + .filter(resource -> shouldStartApplication(request, resource)) |
1681 | 1682 | .flatMap(resource -> startApplicationAndWait(cloudFoundryClient, name, applicationId, request.getStagingTimeout(), request.getStartupTimeout())); |
1682 | 1683 | } |
1683 | 1684 |
|
| 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 | + |
1684 | 1697 | private static Mono<AbstractApplicationResource> stopApplication(CloudFoundryClient cloudFoundryClient, String applicationId) { |
1685 | 1698 | return requestUpdateApplicationState(cloudFoundryClient, applicationId, STOPPED_STATE); |
1686 | 1699 | } |
|
0 commit comments