in aws-sso-assignment/src/main/java/software/amazon/sso/assignment/ReadHandler.java [22:59]
protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final ProxyClient<SsoAdminClient> proxyClient,
final Logger logger) {
this.logger = logger;
AssignmentProxy assignmentProxy = new AssignmentProxy(proxy, proxyClient, logger);
ResourceModel model = request.getDesiredResourceState();
int retryThrottlingAttempts = Integer.valueOf(RETRY_ATTEMPTS);
int retryISEAttempts = Integer.valueOf(RETRY_ATTEMPTS);
while (retryISEAttempts > RETRY_ATTEMPTS_ZERO && retryThrottlingAttempts > RETRY_ATTEMPTS_ZERO) {
try {
if (!assignmentProxy.checkIfAssignmentAlreadyExist(model.getInstanceArn(), model.getTargetId(), model.getPermissionSetArn(), model.getPrincipalId(), model.getPrincipalType())) {
return ProgressEvent.defaultFailureHandler(new CfnNotFoundException(ResourceModel.TYPE_NAME, "Assignment not exists for given entity."), HandlerErrorCode.NotFound);
}
logger.log(String.format("%s has successfully been read.", ResourceModel.TYPE_NAME));
break;
} catch (ThrottlingException te) {
retryThrottlingAttempts = decrementAndWait(retryThrottlingAttempts);
continue;
} catch (InternalServerException ise) {
retryISEAttempts = decrementAndWait(retryISEAttempts);
continue;
}
}
if(retryISEAttempts > RETRY_ATTEMPTS_ZERO && retryThrottlingAttempts > RETRY_ATTEMPTS_ZERO) {
return ProgressEvent.success(model, callbackContext);
} else if (retryThrottlingAttempts == RETRY_ATTEMPTS_ZERO) {
return ProgressEvent.defaultFailureHandler(ThrottlingException.builder().message(THROTTLE_MESSAGE).build(), HandlerErrorCode.Throttling);
} else {
return ProgressEvent.defaultFailureHandler(InternalServerException.builder().message(ISE_MESSAGE).build(), HandlerErrorCode.InternalFailure);
}
}