diff options
author | Tim Smith <tsmith84@gmail.com> | 2020-02-28 16:49:40 -0800 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2020-04-05 12:24:06 -0700 |
commit | cb60b16d66363d27fa4b5dd23a3b79379b08d330 (patch) | |
tree | ac519cea72b59934867a66171ecb84feb8f747b1 | |
parent | 2f546b50bd67314251b0f62554fc71cbf6a7a29a (diff) | |
download | chef-powershell_exec.tar.gz |
Convert resources to powershell_execpowershell_exec
powershell_exec is significantly faster than powershell_script. We can use this now that we only support Windows 2012+
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r-- | lib/chef/resource/powershell_package_source.rb | 16 | ||||
-rw-r--r-- | lib/chef/resource/windows_ad_join.rb | 8 | ||||
-rw-r--r-- | lib/chef/resource/windows_dfs_server.rb | 7 | ||||
-rw-r--r-- | lib/chef/resource/windows_share.rb | 10 | ||||
-rw-r--r-- | lib/chef/resource/windows_workgroup.rb | 4 |
5 files changed, 22 insertions, 23 deletions
diff --git a/lib/chef/resource/powershell_package_source.rb b/lib/chef/resource/powershell_package_source.rb index d253de0958..d0915906b9 100644 --- a/lib/chef/resource/powershell_package_source.rb +++ b/lib/chef/resource/powershell_package_source.rb @@ -78,28 +78,28 @@ class Chef if package_source_exists? converge_if_changed :url, :trusted, :publish_location, :script_source_location, :script_publish_location do update_cmd = build_ps_repository_command("Set", new_resource) - res = powershell_out(update_cmd) - raise "Failed to update #{new_resource.source_name}: #{res.stderr}" unless res.stderr.empty? + res = powershell_exec(update_cmd) + raise "Failed to update #{new_resource.source_name}: #{res.errors.first}" if res.error? end else converge_by("register source: #{new_resource.source_name}") do register_cmd = build_ps_repository_command("Register", new_resource) - res = powershell_out(register_cmd) - raise "Failed to register #{new_resource.source_name}: #{res.stderr}" unless res.stderr.empty? + res = powershell_exec(register_cmd) + raise "Failed to register #{new_resource.source_name}: #{res.errors.first}" if res.error? end end else if package_source_exists? converge_if_changed :url, :trusted, :provider_name do update_cmd = build_package_source_command("Set", new_resource) - res = powershell_out(update_cmd) - raise "Failed to update #{new_resource.source_name}: #{res.stderr}" unless res.stderr.empty? + res = powershell_exec(update_cmd) + raise "Failed to update #{new_resource.source_name}: #{res.errors.first}" if res.error? end else converge_by("register source: #{new_resource.source_name}") do register_cmd = build_package_source_command("Register", new_resource) - res = powershell_out(register_cmd) - raise "Failed to register #{new_resource.source_name}: #{res.stderr}" unless res.stderr.empty? + res = powershell_exec(register_cmd) + raise "Failed to register #{new_resource.source_name}: #{res.errors.first}" if res.error? end end end diff --git a/lib/chef/resource/windows_ad_join.rb b/lib/chef/resource/windows_ad_join.rb index 690cc914dc..432366bc28 100644 --- a/lib/chef/resource/windows_ad_join.rb +++ b/lib/chef/resource/windows_ad_join.rb @@ -73,12 +73,12 @@ class Chef cmd << " -Force" converge_by("join Active Directory domain #{new_resource.domain_name}") do - ps_run = powershell_out(cmd) + ps_run = powershell_exec(cmd) if ps_run.error? if sensitive? raise "Failed to join the domain #{new_resource.domain_name}: *suppressed sensitive resource output*" else - raise "Failed to join the domain #{new_resource.domain_name}: #{ps_run.stderr}" + raise "Failed to join the domain #{new_resource.domain_name}: #{ps_run.errors.first}" end end @@ -106,12 +106,12 @@ class Chef cmd << " -Force" converge_by("leave Active Directory domain #{node_domain}") do - ps_run = powershell_out(cmd) + ps_run = powershell_exec(cmd) if ps_run.error? if sensitive? raise "Failed to leave the domain #{node_domain}: *suppressed sensitive resource output*" else - raise "Failed to leave the domain #{node_domain}: #{ps_run.stderr}" + raise "Failed to leave the domain #{node_domain}: #{ps_run.errors.first}" end end diff --git a/lib/chef/resource/windows_dfs_server.rb b/lib/chef/resource/windows_dfs_server.rb index ae613d931b..8d5eedf441 100644 --- a/lib/chef/resource/windows_dfs_server.rb +++ b/lib/chef/resource/windows_dfs_server.rb @@ -2,7 +2,7 @@ # Author:: Jason Field # # Copyright:: 2018, Calastone Ltd. -# Copyright:: 2019-2020, Chef Software Inc. +# Copyright:: 2019-2020, Chef Software, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,14 +47,13 @@ class Chef default: 3600 load_current_value do - ps_results = powershell_out("Get-DfsnServerConfiguration -ComputerName '#{ENV["COMPUTERNAME"]}' | Select LdapTimeoutSec, PreferLogonDC, EnableSiteCostedReferrals, SyncIntervalSec, UseFqdn | ConvertTo-Json") + ps_results = powershell_exec("Get-DfsnServerConfiguration -ComputerName '#{ENV["COMPUTERNAME"]}' | Select LdapTimeoutSec, PreferLogonDC, EnableSiteCostedReferrals, SyncIntervalSec, UseFqdn").result if ps_results.error? raise "The dfs_server resource failed to fetch the current state via the Get-DfsnServerConfiguration PowerShell cmlet. Is the DFS Windows feature installed?" end Chef::Log.debug("The Get-DfsnServerConfiguration results were #{ps_results.stdout}") - results = Chef::JSONCompat.from_json(ps_results.stdout) use_fqdn results["UseFqdn"] || false ldap_timeout_secs results["LdapTimeoutSec"] @@ -67,7 +66,7 @@ class Chef description "Configure DFS settings." converge_if_changed do - powershell_out("Set-DfsnServerConfiguration -ComputerName '#{ENV["COMPUTERNAME"]}' EnableSiteCostedReferrals $#{new_resource.enable_site_costed_referrals} -UseFqdn $#{new_resource.use_fqdn} -LdapTimeoutSec #{new_resource.ldap_timeout_secs} -PreferLogonDC $#{new_resource.prefer_login_dc} -SyncIntervalSec #{new_resource.sync_interval_secs}") + powershell_exec("Set-DfsnServerConfiguration -ComputerName '#{ENV["COMPUTERNAME"]}' EnableSiteCostedReferrals $#{new_resource.enable_site_costed_referrals} -UseFqdn $#{new_resource.use_fqdn} -LdapTimeoutSec #{new_resource.ldap_timeout_secs} -PreferLogonDC $#{new_resource.prefer_login_dc} -SyncIntervalSec #{new_resource.sync_interval_secs}") end end end diff --git a/lib/chef/resource/windows_share.rb b/lib/chef/resource/windows_share.rb index 2c4d79522a..676aab3f29 100644 --- a/lib/chef/resource/windows_share.rb +++ b/lib/chef/resource/windows_share.rb @@ -106,16 +106,16 @@ class Chef share_state_cmd = "Get-SmbShare -Name '#{desired.share_name}' | Select-Object Name,Path, Description, Temporary, CATimeout, ContinuouslyAvailable, ConcurrentUserLimit, EncryptData | ConvertTo-Json -Compress" Chef::Log.debug("Running '#{share_state_cmd}' to determine share state'") - ps_results = powershell_out(share_state_cmd) + ps_results = powershell_exec(share_state_cmd) # detect a failure without raising and then set current_resource to nil if ps_results.error? - Chef::Log.debug("Error fetching share state: #{ps_results.stderr}") + Chef::Log.debug("Error fetching share state: #{ps_results.errors.first}") current_value_does_not_exist! end - Chef::Log.debug("The Get-SmbShare results were #{ps_results.stdout}") - results = Chef::JSONCompat.from_json(ps_results.stdout) + Chef::Log.debug("The Get-SmbShare results were #{ps_results.result}") + results = ps_results.result path results["Path"] description results["Description"] @@ -130,7 +130,7 @@ class Chef perm_state_cmd = %{Get-SmbShareAccess -Name "#{desired.share_name}" | Select-Object AccountName,AccessControlType,AccessRight | ConvertTo-Json -Compress} Chef::Log.debug("Running '#{perm_state_cmd}' to determine share permissions state'") - ps_perm_results = powershell_out(perm_state_cmd) + ps_perm_results = powershell_exec(perm_state_cmd) # we raise here instead of warning like above because we'd only get here if the above Get-SmbShare # command was successful and that continuing would leave us with 1/2 known state diff --git a/lib/chef/resource/windows_workgroup.rb b/lib/chef/resource/windows_workgroup.rb index bcb791af77..630a6e7c22 100644 --- a/lib/chef/resource/windows_workgroup.rb +++ b/lib/chef/resource/windows_workgroup.rb @@ -75,8 +75,8 @@ class Chef unless workgroup_member? converge_by("join workstation workgroup #{new_resource.workgroup_name}") do - ps_run = powershell_out(join_command) - raise "Failed to join the workgroup #{new_resource.workgroup_name}: #{ps_run.stderr}}" if ps_run.error? + ps_run = powershell_exec(join_command) + raise "Failed to join the workgroup #{new_resource.workgroup_name}: #{ps_run.errors.first}}" if ps_run.error? unless new_resource.reboot == :never reboot "Reboot to join workgroup #{new_resource.workgroup_name}" do |