Skip to content

Commit 51adc0c

Browse files
authored
Merge branch 'master' into async-step-timeouts
2 parents 9524a6a + 53e6e56 commit 51adc0c

106 files changed

Lines changed: 3553 additions & 1399 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

multiapps-controller-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<parent>
1111
<groupId>org.cloudfoundry.multiapps</groupId>
1212
<artifactId>multiapps-controller-parent</artifactId>
13-
<version>2.44.0-SNAPSHOT</version>
13+
<version>2.47.0-SNAPSHOT</version>
1414
</parent>
1515

1616
<dependencies>

multiapps-controller-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<parent>
1010
<groupId>org.cloudfoundry.multiapps</groupId>
1111
<artifactId>multiapps-controller-parent</artifactId>
12-
<version>2.44.0-SNAPSHOT</version>
12+
<version>2.47.0-SNAPSHOT</version>
1313
</parent>
1414

1515
<dependencies>

multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/ResilientCloudControllerClient.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import java.util.function.Supplier;
1212

1313
import org.cloudfoundry.client.v3.Metadata;
14-
import org.cloudfoundry.multiapps.controller.client.util.ResilientCloudOperationExecutor;
1514
import org.cloudfoundry.multiapps.controller.client.facade.ApplicationServicesUpdateCallback;
1615
import org.cloudfoundry.multiapps.controller.client.facade.CloudControllerClient;
1716
import org.cloudfoundry.multiapps.controller.client.facade.CloudControllerClientImpl;
@@ -282,8 +281,8 @@ public List<CloudServiceBinding> getAppBindings(UUID applicationGuid) {
282281
}
283282

