Puppet Function: set_param

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

Overview

See the file “LICENSE” for the full license governing this code.

Returns the value for requested parameter. Currently supported parameters:

  • instance_name

  • instance_number

  • thread_number

rubocop: disable Metrics/AbcSize rubocop: disable Metrics/CyclomaticComplexity rubocop: disable Metrics/PerceivedComplexity rubocop: disable Metrics/MethodLength

Signatures:

  • set_param(String $param_name, String $dbname, Optional[Undef] $cluster_nodes)String

    Parameters:

    • param_name (String)
    • dbname (String)
    • cluster_nodes (Optional[Undef])

    Returns:

    • (String)
  • set_param(String $param_name, String $dbname, Array $cluster_nodes)Any

    Parameters:

    • param_name (String)
    • dbname (String)
    • cluster_nodes (Array)

    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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/puppet/functions/set_param.rb', line 15

Puppet::Functions.create_function(:set_param) do
  dispatch :set_string_param do
    param 'String', :param_name
    param 'String', :dbname
    optional_param 'Undef', :cluster_nodes
    return_type 'String'
  end

  dispatch :set_string_param_cluster do
    param 'String', :param_name
    param 'String', :dbname
    param 'Array', :cluster_nodes
    # return_type 'String'
  end

  def set_string_param(param_name, dbname, _cluster_nodes)
    case param_name
    when 'instance_name'
      return_value = dbname
    when 'instance_number', 'thread_number'
      return_value = ''
    else
      fail "Unknown param_name #{param_name}"
    end
    return_value
  end

  def set_string_param_cluster(param_name, dbname, cluster_nodes)
    scope = closure_scope
    hostname = scope['hostname']
    case param_name
    # instance_name
    when 'instance_name'
      if cluster_nodes && dbname
        index = 0
        instance_number = cluster_nodes.map do |node|
          index += 1
          index if node == hostname
        end.flatten.join
        return_value = "#{dbname}#{instance_number}"
      elsif dbname
        return_value = dbname
      else
        fail "cluster_nodes and/or dbname needed to determine value for #{param_name}"
      end
    # instance_number and thread_number
    when 'instance_number', 'thread_number'
      if cluster_nodes && dbname
        index = 0
        instance_number = cluster_nodes.map do |node|
          index += 1
          index if node == hostname
        end.flatten.join
        return_value = instance_number
      elsif dbname
        return_value = ''
      else
        fail "cluster_nodes and dbname needed to determine value for #{param_name}"
      end

    else
      fail "Unknown param_name #{param_name}"
    end
    return_value
  end
end