in aws-datasync-task/src/main/java/software/amazon/datasync/task/ReadHandler.java [24:75]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
final ResourceModel model = request.getDesiredResourceState();
final DataSyncClient client = ClientBuilder.getClient();
final DescribeTaskRequest describeTaskRequest = Translator.translateToReadRequest(model.getTaskArn());
DescribeTaskResponse response;
try {
response = proxy.injectCredentialsAndInvokeV2(describeTaskRequest, client::describeTask);
} catch (InvalidRequestException e) {
throw new CfnNotFoundException(ResourceModel.TYPE_NAME, model.getTaskArn());
} catch (InternalException e) {
throw new CfnServiceInternalErrorException(e.getMessage(), e.getCause());
} catch (DataSyncException e) {
throw Translator.translateDataSyncExceptionToCfnException(e);
}
// Current tags are not supplied by the Describe call and must be retrieved separately
final Set<Tag> allTags = TagRequestMaker.listTagsForResource(proxy, client, model.getTaskArn());
final Set<Tag> userTags = allTags.stream()
.filter(tag -> !tag.getKey().startsWith(AWS_CFN_TAG_PREFIX)) // Filter our system tags on the user tags
.collect(Collectors.toSet());
ResourceModel returnModel = ResourceModel.builder()
.cloudWatchLogGroupArn(response.cloudWatchLogGroupArn())
.taskArn(response.taskArn())
.destinationLocationArn(response.destinationLocationArn())
.errorCode(response.errorCode())
.errorDetail(response.errorDetail())
.status(response.statusAsString())
.excludes(Translator.translateToResourceModelFilterRules(response.excludes()))
.includes(Translator.translateToResourceModelFilterRules(response.includes()))
.name(response.name())
.options(Translator.translateToResourceModelOptions(response.options()))
.schedule(Translator.translateToResourceModelTaskSchedule(response.schedule()))
.sourceLocationArn(response.sourceLocationArn())
.sourceNetworkInterfaceArns(response.sourceNetworkInterfaceArns())
.destinationNetworkInterfaceArns(response.destinationNetworkInterfaceArns())
.tags(userTags)
.build();
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(returnModel)
.status(OperationStatus.SUCCESS)
.build();
}