Skip to content

Commit 4afec18

Browse files
authored
Merge pull request #1150 from b4ldr/ensure
stdlib::ensure: new fuction to cast ensure values
2 parents 5d53e97 + 0ef4796 commit 4afec18

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

functions/ensure.pp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# @summary function to cast ensure parameter to resource specific value
2+
function stdlib::ensure(
3+
Variant[Boolean, Enum['present', 'absent']] $ensure,
4+
Enum['directory', 'link', 'mounted', 'service', 'file'] $resource,
5+
) >> String {
6+
$_ensure = $ensure ? {
7+
Boolean => $ensure.bool2str('present', 'absent'),
8+
default => $ensure,
9+
}
10+
case $resource {
11+
'service': {
12+
$_ensure ? {
13+
'present' => 'running',
14+
default => 'stopped',
15+
}
16+
}
17+
default: {
18+
$_ensure ? {
19+
'present' => $resource,
20+
default => $_ensure,
21+
}
22+
}
23+
}
24+
}

spec/functions/stdlib_ensure_spec.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
require 'spec_helper'
2+
3+
describe 'stdlib::ensure' do
4+
context 'work with service resource' do
5+
it { is_expected.to run.with_params('present', 'service').and_return('running') }
6+
it { is_expected.to run.with_params(true, 'service').and_return('running') }
7+
it { is_expected.to run.with_params('absent', 'service').and_return('stopped') }
8+
it { is_expected.to run.with_params(false, 'service').and_return('stopped') }
9+
end
10+
['directory', 'link', 'mounted', 'file'].each do |resource|
11+
context "work with #{resource} resource" do
12+
it { is_expected.to run.with_params('present', resource).and_return(resource) }
13+
it { is_expected.to run.with_params(true, resource).and_return(resource) }
14+
it { is_expected.to run.with_params('absent', resource).and_return('absent') }
15+
it { is_expected.to run.with_params(false, resource).and_return('absent') }
16+
end
17+
end
18+
end

0 commit comments

Comments
 (0)