Skip to content

Commit d040919

Browse files
committed
stdlib::ensure: new fuction to cast ensure values
This CR adds a new function to case the ensureable property to a resource specific value. e.g. * stdlib::ensure('present', 'service') == 'running' * stdlib::ensure('present', 'directory') == 'directory' This is usefull when you want to pass ensure to a custome class and ensure all the resource get the correct value e.g. ``` class foo( Enum['present', 'absent'] $ensure = 'present' ) { file {'/some/dir': ensure => stdlib::ensure($ensure, 'directory') } file {'/some/file': ensure => stdlib::ensure($ensure, 'file') } file {'/some/link': ensure => stdlib::ensure($ensure, 'link') } service {'some-service': ensure => stdlib::ensure($ensure, 'service') } ``` something similar to this was discussed in #869
1 parent b7c2444 commit d040919

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

functions/ensure.pp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# @summary function to cast ensure parameter to resource specific value
2+
function stdlib::ensure(
3+
Enum['present', 'absent'] $ensure,
4+
Enum['directory', 'link', 'mounted', 'service', 'file'] $resource,
5+
) >> String {
6+
case $resource {
7+
'service': {
8+
$ensure ? {
9+
'present' => 'running',
10+
default => 'stopped',
11+
}
12+
}
13+
default: {
14+
$ensure ? {
15+
'present' => $resource,
16+
default => $ensure,
17+
}
18+
}
19+
}
20+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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('absent', 'service').and_return('stopped') }
7+
end
8+
['directory', 'link', 'mounted', 'file'].each do |resource|
9+
context "work with #{resource} resource" do
10+
it { is_expected.to run.with_params('present', resource).and_return(resource) }
11+
it { is_expected.to run.with_params('absent', resource).and_return('absent') }
12+
end
13+
end
14+
end

0 commit comments

Comments
 (0)