Skip to content

Commit 9573cb8

Browse files
thbishopbtm
authored andcommitted
[CHEF-1794] use remove instead of disable for disabling a debian service
1 parent 5e4c1d6 commit 9573cb8

2 files changed

Lines changed: 60 additions & 18 deletions

File tree

chef/lib/chef/provider/service/debian.rb

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,17 @@ class Debian < Chef::Provider::Service::Init
2929

3030
def load_current_resource
3131
super
32-
33-
@current_resource.enabled(service_currently_enabled?)
34-
@current_resource
35-
end
3632

37-
def enable_service()
38-
run_command(:command => "/usr/sbin/update-rc.d #{@new_resource.service_name} defaults")
33+
@current_resource.enabled(service_currently_enabled?)
34+
@current_resource
3935
end
4036

41-
def disable_service()
42-
run_command(:command => "/usr/sbin/update-rc.d -f #{@new_resource.service_name} remove")
43-
end
44-
4537
def assert_update_rcd_available
4638
unless ::File.exists? "/usr/sbin/update-rc.d"
4739
raise Chef::Exceptions::Service, "/usr/sbin/update-rc.d does not exist!"
4840
end
4941
end
50-
42+
5143
def service_currently_enabled?
5244
assert_update_rcd_available
5345

@@ -67,7 +59,7 @@ def service_currently_enabled?
6759
end
6860
@current_resource.enabled enabled
6961
@current_resource.priority priority
70-
end
62+
end
7163

7264
unless status.exitstatus == 0
7365
raise Chef::Exceptions::Service, "/usr/sbin/update-rc.d -n -f #{@current_resource.service_name} failed - #{status.inspect}"
@@ -96,11 +88,9 @@ def enable_service()
9688
end
9789

9890
def disable_service()
99-
run_command(:command => "/usr/sbin/update-rc.d #{@new_resource.service_name} disable")
100-
# @new_resource.priority({2 => [:stop, 80]})
101-
# enable_service
91+
run_command(:command => "/usr/sbin/update-rc.d -f #{@new_resource.service_name} remove")
10292
end
103-
93+
10494
end
10595
end
10696
end

chef/spec/unit/provider/service/debian_service_spec.rb

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,37 @@
4040
lambda { @provider.assert_update_rcd_available }.should raise_error(Chef::Exceptions::Service)
4141
end
4242

43+
describe "when update-rc.d shows the init script linked to rc*.d/" do
44+
before do
45+
@provider.stub!(:run_command)
46+
@provider.stub!(:assert_update_rcd_available)
47+
@status = mock("Status", :exitstatus => 0)
48+
49+
result=<<-UPDATE_RC_D_SUCCESS
50+
Removing any system startup links for /etc/init.d/chef ...
51+
/etc/rc0.d/K20chef
52+
/etc/rc1.d/K20chef
53+
/etc/rc2.d/S20chef
54+
/etc/rc3.d/S20chef
55+
/etc/rc4.d/S20chef
56+
/etc/rc5.d/S20chef
57+
/etc/rc6.d/K20chef
58+
UPDATE_RC_D_SUCCESS
59+
@stdout = StringIO.new(result)
60+
@stderr = StringIO.new
61+
@provider.stub!(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
62+
end
63+
64+
it "says the service is enabled" do
65+
@provider.service_currently_enabled?.should be_true
66+
end
67+
68+
it "stores the 'enabled' state" do
69+
Chef::Resource::Service.stub!(:new).and_return(@current_resource)
70+
@provider.load_current_resource.should equal(@current_resource)
71+
@current_resource.enabled.should be_true
72+
end
73+
end
4374

4475
{"Debian/Lenny and older" => {
4576
"linked" => {
@@ -132,6 +163,27 @@
132163
end
133164
end
134165

166+
describe "when update-rc.d shows the init script isn't linked to rc*.d" do
167+
before do
168+
@provider.stub!(:run_command)
169+
@provider.stub!(:assert_update_rcd_available)
170+
@status = mock("Status", :exitstatus => 0)
171+
@stdout = StringIO.new(" Removing any system startup links for /etc/init.d/chef ...")
172+
@stderr = StringIO.new
173+
@provider.stub!(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
174+
end
175+
176+
it "says the service is disabled" do
177+
@provider.service_currently_enabled?.should be_false
178+
end
179+
180+
it "stores the 'disabled' state" do
181+
Chef::Resource::Service.stub!(:new).and_return(@current_resource)
182+
@provider.load_current_resource.should equal(@current_resource)
183+
@current_resource.enabled.should be_false
184+
end
185+
end
186+
135187
describe "when update-rc.d fails" do
136188
before do
137189
@status = mock("Status", :exitstatus => -1)
@@ -173,8 +225,8 @@
173225
end
174226

175227
describe "when disabling a service" do
176-
it "should call update-rc.d 'service_name' disable" do
177-
@provider.should_receive(:run_command).with({:command => "/usr/sbin/update-rc.d #{@new_resource.service_name} disable"})
228+
it "should call update-rc.d -f 'service_name' remove" do
229+
@provider.should_receive(:run_command).with({:command => "/usr/sbin/update-rc.d -f #{@new_resource.service_name} remove"})
178230
@provider.disable_service()
179231
end
180232
end

0 commit comments

Comments
 (0)