in validator/src/main/java/com/amazon/aoc/helpers/CWMetricHelper.java [88:153]
private List<Metric> rollupMetric(List<Metric> metricList) {
List<Metric> rollupMetricList = new ArrayList<>();
for (Metric metric : metricList) {
Dimension otellibDimension = new Dimension();
boolean otelLibDimensionExisted = false;
if (metric.getDimensions().size() > 0) {
// get otellib dimension out
// assuming the first dimension is otellib, if not the validation fails
otellibDimension = metric.getDimensions().get(0);
otelLibDimensionExisted = otellibDimension.getName().equals(DEFAULT_DIMENSION_NAME);
}
if (otelLibDimensionExisted) {
metric.getDimensions().remove(0);
}
// all dimension rollup
Metric allDimensionsMetric = new Metric();
allDimensionsMetric.setMetricName(metric.getMetricName());
allDimensionsMetric.setNamespace(metric.getNamespace());
allDimensionsMetric.setDimensions(metric.getDimensions());
if (otelLibDimensionExisted) {
allDimensionsMetric
.getDimensions()
.add(
new Dimension()
.withName(otellibDimension.getName())
.withValue(otellibDimension.getValue()));
}
rollupMetricList.add(allDimensionsMetric);
// zero dimension rollup
Metric zeroDimensionMetric = new Metric();
zeroDimensionMetric.setNamespace(metric.getNamespace());
zeroDimensionMetric.setMetricName(metric.getMetricName());
if (otelLibDimensionExisted) {
zeroDimensionMetric.setDimensions(
Arrays.asList(
new Dimension()
.withName(otellibDimension.getName())
.withValue(otellibDimension.getValue())));
}
rollupMetricList.add(zeroDimensionMetric);
// single dimension rollup
for (Dimension dimension : metric.getDimensions()) {
Metric singleDimensionMetric = new Metric();
singleDimensionMetric.setNamespace(metric.getNamespace());
singleDimensionMetric.setMetricName(metric.getMetricName());
if (otelLibDimensionExisted) {
singleDimensionMetric.setDimensions(
Arrays.asList(
new Dimension()
.withName(otellibDimension.getName())
.withValue(otellibDimension.getValue())));
}
singleDimensionMetric.getDimensions().add(dimension);
rollupMetricList.add(singleDimensionMetric);
}
}
return rollupMetricList;
}