@@ -29,6 +29,7 @@ use tracing::error;
2929use 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 ) ]
6579pub 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