puppet 4.7.1 → 4.8.0
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.
- data/Gemfile +0 -3
- data/MAINTAINERS +76 -0
- data/README.md +0 -6
- data/Rakefile +2 -2
- data/lib/puppet/agent.rb +3 -3
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/configurer.rb +2 -2
- data/lib/puppet/data_providers.rb +1 -0
- data/lib/puppet/data_providers/data_adapter.rb +1 -0
- data/lib/puppet/data_providers/data_function_support.rb +1 -0
- data/lib/puppet/data_providers/function_env_data_provider.rb +1 -0
- data/lib/puppet/data_providers/function_module_data_provider.rb +1 -0
- data/lib/puppet/data_providers/hiera_config.rb +1 -0
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +1 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +1 -0
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +1 -0
- data/lib/puppet/data_providers/hiera_support.rb +1 -2
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -0
- data/lib/puppet/defaults.rb +20 -1
- data/lib/puppet/environments.rb +5 -2
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/epp.rb +57 -11
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/functions.rb +23 -24
- data/lib/puppet/functions/alert.rb +14 -0
- data/lib/puppet/functions/binary_file.rb +25 -0
- data/lib/puppet/functions/break.rb +22 -0
- data/lib/puppet/functions/contain.rb +33 -0
- data/lib/puppet/functions/crit.rb +14 -0
- data/lib/puppet/functions/debug.rb +14 -0
- data/lib/puppet/functions/emerg.rb +14 -0
- data/lib/puppet/functions/epp.rb +1 -1
- data/lib/puppet/functions/err.rb +14 -0
- data/lib/puppet/functions/find_file.rb +31 -0
- data/lib/puppet/functions/include.rb +21 -0
- data/lib/puppet/functions/info.rb +14 -0
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/functions/next.rb +23 -0
- data/lib/puppet/functions/notice.rb +14 -0
- data/lib/puppet/functions/regsubst.rb +12 -16
- data/lib/puppet/functions/require.rb +37 -0
- data/lib/puppet/functions/return.rb +22 -0
- data/lib/puppet/functions/strftime.rb +35 -0
- data/lib/puppet/functions/warning.rb +14 -0
- data/lib/puppet/generate/models/type/type.rb +4 -0
- data/lib/puppet/generate/templates/type/pcore.erb +2 -1
- data/lib/puppet/indirector/face.rb +6 -1
- data/lib/puppet/network/http/error.rb +2 -2
- data/lib/puppet/network/http/handler.rb +2 -2
- data/lib/puppet/node/environment.rb +11 -0
- data/lib/puppet/parser/ast.rb +5 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +17 -4
- data/lib/puppet/parser/compiler.rb +29 -1
- data/lib/puppet/parser/functions.rb +6 -0
- data/lib/puppet/parser/functions/assert_type.rb +1 -1
- data/lib/puppet/parser/functions/binary_file.rb +24 -0
- data/lib/puppet/parser/functions/break.rb +39 -0
- data/lib/puppet/parser/functions/contain.rb +7 -15
- data/lib/puppet/parser/functions/defined.rb +2 -2
- data/lib/puppet/parser/functions/dig.rb +1 -1
- data/lib/puppet/parser/functions/each.rb +1 -1
- data/lib/puppet/parser/functions/epp.rb +2 -2
- data/lib/puppet/parser/functions/filter.rb +1 -1
- data/lib/puppet/parser/functions/find_file.rb +28 -0
- data/lib/puppet/parser/functions/hiera.rb +4 -4
- data/lib/puppet/parser/functions/hiera_array.rb +1 -1
- data/lib/puppet/parser/functions/hiera_hash.rb +1 -1
- data/lib/puppet/parser/functions/hiera_include.rb +1 -1
- data/lib/puppet/parser/functions/include.rb +4 -8
- data/lib/puppet/parser/functions/inline_epp.rb +1 -1
- data/lib/puppet/parser/functions/lest.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +4 -2
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -1
- data/lib/puppet/parser/functions/new.rb +414 -18
- data/lib/puppet/parser/functions/next.rb +38 -0
- data/lib/puppet/parser/functions/reduce.rb +1 -1
- data/lib/puppet/parser/functions/regsubst.rb +4 -2
- data/lib/puppet/parser/functions/require.rb +4 -27
- data/lib/puppet/parser/functions/return.rb +71 -0
- data/lib/puppet/parser/functions/reverse_each.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +13 -8
- data/lib/puppet/parser/functions/slice.rb +1 -1
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/functions/step.rb +1 -1
- data/lib/puppet/parser/functions/strftime.rb +185 -0
- data/lib/puppet/parser/functions/then.rb +1 -1
- data/lib/puppet/parser/functions/type.rb +1 -1
- data/lib/puppet/parser/functions/with.rb +3 -3
- data/lib/puppet/parser/resource.rb +8 -5
- data/lib/puppet/parser/scope.rb +1 -1
- data/lib/puppet/plugins/configuration.rb +8 -0
- data/lib/puppet/plugins/data_providers.rb +1 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +7 -28
- data/lib/puppet/plugins/data_providers/registry.rb +1 -0
- data/lib/puppet/pops.rb +4 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +36 -5
- data/lib/puppet/pops/evaluator/closure.rb +81 -12
- data/lib/puppet/pops/evaluator/compare_operator.rb +24 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +29 -5
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +53 -62
- data/lib/puppet/pops/evaluator/runtime3_support.rb +15 -6
- data/lib/puppet/pops/functions/dispatch.rb +9 -2
- data/lib/puppet/pops/functions/dispatcher.rb +3 -1
- data/lib/puppet/pops/functions/function.rb +19 -2
- data/lib/puppet/pops/issues.rb +9 -0
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/loader.rb +17 -0
- data/lib/puppet/pops/loader/static_loader.rb +0 -41
- data/lib/puppet/pops/lookup.rb +12 -0
- data/lib/puppet/pops/lookup/context.rb +86 -0
- data/lib/puppet/pops/lookup/explainer.rb +46 -6
- data/lib/puppet/pops/lookup/invocation.rb +19 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +20 -8
- data/lib/puppet/pops/model/model_label_provider.rb +3 -0
- data/lib/puppet/pops/model/model_meta.rb +2 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +14 -0
- data/lib/puppet/pops/parser/egrammar.ra +11 -6
- data/lib/puppet/pops/parser/eparser.rb +1112 -1086
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -2
- data/lib/puppet/pops/pcore.rb +1 -0
- data/lib/puppet/pops/puppet_stack.rb +3 -3
- data/lib/puppet/pops/resource/param.rb +5 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +8 -4
- data/lib/puppet/pops/resource/resource_type_set.pcore +1 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +19 -2
- data/lib/puppet/pops/serialization/abstract_writer.rb +16 -3
- data/lib/puppet/pops/serialization/deserializer.rb +5 -1
- data/lib/puppet/pops/serialization/extension.rb +2 -0
- data/lib/puppet/pops/serialization/json.rb +76 -26
- data/lib/puppet/pops/serialization/serializer.rb +5 -1
- data/lib/puppet/pops/serialization/time_factory.rb +2 -1
- data/lib/puppet/pops/time/timespan.rb +718 -0
- data/lib/puppet/pops/time/timestamp.rb +148 -0
- data/lib/puppet/pops/types/p_binary_type.rb +220 -0
- data/lib/puppet/pops/types/p_object_type.rb +12 -6
- data/lib/puppet/pops/types/p_sensitive_type.rb +5 -1
- data/lib/puppet/pops/types/p_timespan_type.rb +141 -0
- data/lib/puppet/pops/types/p_timestamp_type.rb +69 -0
- data/lib/puppet/pops/types/string_converter.rb +62 -0
- data/lib/puppet/pops/types/type_asserter.rb +1 -1
- data/lib/puppet/pops/types/type_calculator.rb +17 -3
- data/lib/puppet/pops/types/type_factory.rb +35 -1
- data/lib/puppet/pops/types/type_formatter.rb +64 -11
- data/lib/puppet/pops/types/type_mismatch_describer.rb +110 -61
- data/lib/puppet/pops/types/type_parser.rb +18 -4
- data/lib/puppet/pops/types/types.rb +98 -63
- data/lib/puppet/pops/validation.rb +9 -1
- data/lib/puppet/pops/validation/checker4_0.rb +7 -0
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/provider.rb +3 -6
- data/lib/puppet/provider/mcx/mcxcontent.rb +1 -1
- data/lib/puppet/provider/mount/parsed.rb +18 -4
- data/lib/puppet/provider/nameservice/directoryservice.rb +15 -7
- data/lib/puppet/provider/package/gem.rb +6 -1
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pkg.rb +5 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +10 -0
- data/lib/puppet/provider/service/launchd.rb +1 -0
- data/lib/puppet/provider/user/directoryservice.rb +6 -6
- data/lib/puppet/provider/yumrepo/inifile.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/resource.rb +54 -12
- data/lib/puppet/resource/capability_finder.rb +15 -9
- data/lib/puppet/resource/catalog.rb +25 -6
- data/lib/puppet/resource/type.rb +3 -1
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +12 -4
- data/lib/puppet/syntax_checkers/base64.rb +41 -0
- data/lib/puppet/syntax_checkers/json.rb +0 -2
- data/lib/puppet/transaction.rb +6 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +5 -0
- data/lib/puppet/transaction/report.rb +7 -2
- data/lib/puppet/type.rb +2 -1
- data/lib/puppet/type/file/checksum.rb +1 -0
- data/lib/puppet/type/file/content.rb +4 -4
- data/lib/puppet/type/mount.rb +44 -0
- data/lib/puppet/type/ssh_authorized_key.rb +1 -1
- data/lib/puppet/type/tidy.rb +3 -0
- data/lib/puppet/type/user.rb +12 -6
- data/lib/puppet/util/log.rb +25 -0
- data/lib/puppet/util/plist.rb +8 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_x.rb +7 -1
- data/spec/integration/application/apply_spec.rb +118 -0
- data/spec/integration/parser/compiler_spec.rb +28 -0
- data/spec/integration/parser/pcore_resource_spec.rb +40 -3
- data/spec/integration/provider/mount_spec.rb +2 -1
- data/spec/integration/util/windows/principal_spec.rb +2 -2
- data/spec/integration/util/windows/registry_spec.rb +4 -4
- data/spec/lib/puppet_spec/compiler.rb +5 -1
- data/spec/lib/puppet_spec/unindent.rb +5 -0
- data/spec/shared_contexts/types_setup.rb +6 -0
- data/spec/shared_examples/rhel_package_provider.rb +16 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/agent_spec.rb +11 -0
- data/spec/unit/application/lookup_spec.rb +94 -3
- data/spec/unit/capability_spec.rb +22 -0
- data/spec/unit/configurer_spec.rb +8 -0
- data/spec/unit/face/epp_face_spec.rb +22 -3
- data/spec/unit/functions/assert_type_spec.rb +3 -3
- data/spec/unit/functions/binary_file_spec.rb +46 -0
- data/spec/unit/functions/break_spec.rb +89 -0
- data/spec/unit/{parser/functions → functions}/contain_spec.rb +68 -3
- data/spec/unit/functions/find_file_spec.rb +69 -0
- data/spec/unit/functions/include_spec.rb +175 -0
- data/spec/unit/functions/logging_spec.rb +54 -0
- data/spec/unit/functions/lookup_spec.rb +3 -3
- data/spec/unit/functions/new_spec.rb +105 -5
- data/spec/unit/functions/next_spec.rb +93 -0
- data/spec/unit/functions/require_spec.rb +83 -0
- data/spec/unit/functions/return_spec.rb +105 -0
- data/spec/unit/{parser/functions → functions}/shared.rb +14 -11
- data/spec/unit/functions/strftime_spec.rb +152 -0
- data/spec/unit/functions4_spec.rb +22 -0
- data/spec/unit/indirector/face_spec.rb +10 -2
- data/spec/unit/network/http/error_spec.rb +1 -2
- data/spec/unit/network/http/handler_spec.rb +6 -5
- data/spec/unit/parser/functions/hiera_array_spec.rb +1 -1
- data/spec/unit/parser/functions/hiera_hash_spec.rb +1 -1
- data/spec/unit/parser/functions/hiera_include_spec.rb +1 -1
- data/spec/unit/parser/functions/hiera_spec.rb +1 -1
- data/spec/unit/parser/functions/lookup_spec.rb +1 -1
- data/spec/unit/parser/functions/regsubst_spec.rb +1 -1
- data/spec/unit/parser/functions/split_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +81 -1
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +170 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +29 -4
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +112 -4
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +12 -0
- data/spec/unit/pops/loaders/static_loader_spec.rb +0 -26
- data/spec/unit/pops/lookup/context_spec.rb +149 -0
- data/spec/unit/pops/parser/parse_functions_spec.rb +19 -0
- data/spec/unit/pops/parser/parse_lambda_spec.rb +19 -0
- data/spec/unit/pops/puppet_stack_spec.rb +1 -1
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +74 -0
- data/spec/unit/pops/serialization/packer_spec.rb +34 -14
- data/spec/unit/pops/serialization/serialization_spec.rb +67 -5
- data/spec/unit/pops/time/timespan_spec.rb +121 -0
- data/spec/unit/pops/types/p_binary_type_spec.rb +243 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +7 -7
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +1 -1
- data/spec/unit/pops/types/p_timespan_type_spec.rb +273 -0
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +311 -0
- data/spec/unit/pops/types/p_type_set_type_spec.rb +13 -13
- data/spec/unit/pops/types/ruby_generator_spec.rb +12 -12
- data/spec/unit/pops/types/string_converter_spec.rb +89 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +3 -3
- data/spec/unit/pops/types/type_calculator_spec.rb +113 -5
- data/spec/unit/pops/types/type_formatter_spec.rb +40 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +49 -38
- data/spec/unit/pops/types/type_parser_spec.rb +87 -4
- data/spec/unit/pops/types/types_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +23 -0
- data/spec/unit/provider/mount/parsed_spec.rb +47 -29
- data/spec/unit/provider/package/pkg_spec.rb +109 -99
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +1 -0
- data/spec/unit/provider/user/aix_spec.rb +1 -1
- data/spec/unit/provider/user/directoryservice_spec.rb +101 -30
- data/spec/unit/resource/capability_finder_spec.rb +29 -7
- data/spec/unit/resource/catalog_spec.rb +127 -0
- data/spec/unit/ssl/certificate_request_spec.rb +1 -1
- data/spec/unit/transaction/additional_resource_generator_spec.rb +30 -0
- data/spec/unit/transaction/persistence_spec.rb +1 -6
- data/spec/unit/transaction/report_spec.rb +23 -0
- data/spec/unit/transaction_spec.rb +38 -0
- data/spec/unit/type/mount_spec.rb +5 -0
- data/spec/unit/util/plist_spec.rb +14 -2
- metadata +71 -12
- data/spec/integration/parser/functions/require_spec.rb +0 -43
- data/spec/unit/parser/functions/include_spec.rb +0 -55
- data/spec/unit/parser/functions/require_spec.rb +0 -68
@@ -21,7 +21,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
21
21
|
|
22
22
|
$ puppet module install puppetlabs-vcsrepo
|
23
23
|
Preparing to install into /etc/puppetlabs/code/modules ...
|
24
|
-
Downloading from https://forgeapi.
|
24
|
+
Downloading from https://forgeapi.puppet.com ...
|
25
25
|
Installing -- do not interrupt ...
|
26
26
|
/etc/puppetlabs/code/modules
|
27
27
|
└── puppetlabs-vcsrepo (v0.0.4)
|
@@ -30,7 +30,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
30
30
|
|
31
31
|
$ puppet module install puppetlabs-vcsrepo --environment development
|
32
32
|
Preparing to install into /etc/puppetlabs/code/environments/development/modules ...
|
33
|
-
Downloading from https://forgeapi.
|
33
|
+
Downloading from https://forgeapi.puppet.com ...
|
34
34
|
Installing -- do not interrupt ...
|
35
35
|
/etc/puppetlabs/code/environments/development/modules
|
36
36
|
└── puppetlabs-vcsrepo (v0.0.4)
|
@@ -39,7 +39,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
39
39
|
|
40
40
|
$ puppet module install puppetlabs-vcsrepo -v 0.0.4
|
41
41
|
Preparing to install into /etc/puppetlabs/modules ...
|
42
|
-
Downloading from https://forgeapi.
|
42
|
+
Downloading from https://forgeapi.puppet.com ...
|
43
43
|
Installing -- do not interrupt ...
|
44
44
|
/etc/puppetlabs/code/modules
|
45
45
|
└── puppetlabs-vcsrepo (v0.0.4)
|
@@ -48,7 +48,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
48
48
|
|
49
49
|
$ puppet module install puppetlabs-vcsrepo --target-dir=/opt/puppetlabs/puppet/modules
|
50
50
|
Preparing to install into /opt/puppetlabs/puppet/modules ...
|
51
|
-
Downloading from https://forgeapi.
|
51
|
+
Downloading from https://forgeapi.puppet.com ...
|
52
52
|
Installing -- do not interrupt ...
|
53
53
|
/opt/puppetlabs/puppet/modules
|
54
54
|
└── puppetlabs-vcsrepo (v0.0.4)
|
@@ -57,7 +57,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
57
57
|
|
58
58
|
$ puppet module install puppetlabs-vcsrepo --target-dir=/opt/puppetlabs/puppet/modules --modulepath /etc/puppetlabs/code/modules
|
59
59
|
Preparing to install into /opt/puppetlabs/puppet/modules ...
|
60
|
-
Downloading from https://forgeapi.
|
60
|
+
Downloading from https://forgeapi.puppet.com ...
|
61
61
|
Installing -- do not interrupt ...
|
62
62
|
/opt/puppetlabs/puppet/modules
|
63
63
|
└── puppetlabs-vcsrepo (v0.0.4)
|
@@ -66,7 +66,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
66
66
|
|
67
67
|
$ puppet module install puppetlabs-vcsrepo-0.0.4.tar.gz
|
68
68
|
Preparing to install into /etc/puppetlabs/code/modules ...
|
69
|
-
Downloading from https://forgeapi.
|
69
|
+
Downloading from https://forgeapi.puppet.com ...
|
70
70
|
Installing -- do not interrupt ...
|
71
71
|
/etc/puppetlabs/code/modules
|
72
72
|
└── puppetlabs-vcsrepo (v0.0.4)
|
data/lib/puppet/functions.rb
CHANGED
@@ -162,7 +162,7 @@ module Puppet::Functions
|
|
162
162
|
end
|
163
163
|
|
164
164
|
# Creates a function in, or in a local loader under the given loader.
|
165
|
-
# This method should only be used when manually creating functions
|
165
|
+
# This method should only be used when manually creating functions
|
166
166
|
# for the sake of testing. Functions that are autoloaded should
|
167
167
|
# always use the `create_function` method and the autoloader will supply
|
168
168
|
# the correct loader.
|
@@ -258,8 +258,8 @@ module Puppet::Functions
|
|
258
258
|
def self.any_signature(from, to, names)
|
259
259
|
# Construct the type for the signature
|
260
260
|
# Tuple[Object, from, to]
|
261
|
-
|
262
|
-
[
|
261
|
+
param_types = Puppet::Pops::Types::PTupleType.new([Puppet::Pops::Types::PAnyType::DEFAULT], Puppet::Pops::Types::PIntegerType.new(from, to))
|
262
|
+
[Puppet::Pops::Types::PCallableType.new(param_types), names]
|
263
263
|
end
|
264
264
|
|
265
265
|
# Function
|
@@ -272,8 +272,7 @@ module Puppet::Functions
|
|
272
272
|
|
273
273
|
# @api private
|
274
274
|
def self.builder
|
275
|
-
|
276
|
-
DispatcherBuilder.new(dispatcher, Puppet::Pops::Types::TypeParser.singleton, @all_callables, loader)
|
275
|
+
DispatcherBuilder.new(dispatcher, Puppet::Pops::Types::TypeParser.singleton, Puppet::Pops::Types::PCallableType::DEFAULT, loader)
|
277
276
|
end
|
278
277
|
|
279
278
|
# Dispatch any calls that match the signature to the provided method name.
|
@@ -310,7 +309,7 @@ module Puppet::Functions
|
|
310
309
|
t = Puppet::Pops::Loader::TypeDefinitionInstantiator.create_from_model(type_alias_expr, aliases.loader)
|
311
310
|
|
312
311
|
# Also define a method for convenient access to the defined type alias.
|
313
|
-
# Since initial capital letter in Ruby means a Constant these names use a prefix of
|
312
|
+
# Since initial capital letter in Ruby means a Constant these names use a prefix of
|
314
313
|
# `type`. As an example, the type 'MyType' is accessed by calling `type_MyType`.
|
315
314
|
define_method("type_#{t.name}") { t }
|
316
315
|
end
|
@@ -466,6 +465,15 @@ module Puppet::Functions
|
|
466
465
|
@block_type = Puppet::Pops::Types::TypeFactory.optional(@block_type)
|
467
466
|
end
|
468
467
|
|
468
|
+
# Defines the return type. Defaults to 'Any'
|
469
|
+
# @param [String] type a reference to a Puppet Data Type
|
470
|
+
#
|
471
|
+
# @api public
|
472
|
+
def return_type(type)
|
473
|
+
raise ArgumentError, "Argument to 'return_type' must be a String reference to a Puppet Data Type. Got #{type.class}" unless type.is_a?(String)
|
474
|
+
@return_type = type
|
475
|
+
end
|
476
|
+
|
469
477
|
private
|
470
478
|
|
471
479
|
# @api private
|
@@ -505,8 +513,9 @@ module Puppet::Functions
|
|
505
513
|
@max = 0
|
506
514
|
@block_type = nil
|
507
515
|
@block_name = nil
|
516
|
+
@return_type = nil
|
508
517
|
self.instance_eval &block
|
509
|
-
callable_t = create_callable(@types, @block_type, @min, @max)
|
518
|
+
callable_t = create_callable(@types, @block_type, @return_type, @min, @max)
|
510
519
|
@dispatcher.add_dispatch(callable_t, meth_name, @names, @block_name, @injections, @weaving, @max == :default)
|
511
520
|
end
|
512
521
|
|
@@ -516,28 +525,19 @@ module Puppet::Functions
|
|
516
525
|
# Optional[Callable], Callable, or nil.
|
517
526
|
#
|
518
527
|
# @api private
|
519
|
-
def create_callable(types, block_type, from, to)
|
528
|
+
def create_callable(types, block_type, return_type, from, to)
|
520
529
|
mapped_types = types.map do |t|
|
521
530
|
@type_parser.parse(t, loader)
|
522
531
|
end
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
mapped_types << from
|
527
|
-
mapped_types << to
|
528
|
-
end
|
529
|
-
|
530
|
-
if block_type
|
531
|
-
mapped_types << block_type
|
532
|
-
end
|
533
|
-
|
534
|
-
Puppet::Pops::Types::TypeFactory.callable(*mapped_types)
|
532
|
+
param_types = Puppet::Pops::Types::PTupleType.new(mapped_types, from > 0 && from == to ? nil : Puppet::Pops::Types::PIntegerType.new(from, to))
|
533
|
+
return_type = @type_parser.parse(return_type, loader) unless return_type.nil?
|
534
|
+
Puppet::Pops::Types::PCallableType.new(param_types, block_type, return_type)
|
535
535
|
end
|
536
536
|
end
|
537
537
|
|
538
538
|
# The LocalTypeAliasBuilder is used by the 'local_types' method to collect the individual
|
539
539
|
# type aliases given by the function's author.
|
540
|
-
#
|
540
|
+
#
|
541
541
|
class LocalTypeAliasesBuilder
|
542
542
|
attr_reader :local_types, :parser, :loader
|
543
543
|
|
@@ -552,7 +552,7 @@ module Puppet::Functions
|
|
552
552
|
# in string form without the leading 'type' keyword.
|
553
553
|
# Calls to local_type must be made before the first parameter definition or an error will
|
554
554
|
# be raised.
|
555
|
-
#
|
555
|
+
#
|
556
556
|
# @param assignment_string [String] a string on the form 'AliasType = ExistingType'
|
557
557
|
# @api public
|
558
558
|
#
|
@@ -601,8 +601,7 @@ module Puppet::Functions
|
|
601
601
|
class InternalFunction < Function
|
602
602
|
# @api private
|
603
603
|
def self.builder
|
604
|
-
|
605
|
-
InternalDispatchBuilder.new(dispatcher, Puppet::Pops::Types::TypeParser.singleton, @all_callables, loader)
|
604
|
+
InternalDispatchBuilder.new(dispatcher, Puppet::Pops::Types::TypeParser.singleton, Puppet::Pops::Types::PCallableType::DEFAULT, loader)
|
606
605
|
end
|
607
606
|
|
608
607
|
# Defines class level injected attribute with reader method
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Log a message on the server at level alert.
|
2
|
+
Puppet::Functions.create_function(:alert, Puppet::Functions::InternalFunction) do
|
3
|
+
# @param values The values to log.
|
4
|
+
# @return [Undef]
|
5
|
+
dispatch :alert do
|
6
|
+
scope_param
|
7
|
+
repeated_param 'Any', :values
|
8
|
+
return_type 'Undef'
|
9
|
+
end
|
10
|
+
|
11
|
+
def alert(scope, *values)
|
12
|
+
Puppet::Util::Log.log_func(scope, :alert, values)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Loads a binary file from a module or file system and returns its contents as a Binary.
|
2
|
+
# (Documented in 3.x stub)
|
3
|
+
#
|
4
|
+
# @since 4.8.0
|
5
|
+
#
|
6
|
+
Puppet::Functions.create_function(:binary_file, Puppet::Functions::InternalFunction) do
|
7
|
+
dispatch :binary_file do
|
8
|
+
scope_param
|
9
|
+
param 'String', :path
|
10
|
+
end
|
11
|
+
|
12
|
+
def binary_file(scope, unresolved_path)
|
13
|
+
path = nil
|
14
|
+
found = Puppet::Parser::Files.find_file(unresolved_path, scope.compiler.environment)
|
15
|
+
if found && Puppet::FileSystem.exist?(found)
|
16
|
+
path = found
|
17
|
+
end
|
18
|
+
|
19
|
+
if path
|
20
|
+
Puppet::Pops::Types::PBinaryType::Binary.from_binary_string(Puppet::FileSystem.binread(path))
|
21
|
+
else
|
22
|
+
raise Puppet::ParseError, "binary_file(): The given file '#{path}' does not exist"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Make iteration break as if there were no more values to process
|
2
|
+
#
|
3
|
+
# @since 4.7.0
|
4
|
+
#
|
5
|
+
Puppet::Functions.create_function(:break) do
|
6
|
+
dispatch :break_impl do
|
7
|
+
end
|
8
|
+
|
9
|
+
def break_impl()
|
10
|
+
stacktrace = Puppet::Pops::PuppetStack.stacktrace()
|
11
|
+
if stacktrace.size > 0
|
12
|
+
file, line = stacktrace[0]
|
13
|
+
else
|
14
|
+
file = nil
|
15
|
+
line = nil
|
16
|
+
end
|
17
|
+
# PuppetStopIteration contains file and line and is a StopIteration exception
|
18
|
+
# so it can break a Ruby Kernel#loop or enumeration
|
19
|
+
#
|
20
|
+
raise Puppet::Pops::Evaluator::PuppetStopIteration.new(file, line)
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Called within a class definition, establishes a containment
|
2
|
+
# relationship with another class
|
3
|
+
# For documentation, see the 3.x stub
|
4
|
+
#
|
5
|
+
Puppet::Functions.create_function(:contain, Puppet::Functions::InternalFunction) do
|
6
|
+
dispatch :contain do
|
7
|
+
scope_param
|
8
|
+
# The function supports what the type system sees as Ruby runtime objects, and
|
9
|
+
# they cannot be parameterized to find what is actually valid instances.
|
10
|
+
# The validation is instead done in the function body itself via a call to
|
11
|
+
# `transform_and_assert_classnames` on the calling scope.
|
12
|
+
required_repeated_param 'Any', :names
|
13
|
+
end
|
14
|
+
|
15
|
+
def contain(scope, *classes)
|
16
|
+
# Make call patterns uniform and protected against nested arrays, also make
|
17
|
+
# names absolute if so desired.
|
18
|
+
classes = scope.transform_and_assert_classnames(classes.flatten)
|
19
|
+
|
20
|
+
result = classes.map {|name| Puppet::Pops::Types::TypeFactory.host_class(name) }
|
21
|
+
containing_resource = scope.resource
|
22
|
+
|
23
|
+
# This is the same as calling the include function but faster and does not rely on the include
|
24
|
+
# function.
|
25
|
+
(scope.compiler.evaluate_classes(classes, scope, false) || []).each do |resource|
|
26
|
+
if ! scope.catalog.edge?(containing_resource, resource)
|
27
|
+
scope.catalog.add_edge(containing_resource, resource)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
# Result is an Array[Class, 1, n] which allows chaining other operations
|
31
|
+
result
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Log a message on the server at level crit.
|
2
|
+
Puppet::Functions.create_function(:crit, Puppet::Functions::InternalFunction) do
|
3
|
+
# @param values The values to log.
|
4
|
+
# @return [Undef]
|
5
|
+
dispatch :crit do
|
6
|
+
scope_param
|
7
|
+
repeated_param 'Any', :values
|
8
|
+
return_type 'Undef'
|
9
|
+
end
|
10
|
+
|
11
|
+
def crit(scope, *values)
|
12
|
+
Puppet::Util::Log.log_func(scope, :crit, values)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Log a message on the server at level debug.
|
2
|
+
Puppet::Functions.create_function(:debug, Puppet::Functions::InternalFunction) do
|
3
|
+
# @param values The values to log.
|
4
|
+
# @return [Undef]
|
5
|
+
dispatch :debug do
|
6
|
+
scope_param
|
7
|
+
repeated_param 'Any', :values
|
8
|
+
return_type 'Undef'
|
9
|
+
end
|
10
|
+
|
11
|
+
def debug(scope, *values)
|
12
|
+
Puppet::Util::Log.log_func(scope, :debug, values)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Log a message on the server at level emerg.
|
2
|
+
Puppet::Functions.create_function(:emerg, Puppet::Functions::InternalFunction) do
|
3
|
+
# @param values The values to log.
|
4
|
+
# @return [Undef]
|
5
|
+
dispatch :emerg do
|
6
|
+
scope_param
|
7
|
+
repeated_param 'Any', :values
|
8
|
+
return_type 'Undef'
|
9
|
+
end
|
10
|
+
|
11
|
+
def emerg(scope, *values)
|
12
|
+
Puppet::Util::Log.log_func(scope, :emerg, values)
|
13
|
+
end
|
14
|
+
end
|
data/lib/puppet/functions/epp.rb
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
# template and pass the `docroot` and `virtual_docroot` parameters, call the `epp`
|
19
19
|
# function like this:
|
20
20
|
#
|
21
|
-
# `epp('apache/
|
21
|
+
# `epp('apache/vhost/_docroot.epp', { 'docroot' => '/var/www/html',
|
22
22
|
# 'virtual_docroot' => '/var/www/example' })`
|
23
23
|
#
|
24
24
|
# Puppet produces a syntax error if you pass more parameters than are declared in
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Log a message on the server at level err.
|
2
|
+
Puppet::Functions.create_function(:err, Puppet::Functions::InternalFunction) do
|
3
|
+
# @param values The values to log.
|
4
|
+
# @return [Undef]
|
5
|
+
dispatch :err do
|
6
|
+
scope_param
|
7
|
+
repeated_param 'Any', :values
|
8
|
+
return_type 'Undef'
|
9
|
+
end
|
10
|
+
|
11
|
+
def err(scope, *values)
|
12
|
+
Puppet::Util::Log.log_func(scope, :err, values)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Finds an existing file from a module and returns its path.
|
2
|
+
# (Documented in 3.x stub)
|
3
|
+
#
|
4
|
+
# @since 4.8.0
|
5
|
+
#
|
6
|
+
Puppet::Functions.create_function(:find_file, Puppet::Functions::InternalFunction) do
|
7
|
+
dispatch :find_file do
|
8
|
+
scope_param
|
9
|
+
repeated_param 'String', :paths
|
10
|
+
end
|
11
|
+
|
12
|
+
dispatch :find_file_array do
|
13
|
+
scope_param
|
14
|
+
repeated_param 'Array[String]', :paths_array
|
15
|
+
end
|
16
|
+
|
17
|
+
def find_file_array(scope, array)
|
18
|
+
find_file(scope, *array)
|
19
|
+
end
|
20
|
+
|
21
|
+
def find_file(scope, *args)
|
22
|
+
path = nil
|
23
|
+
args.each do |file|
|
24
|
+
found = Puppet::Parser::Files.find_file(file, scope.compiler.environment)
|
25
|
+
if found && Puppet::FileSystem.exist?(found)
|
26
|
+
return found
|
27
|
+
end
|
28
|
+
end
|
29
|
+
nil
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Include the specified classes
|
2
|
+
# For documentation see the 3.x stub
|
3
|
+
Puppet::Functions.create_function(:include, Puppet::Functions::InternalFunction) do
|
4
|
+
dispatch :include do
|
5
|
+
scope_param
|
6
|
+
# The function supports what the type system sees as Ruby runtime objects, and
|
7
|
+
# they cannot be parameterized to find what is actually valid instances.
|
8
|
+
# The validation is instead done in the function body itself via a call to
|
9
|
+
# `transform_and_assert_classnames` on the calling scope.
|
10
|
+
required_repeated_param 'Any', :names
|
11
|
+
end
|
12
|
+
|
13
|
+
def include(scope, *classes)
|
14
|
+
classes = scope.transform_and_assert_classnames(classes.flatten)
|
15
|
+
result = classes.map {|name| Puppet::Pops::Types::TypeFactory.host_class(name) }
|
16
|
+
scope.compiler.evaluate_classes(classes, scope, false)
|
17
|
+
|
18
|
+
# Result is an Array[Class, 1, n] which allows chaining other operations
|
19
|
+
result
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Log a message on the server at level info.
|
2
|
+
Puppet::Functions.create_function(:info, Puppet::Functions::InternalFunction) do
|
3
|
+
# @param values The values to log.
|
4
|
+
# @return [Undef]
|
5
|
+
dispatch :info do
|
6
|
+
scope_param
|
7
|
+
repeated_param 'Any', :values
|
8
|
+
return_type 'Undef'
|
9
|
+
end
|
10
|
+
|
11
|
+
def info(scope, *values)
|
12
|
+
Puppet::Util::Log.log_func(scope, :info, values)
|
13
|
+
end
|
14
|
+
end
|
data/lib/puppet/functions/new.rb
CHANGED
@@ -26,6 +26,6 @@ Puppet::Functions.create_function(:new, Puppet::Functions::InternalFunction) do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def assert_type(type, value)
|
29
|
-
Puppet::Pops::Types::TypeAsserter.assert_instance_of('new()
|
29
|
+
Puppet::Pops::Types::TypeAsserter.assert_instance_of(['Converted value from %s.new()', type], type, value)
|
30
30
|
end
|
31
31
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Make iteration continue with the next value optionally given a value for this iteration.
|
2
|
+
# If a value is not given it defaults to `undef`
|
3
|
+
#
|
4
|
+
# @since 4.7.0
|
5
|
+
#
|
6
|
+
Puppet::Functions.create_function(:next) do
|
7
|
+
dispatch :next_impl do
|
8
|
+
optional_param 'Any', :value
|
9
|
+
end
|
10
|
+
|
11
|
+
def next_impl(value = nil)
|
12
|
+
stacktrace = Puppet::Pops::PuppetStack.stacktrace()
|
13
|
+
if stacktrace.size > 0
|
14
|
+
file, line = stacktrace[0]
|
15
|
+
else
|
16
|
+
file = nil
|
17
|
+
line = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
exc = Puppet::Pops::Evaluator::Next.new(value, file, line)
|
21
|
+
raise exc
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Log a message on the server at level notice.
|
2
|
+
Puppet::Functions.create_function(:notice, Puppet::Functions::InternalFunction) do
|
3
|
+
# @param values The values to log.
|
4
|
+
# @return [Undef]
|
5
|
+
dispatch :notice do
|
6
|
+
scope_param
|
7
|
+
repeated_param 'Any', :values
|
8
|
+
return_type 'Undef'
|
9
|
+
end
|
10
|
+
|
11
|
+
def notice(scope, *values)
|
12
|
+
Puppet::Util::Log.log_func(scope, :notice, values)
|
13
|
+
end
|
14
|
+
end
|