in aws-ssm-association/src/main/java/com/amazonaws/ssm/association/InitialUpdateHandler.java [64:112]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
final ResourceModel requestModel = request.getDesiredResourceState();
final String associationId = requestModel.getAssociationId();
if (StringUtils.isNullOrEmpty(associationId)) {
return ProgressEvent.failed(request.getPreviousResourceState(),
callbackContext,
HandlerErrorCode.InvalidRequest,
"AssociationId must be present to update the existing association.");
}
final UpdateAssociationRequest updateAssociationRequest =
updateAssociationTranslator.resourceModelToRequest(requestModel);
final AssociationDescription resultAssociationDescription;
try {
resultAssociationDescription =
proxy.injectCredentialsAndInvokeV2(updateAssociationRequest, ssmClient::updateAssociation)
.associationDescription();
} catch (Exception e) {
final BaseHandlerException cfnException = exceptionTranslator
.translateFromServiceException(e, updateAssociationRequest, requestModel);
logger.log(cfnException.getCause().getMessage());
throw cfnException;
}
final ResourceModel updatedModel =
associationDescriptionTranslator.associationDescriptionToResourceModel(resultAssociationDescription);
final Integer waitForSuccessTimeoutSeconds = requestModel.getWaitForSuccessTimeoutSeconds();
if (waitForSuccessTimeoutSeconds == null) {
// return success without waiting for association to complete
return ProgressEvent.defaultSuccessHandler(updatedModel);
} else {
// indicates an Update request that needs to wait for association to complete
return inProgressEventCreator.nextInProgressEvent(waitForSuccessTimeoutSeconds, updatedModel);
}
}