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

Method invoke_get

lib/dsc-lib/src/configure/mod.rs:522–597  ·  view source on GitHub ↗

Invoke the get operation on a resource. # Returns `ConfigurationGetResult` - The result of the get operation. # Errors This function will return an error if the underlying resource fails.

(&mut self)

Source from the content-addressed store, hash-verified

520 ///
521 /// This function will return an error if the underlying resource fails.
522 pub fn invoke_get(&mut self) -> Result<ConfigurationGetResult, DscError> {
523 let mut result = ConfigurationGetResult::new();
524 self.context.operation = Some(Operation::Get);
525 let resources = get_resource_invocation_order(&self.config, &mut self.statement_parser, &mut self.context)?;
526 let mut progress = ProgressBar::new(resources.len() as u64, self.progress_format)?;
527 let discovery = &mut self.discovery.clone();
528 for resource in resources {
529 let evaluated_name = self.evaluate_resource_name(&resource.name)?;
530
531 progress.set_resource(&evaluated_name, &resource.resource_type);
532 progress.write_activity(format!("Get '{evaluated_name}'").as_str());
533 if self.skip_resource(&resource)? {
534 progress.write_increment(1);
535 continue;
536 }
537 let directive_security_context = resource.directives.as_ref().and_then(|d| d.security_context.as_ref());
538 check_security_context(resource.metadata.as_ref(), directive_security_context)?;
539 let adapter = get_require_adapter_from_directive(&resource.directives);
540 find_resource_or_error!(dsc_resource, discovery, resource, adapter);
541 let properties = self.get_properties(&resource, &dsc_resource.kind)?;
542 let filter = add_metadata(dsc_resource, properties, resource.metadata.clone())?;
543 let start_datetime = chrono::Local::now();
544 let mut get_result = match dsc_resource.get(&filter) {
545 Ok(result) => result,
546 Err(e) => {
547 progress.set_failure(get_failure_from_error(&e));
548 progress.write_increment(1);
549 return Err(e);
550 },
551 };
552 let end_datetime = chrono::Local::now();
553 let mut execution_information = ExecutionInformation::new_with_duration(&start_datetime, &end_datetime);
554 let mut metadata = Metadata {
555 microsoft: Some(
556 MicrosoftDscMetadata::new_with_duration(&start_datetime, &end_datetime)
557 ),
558 other: Map::new(),
559 };
560
561 match &mut get_result {
562 GetResult::Resource(resource_result) => {
563 self.context.references.insert(resource_id(&resource.resource_type, &evaluated_name), serde_json::to_value(&resource_result.actual_state)?);
564 get_metadata_from_result(Some(&mut self.context), &mut resource_result.actual_state, &mut metadata, &mut execution_information)?;
565 },
566 GetResult::Group(group) => {
567 let mut results = Vec::<Value>::new();
568 for result in group {
569 results.push(serde_json::to_value(&result.result)?);
570 }
571 self.context.references.insert(resource_id(&resource.resource_type, &evaluated_name), Value::Array(results.clone()));
572 },
573 }
574 let resource_result = config_result::ResourceGetResult {
575 execution_information: Some(execution_information),
576 metadata: Some(metadata),
577 name: evaluated_name,
578 resource_type: resource.resource_type.clone(),
579 result: get_result.clone(),

Callers 3

config_getFunction · 0.80
invoke_dsc_configMethod · 0.80

Calls 15

check_security_contextFunction · 0.85
add_metadataFunction · 0.85
get_failure_from_errorFunction · 0.85
resource_idFunction · 0.85
get_metadata_from_resultFunction · 0.85
ArrayClass · 0.85
set_resourceMethod · 0.80
write_activityMethod · 0.80
as_strMethod · 0.80

Tested by

no test coverage detected