284283
@Override
285-
public CloudServiceBinding getServiceBindingForApplication(UUID applicationGuid, UUID serviceInstanceGuid) {
286-
return executeWithRetry(() -> delegate.getServiceBindingForApplication(applicationGuid, serviceInstanceGuid));
284+
public List<CloudServiceBinding> getServiceBindingsForApplication(UUID applicationGuid, UUID serviceInstanceGuid) {
285+
return executeWithRetry(() -> delegate.getServiceBindingsForApplication(applicationGuid, serviceInstanceGuid));
287286
}
288287

289288
@Override
@@ -332,12 +331,12 @@ public void stopApplication(String applicationName) {
332331
}
333332

334333
@Override
335-
public Optional<String> unbindServiceInstance(String applicationName, String serviceInstanceName) {
334+
public List<String> unbindServiceInstance(String applicationName, String serviceInstanceName) {
336335
return executeWithRetry(() -> delegate.unbindServiceInstance(applicationName, serviceInstanceName));
337336
}
338337

339338
@Override
340-
public Optional<String> unbindServiceInstance(UUID appGuid, UUID serviceGuid) {
339+
public List<String> unbindServiceInstance(UUID appGuid, UUID serviceGuid) {
341340
return executeWithRetry(() -> delegate.unbindServiceInstance(appGuid, serviceGuid));
342341
}
343342

@@ -553,8 +552,8 @@ public List<CloudBuild> getBuildsForApplication(UUID applicationGuid) {
553552
}
554553

555554
@Override
556-
public Optional<String> unbindServiceInstance(String applicationName, String serviceInstanceName,
557-
ApplicationServicesUpdateCallback applicationServicesUpdateCallback) {
555+
public List<String> unbindServiceInstance(String applicationName, String serviceInstanceName,
556+
ApplicationServicesUpdateCallback applicationServicesUpdateCallback) {
558557
return executeWithRetry(
559558
() -> delegate.unbindServiceInstance(applicationName, serviceInstanceName, applicationServicesUpdateCallback));
560559
}

multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/CloudControllerClient.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -430,9 +430,9 @@ Optional<String> bindServiceInstance(String bindingName, String applicationName,
430430
*
431431
* @param applicationId the GUID of the application
432432
* @param serviceInstanceGuid the GUID of the service instance
433-
* @return the binding
433+
* @return the bindings
434434
*/
435-
CloudServiceBinding getServiceBindingForApplication(UUID applicationId, UUID serviceInstanceGuid);
435+
List<CloudServiceBinding> getServiceBindingsForApplication(UUID applicationId, UUID serviceInstanceGuid);
436436

437437
/**
438438
* Get all service instance parameters.
@@ -561,28 +561,28 @@ Optional<String> bindServiceInstance(String bindingName, String applicationName,
561561
* @param applicationName the application name
562562
* @param serviceInstanceName the service instance name
563563
* @param applicationServicesUpdateCallback callback used for error handling
564-
* @return job id for async polling if present
564+
* @return List job ids for async polling if present
565565
*/
566-
Optional<String> unbindServiceInstance(String applicationName, String serviceInstanceName,
567-
ApplicationServicesUpdateCallback applicationServicesUpdateCallback);
566+
List<String> unbindServiceInstance(String applicationName, String serviceInstanceName,
567+
ApplicationServicesUpdateCallback applicationServicesUpdateCallback);
568568

569569
/**
570570
* Un-associate (unprovision) a service from an application.
571571
*
572572
* @param applicationName the application name
573573
* @param serviceInstanceName the service instance name
574-
* @return job id for async polling if present
574+
* @return List of job ids for async polling if present
575575
*/
576-
Optional<String> unbindServiceInstance(String applicationName, String serviceInstanceName);
576+
List<String> unbindServiceInstance(String applicationName, String serviceInstanceName);
577577

578578
/**
579579
* Un-associate (unprovision) a service from an application.
580580
*
581581
* @param applicationGuid the application guid
582582
* @param serviceInstanceGuid the service instance guid
583-
* @return job id for async polling if present
583+
* @return List of job ids for async polling if present
584584
*/
585-
Optional<String> unbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid);
585+
List<String> unbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid);
586586

587587
/**
588588
* Update application disk quota.

multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/CloudControllerClientImpl.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.net.URL;
44
import java.nio.file.Path;
55
import java.time.Duration;
6+
import java.util.Collections;
67
import java.util.List;
78
import java.util.Map;
89
import java.util.Optional;
@@ -364,8 +365,8 @@ public List<CloudServiceBinding> getAppBindings(UUID applicationGuid) {
364365
}
365366

366367
@Override
367-
public CloudServiceBinding getServiceBindingForApplication(UUID applicationId, UUID serviceInstanceGuid) {
368-
return handleExceptions(() -> delegate.getServiceBindingForApplication(applicationId, serviceInstanceGuid));
368+
public List<CloudServiceBinding> getServiceBindingsForApplication(UUID applicationId, UUID serviceInstanceGuid) {
369+
return handleExceptions(() -> delegate.getServiceBindingsForApplication(applicationId, serviceInstanceGuid));
369370
}
370371

371372
@Override
@@ -464,23 +465,23 @@ public void stopApplication(String applicationName) {
464465
}
465466

466467
@Override
467-
public Optional<String> unbindServiceInstance(String applicationName, String serviceInstanceName,
468-
ApplicationServicesUpdateCallback applicationServicesUpdateCallback) {
468+
public List<String> unbindServiceInstance(String applicationName, String serviceInstanceName,
469+
ApplicationServicesUpdateCallback applicationServicesUpdateCallback) {
469470
try {
470471
return handleExceptions(() -> delegate.unbindServiceInstance(applicationName, serviceInstanceName));
471472
} catch (CloudOperationException e) {
472473
applicationServicesUpdateCallback.onError(e, applicationName, serviceInstanceName);
473474
}
474-
return Optional.empty();
475+
return Collections.emptyList();
475476
}
476477

477478
@Override
478-
public Optional<String> unbindServiceInstance(String applicationName, String serviceInstanceName) {
479+
public List<String> unbindServiceInstance(String applicationName, String serviceInstanceName) {
479480
return handleExceptions(() -> delegate.unbindServiceInstance(applicationName, serviceInstanceName));
480481
}
481482

482483
@Override
483-
public Optional<String> unbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid) {
484+
public List<String> unbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid) {
484485
return handleExceptions(() -> delegate.unbindServiceInstance(applicationGuid, serviceInstanceGuid));
485486
}
486487

multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/Staging.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@ public interface Staging {
7474
@Nullable
7575
String getReadinessHealthCheckHttpEndpoint();
7676

77-
@Nullable
78-
Boolean isReadinessHealthCheckEnabled();
79-
8077
/**
8178
* @return boolean value to see if ssh is enabled
8279
*/

multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/rest/CloudControllerRestClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ Optional<String> bindServiceInstance(String bindingName, String applicationName,
143143

144144
List<CloudServiceBinding> getAppBindings(UUID applicationGuid);
145145

146-
CloudServiceBinding getServiceBindingForApplication(UUID applicationId, UUID serviceInstanceGuid);
146+
List<CloudServiceBinding> getServiceBindingsForApplication(UUID applicationId, UUID serviceInstanceGuid);
147147

148148
CloudServiceBroker getServiceBroker(String name);
149149

@@ -179,9 +179,9 @@ Optional<String> bindServiceInstance(String bindingName, String applicationName,
179179

180180
void stopApplication(String applicationName);
181181

182-
Optional<String> unbindServiceInstance(String applicationName, String serviceInstanceName);
182+
List<String> unbindServiceInstance(String applicationName, String serviceInstanceName);
183183

184-
Optional<String> unbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid);
184+
List<String> unbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid);
185185

186186
void updateApplicationDiskQuota(String applicationName, int disk);
187187

multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/rest/CloudControllerRestClientImpl.java

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,7 @@ private void updateApplicationProcess(UUID applicationGuid, Staging staging) {
395395
if (staging.getHealthCheckType() != null) {
396396
updateProcessRequestBuilder.healthCheck(buildHealthCheck(staging));
397397
}
398-
if (staging.isReadinessHealthCheckEnabled() != null && staging.isReadinessHealthCheckEnabled()
399-
&& staging.getReadinessHealthCheckType() != null) {
398+
if (staging.getReadinessHealthCheckType() != null) {
400399
updateProcessRequestBuilder.readinessHealthCheck(buildReadinessHealthCheck(staging));
401400
}
402401
delegate.processes()
@@ -678,7 +677,8 @@ public Optional<String> deleteServiceBinding(String serviceInstanceName, String
678677
if (serviceKey == null) {
679678
throw new CloudOperationException(HttpStatus.NOT_FOUND, "Not Found", "Service key " + serviceKeyName + " not found.");
680679
}
681-
return doDeleteServiceBinding(serviceKey.getGuid());
680+
return doDeleteServiceBindings(List.of(serviceKey.getGuid())).stream()
681+
.findFirst();
682682
}
683683

684684
@Override
@@ -913,9 +913,9 @@ public List<CloudServiceBinding> getAppBindings(UUID applicationGuid) {
913913
}
914914

915915
@Override
916-
public CloudServiceBinding getServiceBindingForApplication(UUID applicationId, UUID serviceInstanceGuid) {
917-
return fetch(() -> getServiceBindingResourceByApplicationGuidAndServiceInstanceGuid(applicationId, serviceInstanceGuid),
918-
ImmutableRawCloudServiceBinding::of);
916+
public List<CloudServiceBinding> getServiceBindingsForApplication(UUID applicationId, UUID serviceInstanceGuid) {
917+
return fetchList(() -> getServiceBindingResourcesByApplicationGuidAndServiceInstanceGuid(applicationId, serviceInstanceGuid),
918+
ImmutableRawCloudServiceBinding::of);
919919
}
920920

921921
@Override
@@ -1258,7 +1258,7 @@ public void stopApplication(String applicationName) {
12581258
}
12591259

12601260
@Override
1261-
public Optional<String> unbindServiceInstance(String applicationName, String serviceInstanceName) {
1261+
public List<String> unbindServiceInstance(String applicationName, String serviceInstanceName) {
12621262
UUID applicationGuid = getRequiredApplicationGuid(applicationName);
12631263
UUID serviceInstanceGuid = getRequiredServiceInstanceGuid(serviceInstanceName);
12641264

@@ -1267,11 +1267,12 @@ public Optional<String> unbindServiceInstance(String applicationName, String ser
12671267

12681268
@Override
12691269
public Optional<String> deleteServiceBinding(UUID serviceBindingGuid) {
1270-
return doDeleteServiceBinding(serviceBindingGuid);
1270+
return doDeleteServiceBindings(List.of(serviceBindingGuid)).stream()
1271+
.findFirst();
12711272
}
12721273

12731274
@Override
1274-
public Optional<String> unbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid) {
1275+
public List<String> unbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid) {
12751276
return doUnbindServiceInstance(applicationGuid, serviceInstanceGuid);
12761277
}
12771278

@@ -1737,16 +1738,16 @@ private Flux<? extends ServiceBindingResource> getServiceBindingResourcesByServi
17371738
.list(pageRequestSupplier.apply(page)));
17381739
}
17391740

1740-
private Mono<? extends ServiceBindingResource> getServiceBindingResourceByApplicationGuidAndServiceInstanceGuid(UUID applicationGuid,
1741-
UUID serviceInstanceGuid) {
1741+
private Flux<? extends ServiceBindingResource> getServiceBindingResourcesByApplicationGuidAndServiceInstanceGuid(UUID applicationGuid,
1742+
UUID serviceInstanceGuid) {
17421743
IntFunction<ListServiceBindingsRequest> pageRequestSupplier = page -> ListServiceBindingsRequest.builder()
17431744
.applicationId(
17441745
applicationGuid.toString())
17451746
.serviceInstanceId(
17461747
serviceInstanceGuid.toString())
17471748
.page(page)
17481749
.build();
1749-
return getApplicationServiceBindingResources(pageRequestSupplier).singleOrEmpty();
1750+
return getApplicationServiceBindingResources(pageRequestSupplier);
17501751
}
17511752

17521753
private Flux<? extends ServiceBindingResource> getServiceBindingResourcesByApplicationGuid(UUID applicationGuid) {
@@ -2036,23 +2037,47 @@ private void doDeleteServiceInstance(UUID serviceInstanceGuid) {
20362037
.block();
20372038
}
20382039

2039-
private Optional<String> doUnbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid) {
2040-
UUID serviceBindingGuid = getServiceBindingGuid(applicationGuid, serviceInstanceGuid);
2041-
if (serviceBindingGuid == null) {
2040+
private List<String> doUnbindServiceInstance(UUID applicationGuid, UUID serviceInstanceGuid) {
2041+
List<UUID> serviceBindingGuids = getServiceBindingGuids(applicationGuid, serviceInstanceGuid);
2042+
if (serviceBindingGuids.isEmpty()) {
20422043
throw new CloudOperationException(HttpStatus.NOT_FOUND, "Not Found",
20432044
"Service binding between service with GUID " + serviceInstanceGuid
20442045
+ " and application with GUID " + applicationGuid + " not found.");
20452046
}
2046-
return doDeleteServiceBinding(serviceBindingGuid);
2047+
return doDeleteServiceBindings(serviceBindingGuids);
20472048
}
20482049

2049-
private Optional<String> doDeleteServiceBinding(UUID guid) {
2050-
String jobId = delegate.serviceBindingsV3()
2051-
.delete(DeleteServiceBindingRequest.builder()
2052-
.serviceBindingId(guid.toString())
2053-
.build())
2054-
.block();
2055-
return Optional.ofNullable(jobId);
2050+
private List<String> doDeleteServiceBindings(List<UUID> guids) {
2051+
List<String> jobIds = new ArrayList<>();
2052+
List<AbstractCloudFoundryException> errors = new ArrayList<>();
2053+
for (UUID guid : guids) {
2054+
try {
2055+
Optional.ofNullable(deleteSingleServiceBinding(guid))
2056+
.ifPresent(jobIds::add);
2057+
} catch (AbstractCloudFoundryException e) {
2058+
errors.add(e);
2059+
}
2060+
}
2061+
throwOnErrors(errors);
2062+
return jobIds;
2063+
}
2064+
2065+
private String deleteSingleServiceBinding(UUID guid) {
2066+
return delegate.serviceBindingsV3()
2067+
.delete(DeleteServiceBindingRequest.builder()
2068+
.serviceBindingId(guid.toString())
2069+
.build())
2070+
.block();
2071+
}
2072+
2073+
private void throwOnErrors(List<AbstractCloudFoundryException> errors) {
2074+
if (errors.isEmpty()) {
2075+
return;
2076+
}
2077+
RuntimeException first = errors.get(0);
2078+
errors.subList(1, errors.size())
2079+
.forEach(first::addSuppressed);
2080+
throw first;
20562081
}
20572082

20582083
private CloudDomain findDomainByName(String name, boolean required) {
@@ -2464,9 +2489,10 @@ private UUID getRouteGuid(UUID domainGuid, String host, String path) {
24642489
return getGuid(routeEntitiesResource.get(0));
24652490
}
24662491

2467-
private UUID getServiceBindingGuid(UUID applicationGuid, UUID serviceInstanceGuid) {
2468-
return getServiceBindingResourceByApplicationGuidAndServiceInstanceGuid(applicationGuid, serviceInstanceGuid).map(this::getGuid)
2469-
.block();
2492+
private List<UUID> getServiceBindingGuids(UUID applicationGuid, UUID serviceInstanceGuid) {
2493+
return getServiceBindingResourcesByApplicationGuidAndServiceInstanceGuid(applicationGuid, serviceInstanceGuid).map(this::getGuid)
2494+
.collectList()
2495+
.block();
24702496
}
24712497

24722498
private void processAsyncUploadInBackground(CloudPackage cloudPackage, UploadStatusCallback callback) {

multiapps-controller-core-test/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<parent>
1010
<groupId>org.cloudfoundry.multiapps</groupId>
1111
<artifactId>multiapps-controller-parent</artifactId>
12-
<version>2.44.0-SNAPSHOT</version>
12+
<version>2.47.0-SNAPSHOT</version>
1313
</parent>
1414

1515
<dependencies>

multiapps-controller-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<parent>
1010
<groupId>org.cloudfoundry.multiapps</groupId>
1111
<artifactId>multiapps-controller-parent</artifactId>
12-
<version>2.44.0-SNAPSHOT</version>
12+
<version>2.47.0-SNAPSHOT</version>
1313
</parent>
1414

1515
<dependencies>

0 commit comments

Comments
 (0)