in src/main/java/software/amazon/cloudformation/proxy/CloudFormationCallbackAdapter.java [55:89]
public void reportProgress(final String bearerToken,
final HandlerErrorCode errorCode,
final OperationStatus operationStatus,
final OperationStatus currentOperationStatus,
final T resourceModel,
final String statusMessage) {
assert client != null : "CloudWatchEventsClient was not initialised. You must call refreshClient() first.";
RecordHandlerProgressRequest.Builder requestBuilder = RecordHandlerProgressRequest.builder().bearerToken(bearerToken)
.operationStatus(translate(operationStatus)).statusMessage(statusMessage)
.clientRequestToken(UUID.randomUUID().toString());
if (resourceModel != null) {
try {
JSONObject jsonModel = new JSONObject(this.serializer.serialize(resourceModel));
resourceTypeSchema.removeWriteOnlyProperties(jsonModel);
// expect return type to be non-null
requestBuilder.resourceModel(jsonModel.toString());
} catch (JsonProcessingException e) {
throw new TerminalException("Unable to serialize resource model for reporting progress", e);
}
}
if (errorCode != null) {
requestBuilder.errorCode(translate(errorCode));
}
if (currentOperationStatus != null) {
requestBuilder.currentOperationStatus(translate(currentOperationStatus));
}
// TODO: be far more fault tolerant, do retries, emit logs and metrics, etc.
RecordHandlerProgressResponse response = this.client.recordHandlerProgress(requestBuilder.build());
loggerProxy.log(String.format("Record Handler Progress with Request Id %s and Request: {%s}",
response.responseMetadata().requestId(), requestBuilder.build().toString()));
}