@@ -248,10 +248,19 @@ impl Configurator {
248
248
for resource in resources {
249
249
progress. set_resource ( & resource. name , & resource. resource_type ) ;
250
250
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 {
251
+ let discovery = & self . discovery . clone ( ) ;
252
+ let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
253
253
return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
254
254
} ;
255
+ let properties = match & dsc_resource. kind {
256
+ Kind :: Group => {
257
+ // if Group resource, we leave it to the resource to handle expressions
258
+ resource. properties . clone ( )
259
+ } ,
260
+ _ => {
261
+ self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?
262
+ } ,
263
+ } ;
255
264
debug ! ( "resource_type {}" , & resource. resource_type) ;
256
265
let filter = add_metadata ( & dsc_resource. kind , properties) ?;
257
266
trace ! ( "filter: {filter}" ) ;
@@ -325,10 +334,19 @@ impl Configurator {
325
334
for resource in resources {
326
335
progress. set_resource ( & resource. name , & resource. resource_type ) ;
327
336
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 {
337
+ let discovery = & self . discovery . clone ( ) ;
338
+ let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
330
339
return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
331
340
} ;
341
+ let properties = match & dsc_resource. kind {
342
+ Kind :: Group => {
343
+ // if Group resource, we leave it to the resource to handle expressions
344
+ resource. properties . clone ( )
345
+ } ,
346
+ _ => {
347
+ self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?
348
+ } ,
349
+ } ;
332
350
debug ! ( "resource_type {}" , & resource. resource_type) ;
333
351
334
352
// see if the properties contains `_exist` and is false
@@ -469,10 +487,19 @@ impl Configurator {
469
487
for resource in resources {
470
488
progress. set_resource ( & resource. name , & resource. resource_type ) ;
471
489
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 {
490
+ let discovery = & self . discovery . clone ( ) ;
491
+ let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
474
492
return Err ( DscError :: ResourceNotFound ( resource. resource_type ) ) ;
475
493
} ;
494
+ let properties = match & dsc_resource. kind {
495
+ Kind :: Group => {
496
+ // if Group resource, we leave it to the resource to handle expressions
497
+ resource. properties . clone ( )
498
+ } ,
499
+ _ => {
500
+ self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?
501
+ } ,
502
+ } ;
476
503
debug ! ( "resource_type {}" , & resource. resource_type) ;
477
504
let expected = add_metadata ( & dsc_resource. kind , properties) ?;
478
505
trace ! ( "{}" , t!( "configure.mod.expectedState" , state = expected) ) ;
@@ -544,10 +571,19 @@ impl Configurator {
544
571
for resource in & resources {
545
572
progress. set_resource ( & resource. name , & resource. resource_type ) ;
546
573
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 {
574
+ let discovery = & self . discovery . clone ( ) ;
575
+ let Some ( dsc_resource) = discovery. find_resource ( & resource. resource_type ) else {
549
576
return Err ( DscError :: ResourceNotFound ( resource. resource_type . clone ( ) ) ) ;
550
577
} ;
578
+ let properties = match & dsc_resource. kind {
579
+ Kind :: Group => {
580
+ // if Group resource, we leave it to the resource to handle expressions
581
+ resource. properties . clone ( )
582
+ } ,
583
+ _ => {
584
+ self . invoke_property_expressions ( resource. properties . as_ref ( ) ) ?
585
+ } ,
586
+ } ;
551
587
let input = add_metadata ( & dsc_resource. kind , properties) ?;
552
588
trace ! ( "{}" , t!( "configure.mod.exportInput" , input = input) ) ;
553
589
let export_result = match add_resource_export_results_to_configuration ( dsc_resource, Some ( dsc_resource) , & mut conf, input. as_str ( ) ) {
0 commit comments