@@ -9,9 +9,9 @@ use std::{
9
9
} ;
10
10
11
11
use clevercloud_sdk:: { oauth10a:: Credentials , PUBLIC_ENDPOINT } ;
12
- use config:: { Config , ConfigError , Environment , File } ;
12
+ use config:: { Config , ConfigError , File } ;
13
13
use serde:: { Deserialize , Serialize } ;
14
- use tracing:: { info , warn} ;
14
+ use tracing:: warn;
15
15
16
16
// -----------------------------------------------------------------------------
17
17
// Constants
@@ -122,7 +122,7 @@ pub struct Configuration {
122
122
pub sentry : Sentry ,
123
123
#[ cfg( feature = "trace" ) ]
124
124
#[ serde( rename = "jaeger" ) ]
125
- pub jaeger : Option < Jaeger > ,
125
+ pub jaeger : Jaeger ,
126
126
}
127
127
128
128
impl TryFrom < PathBuf > for Configuration {
@@ -131,21 +131,75 @@ impl TryFrom<PathBuf> for Configuration {
131
131
#[ cfg_attr( feature = "trace" , tracing:: instrument) ]
132
132
fn try_from ( path : PathBuf ) -> Result < Self , Self :: Error > {
133
133
Config :: builder ( )
134
- . set_default ( "api.endpoint" , PUBLIC_ENDPOINT )
134
+ // -----------------------------------------------------------------
135
+ // Api
136
+ . set_default (
137
+ "api.endpoint" ,
138
+ env:: var ( "CLEVER_OPERATOR_API_ENDPOINT" )
139
+ . unwrap_or_else ( |_err| PUBLIC_ENDPOINT . to_string ( ) ) ,
140
+ )
135
141
. map_err ( |err| Error :: Default ( "api.endpoint" . into ( ) , err) ) ?
136
- . set_default ( "api.token" , "" )
142
+ . set_default (
143
+ "api.token" ,
144
+ env:: var ( "CLEVER_OPERATOR_API_TOKEN" ) . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
145
+ )
137
146
. map_err ( |err| Error :: Default ( "api.token" . into ( ) , err) ) ?
138
- . set_default ( "api.secret" , "" )
147
+ . set_default (
148
+ "api.secret" ,
149
+ env:: var ( "CLEVER_OPERATOR_API_SECRET" ) . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
150
+ )
139
151
. map_err ( |err| Error :: Default ( "api.secret" . into ( ) , err) ) ?
140
- . set_default ( "api.consumerKey" , "" )
152
+ . set_default (
153
+ "api.consumerKey" ,
154
+ env:: var ( "CLEVER_OPERATOR_API_CONSUMER_KEY" ) . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
155
+ )
141
156
. map_err ( |err| Error :: Default ( "api.consumerKey" . into ( ) , err) ) ?
142
- . set_default ( "api.consumerSecret" , "" )
157
+ . set_default (
158
+ "api.consumerSecret" ,
159
+ env:: var ( "CLEVER_OPERATOR_API_CONSUMER_SECRET" )
160
+ . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
161
+ )
143
162
. map_err ( |err| Error :: Default ( "api.consumerSecret" . into ( ) , err) ) ?
144
- . set_default ( "operator.listen" , OPERATOR_LISTEN )
163
+ // -----------------------------------------------------------------
164
+ // Operator
165
+ . set_default (
166
+ "operator.listen" ,
167
+ env:: var ( "CLEVER_OPERATOR_OPERATOR_LISTEN" )
168
+ . unwrap_or_else ( |_err| OPERATOR_LISTEN . to_string ( ) ) ,
169
+ )
145
170
. map_err ( |err| Error :: Default ( "operator.listen" . into ( ) , err) ) ?
146
- . add_source ( Environment :: with_prefix (
147
- & env ! ( "CARGO_PKG_NAME" ) . replace ( '-' , "_" ) ,
148
- ) )
171
+ // -----------------------------------------------------------------
172
+ // Sentry
173
+ . set_default (
174
+ "sentry.dsn" ,
175
+ env:: var ( "CLEVER_OPERATOR_SENTRY_DSN" )
176
+ . map ( Some )
177
+ . unwrap_or_else ( |_err| None ) ,
178
+ )
179
+ . map_err ( |err| Error :: Default ( "sentry.dsn" . into ( ) , err) ) ?
180
+ // -----------------------------------------------------------------
181
+ // Jaeger
182
+ . set_default (
183
+ "jaeger.endpoint" ,
184
+ env:: var ( "CLEVER_OPERATOR_JAEGER_ENDPOINT" ) . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
185
+ )
186
+ . map_err ( |err| Error :: Default ( "jaeger.endpoint" . into ( ) , err) ) ?
187
+ . set_default (
188
+ "jaeger.user" ,
189
+ env:: var ( "CLEVER_OPERATOR_JAEGER_USER" )
190
+ . map ( Some )
191
+ . unwrap_or_else ( |_err| None ) ,
192
+ )
193
+ . map_err ( |err| Error :: Default ( "jaeger.user" . into ( ) , err) ) ?
194
+ . set_default (
195
+ "jaeger.password" ,
196
+ env:: var ( "CLEVER_OPERATOR_JAEGER_PASSWORD" )
197
+ . map ( Some )
198
+ . unwrap_or_else ( |_err| None ) ,
199
+ )
200
+ . map_err ( |err| Error :: Default ( "jaeger.password" . into ( ) , err) ) ?
201
+ // -----------------------------------------------------------------
202
+ // Files
149
203
. add_source ( File :: from ( path) . required ( true ) )
150
204
. build ( )
151
205
. map_err ( Error :: Build ) ?
@@ -158,21 +212,75 @@ impl Configuration {
158
212
#[ cfg_attr( feature = "trace" , tracing:: instrument) ]
159
213
pub fn try_default ( ) -> Result < Self , Error > {
160
214
Config :: builder ( )
161
- . set_default ( "api.endpoint" , PUBLIC_ENDPOINT )
215
+ // -----------------------------------------------------------------
216
+ // Api
217
+ . set_default (
218
+ "api.endpoint" ,
219
+ env:: var ( "CLEVER_OPERATOR_API_ENDPOINT" )
220
+ . unwrap_or_else ( |_err| PUBLIC_ENDPOINT . to_string ( ) ) ,
221
+ )
162
222
. map_err ( |err| Error :: Default ( "api.endpoint" . into ( ) , err) ) ?
163
- . set_default ( "api.token" , "" )
223
+ . set_default (
224
+ "api.token" ,
225
+ env:: var ( "CLEVER_OPERATOR_API_TOKEN" ) . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
226
+ )
164
227
. map_err ( |err| Error :: Default ( "api.token" . into ( ) , err) ) ?
165
- . set_default ( "api.secret" , "" )
228
+ . set_default (
229
+ "api.secret" ,
230
+ env:: var ( "CLEVER_OPERATOR_API_SECRET" ) . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
231
+ )
166
232
. map_err ( |err| Error :: Default ( "api.secret" . into ( ) , err) ) ?
167
- . set_default ( "api.consumerKey" , "" )
233
+ . set_default (
234
+ "api.consumerKey" ,
235
+ env:: var ( "CLEVER_OPERATOR_API_CONSUMER_KEY" ) . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
236
+ )
168
237
. map_err ( |err| Error :: Default ( "api.consumerKey" . into ( ) , err) ) ?
169
- . set_default ( "api.consumerSecret" , "" )
238
+ . set_default (
239
+ "api.consumerSecret" ,
240
+ env:: var ( "CLEVER_OPERATOR_API_CONSUMER_SECRET" )
241
+ . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
242
+ )
170
243
. map_err ( |err| Error :: Default ( "api.consumerSecret" . into ( ) , err) ) ?
171
- . set_default ( "operator.listen" , OPERATOR_LISTEN )
244
+ // -----------------------------------------------------------------
245
+ // Operator
246
+ . set_default (
247
+ "operator.listen" ,
248
+ env:: var ( "CLEVER_OPERATOR_OPERATOR_LISTEN" )
249
+ . unwrap_or_else ( |_err| OPERATOR_LISTEN . to_string ( ) ) ,
250
+ )
172
251
. map_err ( |err| Error :: Default ( "operator.listen" . into ( ) , err) ) ?
173
- . add_source ( Environment :: with_prefix (
174
- & env ! ( "CARGO_PKG_NAME" ) . replace ( '-' , "_" ) ,
175
- ) )
252
+ // -----------------------------------------------------------------
253
+ // Sentry
254
+ . set_default (
255
+ "sentry.dsn" ,
256
+ env:: var ( "CLEVER_OPERATOR_SENTRY_DSN" )
257
+ . map ( Some )
258
+ . unwrap_or_else ( |_err| None ) ,
259
+ )
260
+ . map_err ( |err| Error :: Default ( "sentry.dsn" . into ( ) , err) ) ?
261
+ // -----------------------------------------------------------------
262
+ // Jaeger
263
+ . set_default (
264
+ "jaeger.endpoint" ,
265
+ env:: var ( "CLEVER_OPERATOR_JAEGER_ENDPOINT" ) . unwrap_or_else ( |_err| "" . to_string ( ) ) ,
266
+ )
267
+ . map_err ( |err| Error :: Default ( "jaeger.endpoint" . into ( ) , err) ) ?
268
+ . set_default (
269
+ "jaeger.user" ,
270
+ env:: var ( "CLEVER_OPERATOR_JAEGER_USER" )
271
+ . map ( Some )
272
+ . unwrap_or_else ( |_err| None ) ,
273
+ )
274
+ . map_err ( |err| Error :: Default ( "jaeger.user" . into ( ) , err) ) ?
275
+ . set_default (
276
+ "jaeger.password" ,
277
+ env:: var ( "CLEVER_OPERATOR_JAEGER_PASSWORD" )
278
+ . map ( Some )
279
+ . unwrap_or_else ( |_err| None ) ,
280
+ )
281
+ . map_err ( |err| Error :: Default ( "jaeger.password" . into ( ) , err) ) ?
282
+ // -----------------------------------------------------------------
283
+ // Files
176
284
. add_source (
177
285
File :: from ( PathBuf :: from ( format ! (
178
286
"/usr/share/{}/config" ,
@@ -214,16 +322,16 @@ impl Configuration {
214
322
#[ cfg_attr( feature = "trace" , tracing:: instrument) ]
215
323
pub fn help ( & self ) {
216
324
#[ cfg( feature = "logging" ) ]
217
- info ! ( "Build with 'logging' feature flag" ) ;
325
+ tracing :: info!( "Build with 'logging' feature flag" ) ;
218
326
219
327
#[ cfg( feature = "metrics" ) ]
220
- info ! ( "Build with 'metrics' feature flag" ) ;
328
+ tracing :: info!( "Build with 'metrics' feature flag" ) ;
221
329
222
330
#[ cfg( feature = "trace" ) ]
223
- info ! ( "Build with 'trace' feature flag" ) ;
331
+ tracing :: info!( "Build with 'trace' feature flag" ) ;
224
332
225
333
#[ cfg( feature = "tracker" ) ]
226
- info ! ( "Build with 'tracker' feature flag" ) ;
334
+ tracing :: info!( "Build with 'tracker' feature flag" ) ;
227
335
228
336
if self . api . consumer_key . is_empty ( ) {
229
337
warn ! ( "Configuration key 'api.consumerKey' has an empty value" ) ;
0 commit comments