@@ -578,7 +578,6 @@ fn filter_resources(found_resources: &mut BTreeMap<String, Vec<DscResource>>, re
578578 }
579579 } else {
580580 if matches_adapter_requirement ( resource, filter) {
581- debug ! ( "{}" , t!( "discovery.commandDiscovery.foundResourceWithoutVersion" , resource = resource. type_name, version = resource. version) ) ;
582581 found_resources. entry ( filter. resource_type ( ) . to_string ( ) ) . or_default ( ) . push ( resource. clone ( ) ) ;
583582 required_resources. insert ( filter. clone ( ) , true ) ;
584583 break ;
@@ -856,32 +855,22 @@ fn add_resources_to_lookup_table(adapted_resources: &BTreeMap<String, Vec<DscRes
856855
857856 let mut lookup_table_changed = false ;
858857 for ( resource_name, res_vec) in adapted_resources {
859- for resource in res_vec {
860- let mut adapters: Vec < String > = vec ! [ ] ;
861- if let Some ( adapter_name) = & resource. require_adapter {
862- adapters. push ( adapter_name. to_string ( ) ) ;
863- } else {
864- debug ! ( "{}" , t!( "discovery.commandDiscovery.resourceMissingRequireAdapter" , resource = resource_name) ) ;
865- }
866- adapters. sort ( ) ;
867- if let Some ( existing_adapters) = lookup_table. get ( resource_name) {
868- if * existing_adapters != adapters {
869- lookup_table. insert ( resource_name. to_string ( ) , adapters) ;
870- lookup_table_changed = true ;
871- }
872- } else {
873- lookup_table. insert ( resource_name. to_string ( ) , adapters) ;
858+ if let Some ( adapter_name) = & res_vec[ 0 ] . require_adapter {
859+ let new_value = adapter_name. to_string ( ) ;
860+ let oldvalue = lookup_table. insert ( resource_name. to_string ( ) . to_lowercase ( ) , new_value. clone ( ) ) ;
861+ if !lookup_table_changed && ( oldvalue. is_none ( ) || oldvalue. is_some_and ( |val| val != new_value) ) {
874862 lookup_table_changed = true ;
875863 }
864+ } else {
865+ debug ! ( "{}" , t!( "discovery.commandDiscovery.resourceMissingRequireAdapter" , resource = resource_name) ) ;
876866 }
877867 }
878-
879868 if lookup_table_changed {
880869 save_adapted_resources_lookup_table ( & lookup_table) ;
881870 }
882871}
883872
884- fn save_adapted_resources_lookup_table ( lookup_table : & HashMap < String , Vec < String > > )
873+ fn save_adapted_resources_lookup_table ( lookup_table : & HashMap < String , String > )
885874{
886875 if let Ok ( lookup_table_json) = serde_json:: to_string ( & lookup_table) {
887876 let file_path = get_lookup_table_file_path ( ) ;
@@ -904,12 +893,11 @@ fn save_adapted_resources_lookup_table(lookup_table: &HashMap<String, Vec<String
904893 }
905894}
906895
907- // The lookup table is stored as a hashtable with the resource type name as key and a vector of adapters as value
908- fn load_adapted_resources_lookup_table ( ) -> HashMap < String , Vec < String > >
896+ fn load_adapted_resources_lookup_table ( ) -> HashMap < String , String >
909897{
910898 let file_path = get_lookup_table_file_path ( ) ;
911899
912- let lookup_table: HashMap < String , Vec < String > > = match read ( file_path. clone ( ) ) {
900+ let lookup_table: HashMap < String , String > = match read ( file_path. clone ( ) ) {
913901 Ok ( data) => { serde_json:: from_slice ( & data) . unwrap_or_default ( ) } ,
914902 Err ( _) => { HashMap :: new ( ) }
915903 } ;
0 commit comments