@@ -232,7 +232,7 @@ impl Configurator {
232232 let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
233233 let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
234234 for resource in resources {
235- progress. set_resource ( & resource. name , & resource. resource_type , None ) ;
235+ progress. set_resource ( & resource. name , & resource. resource_type ) ;
236236 progress. write_activity ( format ! ( "Get '{}'" , resource. name) . as_str ( ) ) ;
237237 let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
238238 let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
@@ -242,7 +242,14 @@ impl Configurator {
242242 let filter = add_metadata ( & dsc_resource. kind , properties) ?;
243243 trace ! ( "filter: {filter}" ) ;
244244 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+ } ;
246253 let end_datetime = chrono:: Local :: now ( ) ;
247254 match & get_result {
248255 GetResult :: Resource ( resource_result) => {
@@ -272,7 +279,7 @@ impl Configurator {
272279 result : get_result. clone ( ) ,
273280 } ;
274281 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) ?) ;
276283 progress. write_increment ( 1 ) ;
277284 }
278285
@@ -295,12 +302,13 @@ impl Configurator {
295302 /// # Errors
296303 ///
297304 /// This function will return an error if the underlying resource fails.
305+ #[ allow( clippy:: too_many_lines) ]
298306 pub fn invoke_set ( & mut self , skip_test : bool ) -> Result < ConfigurationSetResult , DscError > {
299307 let mut result = ConfigurationSetResult :: new ( ) ;
300308 let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
301309 let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
302310 for resource in resources {
303- progress. set_resource ( & resource. name , & resource. resource_type , None ) ;
311+ progress. set_resource ( & resource. name , & resource. resource_type ) ;
304312 progress. write_activity ( format ! ( "Set '{}'" , resource. name) . as_str ( ) ) ;
305313 let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
306314 let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
@@ -331,18 +339,43 @@ impl Configurator {
331339 if exist || dsc_resource. capabilities . contains ( & Capability :: SetHandlesExist ) {
332340 debug ! ( "{}" , t!( "configure.mod.handlesExist" ) ) ;
333341 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+ } ;
335350 end_datetime = chrono:: Local :: now ( ) ;
336351 } else if dsc_resource. capabilities . contains ( & Capability :: Delete ) {
337352 if self . context . execution_type == ExecutionKind :: WhatIf {
338353 // TODO: add delete what-if support
339354 return Err ( DscError :: NotSupported ( t ! ( "configure.mod.whatIfNotSupportedForDelete" ) . to_string ( ) ) ) ;
340355 }
341356 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+ } ;
343365 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+ } ;
346379 // convert get result to set result
347380 set_result = match before_result {
348381 GetResult :: Resource ( before_response) => {
@@ -394,7 +427,7 @@ impl Configurator {
394427 result : set_result. clone ( ) ,
395428 } ;
396429 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) ?) ;
398431 progress. write_increment ( 1 ) ;
399432 }
400433
@@ -418,7 +451,7 @@ impl Configurator {
418451 let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
419452 let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
420453 for resource in resources {
421- progress. set_resource ( & resource. name , & resource. resource_type , None ) ;
454+ progress. set_resource ( & resource. name , & resource. resource_type ) ;
422455 progress. write_activity ( format ! ( "Test '{}'" , resource. name) . as_str ( ) ) ;
423456 let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
424457 let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
@@ -428,7 +461,14 @@ impl Configurator {
428461 let expected = add_metadata ( & dsc_resource. kind , properties) ?;
429462 trace ! ( "{}" , t!( "configure.mod.expectedState" , state = expected) ) ;
430463 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+ } ;
432472 let end_datetime = chrono:: Local :: now ( ) ;
433473 match & test_result {
434474 TestResult :: Resource ( resource_test_result) => {
@@ -458,7 +498,7 @@ impl Configurator {
458498 result : test_result. clone ( ) ,
459499 } ;
460500 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) ?) ;
462502 progress. write_increment ( 1 ) ;
463503 }
464504
@@ -484,17 +524,24 @@ impl Configurator {
484524 let mut progress = ProgressBar :: new ( self . config . resources . len ( ) as u64 , self . progress_format ) ?;
485525 let resources = self . config . resources . clone ( ) ;
486526 for resource in & resources {
487- progress. set_resource ( & resource. name , & resource. resource_type , None ) ;
527+ progress. set_resource ( & resource. name , & resource. resource_type ) ;
488528 progress. write_activity ( format ! ( "Export '{}'" , resource. name) . as_str ( ) ) ;
489529 let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
490530 let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
491531 return Err ( DscError :: ResourceNotFound ( resource. resource_type . clone ( ) ) ) ;
492532 } ;
493533 let input = add_metadata ( & dsc_resource. kind , properties) ?;
494534 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+ } ;
496543 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) ?) ;
498545 progress. write_increment ( 1 ) ;
499546 }
500547
0 commit comments