@@ -24,9 +24,6 @@ use arrow_array::RecordBatch;
2424use bytes:: Bytes ;
2525use chrono:: Utc ;
2626use http:: StatusCode ;
27- use opentelemetry_proto:: tonic:: logs:: v1:: LogsData ;
28- use opentelemetry_proto:: tonic:: metrics:: v1:: MetricsData ;
29- use opentelemetry_proto:: tonic:: trace:: v1:: TracesData ;
3027use serde_json:: Value ;
3128
3229use crate :: event;
@@ -35,9 +32,6 @@ use crate::event::format::{json, EventFormat, LogSource};
3532use crate :: handlers:: { LOG_SOURCE_KEY , STREAM_NAME_HEADER_KEY } ;
3633use crate :: metadata:: SchemaVersion ;
3734use crate :: option:: Mode ;
38- use crate :: otel:: logs:: flatten_otel_logs;
39- use crate :: otel:: metrics:: flatten_otel_metrics;
40- use crate :: otel:: traces:: flatten_otel_traces;
4135use crate :: parseable:: { StreamNotFound , PARSEABLE } ;
4236use crate :: storage:: { ObjectStorageError , StreamType } ;
4337use crate :: utils:: header_parsing:: ParseHeaderError ;
@@ -69,6 +63,14 @@ pub async fn ingest(req: HttpRequest, Json(json): Json<Value>) -> Result<HttpRes
6963 . get ( LOG_SOURCE_KEY )
7064 . and_then ( |h| h. to_str ( ) . ok ( ) )
7165 . map_or ( LogSource :: default ( ) , LogSource :: from) ;
66+
67+ if matches ! (
68+ log_source,
69+ LogSource :: OtelLogs | LogSource :: OtelMetrics | LogSource :: OtelTraces
70+ ) {
71+ return Err ( PostError :: OtelNotSupported ) ;
72+ }
73+
7274 PARSEABLE
7375 . get_stream ( & stream_name) ?
7476 . flatten_and_push_logs ( json, & log_source)
@@ -125,13 +127,11 @@ pub async fn handle_otel_logs_ingestion(
125127 PARSEABLE
126128 . create_stream_if_not_exists ( & stream_name, StreamType :: UserDefined , LogSource :: OtelLogs )
127129 . await ?;
128- let stream = PARSEABLE . get_stream ( & stream_name) ?;
129130
130- //custom flattening required for otel logs
131- let logs: LogsData = serde_json:: from_value ( json) ?;
132- for record in flatten_otel_logs ( & logs) {
133- stream. push_logs ( record, & log_source) . await ?;
134- }
131+ PARSEABLE
132+ . get_stream ( & stream_name) ?
133+ . flatten_and_push_logs ( json, & log_source)
134+ . await ?;
135135
136136 Ok ( HttpResponse :: Ok ( ) . finish ( ) )
137137}
@@ -161,13 +161,11 @@ pub async fn handle_otel_metrics_ingestion(
161161 LogSource :: OtelMetrics ,
162162 )
163163 . await ?;
164- let stream = PARSEABLE . get_stream ( & stream_name) ?;
165164
166- //custom flattening required for otel metrics
167- let metrics: MetricsData = serde_json:: from_value ( json) ?;
168- for record in flatten_otel_metrics ( metrics) {
169- stream. push_logs ( record, & log_source) . await ?;
170- }
165+ PARSEABLE
166+ . get_stream ( & stream_name) ?
167+ . flatten_and_push_logs ( json, & log_source)
168+ . await ?;
171169
172170 Ok ( HttpResponse :: Ok ( ) . finish ( ) )
173171}
@@ -194,13 +192,11 @@ pub async fn handle_otel_traces_ingestion(
194192 PARSEABLE
195193 . create_stream_if_not_exists ( & stream_name, StreamType :: UserDefined , LogSource :: OtelTraces )
196194 . await ?;
197- let stream = PARSEABLE . get_stream ( & stream_name) ?;
198195
199- //custom flattening required for otel traces
200- let traces: TracesData = serde_json:: from_value ( json) ?;
201- for record in flatten_otel_traces ( & traces) {
202- stream. push_logs ( record, & log_source) . await ?;
203- }
196+ PARSEABLE
197+ . get_stream ( & stream_name) ?
198+ . flatten_and_push_logs ( json, & log_source)
199+ . await ?;
204200
205201 Ok ( HttpResponse :: Ok ( ) . finish ( ) )
206202}
@@ -241,6 +237,14 @@ pub async fn post_event(
241237 . get ( LOG_SOURCE_KEY )
242238 . and_then ( |h| h. to_str ( ) . ok ( ) )
243239 . map_or ( LogSource :: default ( ) , LogSource :: from) ;
240+
241+ if matches ! (
242+ log_source,
243+ LogSource :: OtelLogs | LogSource :: OtelMetrics | LogSource :: OtelTraces
244+ ) {
245+ return Err ( PostError :: OtelNotSupported ) ;
246+ }
247+
244248 PARSEABLE
245249 . get_stream ( & stream_name) ?
246250 . flatten_and_push_logs ( json, & log_source)
0 commit comments