diff options
-rw-r--r-- | lib/chef/resource/service.rb | 4 | ||||
-rw-r--r-- | spec/unit/resource/service_spec.rb | 14 |
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/chef/resource/service.rb b/lib/chef/resource/service.rb index c3d009bc55..94eca259f0 100644 --- a/lib/chef/resource/service.rb +++ b/lib/chef/resource/service.rb @@ -45,6 +45,10 @@ class Chef @action = "nothing" @supports = { :restart => false, :reload => false, :status => false } @allowed_actions.push(:enable, :disable, :start, :stop, :restart, :reload) + + if(run_context && run_context.node[:init_package] == "systemd") + @provider = Chef::Provider::Service::Systemd + end end def service_name(arg=nil) diff --git a/spec/unit/resource/service_spec.rb b/spec/unit/resource/service_spec.rb index 067fa7d0d3..ec62d012bb 100644 --- a/spec/unit/resource/service_spec.rb +++ b/spec/unit/resource/service_spec.rb @@ -29,6 +29,20 @@ describe Chef::Resource::Service do @resource.should be_a_kind_of(Chef::Resource) @resource.should be_a_kind_of(Chef::Resource::Service) end + + it "should not set a provider unless node[:init_package] is defined as systemd" do + @resource.provider.should == nil + end + + it "should set the provider to Chef::Provider::Service::Systemd if node[:init_package] is systemd" do + node = Chef::Node.new + node.set[:init_package] = "systemd" + cookbook_collection = Chef::CookbookCollection.new([]) + events = Chef::EventDispatch::Dispatcher.new + run_context = Chef::RunContext.new(node, cookbook_collection, events) + @resource = Chef::Resource::Service.new("chef", run_context) + @resource.provider.should == Chef::Provider::Service::Systemd + end it "should set the service_name to the first argument to new" do @resource.service_name.should eql("chef") |