MCPcopy Create free account
hub / github.com/PowerShell/DSC / list_available

Method list_available

lib/dsc-lib/src/discovery/mod.rs:60–103  ·  view source on GitHub ↗

List operation for getting available resources based on the filters. # Arguments `kind` - The kind of discovery (e.g., Resource). `type_name_filter` - The filter for the resource type name. `adapter_name_filter` - The filter for the adapter name. # Returns A vector of `DscResource` instances.

(
        &mut self,
        kind: &DiscoveryKind,
        type_name_filter: &TypeNameFilter,
        adapter_name_filter: Option<&TypeNameFilter>,
        progress_format: ProgressFormat
    )

Source from the content-addressed store, hash-verified

58 ///
59 /// A vector of `DscResource` instances.
60 pub fn list_available(
61 &mut self,
62 kind: &DiscoveryKind,
63 type_name_filter: &TypeNameFilter,
64 adapter_name_filter: Option<&TypeNameFilter>,
65 progress_format: ProgressFormat
66 ) -> Vec<ImportedManifest> {
67 let discovery_types: Vec<Box<dyn ResourceDiscovery>> = vec![
68 Box::new(command_discovery::CommandDiscovery::new(progress_format)),
69 ];
70
71 let mut resources: BTreeMap<String, ImportedManifest> = BTreeMap::new();
72
73 for mut discovery_type in discovery_types {
74
75 let discovered_resources = match discovery_type.list_available(kind, type_name_filter, adapter_name_filter) {
76 Ok(value) => value,
77 Err(err) => {
78 error!("{err}");
79 continue;
80 }
81 };
82
83 for (_resource_name, found_resources) in discovered_resources {
84 for manifest in found_resources {
85 let key = match &manifest {
86 ImportedManifest::Resource(resource) => {
87 format!("{}@{}", resource.type_name.to_lowercase(), resource.version)
88 },
89 ImportedManifest::Extension(extension) => {
90 format!("{}@{}", extension.type_name.to_lowercase(), extension.version)
91 }
92 };
93 resources.insert(key, manifest);
94 }
95 };
96
97 if let Ok(extensions) = discovery_type.get_extensions() {
98 self.extensions.extend(extensions);
99 }
100 }
101
102 resources.into_values().collect::<Vec<ImportedManifest>>()
103 }
104
105 pub fn get_extensions(&mut self, capability: &Capability) -> Vec<DscExtension> {
106 if self.extensions.is_empty() {

Callers 1

get_extensionsMethod · 0.45

Calls 2

newFunction · 0.50
get_extensionsMethod · 0.45

Tested by

no test coverage detected