@@ -232,7 +232,7 @@ impl Configurator {
232
232
let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
233
233
let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
234
234
for resource in resources {
235
- progress. set_resource ( & resource. name , & resource. resource_type , None ) ;
235
+ progress. set_resource ( & resource. name , & resource. resource_type ) ;
236
236
progress. write_activity ( format ! ( "Get '{}'" , resource. name) . as_str ( ) ) ;
237
237
let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
238
238
let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
@@ -242,7 +242,14 @@ impl Configurator {
242
242
let filter = add_metadata ( & dsc_resource. kind , properties) ?;
243
243
trace ! ( "filter: {filter}" ) ;
244
244
let start_datetime = chrono:: Local :: now ( ) ;
245
- let get_result = dsc_resource. get ( & filter) ?;
245
+ let get_result = match dsc_resource. get ( & filter) {
246
+ Ok ( result) => result,
247
+ Err ( e) => {
248
+ progress. set_failed ( ) ;
249
+ progress. write_increment ( 1 ) ;
250
+ return Err ( e) ;
251
+ } ,
252
+ } ;
246
253
let end_datetime = chrono:: Local :: now ( ) ;
247
254
match & get_result {
248
255
GetResult :: Resource ( resource_result) => {
@@ -272,7 +279,7 @@ impl Configurator {
272
279
result : get_result. clone ( ) ,
273
280
} ;
274
281
result. results . push ( resource_result) ;
275
- progress. set_resource ( & resource . name , & resource . resource_type , Some ( & serde_json:: to_value ( get_result) ?) ) ;
282
+ progress. set_result ( & serde_json:: to_value ( get_result) ?) ;
276
283
progress. write_increment ( 1 ) ;
277
284
}
278
285
@@ -295,12 +302,13 @@ impl Configurator {
295
302
/// # Errors
296
303
///
297
304
/// This function will return an error if the underlying resource fails.
305
+ #[ allow( clippy:: too_many_lines) ]
298
306
pub fn invoke_set ( & mut self , skip_test : bool ) -> Result < ConfigurationSetResult , DscError > {
299
307
let mut result = ConfigurationSetResult :: new ( ) ;
300
308
let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
301
309
let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
302
310
for resource in resources {
303
- progress. set_resource ( & resource. name , & resource. resource_type , None ) ;
311
+ progress. set_resource ( & resource. name , & resource. resource_type ) ;
304
312
progress. write_activity ( format ! ( "Set '{}'" , resource. name) . as_str ( ) ) ;
305
313
let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
306
314
let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
@@ -331,18 +339,43 @@ impl Configurator {
331
339
if exist || dsc_resource. capabilities . contains ( & Capability :: SetHandlesExist ) {
332
340
debug ! ( "{}" , t!( "configure.mod.handlesExist" ) ) ;
333
341
start_datetime = chrono:: Local :: now ( ) ;
334
- set_result = dsc_resource. set ( & desired, skip_test, & self . context . execution_type ) ?;
342
+ set_result = match dsc_resource. set ( & desired, skip_test, & self . context . execution_type ) {
343
+ Ok ( result) => result,
344
+ Err ( e) => {
345
+ progress. set_failed ( ) ;
346
+ progress. write_increment ( 1 ) ;
347
+ return Err ( e) ;
348
+ } ,
349
+ } ;
335
350
end_datetime = chrono:: Local :: now ( ) ;
336
351
} else if dsc_resource. capabilities . contains ( & Capability :: Delete ) {
337
352
if self . context . execution_type == ExecutionKind :: WhatIf {
338
353
// TODO: add delete what-if support
339
354
return Err ( DscError :: NotSupported ( t ! ( "configure.mod.whatIfNotSupportedForDelete" ) . to_string ( ) ) ) ;
340
355
}
341
356
debug ! ( "{}" , t!( "configure.mod.implementsDelete" ) ) ;
342
- let before_result = dsc_resource. get ( & desired) ?;
357
+ let before_result = match dsc_resource. get ( & desired) {
358
+ Ok ( result) => result,
359
+ Err ( e) => {
360
+ progress. set_failed ( ) ;
361
+ progress. write_increment ( 1 ) ;
362
+ return Err ( e) ;
363
+ } ,
364
+ } ;
343
365
start_datetime = chrono:: Local :: now ( ) ;
344
- dsc_resource. delete ( & desired) ?;
345
- let after_result = dsc_resource. get ( & desired) ?;
366
+ if let Err ( err) = dsc_resource. delete ( & desired) {
367
+ progress. set_failed ( ) ;
368
+ progress. write_increment ( 1 ) ;
369
+ return Err ( err) ;
370
+ }
371
+ let after_result = match dsc_resource. get ( & desired) {
372
+ Ok ( result) => result,
373
+ Err ( e) => {
374
+ progress. set_failed ( ) ;
375
+ progress. write_increment ( 1 ) ;
376
+ return Err ( e) ;
377
+ } ,
378
+ } ;
346
379
// convert get result to set result
347
380
set_result = match before_result {
348
381
GetResult :: Resource ( before_response) => {
@@ -394,7 +427,7 @@ impl Configurator {
394
427
result : set_result. clone ( ) ,
395
428
} ;
396
429
result. results . push ( resource_result) ;
397
- progress. set_resource ( & resource . name , & resource . resource_type , Some ( & serde_json:: to_value ( set_result) ?) ) ;
430
+ progress. set_result ( & serde_json:: to_value ( set_result) ?) ;
398
431
progress. write_increment ( 1 ) ;
399
432
}
400
433
@@ -418,7 +451,7 @@ impl Configurator {
418
451
let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
419
452
let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
420
453
for resource in resources {
421
- progress. set_resource ( & resource. name , & resource. resource_type , None ) ;
454
+ progress. set_resource ( & resource. name , & resource. resource_type ) ;
422
455
progress. write_activity ( format ! ( "Test '{}'" , resource. name) . as_str ( ) ) ;
423
456
let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
424
457
let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
@@ -428,7 +461,14 @@ impl Configurator {
428
461
let expected = add_metadata ( & dsc_resource. kind , properties) ?;
429
462
trace ! ( "{}" , t!( "configure.mod.expectedState" , state = expected) ) ;
430
463
let start_datetime = chrono:: Local :: now ( ) ;
431
- let test_result = dsc_resource. test ( & expected) ?;
464
+ let test_result = match dsc_resource. test ( & expected) {
465
+ Ok ( result) => result,
466
+ Err ( e) => {
467
+ progress. set_failed ( ) ;
468
+ progress. write_increment ( 1 ) ;
469
+ return Err ( e) ;
470
+ } ,
471
+ } ;
432
472
let end_datetime = chrono:: Local :: now ( ) ;
433
473
match & test_result {
434
474
TestResult :: Resource ( resource_test_result) => {
@@ -458,7 +498,7 @@ impl Configurator {
458
498
result : test_result. clone ( ) ,
459
499
} ;
460
500
result. results . push ( resource_result) ;
461
- progress. set_resource ( & resource . name , & resource . resource_type , Some ( & serde_json:: to_value ( test_result) ?) ) ;
501
+ progress. set_result ( & serde_json:: to_value ( test_result) ?) ;
462
502
progress. write_increment ( 1 ) ;
463
503
}
464
504
@@ -484,17 +524,24 @@ impl Configurator {
484
524
let mut progress = ProgressBar :: new ( self . config . resources . len ( ) as u64 , self . progress_format ) ?;
485
525
let resources = self . config . resources . clone ( ) ;
486
526
for resource in & resources {
487
- progress. set_resource ( & resource. name , & resource. resource_type , None ) ;
527
+ progress. set_resource ( & resource. name , & resource. resource_type ) ;
488
528
progress. write_activity ( format ! ( "Export '{}'" , resource. name) . as_str ( ) ) ;
489
529
let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
490
530
let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
491
531
return Err ( DscError :: ResourceNotFound ( resource. resource_type . clone ( ) ) ) ;
492
532
} ;
493
533
let input = add_metadata ( & dsc_resource. kind , properties) ?;
494
534
trace ! ( "{}" , t!( "configure.mod.exportInput" , input = input) ) ;
495
- let export_result = add_resource_export_results_to_configuration ( dsc_resource, Some ( dsc_resource) , & mut conf, input. as_str ( ) ) ?;
535
+ let export_result = match add_resource_export_results_to_configuration ( dsc_resource, Some ( dsc_resource) , & mut conf, input. as_str ( ) ) {
536
+ Ok ( result) => result,
537
+ Err ( e) => {
538
+ progress. set_failed ( ) ;
539
+ progress. write_increment ( 1 ) ;
540
+ return Err ( e) ;
541
+ } ,
542
+ } ;
496
543
self . context . references . insert ( format ! ( "{}:{}" , resource. resource_type, resource. name) , serde_json:: to_value ( & export_result. actual_state ) ?) ;
497
- progress. set_resource ( & resource . name , & resource . resource_type , Some ( & serde_json:: to_value ( export_result) ?) ) ;
544
+ progress. set_result ( & serde_json:: to_value ( export_result) ?) ;
498
545
progress. write_increment ( 1 ) ;
499
546
}
500
547
0 commit comments