001package io.prometheus.metrics.exporter.opentelemetry.otelmodel; 002 003import io.prometheus.metrics.model.snapshots.InfoSnapshot; 004import io.prometheus.metrics.shaded.io_opentelemetry_1_38_0.sdk.metrics.data.AggregationTemporality; 005import io.prometheus.metrics.shaded.io_opentelemetry_1_38_0.sdk.metrics.data.DoublePointData; 006import io.prometheus.metrics.shaded.io_opentelemetry_1_38_0.sdk.metrics.data.MetricDataType; 007import io.prometheus.metrics.shaded.io_opentelemetry_1_38_0.sdk.metrics.data.SumData; 008 009import java.util.Collection; 010import java.util.Collections; 011import java.util.List; 012import java.util.stream.Collectors; 013 014public class PrometheusInfo extends PrometheusData<DoublePointData> implements SumData<DoublePointData> { 015 016 private final List<DoublePointData> points; 017 018 public PrometheusInfo(InfoSnapshot snapshot, long currentTimeMillis) { 019 super(MetricDataType.DOUBLE_SUM); 020 this.points = snapshot.getDataPoints().stream() 021 .map(dataPoint -> toOtelDataPoint(dataPoint, currentTimeMillis)) 022 .collect(Collectors.toList()); 023 } 024 025 @Override 026 public boolean isMonotonic() { 027 return false; 028 } 029 030 @Override 031 public AggregationTemporality getAggregationTemporality() { 032 return AggregationTemporality.CUMULATIVE; 033 } 034 035 @Override 036 public Collection<DoublePointData> getPoints() { 037 return points; 038 } 039 040 private DoublePointData toOtelDataPoint(InfoSnapshot.InfoDataPointSnapshot dataPoint, long currentTimeMillis) { 041 return new DoublePointDataImpl( 042 1.0, 043 getStartEpochNanos(dataPoint), 044 getEpochNanos(dataPoint, currentTimeMillis), 045 labelsToAttributes(dataPoint.getLabels()), 046 Collections.emptyList() 047 ); 048 } 049}