in aws-logs-loggroup/src/main/java/software/amazon/logs/loggroup/ReadHandler.java [18:73]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
final ResourceModel model = request.getDesiredResourceState();
if (model == null || model.getLogGroupName() == null) {
throwNotFoundException(model);
}
DescribeLogGroupsResponse response = null;
LogGroup matchingLogGroup = null;
String nextToken = null;
// Keep paginating until requested log group is found
do {
try {
response = proxy.injectCredentialsAndInvokeV2(Translator.translateToReadRequest(model, nextToken),
ClientBuilder.getClient()::describeLogGroups);
} catch (final ResourceNotFoundException e) {
throwNotFoundException(model);
}
matchingLogGroup = Translator.getMatchingLogGroup(response, model.getLogGroupName());
// If log group found, break out of loop
if (matchingLogGroup != null) {
break;
}
nextToken = response.nextToken();
} while (nextToken != null);
// If paginated all log groups, still cannot find it
if (matchingLogGroup == null) {
throwNotFoundException(model);
}
ListTagsLogGroupResponse tagsResponse = null;
try {
tagsResponse = proxy.injectCredentialsAndInvokeV2(Translator.translateToListTagsLogGroupRequest(model.getLogGroupName()),
ClientBuilder.getClient()::listTagsLogGroup);
} catch (final CloudWatchLogsException e) {
if (Translator.ACCESS_DENIED_ERROR_CODE.equals(e.awsErrorDetails().errorCode())) {
// fail silently, if there is no permission to list tags
logger.log(e.getMessage());
} else {
throw e;
}
}
ResourceModel modelFromReadResult = Translator.translateForReadResponse(matchingLogGroup, tagsResponse);
return ProgressEvent.defaultSuccessHandler(modelFromReadResult);
}