Skip to content

Commit 2af4975

Browse files
authored
Merge pull request #140 from fetzerms/add_delete_action
Add delete action
2 parents 2185da7 + e7111f6 commit 2af4975

File tree

3 files changed

+25
-7
lines changed

3 files changed

+25
-7
lines changed

spec/acceptance/init_spec.rb

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,36 @@
44

55
describe 'puppet_conf task' do
66
describe 'puppet_conf' do
7-
it 'set/get a puppet configuration' do
7+
it 'set/get/delete a puppet configuration' do
88
result = run_bolt_task('puppet_conf', 'action' => 'set', 'setting' => 'vardir', 'value' => '/tmp/bla')
99
expect(result.exit_code).to eq(0)
1010
expect(result['result']['status']).to match %r{.*/tmp/bla}
1111
expect(result['result']).to include 'setting' => 'vardir', 'section' => 'main'
1212

1313
result = run_bolt_task('puppet_conf', 'action' => 'get', 'setting' => 'vardir')
14-
1514
expect(result.exit_code).to eq(0)
1615
expect(result['result']['status']).to match %r{.*/tmp/bla}
1716
expect(result['result']).to include 'setting' => 'vardir', 'section' => 'main'
17+
18+
result = run_bolt_task('puppet_conf', 'action' => 'delete', 'setting' => 'vardir')
19+
expect(result.exit_code).to eq(0)
20+
expect(result['result']['status']).to match %r{.*Deleted.*/tmp/bla}
21+
expect(result['result']).to include 'setting' => 'vardir', 'section' => 'main'
1822
end
1923

20-
it 'set/get a puppet configuration with section' do
24+
it 'set/get/delete a puppet configuration with section' do
2125
result = run_bolt_task('puppet_conf', 'action' => 'set', 'setting' => 'storeconfigs', 'value' => 'false', 'section' => 'server')
22-
2326
expect(result.exit_code).to eq(0)
2427
expect(result['result']).to include 'status' => 'false', 'setting' => 'storeconfigs', 'section' => 'server'
2528

2629
result = run_bolt_task('puppet_conf', 'action' => 'get', 'setting' => 'storeconfigs', 'section' => 'server')
27-
2830
expect(result.exit_code).to eq(0)
2931
expect(result['result']).to include 'status' => 'false', 'setting' => 'storeconfigs', 'section' => 'server'
32+
33+
result = run_bolt_task('puppet_conf', 'action' => 'delete', 'setting' => 'storeconfigs', 'section' => 'server')
34+
expect(result.exit_code).to eq(0)
35+
expect(result['result']['status']).to match %r{.*Deleted.*storeconfigs.*}
36+
expect(result['result']).to include 'setting' => 'storeconfigs', 'section' => 'server'
3037
end
3138
end
3239
end

tasks/init.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"input_method": "stdin",
44
"parameters": {
55
"action": {
6-
"description": "The operation (get, set) to perform on the configuration setting",
7-
"type": "Enum[get, set]"
6+
"description": "The operation (get, set, delete) to perform on the configuration setting",
7+
"type": "Enum[get, set, delete]"
88
},
99
"section": {
1010
"description": "The section of the config file. Defaults to main",

tasks/init.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ def get(setting, section, _value)
6060
{ status: stdout.strip, setting: setting, section: section }
6161
end
6262

63+
def delete(setting, section, _value)
64+
cmd = [puppet_cmd, 'config', 'delete']
65+
cmd += ['--section', section]
66+
cmd += [setting]
67+
stdout, stderr, status = Open3.capture3(*cmd)
68+
raise Puppet::Error, stderr if status != 0
69+
{ status: stdout.strip, setting: setting, section: section }
70+
end
71+
6372
params = JSON.parse(STDIN.read)
6473
action = params['action']
6574
setting = params['setting']
@@ -70,6 +79,8 @@ def get(setting, section, _value)
7079
begin
7180
result = if action == 'get'
7281
get(setting, section, value)
82+
elsif action == 'delete'
83+
delete(setting, section, value)
7384
else
7485
raise Puppet::Error, 'You must pass a value argument' if value.nil?
7586
set(setting, section, value)

0 commit comments

Comments
 (0)