11use std:: { fmt, path:: Path } ;
22
3+ use code0_flow:: flow_telemetry:: OpenTelemetry ;
34use config:: { Config as ConfigLoader , ConfigError , File } ;
45use serde:: { Deserialize , Serialize } ;
56
@@ -15,6 +16,7 @@ pub struct Config {
1516 pub mode : Mode ,
1617 pub log_level : String ,
1718 #[ serde( alias = "telemetry" ) ]
19+ #[ serde( default = "default_opentelemetry" ) ]
1820 pub opentelemetry : OpenTelemetry ,
1921 pub nats : Nats ,
2022 pub static_config : StaticConfig ,
@@ -30,16 +32,6 @@ pub struct Nats {
3032 pub bucket : String ,
3133}
3234
33- #[ derive( Clone , Debug , Deserialize , Serialize ) ]
34- #[ serde( default ) ]
35- pub struct OpenTelemetry {
36- pub enabled : bool ,
37- pub service_name : String ,
38- pub logs_endpoint : Option < String > ,
39- pub metrics_endpoint : Option < String > ,
40- pub traces_endpoint : Option < String > ,
41- }
42-
4335#[ derive( Clone , Debug , Deserialize , Serialize ) ]
4436#[ serde( default ) ]
4537pub struct StaticConfig {
@@ -90,7 +82,7 @@ impl Default for Config {
9082 environment : Environment :: Development ,
9183 mode : Mode :: Static ,
9284 log_level : "debug" . into ( ) ,
93- opentelemetry : OpenTelemetry :: default ( ) ,
85+ opentelemetry : default_opentelemetry ( ) ,
9486 nats : Nats :: default ( ) ,
9587 static_config : StaticConfig :: default ( ) ,
9688 dynamic_config : DynamicConfig :: default ( ) ,
@@ -100,42 +92,13 @@ impl Default for Config {
10092 }
10193}
10294
103- impl Default for OpenTelemetry {
104- fn default ( ) -> Self {
105- Self {
106- enabled : false ,
107- service_name : env ! ( "CARGO_PKG_NAME" ) . into ( ) ,
108- logs_endpoint : None ,
109- metrics_endpoint : None ,
110- traces_endpoint : None ,
111- }
112- }
113- }
114-
115- impl OpenTelemetry {
116- pub fn logs_endpoint ( & self ) -> Option < & str > {
117- non_empty_url ( & self . logs_endpoint )
118- }
119-
120- pub fn metrics_endpoint ( & self ) -> Option < & str > {
121- non_empty_url ( & self . metrics_endpoint )
122- }
123-
124- pub fn traces_endpoint ( & self ) -> Option < & str > {
125- non_empty_url ( & self . traces_endpoint )
126- }
127-
128- pub fn has_enabled_exporter ( & self ) -> bool {
129- self . logs_endpoint ( ) . is_some ( )
130- || self . metrics_endpoint ( ) . is_some ( )
131- || self . traces_endpoint ( ) . is_some ( )
95+ fn default_opentelemetry ( ) -> OpenTelemetry {
96+ OpenTelemetry {
97+ service_name : env ! ( "CARGO_PKG_NAME" ) . into ( ) ,
98+ ..OpenTelemetry :: default ( )
13299 }
133100}
134101
135- fn non_empty_url ( url : & Option < String > ) -> Option < & str > {
136- url. as_deref ( ) . filter ( |value| !value. trim ( ) . is_empty ( ) )
137- }
138-
139102impl Default for Nats {
140103 fn default ( ) -> Self {
141104 Self {
@@ -294,7 +257,9 @@ impl fmt::Display for Config {
294257}
295258
296259fn display_optional_url ( url : & Option < String > ) -> & str {
297- non_empty_url ( url) . unwrap_or ( "<disabled>" )
260+ url. as_deref ( )
261+ . filter ( |value| !value. trim ( ) . is_empty ( ) )
262+ . unwrap_or ( "<disabled>" )
298263}
299264
300265#[ cfg( test) ]
@@ -303,7 +268,9 @@ mod tests {
303268
304269 use config:: Config as ConfigLoader ;
305270
306- use super :: { Config , OpenTelemetry } ;
271+ use code0_flow:: flow_telemetry:: OpenTelemetry ;
272+
273+ use super :: { Config , default_opentelemetry} ;
307274
308275 static ENV_LOCK : Mutex < ( ) > = Mutex :: new ( ( ) ) ;
309276
@@ -357,7 +324,7 @@ mod tests {
357324 fn opentelemetry_endpoints_are_enabled_by_presence ( ) {
358325 let config: OpenTelemetry = ConfigLoader :: builder ( )
359326 . add_source (
360- ConfigLoader :: try_from ( & OpenTelemetry :: default ( ) )
327+ ConfigLoader :: try_from ( & default_opentelemetry ( ) )
361328 . expect ( "default telemetry config should serialize" ) ,
362329 )
363330 . set_override ( "enabled" , true )
@@ -382,4 +349,9 @@ mod tests {
382349 assert_eq ! ( config. traces_endpoint( ) , Some ( "http://localhost:4317" ) ) ;
383350 assert ! ( config. has_enabled_exporter( ) ) ;
384351 }
352+
353+ #[ test]
354+ fn opentelemetry_default_service_name_is_aquila ( ) {
355+ assert_eq ! ( Config :: default ( ) . opentelemetry. service_name, "aquila" ) ;
356+ }
385357}
0 commit comments