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

Method get

dsc-bicep-ext/src/main.rs:162–222  ·  view source on GitHub ↗
(
        &self,
        request: Request<ResourceReference>,
    )

Source from the content-addressed store, hash-verified

160 }
161
162 async fn get(
163 &self,
164 request: Request<ResourceReference>,
165 ) -> Result<Response<LocalExtensibilityOperationResponse>, Status> {
166 let reference = request.into_inner();
167 let resource_type = reference.r#type.clone();
168 let version = reference.api_version.clone();
169 let identifiers = reference.identifiers.clone();
170
171 tracing::debug!(
172 "{}",
173 t!(
174 "bicep.functionCalled",
175 function = "Get",
176 resourceType = resource_type,
177 version = format!("{version:?}"),
178 properties = identifiers
179 )
180 );
181
182 let type_name = FullyQualifiedTypeName::parse(&resource_type)
183 .map_err(|e| Status::invalid_argument(e.to_string()))?;
184 let version_req = version.as_deref()
185 .map(|v| ResourceVersionReq::parse(&format!("={v}")))
186 .transpose()
187 .map_err(|e| Status::invalid_argument(e.to_string()))?;
188
189 let mut dsc = DscManager::new();
190 let Some(resource) = dsc
191 .find_resource(&DiscoveryFilter::new(
192 &type_name,
193 version_req,
194 None,
195 ))
196 .unwrap_or(None)
197 else {
198 return Err(Status::not_found(
199 t!("dscerror.resourceNotFound").to_string(),
200 ));
201 };
202
203 let GetResult::Resource(result) = resource
204 .get(&identifiers)
205 .map_err(|e| Status::aborted(e.to_string()))?
206 else {
207 return Err(Status::unimplemented(
208 t!("dscerror.notSupported").to_string(),
209 ));
210 };
211
212 Ok(Response::new(LocalExtensibilityOperationResponse {
213 resource: Some(proto::Resource {
214 r#type: resource_type,
215 api_version: version,
216 identifiers,
217 properties: result.actual_state.to_string(),
218 status: None,
219 }),

Callers 3

getFunction · 0.45
setFunction · 0.45
invoke_dsc_resourceMethod · 0.45

Calls 3

parseFunction · 0.50
newFunction · 0.50
find_resourceMethod · 0.45

Tested by

no test coverage detected