in aws-iot-fleetmetric/src/main/java/com/amazonaws/iot/fleetmetric/UpdateHandler.java [39:93]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
AmazonWebServicesClientProxy proxy,
ResourceHandlerRequest<ResourceModel> request,
CallbackContext callbackContext,
Logger logger) {
ResourceModel desiredModel = request.getDesiredResourceState();
String desiredArn = desiredModel.getMetricArn();
if (!StringUtils.isEmpty(desiredArn)) {
logger.log(String.format("MetricArn is read-only, but the caller passed %s. Ignored.", desiredModel.getMetricArn()));
}
try {
UpdateFleetMetricRequest updateFleetMetricRequest = UpdateFleetMetricRequest.builder()
.metricName(desiredModel.getMetricName())
.description(desiredModel.getDescription())
.queryString(desiredModel.getQueryString())
.period(desiredModel.getPeriod())
.aggregationField(desiredModel.getAggregationField())
.queryVersion(desiredModel.getQueryVersion())
.indexName(desiredModel.getIndexName())
.unit(desiredModel.getUnit())
.aggregationType(AggregationType.builder()
.name(desiredModel.getAggregationType().getName())
.values(desiredModel.getAggregationType().getValues())
.build())
.build();
proxy.injectCredentialsAndInvokeV2(updateFleetMetricRequest,
iotClient::updateFleetMetric);
logger.log(String.format("UpdateFleetMetric for %s.", desiredModel.getMetricName()));
} catch (RuntimeException e) {
ProgressEvent<ResourceModel, CallbackContext> event = Translator.translateExceptionToProgressEvent(desiredModel, e, logger);
return event;
}
// For an existing resource, we have to update via TagResource API, Update API doesn't take tags.
try {
DescribeFleetMetricRequest describeFleetMetricRequest = DescribeFleetMetricRequest.builder()
.metricName(desiredModel.getMetricName())
.build();
DescribeFleetMetricResponse describeFleetMetricResponse = proxy.injectCredentialsAndInvokeV2(
describeFleetMetricRequest, iotClient::describeFleetMetric);
String actualArn = describeFleetMetricResponse.metricArn();
logger.log(String.format("DescribeFleetMetric for %s.", desiredModel.getMetricName()));
updateTags(proxy, request, actualArn, logger);
} catch (RuntimeException e) {
return Translator.translateExceptionToProgressEvent(desiredModel, e, logger);
}
return ProgressEvent.defaultSuccessHandler(request.getDesiredResourceState());
}