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

Method preview

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

Source from the content-addressed store, hash-verified

98 }
99
100 async fn preview(
101 &self,
102 request: Request<ResourceSpecification>,
103 ) -> Result<Response<LocalExtensibilityOperationResponse>, Status> {
104 let spec = request.into_inner();
105 let resource_type = spec.r#type;
106 let version = spec.api_version;
107 let properties = spec.properties;
108
109 tracing::debug!(
110 "{}",
111 t!(
112 "bicep.functionCalled",
113 function = "Preview",
114 resourceType = resource_type,
115 version = format!("{version:?}"),
116 properties = properties
117 )
118 );
119
120 let type_name = FullyQualifiedTypeName::parse(&resource_type)
121 .map_err(|e| Status::invalid_argument(e.to_string()))?;
122 let version_req = version.as_deref()
123 .map(|v| ResourceVersionReq::parse(&format!("={v}")))
124 .transpose()
125 .map_err(|e| Status::invalid_argument(e.to_string()))?;
126
127 let mut dsc = DscManager::new();
128 let Some(resource) = dsc
129 .find_resource(&DiscoveryFilter::new(
130 &type_name,
131 version_req,
132 None,
133 ))
134 .unwrap_or(None)
135 else {
136 return Err(Status::not_found(
137 t!("dscerror.resourceNotFound").to_string(),
138 ));
139 };
140
141 let SetResult::Resource(result) = resource
142 .set(&properties, false, &ExecutionKind::WhatIf)
143 .map_err(|e| Status::aborted(e.to_string()))?
144 else {
145 return Err(Status::unimplemented(
146 t!("dscerror.notSupported").to_string(),
147 ));
148 };
149
150 Ok(Response::new(LocalExtensibilityOperationResponse {
151 resource: Some(proto::Resource {
152 r#type: resource_type,
153 api_version: version,
154 identifiers: properties,
155 properties: result.after_state.to_string(),
156 status: None,
157 }),

Callers

nothing calls this directly

Calls 4

parseFunction · 0.50
newFunction · 0.50
find_resourceMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected