puppet 3.7.4 → 3.7.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/CONTRIBUTING.md +11 -6
- data/ext/build_defaults.yaml +2 -2
- data/ext/systemd/puppet.service +1 -0
- data/lib/hiera/puppet_function.rb +71 -0
- data/lib/puppet.rb +12 -0
- data/lib/puppet/application/device.rb +22 -5
- data/lib/puppet/daemon.rb +13 -4
- data/lib/puppet/defaults.rb +27 -4
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +4 -0
- data/lib/puppet/functions.rb +118 -65
- data/lib/puppet/functions/assert_type.rb +5 -5
- data/lib/puppet/functions/each.rb +12 -12
- data/lib/puppet/functions/epp.rb +3 -4
- data/lib/puppet/functions/filter.rb +12 -12
- data/lib/puppet/functions/hiera.rb +29 -0
- data/lib/puppet/functions/hiera_array.rb +34 -0
- data/lib/puppet/functions/hiera_hash.rb +36 -0
- data/lib/puppet/functions/hiera_include.rb +50 -0
- data/lib/puppet/functions/inline_epp.rb +2 -3
- data/lib/puppet/functions/map.rb +12 -12
- data/lib/puppet/functions/reduce.rb +6 -6
- data/lib/puppet/functions/scanf.rb +3 -3
- data/lib/puppet/functions/slice.rb +10 -9
- data/lib/puppet/functions/with.rb +3 -4
- data/lib/puppet/graph/simple_graph.rb +5 -5
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/node/environment.rb +1 -1
- data/lib/puppet/parser/ast/arithmetic_operator.rb +1 -1
- data/lib/puppet/parser/ast/collexpr.rb +1 -1
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/functions/create_resources.rb +1 -9
- data/lib/puppet/parser/functions/defined.rb +1 -1
- data/lib/puppet/parser/functions/hiera.rb +20 -11
- data/lib/puppet/parser/functions/hiera_array.rb +23 -13
- data/lib/puppet/parser/functions/hiera_hash.rb +25 -15
- data/lib/puppet/parser/functions/hiera_include.rb +20 -9
- data/lib/puppet/parser/functions/lookup.rb +1 -1
- data/lib/puppet/parser/functions/realize.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +21 -12
- data/lib/puppet/parser/parser_factory.rb +2 -2
- data/lib/puppet/parser/relationship.rb +1 -1
- data/lib/puppet/parser/scope.rb +34 -7
- data/lib/puppet/pops.rb +2 -0
- data/lib/puppet/pops/binder/lookup.rb +24 -7
- data/lib/puppet/pops/binder/producers.rb +2 -2
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +109 -17
- data/lib/puppet/pops/evaluator/puppet_proc.rb +69 -0
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +175 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +15 -128
- data/lib/puppet/pops/functions/dispatch.rb +21 -17
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/functions/function.rb +46 -14
- data/lib/puppet/pops/issues.rb +2 -2
- data/lib/puppet/pops/model/model_label_provider.rb +1 -1
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +732 -724
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/lexer2.rb +20 -22
- data/lib/puppet/pops/types/class_loader.rb +1 -1
- data/lib/puppet/pops/types/type_calculator.rb +104 -37
- data/lib/puppet/pops/types/type_factory.rb +1 -1
- data/lib/puppet/pops/types/types.rb +4 -1
- data/lib/puppet/pops/types/types_meta.rb +2 -2
- data/lib/puppet/pops/validation/checker4_0.rb +5 -3
- data/lib/puppet/provider/service/systemd.rb +1 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +4 -1
- data/lib/puppet/resource.rb +3 -2
- data/lib/puppet/resource/catalog.rb +3 -2
- data/lib/puppet/resource/type.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +12 -4
- data/lib/puppet/type/package.rb +23 -13
- data/lib/puppet/util/autoload.rb +7 -7
- data/lib/puppet/util/errors.rb +4 -2
- data/lib/puppet/util/network_device/config.rb +5 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppetx.rb +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee.rb +8 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee_ws.rb +8 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/metadata.json +9 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller_ws.rb +12 -0
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/metadata.json +9 -0
- data/spec/integration/parser/environment_spec.rb +47 -0
- data/spec/integration/parser/future_compiler_spec.rb +11 -6
- data/spec/unit/application/device_spec.rb +52 -14
- data/spec/unit/daemon_spec.rb +0 -2
- data/spec/unit/environments_spec.rb +2 -2
- data/spec/unit/functions/assert_type_spec.rb +4 -25
- data/spec/unit/functions/hiera_spec.rb +127 -0
- data/spec/unit/functions/with_spec.rb +9 -4
- data/spec/unit/functions4_spec.rb +98 -35
- data/spec/unit/hiera/backend/puppet_backend_spec.rb +1 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -2
- data/spec/unit/parser/functions/defined_spec.rb +5 -0
- data/spec/unit/parser/functions/lookup_spec.rb +5 -1
- data/spec/unit/parser/functions/scanf_spec.rb +30 -0
- data/spec/unit/parser/scope_spec.rb +5 -0
- data/spec/unit/pops/binder/injector_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +33 -5
- data/spec/unit/pops/loaders/loaders_spec.rb +22 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +28 -16
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +21 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +141 -19
- data/spec/unit/pops/types/type_factory_spec.rb +2 -2
- data/spec/unit/pops/validator/validator_spec.rb +25 -3
- data/spec/unit/provider/service/systemd_spec.rb +20 -4
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/yumrepo/inifile_spec.rb +1 -0
- data/spec/unit/settings/environment_conf_spec.rb +12 -1
- data/spec/unit/type/package_spec.rb +0 -20
- data/spec/unit/util/network_device/config_spec.rb +6 -0
- metadata +3422 -3405
@@ -30,14 +30,14 @@ Puppet::Functions.create_function(:assert_type) do
|
|
30
30
|
# @param type [Type] the type the value must be an instance of
|
31
31
|
# @param value [Object] the value to assert
|
32
32
|
#
|
33
|
-
def assert_type(type, value
|
33
|
+
def assert_type(type, value)
|
34
34
|
unless Puppet::Pops::Types::TypeCalculator.instance?(type,value)
|
35
35
|
inferred_type = Puppet::Pops::Types::TypeCalculator.infer(value)
|
36
|
-
if
|
36
|
+
if block_given?
|
37
37
|
# Give the inferred type to allow richer comparisson in the given block (if generalized
|
38
38
|
# information is lost).
|
39
39
|
#
|
40
|
-
value =
|
40
|
+
value = yield(type, inferred_type)
|
41
41
|
else
|
42
42
|
# Do not give all the details - i.e. format as Integer, instead of Integer[n, n] for exact value, which
|
43
43
|
# is just confusing. (OTOH: may need to revisit, or provide a better "type diff" output.
|
@@ -52,8 +52,8 @@ Puppet::Functions.create_function(:assert_type) do
|
|
52
52
|
# @param type_string [String] the type the value must be an instance of given in String form
|
53
53
|
# @param value [Object] the value to assert
|
54
54
|
#
|
55
|
-
def assert_type_s(type_string, value)
|
55
|
+
def assert_type_s(type_string, value, &proc)
|
56
56
|
t = Puppet::Pops::Types::TypeParser.new.parse(type_string)
|
57
|
-
assert_type(t, value)
|
57
|
+
block_given? ? assert_type(t, value, &proc) : assert_type(t, value)
|
58
58
|
end
|
59
59
|
end
|
@@ -41,58 +41,58 @@
|
|
41
41
|
Puppet::Functions.create_function(:each) do
|
42
42
|
dispatch :foreach_Hash_2 do
|
43
43
|
param 'Hash[Any, Any]', :hash
|
44
|
-
|
44
|
+
block_param 'Callable[2,2]', :block
|
45
45
|
end
|
46
46
|
|
47
47
|
dispatch :foreach_Hash_1 do
|
48
48
|
param 'Hash[Any, Any]', :hash
|
49
|
-
|
49
|
+
block_param 'Callable[1,1]', :block
|
50
50
|
end
|
51
51
|
|
52
52
|
dispatch :foreach_Enumerable_2 do
|
53
53
|
param 'Any', :enumerable
|
54
|
-
|
54
|
+
block_param 'Callable[2,2]', :block
|
55
55
|
end
|
56
56
|
|
57
57
|
dispatch :foreach_Enumerable_1 do
|
58
58
|
param 'Any', :enumerable
|
59
|
-
|
59
|
+
block_param 'Callable[1,1]', :block
|
60
60
|
end
|
61
61
|
|
62
|
-
def foreach_Hash_1(hash
|
62
|
+
def foreach_Hash_1(hash)
|
63
63
|
enumerator = hash.each_pair
|
64
64
|
hash.size.times do
|
65
|
-
|
65
|
+
yield(enumerator.next)
|
66
66
|
end
|
67
67
|
# produces the receiver
|
68
68
|
hash
|
69
69
|
end
|
70
70
|
|
71
|
-
def foreach_Hash_2(hash
|
71
|
+
def foreach_Hash_2(hash)
|
72
72
|
enumerator = hash.each_pair
|
73
73
|
hash.size.times do
|
74
|
-
|
74
|
+
yield(*enumerator.next)
|
75
75
|
end
|
76
76
|
# produces the receiver
|
77
77
|
hash
|
78
78
|
end
|
79
79
|
|
80
|
-
def foreach_Enumerable_1(enumerable
|
80
|
+
def foreach_Enumerable_1(enumerable)
|
81
81
|
enum = asserted_enumerable(enumerable)
|
82
82
|
begin
|
83
|
-
loop {
|
83
|
+
loop { yield(enum.next) }
|
84
84
|
rescue StopIteration
|
85
85
|
end
|
86
86
|
# produces the receiver
|
87
87
|
enumerable
|
88
88
|
end
|
89
89
|
|
90
|
-
def foreach_Enumerable_2(enumerable
|
90
|
+
def foreach_Enumerable_2(enumerable)
|
91
91
|
enum = asserted_enumerable(enumerable)
|
92
92
|
index = 0
|
93
93
|
begin
|
94
94
|
loop do
|
95
|
-
|
95
|
+
yield(index, enum.next)
|
96
96
|
index += 1
|
97
97
|
end
|
98
98
|
rescue StopIteration
|
data/lib/puppet/functions/epp.rb
CHANGED
@@ -42,10 +42,9 @@
|
|
42
42
|
Puppet::Functions.create_function(:epp, Puppet::Functions::InternalFunction) do
|
43
43
|
|
44
44
|
dispatch :epp do
|
45
|
-
scope_param
|
46
|
-
param 'String',
|
47
|
-
|
48
|
-
arg_count(1, 2)
|
45
|
+
scope_param
|
46
|
+
param 'String', :path
|
47
|
+
optional_param 'Hash[Pattern[/^\w+$/], Any]', :parameters
|
49
48
|
end
|
50
49
|
|
51
50
|
def epp(scope, path, parameters = nil)
|
@@ -38,46 +38,46 @@
|
|
38
38
|
Puppet::Functions.create_function(:filter) do
|
39
39
|
dispatch :filter_Hash_2 do
|
40
40
|
param 'Hash[Any, Any]', :hash
|
41
|
-
|
41
|
+
block_param 'Callable[2,2]', :block
|
42
42
|
end
|
43
43
|
|
44
44
|
dispatch :filter_Hash_1 do
|
45
45
|
param 'Hash[Any, Any]', :hash
|
46
|
-
|
46
|
+
block_param 'Callable[1,1]', :block
|
47
47
|
end
|
48
48
|
|
49
49
|
dispatch :filter_Enumerable_2 do
|
50
50
|
param 'Any', :enumerable
|
51
|
-
|
51
|
+
block_param 'Callable[2,2]', :block
|
52
52
|
end
|
53
53
|
|
54
54
|
dispatch :filter_Enumerable_1 do
|
55
55
|
param 'Any', :enumerable
|
56
|
-
|
56
|
+
block_param 'Callable[1,1]', :block
|
57
57
|
end
|
58
58
|
|
59
|
-
def filter_Hash_1(hash
|
60
|
-
result = hash.select {|x, y|
|
59
|
+
def filter_Hash_1(hash)
|
60
|
+
result = hash.select {|x, y| yield([x, y]) }
|
61
61
|
# Ruby 1.8.7 returns Array
|
62
62
|
result = Hash[result] unless result.is_a? Hash
|
63
63
|
result
|
64
64
|
end
|
65
65
|
|
66
|
-
def filter_Hash_2(hash
|
67
|
-
result = hash.select {|x, y|
|
66
|
+
def filter_Hash_2(hash)
|
67
|
+
result = hash.select {|x, y| yield(x, y) }
|
68
68
|
# Ruby 1.8.7 returns Array
|
69
69
|
result = Hash[result] unless result.is_a? Hash
|
70
70
|
result
|
71
71
|
end
|
72
72
|
|
73
|
-
def filter_Enumerable_1(enumerable
|
73
|
+
def filter_Enumerable_1(enumerable)
|
74
74
|
result = []
|
75
75
|
index = 0
|
76
76
|
enum = asserted_enumerable(enumerable)
|
77
77
|
begin
|
78
78
|
loop do
|
79
79
|
it = enum.next
|
80
|
-
if
|
80
|
+
if yield(it) == true
|
81
81
|
result << it
|
82
82
|
end
|
83
83
|
end
|
@@ -86,14 +86,14 @@ Puppet::Functions.create_function(:filter) do
|
|
86
86
|
result
|
87
87
|
end
|
88
88
|
|
89
|
-
def filter_Enumerable_2(enumerable
|
89
|
+
def filter_Enumerable_2(enumerable)
|
90
90
|
result = []
|
91
91
|
index = 0
|
92
92
|
enum = asserted_enumerable(enumerable)
|
93
93
|
begin
|
94
94
|
loop do
|
95
95
|
it = enum.next
|
96
|
-
if
|
96
|
+
if yield(index, it) == true
|
97
97
|
result << it
|
98
98
|
end
|
99
99
|
index += 1
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'hiera/puppet_function'
|
2
|
+
|
3
|
+
# Performs a standard priority lookup and returns the most specific value for a given key.
|
4
|
+
# The returned value can be data of any type (strings, arrays, or hashes).
|
5
|
+
#
|
6
|
+
# The function can be called in one of three ways:
|
7
|
+
# 1. Using 1 to 3 arguments where the arguments are:
|
8
|
+
# 'key' [String] Required
|
9
|
+
# The key to lookup.
|
10
|
+
# 'default` [Any] Optional
|
11
|
+
# A value to return when there's no match for `key`. Optional
|
12
|
+
# `override` [Any] Optional
|
13
|
+
# An argument in the third position, providing a data source
|
14
|
+
# to consult for matching values, even if it would not ordinarily be
|
15
|
+
# part of the matched hierarchy. If Hiera doesn't find a matching key
|
16
|
+
# in the named override data source, it will continue to search through the
|
17
|
+
# rest of the hierarchy.
|
18
|
+
#
|
19
|
+
# 2. Using a 'key' and an optional 'override' parameter like in #1 but with a block to
|
20
|
+
# provide the default value. The block is called with one parameter (the key) and
|
21
|
+
# should return the value.
|
22
|
+
#
|
23
|
+
# 3. Like #1 but with all arguments passed in an array.
|
24
|
+
#
|
25
|
+
# More thorough examples of `hiera` are available at:
|
26
|
+
# <http://docs.puppetlabs.com/hiera/1/puppet.html#hiera-lookup-functions>
|
27
|
+
Puppet::Functions.create_function(:hiera, Hiera::PuppetFunction) do
|
28
|
+
init_dispatch
|
29
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'hiera/puppet_function'
|
2
|
+
|
3
|
+
# Returns all matches throughout the hierarchy --- not just the first match --- as a flattened array of unique values.
|
4
|
+
# If any of the matched values are arrays, they're flattened and included in the results.
|
5
|
+
#
|
6
|
+
# The function can be called in one of three ways:
|
7
|
+
# 1. Using 1 to 3 arguments where the arguments are:
|
8
|
+
# 'key' [String] Required
|
9
|
+
# The key to lookup.
|
10
|
+
# 'default` [Any] Optional
|
11
|
+
# A value to return when there's no match for `key`. Optional
|
12
|
+
# `override` [Any] Optional
|
13
|
+
# An argument in the third position, providing a data source
|
14
|
+
# to consult for matching values, even if it would not ordinarily be
|
15
|
+
# part of the matched hierarchy. If Hiera doesn't find a matching key
|
16
|
+
# in the named override data source, it will continue to search through the
|
17
|
+
# rest of the hierarchy.
|
18
|
+
#
|
19
|
+
# 2. Using a 'key' and an optional 'override' parameter like in #1 but with a block to
|
20
|
+
# provide the default value. The block is called with one parameter (the key) and
|
21
|
+
# should return the value.
|
22
|
+
#
|
23
|
+
# 3. Like #1 but with all arguments passed in an array.
|
24
|
+
# If any matched value is a hash, puppet will raise a type mismatch error.
|
25
|
+
#
|
26
|
+
# More thorough examples of `hiera` are available at:
|
27
|
+
# <http://docs.puppetlabs.com/hiera/1/puppet.html#hiera-lookup-functions>
|
28
|
+
Puppet::Functions.create_function(:hiera_array, Hiera::PuppetFunction) do
|
29
|
+
init_dispatch
|
30
|
+
|
31
|
+
def merge_type
|
32
|
+
:array
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'hiera/puppet_function'
|
2
|
+
|
3
|
+
# Returns a merged hash of matches from throughout the hierarchy. In cases where two or
|
4
|
+
# more hashes share keys, the hierarchy order determines which key/value pair will be
|
5
|
+
# used in the returned hash, with the pair in the highest priority data source winning.
|
6
|
+
#
|
7
|
+
# The function can be called in one of three ways:
|
8
|
+
# 1. Using 1 to 3 arguments where the arguments are:
|
9
|
+
# 'key' [String] Required
|
10
|
+
# The key to lookup.
|
11
|
+
# 'default` [Any] Optional
|
12
|
+
# A value to return when there's no match for `key`. Optional
|
13
|
+
# `override` [Any] Optional
|
14
|
+
# An argument in the third position, providing a data source
|
15
|
+
# to consult for matching values, even if it would not ordinarily be
|
16
|
+
# part of the matched hierarchy. If Hiera doesn't find a matching key
|
17
|
+
# in the named override data source, it will continue to search through the
|
18
|
+
# rest of the hierarchy.
|
19
|
+
#
|
20
|
+
# 2. Using a 'key' and an optional 'override' parameter like in #1 but with a block to
|
21
|
+
# provide the default value. The block is called with one parameter (the key) and
|
22
|
+
# should return the value.
|
23
|
+
#
|
24
|
+
# 3. Like #1 but with all arguments passed in an array.
|
25
|
+
# `hiera_hash` expects that all values returned will be hashes. If any of the values
|
26
|
+
# found in the data sources are strings or arrays, puppet will raise a type mismatch error.
|
27
|
+
#
|
28
|
+
# More thorough examples of `hiera_hash` are available at:
|
29
|
+
# <http://docs.puppetlabs.com/hiera/1/puppet.html#hiera-lookup-functions>
|
30
|
+
Puppet::Functions.create_function(:hiera_hash, Hiera::PuppetFunction) do
|
31
|
+
init_dispatch
|
32
|
+
|
33
|
+
def merge_type
|
34
|
+
:hash
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'hiera_puppet'
|
2
|
+
|
3
|
+
# Assigns classes to a node using an array merge lookup that retrieves the value for a user-specified key
|
4
|
+
# from a Hiera data source.
|
5
|
+
#
|
6
|
+
# To use `hiera_include`, the following configuration is required:
|
7
|
+
# - A key name to use for classes, e.g. `classes`.
|
8
|
+
# - A line in the puppet `sites.pp` file (e.g. `/etc/puppet/manifests/sites.pp`)
|
9
|
+
# reading `hiera_include('classes')`. Note that this line must be outside any node
|
10
|
+
# definition and below any top-scope variables in use for Hiera lookups.
|
11
|
+
# - Class keys in the appropriate data sources. In a data source keyed to a node's role,
|
12
|
+
# one might have:
|
13
|
+
#
|
14
|
+
# ---
|
15
|
+
# classes:
|
16
|
+
# - apache
|
17
|
+
# - apache::passenger
|
18
|
+
# The function can be called in one of three ways:
|
19
|
+
# 1. Using 1 to 3 arguments where the arguments are:
|
20
|
+
# 'key' [String] Required
|
21
|
+
# The key to lookup.
|
22
|
+
# 'default` [Any] Optional
|
23
|
+
# A value to return when there's no match for `key`. Optional
|
24
|
+
# `override` [Any] Optional
|
25
|
+
# An argument in the third position, providing a data source
|
26
|
+
# to consult for matching values, even if it would not ordinarily be
|
27
|
+
# part of the matched hierarchy. If Hiera doesn't find a matching key
|
28
|
+
# in the named override data source, it will continue to search through the
|
29
|
+
# rest of the hierarchy.
|
30
|
+
#
|
31
|
+
# 2. Using a 'key' and an optional 'override' parameter like in #1 but with a block to
|
32
|
+
# provide the default value. The block is called with one parameter (the key) and
|
33
|
+
# should return the array to be used in the subsequent call to include.
|
34
|
+
#
|
35
|
+
# 3. Like #1 but with all arguments passed in an array.
|
36
|
+
#
|
37
|
+
# More thorough examples of `hiera_include` are available at:
|
38
|
+
# <http://docs.puppetlabs.com/hiera/1/puppet.html#hiera-lookup-functions>
|
39
|
+
Puppet::Functions.create_function(:hiera_include, Hiera::PuppetFunction) do
|
40
|
+
init_dispatch
|
41
|
+
|
42
|
+
def merge_type
|
43
|
+
:array
|
44
|
+
end
|
45
|
+
|
46
|
+
def post_lookup(key, value)
|
47
|
+
raise Puppet::ParseError, "Could not find data item #{key}" if value.nil?
|
48
|
+
call_function('include', value) unless value.empty?
|
49
|
+
end
|
50
|
+
end
|
@@ -77,9 +77,8 @@ Puppet::Functions.create_function(:inline_epp, Puppet::Functions::InternalFuncti
|
|
77
77
|
|
78
78
|
dispatch :inline_epp do
|
79
79
|
scope_param()
|
80
|
-
param 'String',
|
81
|
-
|
82
|
-
arg_count(1, 2)
|
80
|
+
param 'String', :template
|
81
|
+
optional_param 'Hash[Pattern[/^\w+$/], Any]', :parameters
|
83
82
|
end
|
84
83
|
|
85
84
|
def inline_epp(scope, template, parameters = nil)
|
data/lib/puppet/functions/map.rb
CHANGED
@@ -36,50 +36,50 @@
|
|
36
36
|
Puppet::Functions.create_function(:map) do
|
37
37
|
dispatch :map_Hash_2 do
|
38
38
|
param 'Hash[Any, Any]', :hash
|
39
|
-
|
39
|
+
block_param 'Callable[2,2]', :block
|
40
40
|
end
|
41
41
|
|
42
42
|
dispatch :map_Hash_1 do
|
43
43
|
param 'Hash[Any, Any]', :hash
|
44
|
-
|
44
|
+
block_param 'Callable[1,1]', :block
|
45
45
|
end
|
46
46
|
|
47
47
|
dispatch :map_Enumerable_2 do
|
48
48
|
param 'Any', :enumerable
|
49
|
-
|
49
|
+
block_param 'Callable[2,2]', :block
|
50
50
|
end
|
51
51
|
|
52
52
|
dispatch :map_Enumerable_1 do
|
53
53
|
param 'Any', :enumerable
|
54
|
-
|
54
|
+
block_param 'Callable[1,1]', :block
|
55
55
|
end
|
56
56
|
|
57
|
-
def map_Hash_1(hash
|
58
|
-
hash.map {|x, y|
|
57
|
+
def map_Hash_1(hash)
|
58
|
+
hash.map {|x, y| yield([x, y]) }
|
59
59
|
end
|
60
60
|
|
61
|
-
def map_Hash_2(hash
|
62
|
-
hash.map {|x, y|
|
61
|
+
def map_Hash_2(hash)
|
62
|
+
hash.map {|x, y| yield(x, y) }
|
63
63
|
end
|
64
64
|
|
65
|
-
def map_Enumerable_1(enumerable
|
65
|
+
def map_Enumerable_1(enumerable)
|
66
66
|
result = []
|
67
67
|
index = 0
|
68
68
|
enum = asserted_enumerable(enumerable)
|
69
69
|
begin
|
70
|
-
loop { result <<
|
70
|
+
loop { result << yield(enum.next) }
|
71
71
|
rescue StopIteration
|
72
72
|
end
|
73
73
|
result
|
74
74
|
end
|
75
75
|
|
76
|
-
def map_Enumerable_2(enumerable
|
76
|
+
def map_Enumerable_2(enumerable)
|
77
77
|
result = []
|
78
78
|
index = 0
|
79
79
|
enum = asserted_enumerable(enumerable)
|
80
80
|
begin
|
81
81
|
loop do
|
82
|
-
result <<
|
82
|
+
result << yield(index, enum.next)
|
83
83
|
index = index +1
|
84
84
|
end
|
85
85
|
rescue StopIteration
|
@@ -65,23 +65,23 @@ Puppet::Functions.create_function(:reduce) do
|
|
65
65
|
|
66
66
|
dispatch :reduce_without_memo do
|
67
67
|
param 'Any', :enumerable
|
68
|
-
|
68
|
+
block_param 'Callable[2,2]', :block
|
69
69
|
end
|
70
70
|
|
71
71
|
dispatch :reduce_with_memo do
|
72
72
|
param 'Any', :enumerable
|
73
73
|
param 'Any', :memo
|
74
|
-
|
74
|
+
block_param 'Callable[2,2]', :block
|
75
75
|
end
|
76
76
|
|
77
|
-
def reduce_without_memo(enumerable
|
77
|
+
def reduce_without_memo(enumerable)
|
78
78
|
enum = asserted_enumerable(enumerable)
|
79
|
-
enum.reduce {|memo, x|
|
79
|
+
enum.reduce {|memo, x| yield(memo, x) }
|
80
80
|
end
|
81
81
|
|
82
|
-
def reduce_with_memo(enumerable, given_memo
|
82
|
+
def reduce_with_memo(enumerable, given_memo)
|
83
83
|
enum = asserted_enumerable(enumerable)
|
84
|
-
enum.reduce(given_memo) {|memo, x|
|
84
|
+
enum.reduce(given_memo) {|memo, x| yield(memo, x) }
|
85
85
|
end
|
86
86
|
|
87
87
|
def asserted_enumerable(obj)
|