4
4
use jsonschema:: JSONSchema ;
5
5
use serde_json:: Value ;
6
6
use std:: { collections:: HashMap , env, io:: { Read , Write } , process:: { Command , Stdio } } ;
7
- use crate :: { configure:: { config_doc:: ExecutionKind , { config_result:: ResourceGetResult , parameters , Configurator } } , util :: parse_input_to_json } ;
7
+ use crate :: configure:: { config_doc:: ExecutionKind , config_result:: { ResourceGetResult , ResourceTestResult } } ;
8
8
use crate :: dscerror:: DscError ;
9
9
use super :: { dscresource:: get_diff, invoke_result:: { ExportResult , GetResult , ResolveResult , SetResult , TestResult , ValidateResult , ResourceGetResponse , ResourceSetResponse , ResourceTestResponse , get_in_desired_state} , resource_manifest:: { ArgKind , InputKind , Kind , ResourceManifest , ReturnKind , SchemaKind } } ;
10
10
use tracing:: { error, warn, info, debug, trace} ;
11
11
12
12
pub const EXIT_PROCESS_TERMINATED : i32 = 0x102 ;
13
13
14
- fn get_configurator ( resource : & ResourceManifest , cwd : & str , filter : & str ) -> Result < Configurator , DscError > {
15
- let resolve_result = invoke_resolve ( resource, cwd, filter) ?;
16
- let configuration = serde_json:: to_string ( & resolve_result. configuration ) ?;
17
- let configuration_json = parse_input_to_json ( & configuration) ?;
18
- let mut configurator = Configurator :: new ( & configuration_json) ?;
19
- let parameters = if let Some ( parameters) = resolve_result. parameters {
20
- let parameters_input = parameters:: Input {
21
- parameters,
22
- } ;
23
- Some ( serde_json:: to_value ( parameters_input) ?)
24
- } else {
25
- None
26
- } ;
27
- configurator. set_parameters ( & parameters) ?;
28
- Ok ( configurator)
29
- }
30
-
31
14
/// Invoke the get operation on a resource
32
15
///
33
16
/// # Arguments
@@ -40,12 +23,6 @@ fn get_configurator(resource: &ResourceManifest, cwd: &str, filter: &str) -> Res
40
23
/// Error returned if the resource does not successfully get the current state
41
24
pub fn invoke_get ( resource : & ResourceManifest , cwd : & str , filter : & str ) -> Result < GetResult , DscError > {
42
25
debug ! ( "Invoking get for '{}'" , & resource. resource_type) ;
43
- if resource. kind == Some ( Kind :: Import ) {
44
- let mut configurator = get_configurator ( resource, cwd, filter) ?;
45
- let config_result = configurator. invoke_get ( ) ?;
46
- return Ok ( GetResult :: Group ( config_result. results ) ) ;
47
- }
48
-
49
26
let mut command_input = CommandInput { env : None , stdin : None } ;
50
27
let Some ( get) = & resource. get else {
51
28
return Err ( DscError :: NotImplemented ( "get" . to_string ( ) ) ) ;
@@ -95,12 +72,6 @@ pub fn invoke_get(resource: &ResourceManifest, cwd: &str, filter: &str) -> Resul
95
72
#[ allow( clippy:: too_many_lines) ]
96
73
pub fn invoke_set ( resource : & ResourceManifest , cwd : & str , desired : & str , skip_test : bool , execution_type : & ExecutionKind ) -> Result < SetResult , DscError > {
97
74
debug ! ( "Invoking set for '{}'" , & resource. resource_type) ;
98
- if resource. kind == Some ( Kind :: Import ) {
99
- let mut configurator = get_configurator ( resource, cwd, desired) ?;
100
- let config_result = configurator. invoke_set ( skip_test) ?;
101
- return Ok ( SetResult :: Group ( config_result. results ) ) ;
102
- }
103
-
104
75
let operation_type: String ;
105
76
let mut is_synthetic_what_if = false ;
106
77
let set_method = match execution_type {
@@ -275,12 +246,6 @@ pub fn invoke_set(resource: &ResourceManifest, cwd: &str, desired: &str, skip_te
275
246
/// Error is returned if the underlying command returns a non-zero exit code.
276
247
pub fn invoke_test ( resource : & ResourceManifest , cwd : & str , expected : & str ) -> Result < TestResult , DscError > {
277
248
debug ! ( "Invoking test for '{}'" , & resource. resource_type) ;
278
- if resource. kind == Some ( Kind :: Import ) {
279
- let mut configurator = get_configurator ( resource, cwd, expected) ?;
280
- let config_result = configurator. invoke_test ( ) ?;
281
- return Ok ( TestResult :: Group ( config_result. results ) ) ;
282
- }
283
-
284
249
let Some ( test) = & resource. test else {
285
250
info ! ( "Resource '{}' does not implement test, performing synthetic test" , & resource. resource_type) ;
286
251
return invoke_synthetic_test ( resource, cwd, expected) ;
@@ -299,6 +264,12 @@ pub fn invoke_test(resource: &ResourceManifest, cwd: &str, expected: &str) -> Re
299
264
verify_json ( resource, cwd, & stdout) ?;
300
265
}
301
266
267
+ if resource. kind == Some ( Kind :: Import ) {
268
+ debug ! ( "Import resource kind, returning group test response" ) ;
269
+ let group_test_response: Vec < ResourceTestResult > = serde_json:: from_str ( & stdout) ?;
270
+ return Ok ( TestResult :: Group ( group_test_response) ) ;
271
+ }
272
+
302
273
let expected_value: Value = serde_json:: from_str ( expected) ?;
303
274
match test. returns {
304
275
Some ( ReturnKind :: State ) => {
0 commit comments