Skip to content

Commit 0157276

Browse files
authored
Merge pull request #422 from SteveL-MSFT/refactor-discover
Refactor resource discovery code
2 parents 9ee037a + 2374d6b commit 0157276

File tree

11 files changed

+338
-300
lines changed

11 files changed

+338
-300
lines changed

build.ps1

+6-1
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ if (!$SkipBuild) {
161161
# make sure dependencies are built first so clippy runs correctly
162162
$windows_projects = @("pal", "registry", "reboot_pending", "wmi-adapter")
163163

164+
$macOS_projects = @("resources/brew")
165+
164166
# projects are in dependency order
165167
$projects = @(
166168
"tree-sitter-dscexpression",
@@ -170,7 +172,6 @@ if (!$SkipBuild) {
170172
"osinfo",
171173
"powershell-adapter",
172174
"process",
173-
"resources/brew",
174175
"runcommandonset",
175176
"tools/dsctest",
176177
"tools/test_group_resource",
@@ -187,6 +188,10 @@ if (!$SkipBuild) {
187188
Get-ChildItem -Path $target -Recurse -Hidden | ForEach-Object { $_.Attributes = 'Normal' }
188189
}
189190

191+
if ($IsMacOS) {
192+
$projects += $macOS_projects
193+
}
194+
190195
$failed = $false
191196
foreach ($project in $projects) {
192197
## Build format_json

dsc/src/resource_command.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub fn get(dsc: &DscManager, resource_type: &str, mut input: String, format: &Op
2727
if let Some(pr) = get_resource(dsc, requires) {
2828
resource = pr;
2929
} else {
30-
error!("Adapter {} not found", requires);
30+
error!("Adapter '{}' not found", requires);
3131
return;
3232
};
3333
}
@@ -112,7 +112,7 @@ pub fn set(dsc: &DscManager, resource_type: &str, mut input: String, format: &Op
112112
if let Some(pr) = get_resource(dsc, requires) {
113113
resource = pr;
114114
} else {
115-
error!("Adapter {} not found", requires);
115+
error!("Adapter '{}' not found", requires);
116116
return;
117117
};
118118
}
@@ -149,7 +149,7 @@ pub fn test(dsc: &DscManager, resource_type: &str, mut input: String, format: &O
149149
if let Some(pr) = get_resource(dsc, requires) {
150150
resource = pr;
151151
} else {
152-
error!("Adapter {} not found", requires);
152+
error!("Adapter '{}' not found", requires);
153153
return;
154154
};
155155
}
@@ -186,7 +186,7 @@ pub fn delete(dsc: &DscManager, resource_type: &str, mut input: String) {
186186
if let Some(pr) = get_resource(dsc, requires) {
187187
resource = pr;
188188
} else {
189-
error!("Adapter {} not found", requires);
189+
error!("Adapter '{}' not found", requires);
190190
return;
191191
};
192192
}

dsc/src/subcommand.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ pub fn validate_config(config: &str) -> Result<(), DscError> {
337337

338338
resource_types.push(type_name.to_lowercase().to_string());
339339
}
340-
dsc.discover_resources(&resource_types);
340+
dsc.find_resources(&resource_types);
341341

342342
for resource_block in resources {
343343
let Some(type_name) = resource_block["type"].as_str() else {
@@ -402,33 +402,33 @@ pub fn resource(subcommand: &ResourceSubCommand, stdin: &Option<String>) {
402402
list_resources(&mut dsc, resource_name, adapter_name, description, tags, format);
403403
},
404404
ResourceSubCommand::Schema { resource , format } => {
405-
dsc.discover_resources(&[resource.to_lowercase().to_string()]);
405+
dsc.find_resources(&[resource.to_lowercase().to_string()]);
406406
resource_command::schema(&dsc, resource, format);
407407
},
408408
ResourceSubCommand::Export { resource, format } => {
409-
dsc.discover_resources(&[resource.to_lowercase().to_string()]);
409+
dsc.find_resources(&[resource.to_lowercase().to_string()]);
410410
resource_command::export(&mut dsc, resource, format);
411411
},
412412
ResourceSubCommand::Get { resource, input, path, all, format } => {
413-
dsc.discover_resources(&[resource.to_lowercase().to_string()]);
413+
dsc.find_resources(&[resource.to_lowercase().to_string()]);
414414
if *all { resource_command::get_all(&dsc, resource, format); }
415415
else {
416416
let parsed_input = get_input(input, stdin, path);
417417
resource_command::get(&dsc, resource, parsed_input, format);
418418
}
419419
},
420420
ResourceSubCommand::Set { resource, input, path, format } => {
421-
dsc.discover_resources(&[resource.to_lowercase().to_string()]);
421+
dsc.find_resources(&[resource.to_lowercase().to_string()]);
422422
let parsed_input = get_input(input, stdin, path);
423423
resource_command::set(&dsc, resource, parsed_input, format);
424424
},
425425
ResourceSubCommand::Test { resource, input, path, format } => {
426-
dsc.discover_resources(&[resource.to_lowercase().to_string()]);
426+
dsc.find_resources(&[resource.to_lowercase().to_string()]);
427427
let parsed_input = get_input(input, stdin, path);
428428
resource_command::test(&dsc, resource, parsed_input, format);
429429
},
430430
ResourceSubCommand::Delete { resource, input, path } => {
431-
dsc.discover_resources(&[resource.to_lowercase().to_string()]);
431+
dsc.find_resources(&[resource.to_lowercase().to_string()]);
432432
let parsed_input = get_input(input, stdin, path);
433433
resource_command::delete(&dsc, resource, parsed_input);
434434
},

dsc/tests/dsc_tracing.tests.ps1

+7-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Describe 'tracing tests' {
1919

2020
It 'trace level error does not emit other levels' {
2121
$logPath = "$TestDrive/dsc_trace.log"
22-
$null = '{}' | dsc --trace-level error resource get -r 'DoesNotExist' 2> $logPath
22+
$null = '{}' | dsc --trace-level error resource list 'DoesNotExist' 2> $logPath
2323
$log = Get-Content $logPath -Raw
2424
$log | Should -Not -BeLikeExactly "* WARNING *"
2525
$log | Should -Not -BeLikeExactly "* INFO *"
@@ -29,18 +29,18 @@ Describe 'tracing tests' {
2929

3030
It 'trace format plaintext does not emit ANSI' {
3131
$logPath = "$TestDrive/dsc_trace.log"
32-
$null = '{}' | dsc --trace-format plaintext resource get -r 'DoesNotExist' 2> $logPath
32+
$null = '{}' | dsc --trace-format plaintext resource list 'DoesNotExist' 2> $logPath
3333
$log = Get-Content $logPath -Raw
3434
$log | Should -Not -BeLikeExactly "*``[0m*"
3535
}
3636

3737
It 'trace format json emits json' {
3838
$logPath = "$TestDrive/dsc_trace.log"
39-
$null = '{}' | dsc --trace-format json resource get -r 'DoesNotExist' 2> $logPath
39+
$null = '{}' | dsc --trace-format json resource list 'DoesNotExist' 2> $logPath
4040
foreach ($line in (Get-Content $logPath)) {
4141
$trace = $line | ConvertFrom-Json -Depth 10
4242
$trace.timestamp | Should -Not -BeNullOrEmpty
43-
$trace.level | Should -BeIn 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'TRACE'
43+
$trace.level | Should -BeIn 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE'
4444
$trace.fields.message | Should -Not -BeNullOrEmpty
4545
}
4646
}
@@ -55,12 +55,12 @@ Describe 'tracing tests' {
5555
param($level, $sourceExpected)
5656

5757
$logPath = "$TestDrive/dsc_trace.log"
58-
$null = '{}' | dsc -l $level resource get -r 'DoesNotExist' 2> $logPath
58+
$null = '{}' | dsc -l $level resource list 'DoesNotExist' 2> $logPath
5959
$log = Get-Content $logPath -Raw
6060
if ($sourceExpected) {
61-
$log | Should -BeLike "*dsc*: *"
61+
$log | Should -BeLike "*dsc_lib*: *"
6262
} else {
63-
$log | Should -Not -BeLike "*dsc*: *"
63+
$log | Should -Not -BeLike "*dsc_lib*: *"
6464
}
6565
}
6666
}

dsc_lib/src/configure/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -335,18 +335,18 @@ impl Configurator {
335335
resource_type: resource.resource_type.clone(),
336336
result: set_result,
337337
};
338-
result.results.push(resource_result);
338+
result.results.push(resource_result);
339339
} else if dsc_resource.capabilities.contains(&Capability::Delete) {
340340
debug!("Resource implements delete and _exist is false");
341341
let before_result = dsc_resource.get(&desired)?;
342342
let start_datetime = chrono::Local::now();
343343
dsc_resource.delete(&desired)?;
344344
let end_datetime = chrono::Local::now();
345345
let after_result = dsc_resource.get(&desired)?;
346-
// convert get result to set result
346+
// convert get result to set result
347347
let set_result = match before_result {
348348
GetResult::Resource(before_response) => {
349-
let GetResult::Resource(after_result) = after_result else {
349+
let GetResult::Resource(after_result) = after_result else {
350350
return Err(DscError::NotSupported("Group resources not supported for delete".to_string()))
351351
};
352352
let before_value = serde_json::to_value(&before_response.actual_state)?;
@@ -614,7 +614,7 @@ impl Configurator {
614614
let mut required_resources = config.resources.iter().map(|p| p.resource_type.to_lowercase()).collect::<Vec<String>>();
615615
required_resources.sort_unstable();
616616
required_resources.dedup();
617-
self.discovery.discover_resources(&required_resources);
617+
self.discovery.find_resources(&required_resources);
618618
Ok(config)
619619
}
620620

0 commit comments

Comments
 (0)