in aws-rds-dbcluster/src/main/java/software/amazon/rds/dbcluster/BaseHandlerStd.java [208:240]
protected ProgressEvent<ResourceModel, CallbackContext> removeAssociatedRoles(
final AmazonWebServicesClientProxy proxy,
final ProxyClient<RdsClient> proxyClient,
final ProgressEvent<ResourceModel, CallbackContext> progress,
final List<DBClusterRole> roles
) {
final ResourceModel model = progress.getResourceModel();
final CallbackContext callbackContext = progress.getCallbackContext();
for (final DBClusterRole dbClusterRole : Optional.ofNullable(roles).orElse(Collections.emptyList())) {
final ProgressEvent<ResourceModel, CallbackContext> progressEvent = proxy.initiate("rds::remove-roles-to-dbcluster", proxyClient, model, callbackContext)
.translateToServiceRequest(modelRequest -> removeRoleFromDbClusterRequest(
modelRequest.getDBClusterIdentifier(),
dbClusterRole.getRoleArn(),
dbClusterRole.getFeatureName()
))
.makeServiceCall((modelRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2(
modelRequest,
proxyInvocation.client()::removeRoleFromDBCluster
))
.stabilize((removeRoleRequest, removeRoleResponse, client, resourceModel, context) ->
isAssociatedRoleDetached(client, resourceModel, dbClusterRole)
)
.handleError((removeRoleRequest, exception, proxyInvocation, resourceModel, context) -> Commons.handleException(
ProgressEvent.progress(resourceModel, context),
exception,
REMOVE_ASSOC_ROLES_ERROR_RULE_SET
))
.success();
if (!progressEvent.isSuccess()) return progressEvent;
}
return ProgressEvent.progress(model, callbackContext);
}