in aws-rds-dbcluster/src/main/java/software/amazon/rds/dbcluster/BaseHandlerStd.java [172:206]
protected ProgressEvent<ResourceModel, CallbackContext> addAssociatedRoles(
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::add-roles-to-dbcluster", proxyClient, model, callbackContext)
.translateToServiceRequest(modelRequest -> addRoleToDbClusterRequest(
modelRequest.getDBClusterIdentifier(),
dbClusterRole.getRoleArn(),
dbClusterRole.getFeatureName()
))
.makeServiceCall((modelRequest, proxyInvocation) -> proxyInvocation.injectCredentialsAndInvokeV2(
modelRequest,
proxyInvocation.client()::addRoleToDBCluster
))
.stabilize((addRoleRequest, addRoleResponse, client, resourceModel, context) ->
isAssociatedRoleAttached(client, resourceModel, dbClusterRole)
)
.handleError((addRoleRequest, exception, client, resourceModel, context) -> Commons.handleException(
ProgressEvent.progress(resourceModel, context),
exception,
ADD_ASSOC_ROLES_ERROR_RULE_SET
))
.success();
if (!progressEvent.isSuccess()) {
return progressEvent;
}
}
return progress;
}