Skip to content

Commit 474dcd2

Browse files
chore: return dataset name and type in home api response (#1271)
1 parent 003539b commit 474dcd2

File tree

1 file changed

+42
-11
lines changed

1 file changed

+42
-11
lines changed

src/prism/home/mod.rs

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ use tracing::error;
2929
use crate::{
3030
alerts::{get_alerts_info, AlertError, AlertsInfo, ALERTS},
3131
correlation::{CorrelationError, CORRELATIONS},
32+
event::format::LogSource,
3233
handlers::http::{
3334
cluster::fetch_daily_stats_from_ingestors,
3435
logstream::{error::StreamError, get_stats_date},
@@ -61,6 +62,19 @@ struct TitleAndId {
6162
id: String,
6263
}
6364

65+
#[derive(Debug, Serialize)]
66+
enum DataSetType {
67+
Logs,
68+
Metrics,
69+
Traces,
70+
}
71+
72+
#[derive(Debug, Serialize)]
73+
struct DataSet {
74+
title: String,
75+
dataset_type: DataSetType,
76+
}
77+
6478
#[derive(Debug, Serialize)]
6579
pub struct HomeResponse {
6680
alert_titles: Vec<TitleAndId>,
@@ -69,7 +83,7 @@ pub struct HomeResponse {
6983
stream_info: StreamInfo,
7084
stats_details: Vec<DatedStats>,
7185
stream_titles: Vec<String>,
72-
86+
datasets: Vec<DataSet>,
7387
dashboard_titles: Vec<TitleAndId>,
7488
filter_titles: Vec<TitleAndId>,
7589
}
@@ -161,25 +175,23 @@ pub async fn generate_home_response(key: &SessionKey) -> Result<HomeResponse, Pr
161175
dates.reverse();
162176

163177
let mut stream_details = Vec::new();
164-
178+
let mut datasets = Vec::new();
165179
// this will hold the summary of all streams for the last 7 days
166180
let mut summary = StreamInfo::default();
167181

168-
let mut stream_wise_ingestor_stream_json = HashMap::new();
182+
let mut stream_wise_stream_json = HashMap::new();
169183
for stream in stream_titles.clone() {
170184
let path = RelativePathBuf::from_iter([&stream, STREAM_ROOT_DIRECTORY]);
171185
let obs = PARSEABLE
172186
.storage
173187
.get_object_store()
174188
.get_objects(
175189
Some(&path),
176-
Box::new(|file_name| {
177-
file_name.starts_with(".ingestor") && file_name.ends_with("stream.json")
178-
}),
190+
Box::new(|file_name| file_name.ends_with("stream.json")),
179191
)
180192
.await?;
181193

182-
let mut ingestor_stream_jsons = Vec::new();
194+
let mut stream_jsons = Vec::new();
183195
for ob in obs {
184196
let stream_metadata: ObjectStoreFormat = match serde_json::from_slice(&ob) {
185197
Ok(d) => d,
@@ -188,13 +200,31 @@ pub async fn generate_home_response(key: &SessionKey) -> Result<HomeResponse, Pr
188200
continue;
189201
}
190202
};
191-
ingestor_stream_jsons.push(stream_metadata);
203+
stream_jsons.push(stream_metadata);
192204
}
193-
stream_wise_ingestor_stream_json.insert(stream, ingestor_stream_jsons);
205+
stream_wise_stream_json.insert(stream.clone(), stream_jsons.clone());
206+
207+
let log_source = &stream_jsons[0].clone().log_source;
208+
209+
// if log_source_format is otel-metrics, set DataSetType to metrics
210+
//if log_source_format is otel-traces, set DataSetType to traces
211+
//else set DataSetType to logs
212+
213+
let dataset_type = match log_source[0].log_source_format {
214+
LogSource::OtelMetrics => DataSetType::Metrics,
215+
LogSource::OtelTraces => DataSetType::Traces,
216+
_ => DataSetType::Logs,
217+
};
218+
219+
let dataset = DataSet {
220+
title: stream.clone(),
221+
dataset_type,
222+
};
223+
datasets.push(dataset);
194224
}
195225

196226
for date in dates.into_iter() {
197-
let dated_stats = stats_for_date(date, stream_wise_ingestor_stream_json.clone()).await?;
227+
let dated_stats = stats_for_date(date, stream_wise_stream_json.clone()).await?;
198228
summary.stats_summary.events += dated_stats.events;
199229
summary.stats_summary.ingestion += dated_stats.ingestion_size;
200230
summary.stats_summary.storage += dated_stats.storage_size;
@@ -205,7 +235,8 @@ pub async fn generate_home_response(key: &SessionKey) -> Result<HomeResponse, Pr
205235
Ok(HomeResponse {
206236
stream_info: summary,
207237
stats_details: stream_details,
208-
stream_titles: stream_titles.clone(),
238+
stream_titles,
239+
datasets,
209240
alert_titles,
210241
correlation_titles,
211242
dashboard_titles,

0 commit comments

Comments
 (0)