Skip to content

Commit ec5f5ff

Browse files
authored
Merge pull request puppetlabs#151 from lucywyman/add-enable
(maint) Add enable and disable actions for *nix
2 parents f1a889c + 896d72d commit ec5f5ff

File tree

3 files changed

+37
-22
lines changed

3 files changed

+37
-22
lines changed

spec/acceptance/linux_spec.rb

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# run a test task
22
require 'spec_helper_acceptance'
33

4+
sysv = (os[:family] == 'redhat' && os[:release].to_i == 6) ||
5+
(os[:family] == 'debian' && os[:release].to_i == 14)
46
describe 'linux service task', unless: os[:family] == 'windows' do
57
package_to_use = if os[:family] == 'redhat'
68
'httpd'
@@ -40,6 +42,22 @@
4042
end
4143
end
4244

45+
describe 'enable action', unless: sysv do
46+
it "enable #{package_to_use}" do
47+
result = run_bolt_task('service::linux', 'action' => 'enable', 'name' => package_to_use)
48+
expect(result.exit_code).to eq(0)
49+
expect(result['result']).to include('enabled' => 'enabled')
50+
end
51+
end
52+
53+
describe 'disable action', unless: sysv do
54+
it "disable #{package_to_use}" do
55+
result = run_bolt_task('service::linux', 'action' => 'disable', 'name' => package_to_use)
56+
expect(result.exit_code).to eq(0)
57+
expect(result['result']).to include('enabled' => 'disabled')
58+
end
59+
end
60+
4361
context 'when a service does not exist' do
4462
let(:non_existent_service) { 'foo' }
4563

@@ -64,22 +82,11 @@
6482
File.delete(temp_inventory_file) if File.exist?(temp_inventory_file)
6583
end
6684

67-
it 'enable action fails' do
68-
params = { 'action' => 'enable', 'name' => package_to_use }
69-
result = run_bolt_task('service', params, expect_failures: true, inventory_file: temp_inventory_file)
70-
expect(result['result']).to include('status' => 'failure')
71-
expect(result['result']['_error']).to include('msg' => %r{'enable' action not supported})
72-
expect(result['result']['_error']).to include('kind' => 'bash-error')
73-
expect(result['result']['_error']).to include('details')
74-
end
75-
76-
it 'disable action fails' do
77-
params = { 'action' => 'disable', 'name' => package_to_use }
78-
result = run_bolt_task('service', params, expect_failures: true, inventory_file: temp_inventory_file)
79-
expect(result['result']).to include('status' => 'failure')
80-
expect(result['result']['_error']).to include('msg' => %r{'disable' action not supported})
81-
expect(result['result']['_error']).to include('kind' => 'bash-error')
82-
expect(result['result']['_error']).to include('details')
85+
it 'does not use the ruby task' do
86+
params = { 'action' => 'restart', 'name' => package_to_use }
87+
result = run_bolt_task('service', params, inventory_file: temp_inventory_file)
88+
expect(result.exit_code).to eq(0)
89+
expect(result['result']).to include('status' => %r{ActiveState=active|running})
8390
end
8491
end
8592
end

tasks/linux.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"input_method": "environment",
55
"parameters": {
66
"action": {
7-
"description": "The operation (start, stop, restart, status) to perform on the service.",
8-
"type": "Enum[start, stop, restart, status]"
7+
"description": "The operation (start, stop, restart, status, enable, disable) to perform on the service.",
8+
"type": "Enum[start, stop, restart, status, enable, disable]"
99
},
1010
"name": {
1111
"description": "The name of the service to operate on.",

tasks/linux.sh

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ done
2121

2222
# Verify only allowable actions are specified
2323
case "$action" in
24-
"start"|"stop"|"restart"|"status");;
24+
"start"|"stop"|"restart"|"status"|"enable"|"disable");;
2525
*) validation_error "'${action}' action not supported for linux.sh"
2626
esac
2727

@@ -37,15 +37,19 @@ case "$available_manager" in
3737
# sample output: "MainPID=23377,LoadState=loaded,ActiveState=active"
3838
cmd_out="$("$service" "show" "$name" -p LoadState -p MainPID -p ActiveState --no-pager | paste -sd ',' -)"
3939

40-
if [[ $action != "status" ]]; then
41-
success "{ \"status\": \"${cmd_out}\" }"
42-
else
40+
if [[ $action == "status" || $action == "enable" || $action == "disable" ]]; then
4341
enabled_out="$("$service" "is-enabled" "$name" 2>&1)"
4442
success "{ \"status\": \"${cmd_out}\", \"enabled\": \"${enabled_out}\" }"
43+
else
44+
success "{ \"status\": \"${cmd_out}\" }"
4545
fi
4646
;;
4747

4848
"initctl")
49+
if [[ $action == "enable" || $action == "disable" ]]; then
50+
validation_error "'${action}' action not supported for initctl"
51+
fi
52+
4953
cmd=("$service" "$action" "$name")
5054
cmd_status=("$service" "status" "$name")
5155

@@ -70,6 +74,10 @@ case "$available_manager" in
7074
;;
7175

7276
"service")
77+
if [[ $action == "enable" || $action == "disable" ]]; then
78+
validation_error "'${action}' action not supported for initctl"
79+
fi
80+
7381
cmd=("$service" "$name" "$action")
7482
cmd_status=("$service" "$name" "status")
7583

0 commit comments

Comments
 (0)