in aws-iot-resourcespecificlogging/src/main/java/software/amazon/iot/resourcespecificlogging/UpdateHandler.java [28:87]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
final ResourceModel model = request.getDesiredResourceState();
if (StringUtils.isNullOrEmpty(model.getTargetId())) {
return ProgressEvent.failed(model, callbackContext,
HandlerErrorCode.NotFound,
"The targetId for the resource is null or empty.");
}
//fetch targetType and targetName from targetId
String[] targetIdArray = model.getTargetId().split(":", 2);
String targetType = targetIdArray[0];
String targetName = targetIdArray[1];
//If resource has already existed, throw alreadyExist exception
String logLevelForTarget;
logger.log("Call ListLoggingLevels to get a specific log level for this target.");
try {
logLevelForTarget = HandlerUtils.getLoggingLevelForTarget(targetType, targetName, proxy, iotClient);
} catch (RuntimeException e) {
return ExceptionTranslator.translateExceptionToProgressEvent(model, e, logger);
}
if (logLevelForTarget == null) {
return ProgressEvent.failed(model, callbackContext,
HandlerErrorCode.NotFound,
"The logLevel for this target doesn't exist.");
}
//update resource
software.amazon.awssdk.services.iot.model.LogTarget logTarget = LogTarget.builder()
.targetType(targetType)
.targetName(targetName)
.build();
SetV2LoggingLevelRequest setV2LoggingLevelRequest = SetV2LoggingLevelRequest.builder()
.logLevel(model.getLogLevel())
.logTarget(logTarget)
.build();
try {
proxy.injectCredentialsAndInvokeV2(setV2LoggingLevelRequest, iotClient::setV2LoggingLevel);
} catch (RuntimeException e) {
return ExceptionTranslator.translateExceptionToProgressEvent(model, e, logger);
}
logger.log(String.format("Update %s [%s] successfully", ResourceModel.TYPE_NAME, model.getTargetId()));
return ProgressEvent.defaultSuccessHandler(model);
}