Puppet Function: generate_clients

Defined in:
lib/puppet/parser/functions/generate_clients.rb
Function type:
Ruby 3.x API

Overview

generate_clients()Any

Returns:

  • (Any)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/puppet/parser/functions/generate_clients.rb', line 15

newfunction(:generate_clients) do |args|
  Puppet::Parser::Functions.autoloader.loadall

  # This searches top scope for variables in the style
  # $bacula_client_mynode with values in format
  # fileset=Basic:noHome,client_schedule=Hourly
  self.to_hash.each do |variable,value|
    if variable =~ /^bacula_client_.*$/
      client = variable[14..-1]

      begin
        parameters = Hash[ value.split(',').map do |val|
          val_array = val.split('=',2)
          if val_array.size != 2
            raise Puppet::ParseError, 'Could not parse parameters given. Please check your format'
          end
          if [nil,''].include? val_array[0] or [nil,''].include? val_array[1]
            raise Puppet::ParseError, 'Could not parse parameters given. Please check your format'
          end
          val_array
        end ]
      rescue
        raise Puppet::ParseError, 'Could not parse parameters given. Please check your format'
      end

      function_create_resources('bacula::client::config', {client => parameters})
    end
  end

  begin
    function_create_resources('bacula::client::config', args[0])
  rescue => e
    raise Puppet::ParseError, e
  end
end