Puppet Function: deferlib::unless_cmd_

Defined in:
lib/puppet/functions/deferlib/unless_cmd_.rb
Function type:
Ruby 4.x API

Overview

deferlib::unless_cmd_(String $cmd, Any $value, Optional[Hash] $options)Any

returns <value> if command returns 0 else returns <default> without <default>, returns []

to be called as Deferred type to be run on client to be used on resource parameter value Example: service { ‘cron’:

ensure => Deferred('deferlib::unless_cmd_', ['grep maintenance /tmp/status', 'running',{
      'else'  => 'stopped'
      'user'  => 'foo',
      'group' => 'bar',
      'environment' => {'SECRET' => 'mysec'},
}]),

}

Parameters:

  • cmd (String)
  • value (Any)
  • options (Optional[Hash])

Returns:

  • (Any)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/puppet/functions/deferlib/unless_cmd_.rb', line 18

Puppet::Functions.create_function(:'deferlib::unless_cmd_') do
  dispatch :unless_cmd do
    param 'String', :cmd
    param 'Any', :value
    optional_param 'Hash', :options
  end

  def unless_cmd(cmd, value, options = {})
    default = []
    default = options['else'] if options.key?('else')
    opts = {}
    opts[:uid] = options['user'] if options.key?('user')
    opts[:gid] = options['group'] if options.key?('group')
    opts[:environment] = options['environment'] if options.key?('environment')
    result = Puppet::Util::Execution.execute(cmd, opts)
    if result.exitstatus == 0
      default
    else
      value
    end
  end
end