summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarkgibbons <mark.gibbons@nordstrom.com>2016-12-12 09:08:41 -0800
committermarkgibbons <mark.gibbons@nordstrom.com>2016-12-12 09:08:41 -0800
commitf3ffecebf4ebe7deaae37a56269a77f081b03218 (patch)
tree83ce42e2c271060816263a2c2d896770ede5bfbe
parented93e0fb1644643cb0d064776b3283401dfba9a7 (diff)
parent58c5137e854782329215182364110021a0418a2e (diff)
downloadchef-f3ffecebf4ebe7deaae37a56269a77f081b03218.tar.gz
Merge branch 'smf_recursive_dependencies' of https://github.com/MarkGibbons/chef
-rw-r--r--lib/chef/provider/service/solaris.rb3
-rw-r--r--lib/chef/resource/service.rb9
-rw-r--r--spec/unit/provider/service/solaris_smf_service_spec.rb17
-rw-r--r--spec/unit/resource/service_spec.rb16
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)