From eb918c554e37a61ae5115763a3d016c3918b99b6 Mon Sep 17 00:00:00 2001 From: Adam Edwards Date: Sat, 30 Aug 2014 22:11:48 -0700 Subject: Set exit code from start-dscconfiguraiton to enable identification of DSC errors --- lib/chef/util/dsc/local_configuration_manager.rb | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/chef/util/dsc/local_configuration_manager.rb b/lib/chef/util/dsc/local_configuration_manager.rb index 79cfcd2996..959d5ef829 100644 --- a/lib/chef/util/dsc/local_configuration_manager.rb +++ b/lib/chef/util/dsc/local_configuration_manager.rb @@ -57,7 +57,7 @@ class Chef::Util::DSC test_only_parameters = ! apply_configuration ? '-whatif; if (! $?) { exit 1 }' : '' start_operation_timing - command_code = "$ProgressPreference = 'SilentlyContinue';start-dscconfiguration -path #{@configuration_path} -wait -force #{test_only_parameters}" + command_code = lcm_command_code(@configuration_path, test_only_parameters) status = nil begin @@ -79,6 +79,27 @@ class Chef::Util::DSC status end + def lcm_command_code(configuration_path, test_only_parameters) + <<-EOH +try +{ + $ProgressPreference = 'SilentlyContinue';start-dscconfiguration -path #{@configuration_path} -wait -force #{test_only_parameters} -erroraction 'Stop' +} +catch [Microsoft.Management.Infrastructure.CimException] +{ + $exception = $_.Exception + write-error -Exception $exception + $StatusCode = 1 + if ( $exception.HResult -ne 0 ) + { + $StatusCode = $exception.HResult + } + $exception | format-table -property * -force + exit $StatusCode +} +EOH + end + def configuration_update_required?(what_if_output) Chef::Log.debug("DSC: DSC returned the following '-whatif' output from test operation:\n#{what_if_output}") begin -- cgit v1.2.1