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)


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/puppet/parser/functions/generate_clients.rb', line 2

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,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::config::client', {client => parameters})
    end
  end

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