@@ -232,6 +232,18 @@ impl Configurator {
232
232
& self . config
233
233
}
234
234
235
+ fn get_properties ( & mut self , resource : & Resource , resource_kind : & Kind ) -> Result < Option < Map < String , Value > > , DscError > {
236
+ match resource_kind {
237
+ Kind :: Group => {
238
+ // if Group resource, we leave it to the resource to handle expressions
239
+ Ok ( resource. properties . clone ( ) )
240
+ } ,
241
+ _ => {
242
+ Ok ( self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?)
243
+ } ,
244
+ }
245
+ }
246
+
235
247
/// Invoke the get operation on a resource.
236
248
///
237
249
/// # Returns
@@ -245,13 +257,14 @@ impl Configurator {
245
257
let mut result = ConfigurationGetResult :: new ( ) ;
246
258
let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
247
259
let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
260
+ let discovery = & self . discovery . clone ( ) ;
248
261
for resource in resources {
249
262
progress. set_resource ( & resource. name , & resource. resource_type ) ;
250
263
progress. write_activity ( format ! ( "Get '{}'" , resource. name) . as_str ( ) ) ;
251
- let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
252
- let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
264
+ let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
253
265
return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
254
266
} ;
267
+ let properties = self . get_properties ( & resource, & dsc_resource. kind ) ?;
255
268
debug ! ( "resource_type {}" , & resource. resource_type) ;
256
269
let filter = add_metadata ( & dsc_resource. kind , properties) ?;
257
270
trace ! ( "filter: {filter}" ) ;
@@ -322,13 +335,14 @@ impl Configurator {
322
335
let mut result = ConfigurationSetResult :: new ( ) ;
323
336
let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
324
337
let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
338
+ let discovery = & self . discovery . clone ( ) ;
325
339
for resource in resources {
326
340
progress. set_resource ( & resource. name , & resource. resource_type ) ;
327
341
progress. write_activity ( format ! ( "Set '{}'" , resource. name) . as_str ( ) ) ;
328
- let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
329
- let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
342
+ let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
330
343
return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
331
344
} ;
345
+ let properties = self . get_properties ( & resource, & dsc_resource. kind ) ?;
332
346
debug ! ( "resource_type {}" , & resource. resource_type) ;
333
347
334
348
// see if the properties contains `_exist` and is false
@@ -466,13 +480,14 @@ impl Configurator {
466
480
let mut result = ConfigurationTestResult :: new ( ) ;
467
481
let resources = get_resource_invocation_order ( & self . config , & mut self . statement_parser , & self . context ) ?;
468
482
let mut progress = ProgressBar :: new ( resources. len ( ) as u64 , self . progress_format ) ?;
483
+ let discovery = & self . discovery . clone ( ) ;
469
484
for resource in resources {
470
485
progress. set_resource ( & resource. name , & resource. resource_type ) ;
471
486
progress. write_activity ( format ! ( "Test '{}'" , resource. name) . as_str ( ) ) ;
472
- let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
473
- let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
487
+ let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
474
488
return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
475
489
} ;
490
+ let properties = self . get_properties ( & resource, & dsc_resource. kind ) ?;
476
491
debug ! ( "resource_type {}" , & resource. resource_type) ;
477
492
let expected = add_metadata ( & dsc_resource. kind , properties) ?;
478
493
trace ! ( "{}" , t!( "configure.mod.expectedState" , state = expected) ) ;
@@ -541,13 +556,14 @@ impl Configurator {
541
556
542
557
let mut progress = ProgressBar :: new ( self . config . resources . len ( ) as u64 , self . progress_format ) ?;
543
558
let resources = self . config . resources . clone ( ) ;
559
+ let discovery = & self . discovery . clone ( ) ;
544
560
for resource in & resources {
545
561
progress. set_resource ( & resource. name , & resource. resource_type ) ;
546
562
progress. write_activity ( format ! ( "Export '{}'" , resource. name) . as_str ( ) ) ;
547
- let properties = self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?;
548
- let Some ( dsc_resource) = self . discovery . find_resource ( & resource. resource_type ) else {
563
+ let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
549
564
return Err ( DscError :: ResourceNotFound ( resource. resource_type . clone ( ) ) ) ;
550
565
} ;
566
+ let properties = self . get_properties ( resource, & dsc_resource. kind ) ?;
551
567
let input = add_metadata ( & dsc_resource. kind , properties) ?;
552
568
trace ! ( "{}" , t!( "configure.mod.exportInput" , input = input) ) ;
553
569
let export_result = match add_resource_export_results_to_configuration ( dsc_resource, Some ( dsc_resource) , & mut conf, input. as_str ( ) ) {
0 commit comments