in aws-iot-fleetmetric/src/main/java/com/amazonaws/iot/fleetmetric/CreateHandler.java [94:139]
private CreateFleetMetricRequest translateToCreateRequest(
ResourceHandlerRequest<ResourceModel> request,
Logger logger) {
ResourceModel model = request.getDesiredResourceState();
// Combine all tags in one map that we'll use for the request
Map<String, String> allTags = new HashMap<>();
if (request.getDesiredResourceTags() != null) {
// DesiredResourceTags includes both model and stack-level tags.
// Reference: https://tinyurl.com/yyxtd7w6
// TODO add system tags back once FleetMetric adds the support
// allTags.putAll(request.getDesiredResourceTags());
request.getDesiredResourceTags().entrySet().stream()
.filter(e -> !e.getKey().startsWith(AWS_SYSTEM_TAG_PREFIX))
.forEach(e -> allTags.put(e.getKey(), e.getValue()));
}
// TODO add system tags back once FleetMetric adds the support
// if (request.getSystemTags() != null) {
// // There are also system tags provided separately.
// // SystemTags are the default stack-level tags with aws:cloudformation prefix
// allTags.putAll(request.getSystemTags());
// } else {
// // System tags should always be present as long as the Handler is called by CloudFormation
// logger.log("Unexpectedly, system tags are null in the create request for " +
// ResourceModel.TYPE_NAME + " " + model.getMetricName());
// }
return CreateFleetMetricRequest.builder()
.metricName(model.getMetricName())
.description(model.getDescription())
.queryString(model.getQueryString())
.period(model.getPeriod())
.aggregationField(model.getAggregationField())
.queryVersion(model.getQueryVersion())
.indexName(model.getIndexName())
.unit(model.getUnit())
.aggregationType(AggregationType.builder()
.name(model.getAggregationType().getName())
.values(model.getAggregationType().getValues())
.build())
.tags(Translator.translateTagsToSdk(allTags))
.build();
}