diff options
Diffstat (limited to 'lib/chef/provider/dsc_resource.rb')
-rw-r--r-- | lib/chef/provider/dsc_resource.rb | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/lib/chef/provider/dsc_resource.rb b/lib/chef/provider/dsc_resource.rb index 7906aea3f8..c06e062e3c 100644 --- a/lib/chef/provider/dsc_resource.rb +++ b/lib/chef/provider/dsc_resource.rb @@ -15,26 +15,21 @@ # See the License for the specific language governing permissions and # limitations under the License. # - require 'chef/util/powershell/cmdlet' require 'chef/util/dsc/local_configuration_manager' require 'chef/mixin/powershell_type_coercions' require 'chef/util/dsc/resource_store' - class Chef class Provider class DscResource < Chef::Provider include Chef::Mixin::PowershellTypeCoercions - provides :dsc_resource, os: "windows" - def initialize(new_resource, run_context) super @new_resource = new_resource @module_name = new_resource.module_name @reboot_resource = nil end - def action_run if ! test_resource converge_by(generate_description) do @@ -43,14 +38,11 @@ class Chef end end end - def load_current_resource end - def whyrun_supported? true end - def define_resource_requirements requirements.assert(:run) do |a| a.assertion { supports_dsc_invoke_resource? } @@ -68,40 +60,31 @@ class Chef a.block_action! end end - protected - def local_configuration_manager @local_configuration_manager ||= Chef::Util::DSC::LocalConfigurationManager.new( node, nil ) end - def resource_store Chef::Util::DSC::ResourceStore.instance end - def supports_dsc_invoke_resource? run_context && Chef::Platform.supports_dsc_invoke_resource?(node) end - def dsc_refresh_mode_disabled? Chef::Platform.dsc_refresh_mode_disabled?(node) end - def generate_description @converge_description end - def dsc_resource_name new_resource.resource.to_s end - def module_name @module_name ||= begin found = resource_store.find(dsc_resource_name) - r = case found.length when 0 raise Chef::Exceptions::ResourceNotFound, @@ -118,7 +101,6 @@ class Chef end end end - def test_resource result = invoke_resource(:test) # We really want this information from the verbose stream, @@ -127,24 +109,20 @@ class Chef @converge_description = result.stdout return_dsc_resource_result(result, "InDesiredState") end - def set_resource result = invoke_resource(:set) - if return_dsc_resource_result(result, 'RebootRequired') + if return_dsc_resource_result(result, 'RebootRequired') create_reboot_resource end result.return_value end - def invoke_resource(method, output_format=:object) properties = translate_type(@new_resource.properties) switches = "-Method #{method.to_s} -Name #{@new_resource.resource}"\ " -Property #{properties} -Verbose" - if module_name != :none switches += " -Module #{module_name}" end - cmdlet = Chef::Util::Powershell::Cmdlet.new( node, "Invoke-DscResource #{switches}", @@ -152,7 +130,6 @@ class Chef ) cmdlet.run! end - def return_dsc_resource_result(result, property_name) if result.return_value.is_a?(Array) # WMF Feb 2015 Preview @@ -162,16 +139,14 @@ class Chef result.return_value[property_name] end end - def create_reboot_resource @reboot_resource = Chef::Resource::Reboot.new( - "Reboot for #{@new_resource.name}", + "Reboot for #{@new_resource.name}", run_context ).tap do |r| r.reason("Reboot for #{@new_resource.resource}.") end end - def reboot_if_required reboot_action = @new_resource.reboot_action unless @reboot_resource.nil? @@ -182,9 +157,9 @@ class Chef else Chef::Log.debug("Requesting node reboot with #{reboot_action}.") @reboot_resource.run_action(reboot_action) - end + end end end end end -end +end
\ No newline at end of file |