(
&self,
request: Request<ResourceReference>,
)
| 222 | } |
| 223 | |
| 224 | async fn delete( |
| 225 | &self, |
| 226 | request: Request<ResourceReference>, |
| 227 | ) -> Result<Response<LocalExtensibilityOperationResponse>, Status> { |
| 228 | let reference = request.into_inner(); |
| 229 | let resource_type = reference.r#type.clone(); |
| 230 | let version = reference.api_version.clone(); |
| 231 | let identifiers = reference.identifiers.clone(); |
| 232 | |
| 233 | tracing::debug!( |
| 234 | "{}", |
| 235 | t!( |
| 236 | "bicep.functionCalled", |
| 237 | function = "Delete", |
| 238 | resourceType = resource_type, |
| 239 | version = format!("{version:?}"), |
| 240 | properties = identifiers |
| 241 | ) |
| 242 | ); |
| 243 | |
| 244 | let type_name = FullyQualifiedTypeName::parse(&resource_type) |
| 245 | .map_err(|e| Status::invalid_argument(e.to_string()))?; |
| 246 | let version_req = version.as_deref() |
| 247 | .map(|v| ResourceVersionReq::parse(&format!("={v}"))) |
| 248 | .transpose() |
| 249 | .map_err(|e| Status::invalid_argument(e.to_string()))?; |
| 250 | |
| 251 | let mut dsc = DscManager::new(); |
| 252 | let Some(resource) = dsc |
| 253 | .find_resource(&DiscoveryFilter::new( |
| 254 | &type_name, |
| 255 | version_req, |
| 256 | None, |
| 257 | )) |
| 258 | .unwrap_or(None) |
| 259 | else { |
| 260 | return Err(Status::not_found( |
| 261 | t!("dscerror.resourceNotFound").to_string(), |
| 262 | )); |
| 263 | }; |
| 264 | |
| 265 | resource |
| 266 | .delete(&identifiers, &ExecutionKind::Actual) |
| 267 | .map_err(|e| Status::aborted(e.to_string()))?; |
| 268 | |
| 269 | Ok(Response::new(LocalExtensibilityOperationResponse { |
| 270 | resource: Some(proto::Resource { |
| 271 | r#type: resource_type, |
| 272 | api_version: version, |
| 273 | identifiers, |
| 274 | properties: "{}".to_string(), |
| 275 | status: None, |
| 276 | }), |
| 277 | error_data: None, |
| 278 | })) |
| 279 | } |
| 280 | |
| 281 | async fn get_type_files( |
no test coverage detected