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

Method invoke_dsc_resource

dsc/src/mcp/invoke_dsc_resource.rs:71–116  ·  view source on GitHub ↗
(&self, Parameters(InvokeDscResourceRequest { operation, resource_type, properties_json }): Parameters<InvokeDscResourceRequest>)

Source from the content-addressed store, hash-verified

69 )
70 )]
71 pub async fn invoke_dsc_resource(&self, Parameters(InvokeDscResourceRequest { operation, resource_type, properties_json }): Parameters<InvokeDscResourceRequest>) -> Result<Json<InvokeDscResourceResponse>, McpError> {
72 let result = task::spawn_blocking(move || {
73 let mut dsc = DscManager::new();
74 let Some(resource) = dsc.find_resource(&DiscoveryFilter::new(&resource_type, None, None)).unwrap_or(None) else {
75 return Err(McpError::invalid_request(t!("mcp.invoke_dsc_resource.resourceNotFound", resource = resource_type), None));
76 };
77 match operation {
78 DscOperation::Get => {
79 let result = match resource.get(&properties_json) {
80 Ok(res) => res,
81 Err(e) => return Err(McpError::internal_error(e.to_string(), None)),
82 };
83 Ok(ResourceOperationResult::GetResult(result))
84 },
85 DscOperation::Set => {
86 let result = match resource.set(&properties_json, false, &ExecutionKind::Actual) {
87 Ok(res) => res,
88 Err(e) => return Err(McpError::internal_error(e.to_string(), None)),
89 };
90 Ok(ResourceOperationResult::SetResult(result))
91 },
92 DscOperation::Test => {
93 let result = match resource.test(&properties_json) {
94 Ok(res) => res,
95 Err(e) => return Err(McpError::internal_error(e.to_string(), None)),
96 };
97 Ok(ResourceOperationResult::TestResult(result))
98 },
99 DscOperation::Delete => {
100 match resource.delete(&properties_json, &ExecutionKind::Actual) {
101 Ok(_) => Ok(ResourceOperationResult::DeleteResult { success: true }),
102 Err(e) => Err(McpError::internal_error(e.to_string(), None)),
103 }
104 },
105 DscOperation::Export => {
106 let result = match resource.export(&properties_json) {
107 Ok(res) => res,
108 Err(e) => return Err(McpError::internal_error(e.to_string(), None)),
109 };
110 Ok(ResourceOperationResult::ExportResult(result))
111 }
112 }
113 }).await.map_err(|e| McpError::internal_error(e.to_string(), None))??;
114
115 Ok(Json(InvokeDscResourceResponse { result }))
116 }
117}

Callers

nothing calls this directly

Calls 12

GetResultEnum · 0.85
SetResultEnum · 0.85
TestResultEnum · 0.85
ExportResultClass · 0.85
JsonClass · 0.85
testMethod · 0.80
exportMethod · 0.80
newFunction · 0.50
find_resourceMethod · 0.45
getMethod · 0.45
setMethod · 0.45
deleteMethod · 0.45

Tested by

no test coverage detected