Skip to content

Commit 5bd4a4b

Browse files
Get when Export is not supported
1 parent 4665994 commit 5bd4a4b

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

dsc_lib/src/dscresources/dscresource.rs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,28 @@ impl Invoke for DscResource {
319319
return Err(DscError::MissingManifest(self.type_name.clone()));
320320
};
321321
let resource_manifest = import_manifest(manifest.clone())?;
322-
command_resource::invoke_export(&resource_manifest, &self.directory, Some(input))
322+
323+
// if the resource does not support export, then we need to handle it here
324+
if let Err(DscError::Operation(_)) = command_resource::invoke_export(&resource_manifest, &self.directory, Some(input)) {
325+
let get_result = self.get(input)?;
326+
match get_result {
327+
GetResult::Group(results) => {
328+
let mut result_array: Vec<Value> = Vec::new();
329+
for result in results {
330+
result_array.push(serde_json::to_value(result)?);
331+
}
332+
Ok(ExportResult::new(result_array))
333+
},
334+
GetResult::Resource(response) => {
335+
let mut result_array = Vec::new();
336+
result_array.push(serde_json::to_value(response)?);
337+
Ok(ExportResult::new(result_array))
338+
}
339+
}
340+
}
341+
else {
342+
command_resource::invoke_export(&resource_manifest, &self.directory, None)
343+
}
323344
}
324345

325346
fn resolve(&self, input: &str) -> Result<ResolveResult, DscError> {

dsc_lib/src/dscresources/invoke_result.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,14 @@ pub struct ExportResult {
141141
pub actual_state: Vec<Value>,
142142
}
143143

144+
impl ExportResult {
145+
pub fn new(actual_state: Vec<Value>) -> Self {
146+
ExportResult {
147+
actual_state
148+
}
149+
}
150+
}
151+
144152
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize, JsonSchema)]
145153
#[serde(deny_unknown_fields)]
146154
pub struct ResolveResult {

0 commit comments

Comments
 (0)