summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/chef/resource/service.rb4
-rw-r--r--spec/unit/resource/service_spec.rb14
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")