diff options
author | markgibbons <mark.gibbons@nordstrom.com> | 2016-12-12 09:08:41 -0800 |
---|---|---|
committer | markgibbons <mark.gibbons@nordstrom.com> | 2016-12-12 09:08:41 -0800 |
commit | f3ffecebf4ebe7deaae37a56269a77f081b03218 (patch) | |
tree | 83ce42e2c271060816263a2c2d896770ede5bfbe | |
parent | ed93e0fb1644643cb0d064776b3283401dfba9a7 (diff) | |
parent | 58c5137e854782329215182364110021a0418a2e (diff) | |
download | chef-f3ffecebf4ebe7deaae37a56269a77f081b03218.tar.gz |
Merge branch 'smf_recursive_dependencies' of https://github.com/MarkGibbons/chef
-rw-r--r-- | lib/chef/provider/service/solaris.rb | 3 | ||||
-rw-r--r-- | lib/chef/resource/service.rb | 9 | ||||
-rw-r--r-- | spec/unit/provider/service/solaris_smf_service_spec.rb | 17 | ||||
-rw-r--r-- | spec/unit/resource/service_spec.rb | 16 |
4 files changed, 44 insertions, 1 deletions
diff --git a/lib/chef/provider/service/solaris.rb b/lib/chef/provider/service/solaris.rb index 868b3e1ac1..c3e47b3a5c 100644 --- a/lib/chef/provider/service/solaris.rb +++ b/lib/chef/provider/service/solaris.rb @@ -56,7 +56,8 @@ class Chef def enable_service shell_out!(default_init_command, "clear", @new_resource.service_name) if @maintenance - shell_out!(default_init_command, "enable", "-s", @new_resource.service_name) + start_flags = @new_resource.recursive ? "-sr" : "-s" + shell_out!(default_init_command, "enable", start_flags , @new_resource.service_name) end def disable_service diff --git a/lib/chef/resource/service.rb b/lib/chef/resource/service.rb index 1ca4b84af0..c230278434 100644 --- a/lib/chef/resource/service.rb +++ b/lib/chef/resource/service.rb @@ -49,6 +49,7 @@ class Chef @run_levels = nil @user = nil @supports = { :restart => nil, :reload => nil, :status => nil } + @recursive = nil end def service_name(arg = nil) @@ -212,6 +213,14 @@ class Chef end end + def recursive(arg = nil) + set_or_return( + :user, + arg, + :kind_of => [ TrueClass, FalseClass ] + ) + end + end end end diff --git a/spec/unit/provider/service/solaris_smf_service_spec.rb b/spec/unit/provider/service/solaris_smf_service_spec.rb index c6835bed64..98b0ed34e0 100644 --- a/spec/unit/provider/service/solaris_smf_service_spec.rb +++ b/spec/unit/provider/service/solaris_smf_service_spec.rb @@ -198,6 +198,23 @@ describe Chef::Provider::Service::Solaris do end end + describe "when enabling the service recursively" do + before(:each) do + @new_resource.recursive(true) + @provider.current_resource = @current_resource + end + + it "should call svcadm enable -sr chef" do + expect(@provider).to receive(:shell_out!).with("/bin/svcs", "-l", "chef", { :returns => [0, 1] }).and_return(@enabled_svc_status) + expect(@provider).not_to receive(:shell_out!).with("/usr/sbin/svcadm", "clear", @current_resource.service_name) + expect(@provider).to receive(:shell_out!).with("/usr/sbin/svcadm", "enable", "-sr", @current_resource.service_name).and_return(@success) + @provider.load_current_resource + + expect(@provider.enable_service).to be_truthy + expect(@current_resource.enabled).to be_truthy + end + end + describe "when disabling the service" do before(:each) do @provider.current_resource = @current_resource diff --git a/spec/unit/resource/service_spec.rb b/spec/unit/resource/service_spec.rb index 7aadc55532..4114a8ec3e 100644 --- a/spec/unit/resource/service_spec.rb +++ b/spec/unit/resource/service_spec.rb @@ -124,6 +124,22 @@ describe Chef::Resource::Service do end.to raise_error(ArgumentError) end + it "should accept true for recursive" do + @resource.recursive true + expect(@resource.send("recursive")).to eql(true) + end + + it "should accept false for recursive" do + @resource.recursive false + expect(@resource.send("recursive")).to eql(false) + end + + it "should not accept a string for recursive" do + expect do + @resource.recursive "poop" + end.to raise_error(ArgumentError) + end + %w{enabled running}.each do |attrib| it "should accept true for #{attrib}" do @resource.send(attrib, true) |