Find resources based on the required resource types. # Arguments `required_resource_types` - The required resource types.
(&mut self, required_resource_types: &[DiscoveryFilter], progress_format: ProgressFormat)
| 145 | /// |
| 146 | /// * `required_resource_types` - The required resource types. |
| 147 | pub fn find_resources(&mut self, required_resource_types: &[DiscoveryFilter], progress_format: ProgressFormat) -> Result<(), DscError> { |
| 148 | if !self.refresh_cache && !self.resources.is_empty() { |
| 149 | // If resources are already discovered, no need to re-discover. |
| 150 | return Ok(()); |
| 151 | } |
| 152 | |
| 153 | let mut command_discovery = CommandDiscovery::new(progress_format); |
| 154 | if self.refresh_cache { |
| 155 | self.resources.clear(); |
| 156 | self.extensions.clear(); |
| 157 | command_discovery.set_discovery_mode(&ResourceDiscoveryMode::DuringDeployment); |
| 158 | } |
| 159 | let discovery_types: Vec<Box<dyn ResourceDiscovery>> = vec![ |
| 160 | Box::new(command_discovery), |
| 161 | ]; |
| 162 | for mut discovery_type in discovery_types { |
| 163 | |
| 164 | let discovered_resources = discovery_type.find_resources(required_resource_types)?; |
| 165 | for (resource_name, resources) in discovered_resources { |
| 166 | self.resources.entry(resource_name).or_default().extend(resources); |
| 167 | } |
| 168 | |
| 169 | if let Ok(extensions) = discovery_type.get_extensions() { |
| 170 | self.extensions.extend(extensions); |
| 171 | } |
| 172 | } |
| 173 | Ok(()) |
| 174 | } |
| 175 | } |
| 176 | |
| 177 | /// Check if a resource matches the adapter requirement specified in the filter. |
no test coverage detected