@@ -282,17 +282,6 @@ fn get_metadata_from_result(mut context: Option<&mut Context>, result: &mut Valu
282282 Ok ( ( ) )
283283}
284284
285- fn get_require_adapter_from_metadata ( resource_metadata : & Option < Metadata > ) -> Option < String > {
286- if let Some ( resource_metadata) = resource_metadata {
287- if let Some ( microsoft_metadata) = & resource_metadata. microsoft {
288- if let Some ( require_adapter) = & microsoft_metadata. require_adapter {
289- return Some ( require_adapter. clone ( ) ) ;
290- }
291- }
292- }
293- None
294- }
295-
296285impl Configurator {
297286 /// Create a new `Configurator` instance.
298287 ///
@@ -351,6 +340,20 @@ impl Configurator {
351340 }
352341 }
353342
343+ fn get_require_adapter_from_metadata ( & mut self , resource_metadata : & Option < Metadata > ) -> Result < Option < String > , DscError > {
344+ if let Some ( resource_metadata) = resource_metadata {
345+ if let Some ( microsoft_metadata) = & resource_metadata. microsoft {
346+ if let Some ( require_adapter) = & microsoft_metadata. require_adapter {
347+ if self . discovery . find_adapter ( require_adapter) . is_none ( ) {
348+ return Err ( DscError :: AdapterNotFound ( require_adapter. clone ( ) ) ) ;
349+ }
350+ return Ok ( Some ( require_adapter. clone ( ) ) ) ;
351+ }
352+ }
353+ }
354+ Ok ( None )
355+ }
356+
354357 /// Invoke the get operation on a resource.
355358 ///
356359 /// # Returns
@@ -374,7 +377,7 @@ impl Configurator {
374377 progress. write_increment ( 1 ) ;
375378 continue ;
376379 }
377- let adapter = get_require_adapter_from_metadata ( & resource. metadata ) ;
380+ let adapter = self . get_require_adapter_from_metadata ( & resource. metadata ) ? ;
378381 let Some ( dsc_resource) = discovery. find_resource ( & DiscoveryFilter :: new ( & resource. resource_type , resource. api_version . as_deref ( ) , adapter. as_deref ( ) ) ) else {
379382 return Err ( DscError :: ResourceNotFound ( resource. resource_type , resource. api_version . as_deref ( ) . unwrap_or ( "" ) . to_string ( ) ) ) ;
380383 } ;
@@ -459,7 +462,7 @@ impl Configurator {
459462 progress. write_increment ( 1 ) ;
460463 continue ;
461464 }
462- let adapter = get_require_adapter_from_metadata ( & resource. metadata ) ;
465+ let adapter = self . get_require_adapter_from_metadata ( & resource. metadata ) ? ;
463466 let Some ( dsc_resource) = discovery. find_resource ( & DiscoveryFilter :: new ( & resource. resource_type , resource. api_version . as_deref ( ) , adapter. as_deref ( ) ) ) else {
464467 return Err ( DscError :: ResourceNotFound ( resource. resource_type , resource. api_version . as_deref ( ) . unwrap_or ( "" ) . to_string ( ) ) ) ;
465468 } ;
@@ -628,7 +631,7 @@ impl Configurator {
628631 progress. write_increment ( 1 ) ;
629632 continue ;
630633 }
631- let adapter = get_require_adapter_from_metadata ( & resource. metadata ) ;
634+ let adapter = self . get_require_adapter_from_metadata ( & resource. metadata ) ? ;
632635 let Some ( dsc_resource) = discovery. find_resource ( & DiscoveryFilter :: new ( & resource. resource_type , resource. api_version . as_deref ( ) , adapter. as_deref ( ) ) ) else {
633636 return Err ( DscError :: ResourceNotFound ( resource. resource_type , resource. api_version . as_deref ( ) . unwrap_or ( "" ) . to_string ( ) ) ) ;
634637 } ;
@@ -712,7 +715,7 @@ impl Configurator {
712715 progress. write_increment ( 1 ) ;
713716 continue ;
714717 }
715- let adapter = get_require_adapter_from_metadata ( & resource. metadata ) ;
718+ let adapter = self . get_require_adapter_from_metadata ( & resource. metadata ) ? ;
716719 let Some ( dsc_resource) = discovery. find_resource ( & DiscoveryFilter :: new ( & resource. resource_type , resource. api_version . as_deref ( ) , adapter. as_deref ( ) ) ) else {
717720 return Err ( DscError :: ResourceNotFound ( resource. resource_type . clone ( ) , resource. api_version . as_deref ( ) . unwrap_or ( "" ) . to_string ( ) ) ) ;
718721 } ;
@@ -997,7 +1000,7 @@ impl Configurator {
9971000 let mut discovery_filter: Vec < DiscoveryFilter > = Vec :: new ( ) ;
9981001 let config_copy = config. clone ( ) ;
9991002 for resource in config_copy. resources {
1000- let adapter = get_require_adapter_from_metadata ( & resource. metadata ) ;
1003+ let adapter = self . get_require_adapter_from_metadata ( & resource. metadata ) ? ;
10011004 let filter = DiscoveryFilter :: new ( & resource. resource_type , resource. api_version . as_deref ( ) , adapter. as_deref ( ) ) ;
10021005 if !discovery_filter. contains ( & filter) {
10031006 discovery_filter. push ( filter) ;
0 commit comments