openvox 7.37.1 → 8.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -3
- data/Gemfile +17 -12
- data/README.md +25 -30
- data/Rakefile +43 -33
- data/bin/puppet +1 -0
- data/examples/hiera/README.md +68 -57
- data/examples/hiera/data/common.yaml +12 -0
- data/examples/hiera/data/dc1.yaml +6 -0
- data/examples/hiera/hiera.yaml +15 -0
- data/examples/hiera/modules/ntp/data/common.yaml +4 -0
- data/examples/hiera/modules/ntp/hiera.yaml +9 -0
- data/examples/hiera/modules/ntp/manifests/config.pp +16 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
- data/examples/hiera/modules/users/manifests/common.pp +7 -2
- data/examples/hiera/modules/users/manifests/dc1.pp +7 -2
- data/examples/hiera/site.pp +1 -1
- data/ext/build_defaults.yaml +1 -1
- data/ext/windows/service/daemon.rb +54 -60
- data/install.rb +21 -92
- data/lib/hiera/puppet_function.rb +8 -6
- data/lib/hiera/scope.rb +15 -13
- data/lib/hiera_puppet.rb +4 -6
- data/lib/puppet/agent/disabler.rb +5 -3
- data/lib/puppet/agent/locker.rb +2 -2
- data/lib/puppet/agent.rb +6 -4
- data/lib/puppet/application/agent.rb +305 -301
- data/lib/puppet/application/apply.rb +124 -117
- data/lib/puppet/application/catalog.rb +2 -0
- data/lib/puppet/application/config.rb +2 -0
- data/lib/puppet/application/describe.rb +50 -48
- data/lib/puppet/application/device.rb +224 -223
- data/lib/puppet/application/doc.rb +57 -58
- data/lib/puppet/application/epp.rb +2 -0
- data/lib/puppet/application/face_base.rb +18 -17
- data/lib/puppet/application/facts.rb +2 -0
- data/lib/puppet/application/filebucket.rb +174 -168
- data/lib/puppet/application/generate.rb +3 -1
- data/lib/puppet/application/help.rb +2 -0
- data/lib/puppet/application/indirection_base.rb +2 -0
- data/lib/puppet/application/lookup.rb +181 -181
- data/lib/puppet/application/module.rb +2 -0
- data/lib/puppet/application/node.rb +2 -0
- data/lib/puppet/application/parser.rb +2 -0
- data/lib/puppet/application/plugin.rb +2 -0
- data/lib/puppet/application/report.rb +2 -0
- data/lib/puppet/application/resource.rb +106 -96
- data/lib/puppet/application/script.rb +76 -74
- data/lib/puppet/application/ssl.rb +100 -92
- data/lib/puppet/application.rb +32 -32
- data/lib/puppet/application_support.rb +3 -2
- data/lib/puppet/coercion.rb +5 -3
- data/lib/puppet/compilable_resource_type.rb +4 -2
- data/lib/puppet/concurrent/lock.rb +2 -3
- data/lib/puppet/concurrent/synchronized.rb +2 -2
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/concurrent.rb +2 -0
- data/lib/puppet/configurer/downloader.rb +11 -5
- data/lib/puppet/configurer/fact_handler.rb +17 -16
- data/lib/puppet/configurer/plugin_handler.rb +2 -0
- data/lib/puppet/configurer.rb +40 -36
- data/lib/puppet/confine/any.rb +3 -1
- data/lib/puppet/confine/boolean.rb +3 -1
- data/lib/puppet/confine/exists.rb +3 -1
- data/lib/puppet/confine/false.rb +3 -1
- data/lib/puppet/confine/feature.rb +3 -2
- data/lib/puppet/confine/true.rb +3 -1
- data/lib/puppet/confine/variable.rb +4 -2
- data/lib/puppet/confine.rb +5 -2
- data/lib/puppet/confine_collection.rb +6 -3
- data/lib/puppet/confiner.rb +5 -3
- data/lib/puppet/context/trusted_information.rb +12 -10
- data/lib/puppet/context.rb +2 -0
- data/lib/puppet/daemon.rb +26 -10
- data/lib/puppet/data_binding.rb +3 -1
- data/lib/puppet/datatypes/error.rb +3 -1
- data/lib/puppet/datatypes/impl/error.rb +2 -0
- data/lib/puppet/datatypes.rb +12 -7
- data/lib/puppet/defaults.rb +164 -125
- data/lib/puppet/environments.rb +13 -15
- data/lib/puppet/error.rb +19 -15
- data/lib/puppet/etc.rb +10 -5
- data/lib/puppet/external/dot.rb +65 -75
- data/lib/puppet/face/catalog/select.rb +4 -2
- data/lib/puppet/face/catalog.rb +7 -5
- data/lib/puppet/face/config.rb +30 -31
- data/lib/puppet/face/epp.rb +25 -26
- data/lib/puppet/face/facts.rb +8 -6
- data/lib/puppet/face/generate.rb +5 -2
- data/lib/puppet/face/help/action.erb +0 -1
- data/lib/puppet/face/help/face.erb +0 -1
- data/lib/puppet/face/help/global.erb +1 -1
- data/lib/puppet/face/help.rb +80 -62
- data/lib/puppet/face/module/changes.rb +4 -3
- data/lib/puppet/face/module/install.rb +7 -4
- data/lib/puppet/face/module/list.rb +52 -53
- data/lib/puppet/face/module/uninstall.rb +2 -0
- data/lib/puppet/face/module/upgrade.rb +5 -3
- data/lib/puppet/face/module.rb +3 -1
- data/lib/puppet/face/node/clean.rb +4 -2
- data/lib/puppet/face/node.rb +5 -3
- data/lib/puppet/face/parser.rb +18 -19
- data/lib/puppet/face/plugin.rb +10 -8
- data/lib/puppet/face/report.rb +10 -10
- data/lib/puppet/face/resource.rb +2 -0
- data/lib/puppet/face.rb +2 -0
- data/lib/puppet/facter_impl.rb +1 -1
- data/lib/puppet/feature/base.rb +13 -13
- data/lib/puppet/feature/bolt.rb +2 -0
- data/lib/puppet/feature/cfpropertylist.rb +2 -0
- data/lib/puppet/feature/eventlog.rb +2 -0
- data/lib/puppet/feature/hiera_eyaml.rb +2 -0
- data/lib/puppet/feature/hocon.rb +2 -0
- data/lib/puppet/feature/libuser.rb +5 -3
- data/lib/puppet/feature/msgpack.rb +2 -0
- data/lib/puppet/feature/pe_license.rb +4 -2
- data/lib/puppet/feature/pson.rb +6 -0
- data/lib/puppet/feature/selinux.rb +2 -0
- data/lib/puppet/feature/ssh.rb +3 -1
- data/lib/puppet/feature/telnet.rb +3 -7
- data/lib/puppet/feature/zlib.rb +3 -1
- data/lib/puppet/ffi/posix/constants.rb +3 -1
- data/lib/puppet/ffi/posix/functions.rb +2 -1
- data/lib/puppet/ffi/posix.rb +2 -0
- data/lib/puppet/ffi/windows/api_types.rb +3 -1
- data/lib/puppet/ffi/windows/constants.rb +80 -78
- data/lib/puppet/ffi/windows/functions.rb +76 -75
- data/lib/puppet/ffi/windows/structs.rb +6 -5
- data/lib/puppet/ffi/windows.rb +2 -0
- data/lib/puppet/file_bucket/dipper.rb +20 -11
- data/lib/puppet/file_bucket/file.rb +8 -6
- data/lib/puppet/file_bucket.rb +2 -0
- data/lib/puppet/file_serving/base.rb +17 -9
- data/lib/puppet/file_serving/configuration/parser.rb +13 -10
- data/lib/puppet/file_serving/configuration.rb +10 -7
- data/lib/puppet/file_serving/content.rb +2 -0
- data/lib/puppet/file_serving/fileset.rb +23 -19
- data/lib/puppet/file_serving/http_metadata.rb +3 -4
- data/lib/puppet/file_serving/metadata.rb +26 -23
- data/lib/puppet/file_serving/mount/file.rb +15 -11
- data/lib/puppet/file_serving/mount/locales.rb +5 -5
- data/lib/puppet/file_serving/mount/modules.rb +3 -0
- data/lib/puppet/file_serving/mount/pluginfacts.rb +5 -5
- data/lib/puppet/file_serving/mount/plugins.rb +5 -5
- data/lib/puppet/file_serving/mount/scripts.rb +3 -0
- data/lib/puppet/file_serving/mount/tasks.rb +3 -0
- data/lib/puppet/file_serving/mount.rb +4 -1
- data/lib/puppet/file_serving/terminus_helper.rb +2 -0
- data/lib/puppet/file_serving/terminus_selector.rb +3 -1
- data/lib/puppet/file_serving.rb +2 -0
- data/lib/puppet/file_system/file_impl.rb +9 -8
- data/lib/puppet/file_system/jruby.rb +2 -0
- data/lib/puppet/file_system/memory_file.rb +3 -0
- data/lib/puppet/file_system/memory_impl.rb +5 -1
- data/lib/puppet/file_system/path_pattern.rb +4 -2
- data/lib/puppet/file_system/posix.rb +7 -2
- data/lib/puppet/file_system/uniquefile.rb +33 -31
- data/lib/puppet/file_system/windows.rb +33 -22
- data/lib/puppet/file_system.rb +5 -3
- data/lib/puppet/forge/cache.rb +4 -3
- data/lib/puppet/forge/errors.rb +3 -4
- data/lib/puppet/forge/repository.rb +6 -3
- data/lib/puppet/forge.rb +20 -22
- data/lib/puppet/functions/abs.rb +7 -4
- data/lib/puppet/functions/alert.rb +2 -0
- data/lib/puppet/functions/all.rb +3 -1
- data/lib/puppet/functions/annotate.rb +2 -0
- data/lib/puppet/functions/any.rb +3 -1
- data/lib/puppet/functions/assert_type.rb +5 -2
- data/lib/puppet/functions/binary_file.rb +4 -1
- data/lib/puppet/functions/break.rb +4 -2
- data/lib/puppet/functions/call.rb +2 -1
- data/lib/puppet/functions/camelcase.rb +4 -3
- data/lib/puppet/functions/capitalize.rb +4 -3
- data/lib/puppet/functions/ceiling.rb +3 -2
- data/lib/puppet/functions/chomp.rb +3 -2
- data/lib/puppet/functions/chop.rb +3 -2
- data/lib/puppet/functions/compare.rb +5 -3
- data/lib/puppet/functions/contain.rb +7 -4
- data/lib/puppet/functions/convert_to.rb +2 -0
- data/lib/puppet/functions/crit.rb +2 -0
- data/lib/puppet/functions/debug.rb +2 -0
- data/lib/puppet/functions/defined.rb +10 -6
- data/lib/puppet/functions/dig.rb +13 -10
- data/lib/puppet/functions/downcase.rb +4 -2
- data/lib/puppet/functions/each.rb +2 -0
- data/lib/puppet/functions/emerg.rb +2 -0
- data/lib/puppet/functions/empty.rb +2 -0
- data/lib/puppet/functions/epp.rb +2 -1
- data/lib/puppet/functions/err.rb +2 -0
- data/lib/puppet/functions/eyaml_lookup_key.rb +17 -16
- data/lib/puppet/functions/filter.rb +8 -7
- data/lib/puppet/functions/find_file.rb +6 -0
- data/lib/puppet/functions/find_template.rb +2 -0
- data/lib/puppet/functions/flatten.rb +2 -0
- data/lib/puppet/functions/floor.rb +3 -2
- data/lib/puppet/functions/get.rb +4 -2
- data/lib/puppet/functions/getvar.rb +7 -5
- data/lib/puppet/functions/group_by.rb +2 -2
- data/lib/puppet/functions/hiera.rb +2 -0
- data/lib/puppet/functions/hiera_array.rb +2 -0
- data/lib/puppet/functions/hiera_hash.rb +2 -0
- data/lib/puppet/functions/hiera_include.rb +3 -0
- data/lib/puppet/functions/hocon_data.rb +5 -5
- data/lib/puppet/functions/import.rb +3 -1
- data/lib/puppet/functions/include.rb +5 -2
- data/lib/puppet/functions/index.rb +5 -4
- data/lib/puppet/functions/info.rb +2 -0
- data/lib/puppet/functions/inline_epp.rb +2 -1
- data/lib/puppet/functions/join.rb +4 -2
- data/lib/puppet/functions/json_data.rb +6 -6
- data/lib/puppet/functions/keys.rb +2 -0
- data/lib/puppet/functions/length.rb +2 -1
- data/lib/puppet/functions/lest.rb +2 -0
- data/lib/puppet/functions/lookup.rb +12 -12
- data/lib/puppet/functions/lstrip.rb +3 -2
- data/lib/puppet/functions/map.rb +4 -2
- data/lib/puppet/functions/match.rb +8 -5
- data/lib/puppet/functions/max.rb +75 -8
- data/lib/puppet/functions/min.rb +75 -8
- data/lib/puppet/functions/module_directory.rb +2 -0
- data/lib/puppet/functions/new.rb +5 -3
- data/lib/puppet/functions/next.rb +3 -1
- data/lib/puppet/functions/notice.rb +2 -0
- data/lib/puppet/functions/reduce.rb +8 -11
- data/lib/puppet/functions/regsubst.rb +15 -16
- data/lib/puppet/functions/require.rb +7 -3
- data/lib/puppet/functions/return.rb +2 -0
- data/lib/puppet/functions/reverse_each.rb +2 -0
- data/lib/puppet/functions/round.rb +2 -0
- data/lib/puppet/functions/rstrip.rb +3 -2
- data/lib/puppet/functions/scanf.rb +2 -0
- data/lib/puppet/functions/size.rb +2 -2
- data/lib/puppet/functions/slice.rb +4 -1
- data/lib/puppet/functions/sort.rb +2 -0
- data/lib/puppet/functions/split.rb +2 -0
- data/lib/puppet/functions/step.rb +2 -0
- data/lib/puppet/functions/strftime.rb +5 -3
- data/lib/puppet/functions/strip.rb +3 -2
- data/lib/puppet/functions/then.rb +3 -0
- data/lib/puppet/functions/tree_each.rb +4 -3
- data/lib/puppet/functions/type.rb +2 -0
- data/lib/puppet/functions/unique.rb +12 -9
- data/lib/puppet/functions/unwrap.rb +2 -0
- data/lib/puppet/functions/upcase.rb +4 -2
- data/lib/puppet/functions/values.rb +2 -0
- data/lib/puppet/functions/versioncmp.rb +2 -1
- data/lib/puppet/functions/warning.rb +2 -0
- data/lib/puppet/functions/with.rb +2 -0
- data/lib/puppet/functions/yaml_data.rb +13 -13
- data/lib/puppet/functions.rb +57 -61
- data/lib/puppet/generate/models/type/property.rb +4 -1
- data/lib/puppet/generate/models/type/type.rb +5 -2
- data/lib/puppet/generate/type.rb +11 -5
- data/lib/puppet/gettext/config.rb +16 -9
- data/lib/puppet/gettext/module_translations.rb +2 -1
- data/lib/puppet/gettext/stubs.rb +2 -0
- data/lib/puppet/graph/key.rb +2 -0
- data/lib/puppet/graph/prioritizer.rb +2 -0
- data/lib/puppet/graph/rb_tree_map.rb +43 -24
- data/lib/puppet/graph/relationship_graph.rb +31 -29
- data/lib/puppet/graph/sequential_prioritizer.rb +2 -0
- data/lib/puppet/graph/simple_graph.rb +63 -57
- data/lib/puppet/graph.rb +2 -0
- data/lib/puppet/http/client.rb +10 -6
- data/lib/puppet/http/dns.rb +12 -12
- data/lib/puppet/http/errors.rb +4 -2
- data/lib/puppet/http/external_client.rb +4 -3
- data/lib/puppet/http/factory.rb +3 -1
- data/lib/puppet/http/pool.rb +3 -1
- data/lib/puppet/http/pool_entry.rb +2 -0
- data/lib/puppet/http/proxy.rb +21 -19
- data/lib/puppet/http/redirector.rb +5 -3
- data/lib/puppet/http/resolver/server_list.rb +5 -4
- data/lib/puppet/http/resolver/settings.rb +2 -1
- data/lib/puppet/http/resolver/srv.rb +2 -1
- data/lib/puppet/http/resolver.rb +4 -2
- data/lib/puppet/http/response.rb +2 -0
- data/lib/puppet/http/response_converter.rb +4 -3
- data/lib/puppet/http/response_net_http.rb +2 -1
- data/lib/puppet/http/retry_after_handler.rb +4 -3
- data/lib/puppet/http/service/ca.rb +37 -5
- data/lib/puppet/http/service/compiler.rb +13 -10
- data/lib/puppet/http/service/file_server.rb +5 -3
- data/lib/puppet/http/service/puppetserver.rb +3 -2
- data/lib/puppet/http/service/report.rb +5 -7
- data/lib/puppet/http/service.rb +17 -22
- data/lib/puppet/http/session.rb +6 -4
- data/lib/puppet/http/site.rb +3 -1
- data/lib/puppet/http.rb +4 -2
- data/lib/puppet/indirector/catalog/compiler.rb +81 -80
- data/lib/puppet/indirector/catalog/json.rb +2 -0
- data/lib/puppet/indirector/catalog/msgpack.rb +2 -0
- data/lib/puppet/indirector/catalog/rest.rb +2 -0
- data/lib/puppet/indirector/catalog/store_configs.rb +3 -3
- data/lib/puppet/indirector/catalog/yaml.rb +2 -0
- data/lib/puppet/indirector/code.rb +2 -0
- data/lib/puppet/indirector/data_binding/hiera.rb +2 -1
- data/lib/puppet/indirector/data_binding/none.rb +2 -0
- data/lib/puppet/indirector/direct_file_server.rb +4 -1
- data/lib/puppet/indirector/envelope.rb +2 -0
- data/lib/puppet/indirector/errors.rb +2 -0
- data/lib/puppet/indirector/exec.rb +5 -3
- data/lib/puppet/indirector/face.rb +17 -28
- data/lib/puppet/indirector/fact_search.rb +4 -2
- data/lib/puppet/indirector/facts/facter.rb +10 -7
- data/lib/puppet/indirector/facts/json.rb +4 -2
- data/lib/puppet/indirector/facts/memory.rb +2 -0
- data/lib/puppet/indirector/facts/network_device.rb +2 -0
- data/lib/puppet/indirector/facts/rest.rb +2 -0
- data/lib/puppet/indirector/facts/store_configs.rb +3 -2
- data/lib/puppet/indirector/facts/yaml.rb +2 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +33 -27
- data/lib/puppet/indirector/file_bucket_file/rest.rb +6 -3
- data/lib/puppet/indirector/file_bucket_file/selector.rb +2 -1
- data/lib/puppet/indirector/file_content/file.rb +2 -0
- data/lib/puppet/indirector/file_content/file_server.rb +2 -0
- data/lib/puppet/indirector/file_content/rest.rb +3 -1
- data/lib/puppet/indirector/file_content/selector.rb +2 -0
- data/lib/puppet/indirector/file_content.rb +2 -0
- data/lib/puppet/indirector/file_metadata/file.rb +2 -0
- data/lib/puppet/indirector/file_metadata/file_server.rb +2 -0
- data/lib/puppet/indirector/file_metadata/http.rb +4 -2
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -1
- data/lib/puppet/indirector/file_metadata/selector.rb +2 -0
- data/lib/puppet/indirector/file_metadata.rb +2 -0
- data/lib/puppet/indirector/file_server.rb +3 -0
- data/lib/puppet/indirector/generic_http.rb +2 -0
- data/lib/puppet/indirector/hiera.rb +8 -7
- data/lib/puppet/indirector/indirection.rb +50 -41
- data/lib/puppet/indirector/json.rb +9 -6
- data/lib/puppet/indirector/memory.rb +5 -2
- data/lib/puppet/indirector/msgpack.rb +11 -7
- data/lib/puppet/indirector/node/exec.rb +6 -6
- data/lib/puppet/indirector/node/json.rb +2 -1
- data/lib/puppet/indirector/node/memory.rb +2 -0
- data/lib/puppet/indirector/node/msgpack.rb +2 -0
- data/lib/puppet/indirector/node/plain.rb +2 -0
- data/lib/puppet/indirector/node/rest.rb +2 -0
- data/lib/puppet/indirector/node/store_configs.rb +3 -3
- data/lib/puppet/indirector/node/yaml.rb +2 -0
- data/lib/puppet/indirector/none.rb +3 -2
- data/lib/puppet/indirector/plain.rb +2 -0
- data/lib/puppet/indirector/report/json.rb +4 -2
- data/lib/puppet/indirector/report/msgpack.rb +3 -1
- data/lib/puppet/indirector/report/processor.rb +3 -0
- data/lib/puppet/indirector/report/rest.rb +2 -13
- data/lib/puppet/indirector/report/yaml.rb +4 -2
- data/lib/puppet/indirector/request.rb +15 -12
- data/lib/puppet/indirector/resource/ral.rb +10 -10
- data/lib/puppet/indirector/resource/store_configs.rb +3 -1
- data/lib/puppet/indirector/resource/validator.rb +2 -0
- data/lib/puppet/indirector/rest.rb +3 -1
- data/lib/puppet/indirector/store_configs.rb +2 -0
- data/lib/puppet/indirector/terminus.rb +8 -4
- data/lib/puppet/indirector/yaml.rb +7 -5
- data/lib/puppet/indirector.rb +3 -0
- data/lib/puppet/info_service/class_information_service.rb +16 -17
- data/lib/puppet/info_service/plan_information_service.rb +5 -3
- data/lib/puppet/info_service/task_information_service.rb +10 -9
- data/lib/puppet/info_service.rb +1 -0
- data/lib/puppet/interface/action.rb +46 -42
- data/lib/puppet/interface/action_builder.rb +12 -6
- data/lib/puppet/interface/action_manager.rb +9 -6
- data/lib/puppet/interface/documentation.rb +40 -34
- data/lib/puppet/interface/face_collection.rb +18 -14
- data/lib/puppet/interface/option.rb +23 -11
- data/lib/puppet/interface/option_builder.rb +14 -9
- data/lib/puppet/interface/option_manager.rb +12 -10
- data/lib/puppet/interface.rb +9 -8
- data/lib/puppet/loaders.rb +2 -1
- data/lib/puppet/metatype/manager.rb +16 -15
- data/lib/puppet/module/plan.rb +22 -15
- data/lib/puppet/module/task.rb +33 -28
- data/lib/puppet/module.rb +59 -47
- data/lib/puppet/module_tool/applications/application.rb +17 -12
- data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
- data/lib/puppet/module_tool/applications/installer.rb +78 -87
- data/lib/puppet/module_tool/applications/uninstaller.rb +24 -22
- data/lib/puppet/module_tool/applications/unpacker.rb +11 -9
- data/lib/puppet/module_tool/applications/upgrader.rb +66 -60
- data/lib/puppet/module_tool/applications.rb +2 -0
- data/lib/puppet/module_tool/checksums.rb +4 -3
- data/lib/puppet/module_tool/dependency.rb +5 -4
- data/lib/puppet/module_tool/errors/base.rb +3 -1
- data/lib/puppet/module_tool/errors/installer.rb +6 -5
- data/lib/puppet/module_tool/errors/shared.rb +16 -15
- data/lib/puppet/module_tool/errors/uninstaller.rb +3 -2
- data/lib/puppet/module_tool/errors/upgrader.rb +4 -3
- data/lib/puppet/module_tool/errors.rb +2 -0
- data/lib/puppet/module_tool/install_directory.rb +8 -5
- data/lib/puppet/module_tool/installed_modules.rb +5 -2
- data/lib/puppet/module_tool/local_tarball.rb +10 -8
- data/lib/puppet/module_tool/metadata.rb +36 -30
- data/lib/puppet/module_tool/shared_behaviors.rb +61 -43
- data/lib/puppet/module_tool/tar/gnu.rb +12 -8
- data/lib/puppet/module_tool/tar/mini.rb +6 -4
- data/lib/puppet/module_tool/tar.rb +4 -2
- data/lib/puppet/module_tool.rb +11 -11
- data/lib/puppet/network/authconfig.rb +2 -0
- data/lib/puppet/network/authorization.rb +2 -0
- data/lib/puppet/network/client_request.rb +7 -4
- data/lib/puppet/network/format.rb +9 -3
- data/lib/puppet/network/format_handler.rb +9 -7
- data/lib/puppet/network/format_support.rb +8 -7
- data/lib/puppet/network/formats.rb +34 -25
- data/lib/puppet/network/http/api/indirected_routes.rb +38 -45
- data/lib/puppet/network/http/api/indirection_type.rb +2 -1
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -1
- data/lib/puppet/network/http/api/master/v3.rb +2 -1
- data/lib/puppet/network/http/api/master.rb +2 -0
- data/lib/puppet/network/http/api/server/v3/environments.rb +21 -15
- data/lib/puppet/network/http/api/server/v3.rb +14 -13
- data/lib/puppet/network/http/api/server.rb +2 -0
- data/lib/puppet/network/http/api.rb +20 -18
- data/lib/puppet/network/http/connection.rb +6 -4
- data/lib/puppet/network/http/error.rb +5 -3
- data/lib/puppet/network/http/handler.rb +12 -14
- data/lib/puppet/network/http/issues.rb +2 -0
- data/lib/puppet/network/http/memory_response.rb +3 -1
- data/lib/puppet/network/http/request.rb +22 -10
- data/lib/puppet/network/http/response.rb +2 -0
- data/lib/puppet/network/http/route.rb +14 -11
- data/lib/puppet/network/http.rb +2 -0
- data/lib/puppet/network/http_pool.rb +4 -3
- data/lib/puppet/network/uri.rb +2 -0
- data/lib/puppet/network.rb +2 -0
- data/lib/puppet/node/environment.rb +36 -33
- data/lib/puppet/node/facts.rb +10 -10
- data/lib/puppet/node/server_facts.rb +6 -6
- data/lib/puppet/node.rb +12 -12
- data/lib/puppet/pal/catalog_compiler.rb +2 -3
- data/lib/puppet/pal/compiler.rb +11 -6
- data/lib/puppet/pal/function_signature.rb +5 -3
- data/lib/puppet/pal/json_catalog_encoder.rb +7 -2
- data/lib/puppet/pal/pal_api.rb +2 -0
- data/lib/puppet/pal/pal_impl.rb +103 -108
- data/lib/puppet/pal/plan_signature.rb +4 -2
- data/lib/puppet/pal/script_compiler.rb +4 -2
- data/lib/puppet/pal/task_signature.rb +15 -9
- data/lib/puppet/parameter/boolean.rb +2 -0
- data/lib/puppet/parameter/package_options.rb +3 -1
- data/lib/puppet/parameter/path.rb +7 -3
- data/lib/puppet/parameter/value.rb +5 -3
- data/lib/puppet/parameter/value_collection.rb +17 -16
- data/lib/puppet/parameter.rb +17 -16
- data/lib/puppet/parser/abstract_compiler.rb +2 -3
- data/lib/puppet/parser/ast/block_expression.rb +4 -2
- data/lib/puppet/parser/ast/branch.rb +2 -0
- data/lib/puppet/parser/ast/hostclass.rb +4 -2
- data/lib/puppet/parser/ast/leaf.rb +3 -0
- data/lib/puppet/parser/ast/node.rb +2 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +13 -13
- data/lib/puppet/parser/ast/resource.rb +8 -8
- data/lib/puppet/parser/ast/resource_instance.rb +3 -0
- data/lib/puppet/parser/ast/resourceparam.rb +9 -7
- data/lib/puppet/parser/ast/top_level_construct.rb +2 -0
- data/lib/puppet/parser/ast.rb +16 -15
- data/lib/puppet/parser/catalog_compiler.rb +3 -3
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +4 -2
- data/lib/puppet/parser/compiler/catalog_validator.rb +2 -0
- data/lib/puppet/parser/compiler.rb +45 -44
- data/lib/puppet/parser/e4_parser_adapter.rb +17 -16
- data/lib/puppet/parser/files.rb +8 -6
- data/lib/puppet/parser/functions/assert_type.rb +43 -41
- data/lib/puppet/parser/functions/binary_file.rb +16 -14
- data/lib/puppet/parser/functions/break.rb +29 -27
- data/lib/puppet/parser/functions/contain.rb +3 -1
- data/lib/puppet/parser/functions/create_resources.rb +18 -14
- data/lib/puppet/parser/functions/defined.rb +104 -102
- data/lib/puppet/parser/functions/dig.rb +26 -24
- data/lib/puppet/parser/functions/digest.rb +3 -1
- data/lib/puppet/parser/functions/each.rb +101 -99
- data/lib/puppet/parser/functions/epp.rb +4 -3
- data/lib/puppet/parser/functions/fail.rb +11 -9
- data/lib/puppet/parser/functions/file.rb +16 -14
- data/lib/puppet/parser/functions/filter.rb +57 -55
- data/lib/puppet/parser/functions/find_file.rb +19 -18
- data/lib/puppet/parser/functions/fqdn_rand.rb +25 -23
- data/lib/puppet/parser/functions/generate.rb +23 -21
- data/lib/puppet/parser/functions/hiera.rb +95 -93
- data/lib/puppet/parser/functions/hiera_array.rb +83 -82
- data/lib/puppet/parser/functions/hiera_hash.rb +93 -92
- data/lib/puppet/parser/functions/hiera_include.rb +93 -92
- data/lib/puppet/parser/functions/include.rb +5 -3
- data/lib/puppet/parser/functions/inline_epp.rb +4 -3
- data/lib/puppet/parser/functions/inline_template.rb +15 -13
- data/lib/puppet/parser/functions/lest.rb +36 -34
- data/lib/puppet/parser/functions/lookup.rb +132 -130
- data/lib/puppet/parser/functions/map.rb +54 -52
- data/lib/puppet/parser/functions/match.rb +31 -29
- data/lib/puppet/parser/functions/md5.rb +4 -2
- data/lib/puppet/parser/functions/new.rb +916 -915
- data/lib/puppet/parser/functions/next.rb +36 -34
- data/lib/puppet/parser/functions/realize.rb +13 -11
- data/lib/puppet/parser/functions/reduce.rb +134 -132
- data/lib/puppet/parser/functions/regsubst.rb +8 -5
- data/lib/puppet/parser/functions/require.rb +8 -5
- data/lib/puppet/parser/functions/return.rb +90 -88
- data/lib/puppet/parser/functions/reverse_each.rb +59 -57
- data/lib/puppet/parser/functions/scanf.rb +25 -23
- data/lib/puppet/parser/functions/sha1.rb +4 -2
- data/lib/puppet/parser/functions/sha256.rb +3 -1
- data/lib/puppet/parser/functions/shellquote.rb +2 -0
- data/lib/puppet/parser/functions/slice.rb +27 -25
- data/lib/puppet/parser/functions/split.rb +7 -6
- data/lib/puppet/parser/functions/sprintf.rb +8 -7
- data/lib/puppet/parser/functions/step.rb +62 -60
- data/lib/puppet/parser/functions/strftime.rb +175 -173
- data/lib/puppet/parser/functions/tag.rb +10 -7
- data/lib/puppet/parser/functions/tagged.rb +16 -13
- data/lib/puppet/parser/functions/template.rb +27 -24
- data/lib/puppet/parser/functions/then.rb +54 -52
- data/lib/puppet/parser/functions/type.rb +36 -34
- data/lib/puppet/parser/functions/versioncmp.rb +3 -2
- data/lib/puppet/parser/functions/with.rb +22 -20
- data/lib/puppet/parser/functions.rb +12 -9
- data/lib/puppet/parser/parser_factory.rb +2 -0
- data/lib/puppet/parser/relationship.rb +9 -3
- data/lib/puppet/parser/resource/param.rb +4 -2
- data/lib/puppet/parser/resource.rb +42 -40
- data/lib/puppet/parser/scope.rb +84 -70
- data/lib/puppet/parser/script_compiler.rb +12 -12
- data/lib/puppet/parser/templatewrapper.rb +3 -2
- data/lib/puppet/parser/type_loader.rb +31 -30
- data/lib/puppet/parser.rb +3 -1
- data/lib/puppet/plugins/configuration.rb +2 -0
- data/lib/puppet/plugins/syntax_checkers.rb +2 -1
- data/lib/puppet/plugins.rb +3 -1
- data/lib/puppet/pops/adaptable.rb +5 -3
- data/lib/puppet/pops/adapters.rb +4 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +133 -120
- data/lib/puppet/pops/evaluator/callable_signature.rb +6 -5
- data/lib/puppet/pops/evaluator/closure.rb +272 -277
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -15
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +10 -8
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +4 -3
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +6 -5
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +10 -10
- data/lib/puppet/pops/evaluator/compare_operator.rb +36 -21
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +19 -17
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +19 -18
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +245 -245
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +6 -5
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +5 -5
- data/lib/puppet/pops/evaluator/puppet_proc.rb +6 -3
- data/lib/puppet/pops/evaluator/relationship_operator.rb +14 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +34 -30
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +35 -35
- data/lib/puppet/pops/evaluator/runtime3_support.rb +32 -39
- data/lib/puppet/pops/functions/dispatch.rb +7 -7
- data/lib/puppet/pops/functions/dispatcher.rb +8 -7
- data/lib/puppet/pops/functions/function.rb +18 -20
- data/lib/puppet/pops/issue_reporter.rb +25 -22
- data/lib/puppet/pops/issues.rb +10 -5
- data/lib/puppet/pops/label_provider.rb +6 -4
- data/lib/puppet/pops/loader/base_loader.rb +4 -4
- data/lib/puppet/pops/loader/dependency_loader.rb +8 -4
- data/lib/puppet/pops/loader/gem_support.rb +5 -2
- data/lib/puppet/pops/loader/generic_plan_instantiator.rb +2 -0
- data/lib/puppet/pops/loader/loader.rb +8 -8
- data/lib/puppet/pops/loader/loader_paths.rb +42 -41
- data/lib/puppet/pops/loader/module_loaders.rb +45 -49
- data/lib/puppet/pops/loader/predefined_loader.rb +3 -3
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +6 -2
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +6 -2
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +6 -5
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +5 -1
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +5 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +18 -8
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -3
- data/lib/puppet/pops/loader/simple_environment_loader.rb +3 -3
- data/lib/puppet/pops/loader/static_loader.rb +29 -27
- data/lib/puppet/pops/loader/task_instantiator.rb +4 -2
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +9 -5
- data/lib/puppet/pops/loader/typed_name.rb +4 -2
- data/lib/puppet/pops/loader/uri_helper.rb +3 -1
- data/lib/puppet/pops/loaders.rb +27 -23
- data/lib/puppet/pops/lookup/configured_data_provider.rb +2 -0
- data/lib/puppet/pops/lookup/context.rb +32 -23
- data/lib/puppet/pops/lookup/data_adapter.rb +2 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +8 -7
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +5 -3
- data/lib/puppet/pops/lookup/data_provider.rb +2 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +2 -0
- data/lib/puppet/pops/lookup/explainer.rb +47 -45
- data/lib/puppet/pops/lookup/function_provider.rb +8 -6
- data/lib/puppet/pops/lookup/global_data_provider.rb +4 -3
- data/lib/puppet/pops/lookup/hiera_config.rb +208 -160
- data/lib/puppet/pops/lookup/interpolation.rb +21 -10
- data/lib/puppet/pops/lookup/invocation.rb +4 -0
- data/lib/puppet/pops/lookup/key_recorder.rb +6 -3
- data/lib/puppet/pops/lookup/location_resolver.rb +4 -2
- data/lib/puppet/pops/lookup/lookup_adapter.rb +39 -34
- data/lib/puppet/pops/lookup/lookup_key.rb +3 -1
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +4 -2
- data/lib/puppet/pops/lookup/module_data_provider.rb +12 -9
- data/lib/puppet/pops/lookup/sub_lookup.rb +7 -3
- data/lib/puppet/pops/lookup.rb +16 -11
- data/lib/puppet/pops/merge_strategy.rb +22 -16
- data/lib/puppet/pops/migration/migration_checker.rb +8 -5
- data/lib/puppet/pops/model/ast.rb +786 -685
- data/lib/puppet/pops/model/ast_transformer.rb +18 -18
- data/lib/puppet/pops/model/factory.rb +33 -31
- data/lib/puppet/pops/model/model_label_provider.rb +5 -2
- data/lib/puppet/pops/model/model_tree_dumper.rb +32 -30
- data/lib/puppet/pops/model/pn_transformer.rb +5 -6
- data/lib/puppet/pops/model/tree_dumper.rb +7 -4
- data/lib/puppet/pops/parser/code_merger.rb +3 -3
- data/lib/puppet/pops/parser/epp_parser.rb +6 -5
- data/lib/puppet/pops/parser/epp_support.rb +10 -9
- data/lib/puppet/pops/parser/evaluating_parser.rb +13 -9
- data/lib/puppet/pops/parser/heredoc_support.rb +14 -14
- data/lib/puppet/pops/parser/interpolation_support.rb +25 -25
- data/lib/puppet/pops/parser/lexer2.rb +74 -62
- data/lib/puppet/pops/parser/lexer_support.rb +57 -57
- data/lib/puppet/pops/parser/locatable.rb +2 -2
- data/lib/puppet/pops/parser/locator.rb +47 -43
- data/lib/puppet/pops/parser/parser_support.rb +22 -21
- data/lib/puppet/pops/parser/pn_parser.rb +10 -9
- data/lib/puppet/pops/parser/slurp_support.rb +41 -40
- data/lib/puppet/pops/patterns.rb +14 -14
- data/lib/puppet/pops/pcore.rb +7 -6
- data/lib/puppet/pops/pn.rb +8 -5
- data/lib/puppet/pops/puppet_stack.rb +3 -1
- data/lib/puppet/pops/resource/param.rb +13 -12
- data/lib/puppet/pops/resource/resource_type_impl.rb +47 -45
- data/lib/puppet/pops/semantic_error.rb +3 -1
- data/lib/puppet/pops/serialization/abstract_reader.rb +6 -4
- data/lib/puppet/pops/serialization/abstract_writer.rb +11 -9
- data/lib/puppet/pops/serialization/deserializer.rb +3 -0
- data/lib/puppet/pops/serialization/extension.rb +8 -0
- data/lib/puppet/pops/serialization/from_data_converter.rb +16 -9
- data/lib/puppet/pops/serialization/instance_reader.rb +2 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +2 -0
- data/lib/puppet/pops/serialization/json.rb +9 -5
- data/lib/puppet/pops/serialization/json_path.rb +3 -1
- data/lib/puppet/pops/serialization/object.rb +6 -3
- data/lib/puppet/pops/serialization/serializer.rb +20 -16
- data/lib/puppet/pops/serialization/time_factory.rb +2 -1
- data/lib/puppet/pops/serialization/to_data_converter.rb +9 -6
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +8 -7
- data/lib/puppet/pops/serialization.rb +10 -8
- data/lib/puppet/pops/time/timespan.rb +33 -21
- data/lib/puppet/pops/time/timestamp.rb +12 -5
- data/lib/puppet/pops/types/annotatable.rb +3 -2
- data/lib/puppet/pops/types/annotation.rb +6 -4
- data/lib/puppet/pops/types/class_loader.rb +17 -15
- data/lib/puppet/pops/types/implementation_registry.rb +4 -1
- data/lib/puppet/pops/types/iterable.rb +24 -14
- data/lib/puppet/pops/types/p_binary_type.rb +6 -6
- data/lib/puppet/pops/types/p_init_type.rb +15 -12
- data/lib/puppet/pops/types/p_meta_type.rb +6 -5
- data/lib/puppet/pops/types/p_object_type.rb +104 -79
- data/lib/puppet/pops/types/p_object_type_extension.rb +15 -14
- data/lib/puppet/pops/types/p_runtime_type.rb +12 -10
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +3 -2
- data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -8
- data/lib/puppet/pops/types/p_sensitive_type.rb +3 -5
- data/lib/puppet/pops/types/p_timespan_type.rb +7 -5
- data/lib/puppet/pops/types/p_timestamp_type.rb +4 -3
- data/lib/puppet/pops/types/p_type_set_type.rb +51 -44
- data/lib/puppet/pops/types/p_uri_type.rb +41 -33
- data/lib/puppet/pops/types/puppet_object.rb +2 -1
- data/lib/puppet/pops/types/recursion_guard.rb +12 -6
- data/lib/puppet/pops/types/ruby_generator.rb +19 -14
- data/lib/puppet/pops/types/ruby_method.rb +8 -7
- data/lib/puppet/pops/types/string_converter.rb +113 -103
- data/lib/puppet/pops/types/tree_iterators.rb +16 -20
- data/lib/puppet/pops/types/type_acceptor.rb +2 -0
- data/lib/puppet/pops/types/type_asserter.rb +5 -3
- data/lib/puppet/pops/types/type_assertion_error.rb +1 -1
- data/lib/puppet/pops/types/type_calculator.rb +56 -49
- data/lib/puppet/pops/types/type_conversion_error.rb +2 -10
- data/lib/puppet/pops/types/type_factory.rb +25 -16
- data/lib/puppet/pops/types/type_formatter.rb +60 -65
- data/lib/puppet/pops/types/type_mismatch_describer.rb +62 -53
- data/lib/puppet/pops/types/type_parser.rb +124 -117
- data/lib/puppet/pops/types/type_set_reference.rb +3 -0
- data/lib/puppet/pops/types/type_with_members.rb +2 -2
- data/lib/puppet/pops/types/types.rb +267 -249
- data/lib/puppet/pops/utils.rb +43 -45
- data/lib/puppet/pops/validation/checker4_0.rb +65 -58
- data/lib/puppet/pops/validation/tasks_checker.rb +7 -5
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +2 -2
- data/lib/puppet/pops/validation.rb +26 -23
- data/lib/puppet/pops/visitable.rb +2 -0
- data/lib/puppet/pops/visitor.rb +18 -4
- data/lib/puppet/pops.rb +6 -3
- data/lib/puppet/property/boolean.rb +2 -0
- data/lib/puppet/property/ensure.rb +17 -16
- data/lib/puppet/property/keyvalue.rb +15 -14
- data/lib/puppet/property/list.rb +10 -9
- data/lib/puppet/property/ordered_list.rb +6 -5
- data/lib/puppet/property.rb +47 -48
- data/lib/puppet/provider/aix_object.rb +15 -9
- data/lib/puppet/provider/command.rb +2 -0
- data/lib/puppet/provider/confine.rb +2 -0
- data/lib/puppet/provider/exec/posix.rb +4 -1
- data/lib/puppet/provider/exec/shell.rb +2 -0
- data/lib/puppet/provider/exec/windows.rb +6 -4
- data/lib/puppet/provider/exec.rb +6 -4
- data/lib/puppet/provider/file/posix.rb +37 -19
- data/lib/puppet/provider/file/windows.rb +28 -29
- data/lib/puppet/provider/group/aix.rb +4 -2
- data/lib/puppet/provider/group/directoryservice.rb +7 -5
- data/lib/puppet/provider/group/groupadd.rb +16 -10
- data/lib/puppet/provider/group/ldap.rb +3 -0
- data/lib/puppet/provider/group/pw.rb +4 -3
- data/lib/puppet/provider/group/windows_adsi.rb +10 -7
- data/lib/puppet/provider/ldap.rb +5 -3
- data/lib/puppet/provider/nameservice/directoryservice.rb +72 -62
- data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
- data/lib/puppet/provider/nameservice/pw.rb +8 -8
- data/lib/puppet/provider/nameservice.rb +23 -19
- data/lib/puppet/provider/network_device.rb +2 -2
- data/lib/puppet/provider/package/aix.rb +29 -27
- data/lib/puppet/provider/package/appdmg.rb +24 -22
- data/lib/puppet/provider/package/apple.rb +7 -5
- data/lib/puppet/provider/package/apt.rb +28 -25
- data/lib/puppet/provider/package/aptitude.rb +3 -3
- data/lib/puppet/provider/package/aptrpm.rb +18 -14
- data/lib/puppet/provider/package/blastwave.rb +19 -22
- data/lib/puppet/provider/package/dnf.rb +12 -5
- data/lib/puppet/provider/package/dnfmodule.rb +17 -15
- data/lib/puppet/provider/package/dpkg.rb +24 -25
- data/lib/puppet/provider/package/fink.rb +17 -15
- data/lib/puppet/provider/package/freebsd.rb +6 -4
- data/lib/puppet/provider/package/gem.rb +29 -26
- data/lib/puppet/provider/package/hpux.rb +9 -7
- data/lib/puppet/provider/package/macports.rb +6 -4
- data/lib/puppet/provider/package/nim.rb +27 -28
- data/lib/puppet/provider/package/openbsd.rb +37 -34
- data/lib/puppet/provider/package/opkg.rb +17 -14
- data/lib/puppet/provider/package/pacman.rb +39 -42
- data/lib/puppet/provider/package/pip.rb +32 -31
- data/lib/puppet/provider/package/pip2.rb +3 -2
- data/lib/puppet/provider/package/pip3.rb +3 -2
- data/lib/puppet/provider/package/pkg.rb +46 -41
- data/lib/puppet/provider/package/pkgdmg.rb +23 -17
- data/lib/puppet/provider/package/pkgin.rb +14 -13
- data/lib/puppet/provider/package/pkgng.rb +20 -15
- data/lib/puppet/provider/package/pkgutil.rb +40 -41
- data/lib/puppet/provider/package/portage.rb +73 -69
- data/lib/puppet/provider/package/ports.rb +19 -16
- data/lib/puppet/provider/package/portupgrade.rb +48 -55
- data/lib/puppet/provider/package/puppet_gem.rb +6 -15
- data/lib/puppet/provider/package/puppetserver_gem.rb +16 -13
- data/lib/puppet/provider/package/rpm.rb +45 -40
- data/lib/puppet/provider/package/rug.rb +11 -11
- data/lib/puppet/provider/package/sun.rb +28 -24
- data/lib/puppet/provider/package/sunfreeware.rb +3 -1
- data/lib/puppet/provider/package/tdnf.rb +9 -2
- data/lib/puppet/provider/package/up2date.rb +10 -10
- data/lib/puppet/provider/package/urpmi.rb +9 -7
- data/lib/puppet/provider/package/windows/exe_package.rb +11 -9
- data/lib/puppet/provider/package/windows/msi_package.rb +5 -3
- data/lib/puppet/provider/package/windows/package.rb +8 -5
- data/lib/puppet/provider/package/windows.rb +10 -9
- data/lib/puppet/provider/package/xbps.rb +127 -0
- data/lib/puppet/provider/package/yum.rb +65 -62
- data/lib/puppet/provider/package/zypper.rb +29 -29
- data/lib/puppet/provider/package.rb +9 -7
- data/lib/puppet/provider/package_targetable.rb +5 -3
- data/lib/puppet/provider/parsedfile.rb +21 -17
- data/lib/puppet/provider/service/base.rb +19 -23
- data/lib/puppet/provider/service/bsd.rb +7 -5
- data/lib/puppet/provider/service/daemontools.rb +42 -39
- data/lib/puppet/provider/service/debian.rb +12 -10
- data/lib/puppet/provider/service/freebsd.rb +50 -52
- data/lib/puppet/provider/service/gentoo.rb +11 -9
- data/lib/puppet/provider/service/init.rb +33 -31
- data/lib/puppet/provider/service/launchd.rb +38 -31
- data/lib/puppet/provider/service/openbsd.rb +17 -16
- data/lib/puppet/provider/service/openrc.rb +6 -5
- data/lib/puppet/provider/service/openwrt.rb +7 -6
- data/lib/puppet/provider/service/rcng.rb +7 -5
- data/lib/puppet/provider/service/redhat.rb +10 -7
- data/lib/puppet/provider/service/runit.rb +16 -15
- data/lib/puppet/provider/service/service.rb +7 -8
- data/lib/puppet/provider/service/smf.rb +42 -37
- data/lib/puppet/provider/service/src.rb +29 -29
- data/lib/puppet/provider/service/systemd.rb +48 -48
- data/lib/puppet/provider/service/upstart.rb +37 -37
- data/lib/puppet/provider/service/windows.rb +45 -48
- data/lib/puppet/provider/user/aix.rb +24 -20
- data/lib/puppet/provider/user/directoryservice.rb +98 -91
- data/lib/puppet/provider/user/hpux.rb +33 -35
- data/lib/puppet/provider/user/ldap.rb +13 -10
- data/lib/puppet/provider/user/openbsd.rb +24 -22
- data/lib/puppet/provider/user/pw.rb +8 -7
- data/lib/puppet/provider/user/user_role_add.rb +40 -36
- data/lib/puppet/provider/user/useradd.rb +64 -53
- data/lib/puppet/provider/user/windows_adsi.rb +14 -10
- data/lib/puppet/provider.rb +20 -19
- data/lib/puppet/reference/configuration.rb +55 -47
- data/lib/puppet/reference/function.rb +2 -0
- data/lib/puppet/reference/indirection.rb +33 -28
- data/lib/puppet/reference/metaparameter.rb +3 -1
- data/lib/puppet/reference/providers.rb +12 -10
- data/lib/puppet/reference/report.rb +2 -0
- data/lib/puppet/reference/type.rb +7 -5
- data/lib/puppet/relationship.rb +10 -9
- data/lib/puppet/reports/http.rb +3 -2
- data/lib/puppet/reports/log.rb +4 -3
- data/lib/puppet/reports/store.rb +9 -6
- data/lib/puppet/reports.rb +8 -6
- data/lib/puppet/resource/catalog.rb +54 -53
- data/lib/puppet/resource/status.rb +9 -7
- data/lib/puppet/resource/type.rb +65 -41
- data/lib/puppet/resource/type_collection.rb +10 -6
- data/lib/puppet/resource.rb +91 -81
- data/lib/puppet/runtime.rb +2 -0
- data/lib/puppet/scheduler/job.rb +2 -0
- data/lib/puppet/scheduler/scheduler.rb +4 -2
- data/lib/puppet/scheduler/splay_job.rb +16 -3
- data/lib/puppet/scheduler/timer.rb +2 -0
- data/lib/puppet/scheduler.rb +3 -1
- data/lib/puppet/settings/alias_setting.rb +5 -5
- data/lib/puppet/settings/array_setting.rb +2 -1
- data/lib/puppet/settings/autosign_setting.rb +2 -1
- data/lib/puppet/settings/base_setting.rb +23 -18
- data/lib/puppet/settings/boolean_setting.rb +5 -3
- data/lib/puppet/settings/certificate_revocation_setting.rb +2 -1
- data/lib/puppet/settings/config_file.rb +11 -9
- data/lib/puppet/settings/directory_setting.rb +2 -0
- data/lib/puppet/settings/duration_setting.rb +5 -4
- data/lib/puppet/settings/enum_setting.rb +3 -1
- data/lib/puppet/settings/environment_conf.rb +19 -15
- data/lib/puppet/settings/errors.rb +6 -3
- data/lib/puppet/settings/file_or_directory_setting.rb +4 -7
- data/lib/puppet/settings/file_setting.rb +15 -24
- data/lib/puppet/settings/http_extra_headers_setting.rb +2 -1
- data/lib/puppet/settings/ini_file.rb +5 -3
- data/lib/puppet/settings/integer_setting.rb +3 -1
- data/lib/puppet/settings/path_setting.rb +2 -0
- data/lib/puppet/settings/port_setting.rb +4 -2
- data/lib/puppet/settings/priority_setting.rb +13 -12
- data/lib/puppet/settings/server_list_setting.rb +7 -6
- data/lib/puppet/settings/string_setting.rb +2 -0
- data/lib/puppet/settings/symbolic_enum_setting.rb +3 -1
- data/lib/puppet/settings/terminus_setting.rb +2 -0
- data/lib/puppet/settings/ttl_setting.rb +7 -5
- data/lib/puppet/settings/value_translator.rb +9 -7
- data/lib/puppet/settings.rb +171 -163
- data/lib/puppet/ssl/base.rb +9 -6
- data/lib/puppet/ssl/certificate.rb +6 -4
- data/lib/puppet/ssl/certificate_request.rb +34 -38
- data/lib/puppet/ssl/certificate_request_attributes.rb +7 -4
- data/lib/puppet/ssl/certificate_signer.rb +3 -3
- data/lib/puppet/ssl/digest.rb +2 -0
- data/lib/puppet/ssl/error.rb +3 -0
- data/lib/puppet/ssl/oids.rb +11 -9
- data/lib/puppet/ssl/openssl_loader.rb +6 -4
- data/lib/puppet/ssl/ssl_context.rb +2 -0
- data/lib/puppet/ssl/ssl_provider.rb +13 -9
- data/lib/puppet/ssl/state_machine.rb +153 -22
- data/lib/puppet/ssl/verifier.rb +3 -2
- data/lib/puppet/ssl.rb +3 -1
- data/lib/puppet/syntax_checkers/base64.rb +7 -5
- data/lib/puppet/syntax_checkers/epp.rb +7 -6
- data/lib/puppet/syntax_checkers/json.rb +7 -7
- data/lib/puppet/syntax_checkers/pp.rb +7 -6
- data/lib/puppet/syntax_checkers.rb +3 -1
- data/lib/puppet/test/test_helper.rb +30 -44
- data/lib/puppet/thread_local.rb +2 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +12 -7
- data/lib/puppet/transaction/event.rb +8 -5
- data/lib/puppet/transaction/event_manager.rb +12 -11
- data/lib/puppet/transaction/persistence.rb +16 -16
- data/lib/puppet/transaction/report.rb +34 -27
- data/lib/puppet/transaction/resource_harness.rb +17 -9
- data/lib/puppet/transaction.rb +37 -35
- data/lib/puppet/trusted_external.rb +10 -5
- data/lib/puppet/type/component.rb +14 -7
- data/lib/puppet/type/exec.rb +71 -61
- data/lib/puppet/type/file/checksum.rb +6 -2
- data/lib/puppet/type/file/checksum_value.rb +6 -4
- data/lib/puppet/type/file/content.rb +24 -20
- data/lib/puppet/type/file/ctime.rb +5 -4
- data/lib/puppet/type/file/data_sync.rb +9 -6
- data/lib/puppet/type/file/ensure.rb +24 -25
- data/lib/puppet/type/file/group.rb +3 -1
- data/lib/puppet/type/file/mode.rb +14 -11
- data/lib/puppet/type/file/mtime.rb +5 -3
- data/lib/puppet/type/file/owner.rb +3 -2
- data/lib/puppet/type/file/selcontext.rb +24 -23
- data/lib/puppet/type/file/source.rb +31 -30
- data/lib/puppet/type/file/target.rb +23 -25
- data/lib/puppet/type/file/type.rb +3 -2
- data/lib/puppet/type/file.rb +60 -54
- data/lib/puppet/type/filebucket.rb +6 -4
- data/lib/puppet/type/group.rb +14 -13
- data/lib/puppet/type/notify.rb +4 -3
- data/lib/puppet/type/package.rb +47 -45
- data/lib/puppet/type/resources.rb +39 -34
- data/lib/puppet/type/schedule.rb +21 -21
- data/lib/puppet/type/service.rb +19 -18
- data/lib/puppet/type/stage.rb +2 -0
- data/lib/puppet/type/tidy.rb +40 -34
- data/lib/puppet/type/user.rb +62 -56
- data/lib/puppet/type/whit.rb +2 -1
- data/lib/puppet/type.rb +180 -227
- data/lib/puppet/util/at_fork/noop.rb +2 -0
- data/lib/puppet/util/at_fork/solaris.rb +37 -39
- data/lib/puppet/util/at_fork.rb +3 -1
- data/lib/puppet/util/autoload.rb +10 -4
- data/lib/puppet/util/backups.rb +13 -11
- data/lib/puppet/util/character_encoding.rb +9 -6
- data/lib/puppet/util/checksums.rb +16 -12
- data/lib/puppet/util/classgen.rb +18 -23
- data/lib/puppet/util/colors.rb +67 -65
- data/lib/puppet/util/command_line/puppet_option_parser.rb +18 -16
- data/lib/puppet/util/command_line/trollop.rb +695 -673
- data/lib/puppet/util/command_line.rb +7 -5
- data/lib/puppet/util/constant_inflector.rb +4 -3
- data/lib/puppet/util/diff.rb +17 -18
- data/lib/puppet/util/docs.rb +8 -4
- data/lib/puppet/util/errors.rb +13 -11
- data/lib/puppet/util/execution.rb +58 -36
- data/lib/puppet/util/execution_stub.rb +2 -0
- data/lib/puppet/util/feature.rb +9 -9
- data/lib/puppet/util/file_watcher.rb +3 -0
- data/lib/puppet/util/fileparsing.rb +20 -24
- data/lib/puppet/util/filetype.rb +43 -43
- data/lib/puppet/util/http_proxy.rb +2 -0
- data/lib/puppet/util/inifile.rb +13 -18
- data/lib/puppet/util/instance_loader.rb +3 -0
- data/lib/puppet/util/json.rb +2 -0
- data/lib/puppet/util/json_lockfile.rb +4 -1
- data/lib/puppet/util/ldap/connection.rb +21 -19
- data/lib/puppet/util/ldap/generator.rb +2 -0
- data/lib/puppet/util/ldap/manager.rb +20 -21
- data/lib/puppet/util/ldap.rb +2 -0
- data/lib/puppet/util/libuser.rb +3 -2
- data/lib/puppet/util/limits.rb +2 -0
- data/lib/puppet/util/lockfile.rb +8 -8
- data/lib/puppet/util/log/destination.rb +4 -3
- data/lib/puppet/util/log/destinations.rb +20 -20
- data/lib/puppet/util/log.rb +40 -31
- data/lib/puppet/util/logging.rb +34 -30
- data/lib/puppet/util/metaid.rb +2 -1
- data/lib/puppet/util/metric.rb +9 -6
- data/lib/puppet/util/monkey_patches.rb +22 -30
- data/lib/puppet/util/multi_match.rb +9 -5
- data/lib/puppet/util/network_device/base.rb +3 -2
- data/lib/puppet/util/network_device/config.rb +9 -9
- data/lib/puppet/util/network_device/transport/base.rb +1 -1
- data/lib/puppet/util/network_device/transport.rb +2 -0
- data/lib/puppet/util/network_device.rb +2 -0
- data/lib/puppet/util/package/version/debian.rb +33 -31
- data/lib/puppet/util/package/version/gem.rb +3 -0
- data/lib/puppet/util/package/version/pip.rb +14 -8
- data/lib/puppet/util/package/version/range/eq.rb +4 -1
- data/lib/puppet/util/package/version/range/gt.rb +3 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +3 -0
- data/lib/puppet/util/package/version/range/lt.rb +4 -1
- data/lib/puppet/util/package/version/range/lt_eq.rb +3 -0
- data/lib/puppet/util/package/version/range/min_max.rb +5 -0
- data/lib/puppet/util/package/version/range/simple.rb +2 -0
- data/lib/puppet/util/package/version/range.rb +9 -5
- data/lib/puppet/util/package/version/rpm.rb +7 -5
- data/lib/puppet/util/package.rb +5 -2
- data/lib/puppet/util/pidlock.rb +11 -10
- data/lib/puppet/util/platform.rb +5 -3
- data/lib/puppet/util/plist.rb +16 -16
- data/lib/puppet/util/posix.rb +27 -24
- data/lib/puppet/util/profiler/aggregate.rb +7 -10
- data/lib/puppet/util/profiler/around_profiler.rb +2 -1
- data/lib/puppet/util/profiler/logging.rb +3 -1
- data/lib/puppet/util/profiler/object_counts.rb +2 -0
- data/lib/puppet/util/profiler/wall_clock.rb +6 -5
- data/lib/puppet/util/profiler.rb +2 -0
- data/lib/puppet/util/provider_features.rb +10 -6
- data/lib/puppet/util/psych_support.rb +2 -0
- data/lib/puppet/util/rdoc/code_objects.rb +18 -20
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +118 -128
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +62 -79
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +32 -29
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +3 -1
- data/lib/puppet/util/rdoc/parser.rb +3 -1
- data/lib/puppet/util/rdoc.rb +10 -9
- data/lib/puppet/util/reference.rb +7 -32
- data/lib/puppet/util/resource_template.rb +3 -1
- data/lib/puppet/util/retry_action.rb +6 -5
- data/lib/puppet/util/rpm_compare.rb +31 -28
- data/lib/puppet/util/rubygems.rb +3 -3
- data/lib/puppet/util/run_mode.rb +46 -4
- data/lib/puppet/util/selinux.rb +72 -38
- data/lib/puppet/util/skip_tags.rb +2 -0
- data/lib/puppet/util/splayer.rb +2 -0
- data/lib/puppet/util/storage.rb +13 -13
- data/lib/puppet/util/suidmanager.rb +38 -37
- data/lib/puppet/util/symbolic_file_mode.rb +76 -76
- data/lib/puppet/util/tag_set.rb +4 -2
- data/lib/puppet/util/tagging.rb +12 -13
- data/lib/puppet/util/terminal.rb +6 -4
- data/lib/puppet/util/user_attr.rb +9 -7
- data/lib/puppet/util/warnings.rb +4 -0
- data/lib/puppet/util/watched_file.rb +4 -1
- data/lib/puppet/util/watcher/change_watcher.rb +2 -0
- data/lib/puppet/util/watcher/periodic_watcher.rb +2 -1
- data/lib/puppet/util/watcher/timer.rb +2 -0
- data/lib/puppet/util/watcher.rb +5 -5
- data/lib/puppet/util/windows/access_control_entry.rb +3 -1
- data/lib/puppet/util/windows/access_control_list.rb +10 -7
- data/lib/puppet/util/windows/adsi.rb +82 -74
- data/lib/puppet/util/windows/com.rb +10 -7
- data/lib/puppet/util/windows/daemon.rb +77 -80
- data/lib/puppet/util/windows/error.rb +7 -5
- data/lib/puppet/util/windows/eventlog.rb +13 -9
- data/lib/puppet/util/windows/file.rb +49 -45
- data/lib/puppet/util/windows/monkey_patches/process.rb +2 -3
- data/lib/puppet/util/windows/principal.rb +37 -34
- data/lib/puppet/util/windows/process.rb +36 -40
- data/lib/puppet/util/windows/registry.rb +60 -58
- data/lib/puppet/util/windows/root_certs.rb +5 -3
- data/lib/puppet/util/windows/security.rb +92 -90
- data/lib/puppet/util/windows/security_descriptor.rb +2 -0
- data/lib/puppet/util/windows/service.rb +24 -12
- data/lib/puppet/util/windows/sid.rb +23 -21
- data/lib/puppet/util/windows/string.rb +2 -0
- data/lib/puppet/util/windows/user.rb +56 -55
- data/lib/puppet/util/windows.rb +8 -1
- data/lib/puppet/util/yaml.rb +3 -1
- data/lib/puppet/util.rb +112 -161
- data/lib/puppet/vendor.rb +3 -1
- data/lib/puppet/version.rb +5 -2
- data/lib/puppet/x509/cert_provider.rb +48 -12
- data/lib/puppet/x509/pem_store.rb +3 -1
- data/lib/puppet/x509.rb +2 -0
- data/lib/puppet.rb +22 -19
- data/lib/puppet_pal.rb +2 -0
- data/lib/puppet_x.rb +2 -0
- data/locales/puppet.pot +9723 -5
- data/man/man5/puppet.conf.5 +121 -912
- data/man/man8/puppet-agent.8 +39 -107
- data/man/man8/puppet-apply.8 +18 -51
- data/man/man8/puppet-catalog.8 +25 -122
- data/man/man8/puppet-config.8 +22 -70
- data/man/man8/puppet-describe.8 +6 -22
- data/man/man8/puppet-device.8 +13 -49
- data/man/man8/puppet-doc.8 +8 -24
- data/man/man8/puppet-epp.8 +23 -168
- data/man/man8/puppet-facts.8 +14 -92
- data/man/man8/puppet-filebucket.8 +22 -54
- data/man/man8/puppet-generate.8 +5 -35
- data/man/man8/puppet-help.8 +8 -29
- data/man/man8/puppet-lookup.8 +25 -61
- data/man/man8/puppet-module.8 +19 -124
- data/man/man8/puppet-node.8 +47 -68
- data/man/man8/puppet-parser.8 +12 -55
- data/man/man8/puppet-plugin.8 +10 -33
- data/man/man8/puppet-report.8 +10 -53
- data/man/man8/puppet-resource.8 +19 -44
- data/man/man8/puppet-script.8 +11 -33
- data/man/man8/puppet-ssl.8 +12 -30
- data/man/man8/puppet.8 +90 -20
- data/tasks/tag.rake +34 -0
- metadata +77 -65
- data/CONTRIBUTING.md +0 -161
- data/examples/hiera/etc/hiera.yaml +0 -15
- data/examples/hiera/etc/hieradb/common.yaml +0 -3
- data/examples/hiera/etc/hieradb/dc1.yaml +0 -6
- data/examples/hiera/etc/hieradb/development.yaml +0 -2
- data/examples/hiera/etc/puppet.conf +0 -3
- data/examples/hiera/modules/data/manifests/common.pp +0 -4
- data/examples/hiera/modules/ntp/manifests/data.pp +0 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.erb +0 -3
- data/examples/hiera/modules/users/manifests/development.pp +0 -4
- data/lib/puppet/external/pson/common.rb +0 -374
- data/lib/puppet/external/pson/pure/generator.rb +0 -395
- data/lib/puppet/external/pson/pure/parser.rb +0 -308
- data/lib/puppet/external/pson/pure.rb +0 -15
- data/lib/puppet/external/pson/version.rb +0 -8
- data/lib/puppet/module_tool/contents_description.rb +0 -89
- data/tasks/benchmark.rake +0 -180
- data/tasks/ci.rake +0 -24
- data/tasks/generate_ast_model.rake +0 -90
- data/tasks/generate_cert_fixtures.rake +0 -194
- data/tasks/manpages.rake +0 -67
- data/tasks/memwalk.rake +0 -195
- data/tasks/parallel.rake +0 -410
- data/tasks/parser.rake +0 -22
- data/tasks/yard.rake +0 -59
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../../../puppet/parser/scope'
|
2
4
|
require_relative '../../../puppet/pops/evaluator/compare_operator'
|
3
5
|
require_relative '../../../puppet/pops/evaluator/relationship_operator'
|
@@ -33,12 +35,7 @@ class EvaluatorImpl
|
|
33
35
|
include Runtime3Support
|
34
36
|
include ExternalSyntaxSupport
|
35
37
|
|
36
|
-
COMMA_SEPARATOR = ', '
|
37
|
-
|
38
|
-
# Reference to Issues name space makes it easier to refer to issues
|
39
|
-
# (Issues are shared with the validator).
|
40
|
-
#
|
41
|
-
Issues = Issues
|
38
|
+
COMMA_SEPARATOR = ', '
|
42
39
|
|
43
40
|
def initialize
|
44
41
|
@@initialized ||= static_initialize
|
@@ -77,53 +74,44 @@ class EvaluatorImpl
|
|
77
74
|
# @api public
|
78
75
|
#
|
79
76
|
def evaluate(target, scope)
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
# ParseError can supply an original - it is impossible to determine which
|
103
|
-
# call stack that should be propagated, using the ParseError's backtrace.
|
104
|
-
#
|
105
|
-
if e.file || e.line
|
106
|
-
raise e
|
107
|
-
else
|
108
|
-
# Since it had no location information, treat it as user intended a general purpose
|
109
|
-
# error. Pass on its call stack.
|
110
|
-
fail(Issues::RUNTIME_ERROR, target, {:detail => e.message}, e)
|
111
|
-
end
|
112
|
-
|
113
|
-
|
114
|
-
rescue Puppet::Error => e
|
115
|
-
# PuppetError has the ability to wrap an exception, if so, use the wrapped exception's
|
116
|
-
# call stack instead
|
117
|
-
fail(Issues::RUNTIME_ERROR, target, {:detail => e.message}, e.original || e)
|
118
|
-
|
119
|
-
rescue StopIteration => e
|
120
|
-
# Ensure these are not rescued as StandardError
|
77
|
+
@@eval_visitor.visit_this_1(self, target, scope)
|
78
|
+
rescue SemanticError => e
|
79
|
+
# A raised issue may not know the semantic target, use errors call stack, but fill in the
|
80
|
+
# rest from a supplied semantic object, or the target instruction if there is not semantic
|
81
|
+
# object.
|
82
|
+
#
|
83
|
+
fail(e.issue, e.semantic || target, e.options, e)
|
84
|
+
rescue Puppet::PreformattedError => e
|
85
|
+
# Already formatted with location information, and with the wanted call stack.
|
86
|
+
# Note this is currently a specialized ParseError, so rescue-order is important
|
87
|
+
#
|
88
|
+
raise e
|
89
|
+
rescue Puppet::ParseError => e
|
90
|
+
# ParseError may be raised in ruby code without knowing the location
|
91
|
+
# in puppet code.
|
92
|
+
# Accept a ParseError that has file or line information available
|
93
|
+
# as an error that should be used verbatim. (Tests typically run without
|
94
|
+
# setting a file name).
|
95
|
+
# ParseError can supply an original - it is impossible to determine which
|
96
|
+
# call stack that should be propagated, using the ParseError's backtrace.
|
97
|
+
#
|
98
|
+
if e.file || e.line
|
121
99
|
raise e
|
122
|
-
|
123
|
-
|
124
|
-
#
|
125
|
-
fail(Issues::RUNTIME_ERROR, target, {:detail => e.message}, e)
|
100
|
+
else
|
101
|
+
# Since it had no location information, treat it as user intended a general purpose
|
102
|
+
# error. Pass on its call stack.
|
103
|
+
fail(Issues::RUNTIME_ERROR, target, { :detail => e.message }, e)
|
126
104
|
end
|
105
|
+
rescue Puppet::Error => e
|
106
|
+
# PuppetError has the ability to wrap an exception, if so, use the wrapped exception's
|
107
|
+
# call stack instead
|
108
|
+
fail(Issues::RUNTIME_ERROR, target, { :detail => e.message }, e.original || e)
|
109
|
+
rescue StopIteration => e
|
110
|
+
# Ensure these are not rescued as StandardError
|
111
|
+
raise e
|
112
|
+
rescue StandardError => e
|
113
|
+
# All other errors, use its message and call stack
|
114
|
+
fail(Issues::RUNTIME_ERROR, target, { :detail => e.message }, e)
|
127
115
|
end
|
128
116
|
|
129
117
|
# Assigns the given _value_ to the given _target_. The additional argument _o_ is the instruction that
|
@@ -202,7 +190,7 @@ class EvaluatorImpl
|
|
202
190
|
|
203
191
|
# An array is assignable if all entries are lvalues
|
204
192
|
def lvalue_LiteralList(o, scope)
|
205
|
-
o.values.map {|x| lvalue(x, scope) }
|
193
|
+
o.values.map { |x| lvalue(x, scope) }
|
206
194
|
end
|
207
195
|
|
208
196
|
# Assign value to named variable.
|
@@ -217,14 +205,15 @@ class EvaluatorImpl
|
|
217
205
|
#
|
218
206
|
def assign_String(name, value, o, scope)
|
219
207
|
if name =~ /::/
|
220
|
-
fail(Issues::CROSS_SCOPE_ASSIGNMENT, o.left_expr, {:name => name})
|
208
|
+
fail(Issues::CROSS_SCOPE_ASSIGNMENT, o.left_expr, { :name => name })
|
221
209
|
end
|
210
|
+
|
222
211
|
set_variable(name, value, o, scope)
|
223
212
|
value
|
224
213
|
end
|
225
214
|
|
226
215
|
def assign_Numeric(n, value, o, scope)
|
227
|
-
fail(Issues::ILLEGAL_NUMERIC_ASSIGNMENT, o.left_expr, {:varname => n.to_s})
|
216
|
+
fail(Issues::ILLEGAL_NUMERIC_ASSIGNMENT, o.left_expr, { :varname => n.to_s })
|
228
217
|
end
|
229
218
|
|
230
219
|
# Catches all illegal assignment (e.g. 1 = 2, {'a'=>1} = 2, etc)
|
@@ -234,16 +223,18 @@ class EvaluatorImpl
|
|
234
223
|
end
|
235
224
|
|
236
225
|
def assign_Array(lvalues, values, o, scope)
|
237
|
-
|
226
|
+
case values
|
227
|
+
when Hash
|
238
228
|
lvalues.map do |lval|
|
239
229
|
assign(lval,
|
240
|
-
|
241
|
-
|
230
|
+
values.fetch(lval) { |k| fail(Issues::MISSING_MULTI_ASSIGNMENT_KEY, o, :key => k) },
|
231
|
+
o, scope)
|
242
232
|
end
|
243
|
-
|
233
|
+
when Puppet::Pops::Types::PClassType
|
244
234
|
if Puppet[:tasks]
|
245
|
-
fail(Issues::CATALOG_OPERATION_NOT_SUPPORTED_WHEN_SCRIPTING, o, {:operation => _('multi var assignment from class')})
|
235
|
+
fail(Issues::CATALOG_OPERATION_NOT_SUPPORTED_WHEN_SCRIPTING, o, { :operation => _('multi var assignment from class') })
|
246
236
|
end
|
237
|
+
|
247
238
|
# assign variables from class variables
|
248
239
|
# lookup class resource and return one or more parameter values
|
249
240
|
# TODO: behavior when class_name is nil
|
@@ -258,18 +249,19 @@ class EvaluatorImpl
|
|
258
249
|
result = get_variable_value(varname, o, scope)
|
259
250
|
assign(lval, result, o, scope)
|
260
251
|
else
|
261
|
-
fail(Puppet::Pops::Issues::MISSING_MULTI_ASSIGNMENT_VARIABLE, o.left_expr.values[idx], {:name => varname})
|
252
|
+
fail(Puppet::Pops::Issues::MISSING_MULTI_ASSIGNMENT_VARIABLE, o.left_expr.values[idx], { :name => varname })
|
262
253
|
end
|
263
254
|
end
|
264
255
|
else
|
265
|
-
fail(Issues::UNKNOWN_RESOURCE, o.right_expr, {:type_name => 'Class', :title => values.class_name})
|
256
|
+
fail(Issues::UNKNOWN_RESOURCE, o.right_expr, { :type_name => 'Class', :title => values.class_name })
|
266
257
|
end
|
267
258
|
|
268
259
|
else
|
269
260
|
values = [values] unless values.is_a?(Array)
|
270
261
|
if values.size != lvalues.size
|
271
|
-
fail(Issues::ILLEGAL_MULTI_ASSIGNMENT_SIZE, o, :expected =>lvalues.size, :actual => values.size)
|
262
|
+
fail(Issues::ILLEGAL_MULTI_ASSIGNMENT_SIZE, o, :expected => lvalues.size, :actual => values.size)
|
272
263
|
end
|
264
|
+
|
273
265
|
lvalues.zip(values).map { |lval, val| assign(lval, val, o, scope) }
|
274
266
|
end
|
275
267
|
end
|
@@ -303,7 +295,7 @@ class EvaluatorImpl
|
|
303
295
|
#
|
304
296
|
def eval_ReservedWord(o, scope)
|
305
297
|
if !o.future
|
306
|
-
fail(Issues::RESERVED_WORD, o, {:word => o.word})
|
298
|
+
fail(Issues::RESERVED_WORD, o, { :word => o.word })
|
307
299
|
else
|
308
300
|
o.word
|
309
301
|
end
|
@@ -321,12 +313,13 @@ class EvaluatorImpl
|
|
321
313
|
#
|
322
314
|
def eval_QualifiedReference(o, scope)
|
323
315
|
type = Types::TypeParser.singleton.interpret(o)
|
324
|
-
fail(Issues::UNKNOWN_RESOURCE_TYPE, o, {:type_name => type.type_string }) if type.is_a?(Types::PTypeReferenceType)
|
316
|
+
fail(Issues::UNKNOWN_RESOURCE_TYPE, o, { :type_name => type.type_string }) if type.is_a?(Types::PTypeReferenceType)
|
317
|
+
|
325
318
|
type
|
326
319
|
end
|
327
320
|
|
328
321
|
def eval_NotExpression(o, scope)
|
329
|
-
!
|
322
|
+
!is_true?(evaluate(o.expr, scope), o.expr)
|
330
323
|
end
|
331
324
|
|
332
325
|
def eval_UnaryMinusExpression(o, scope)
|
@@ -355,7 +348,7 @@ class EvaluatorImpl
|
|
355
348
|
# @return <Array<Object, Object>> array with result of evaluating left and right expressions
|
356
349
|
#
|
357
350
|
def eval_BinaryExpression o, scope
|
358
|
-
[
|
351
|
+
[evaluate(o.left_expr, scope), evaluate(o.right_expr, scope)]
|
359
352
|
end
|
360
353
|
|
361
354
|
# Evaluates assignment with operators =, +=, -= and
|
@@ -372,7 +365,7 @@ class EvaluatorImpl
|
|
372
365
|
if o.operator == '='
|
373
366
|
assign(name, value, o, scope)
|
374
367
|
else
|
375
|
-
fail(Issues::UNSUPPORTED_OPERATOR, o, {:operator => o.operator})
|
368
|
+
fail(Issues::UNSUPPORTED_OPERATOR, o, { :operator => o.operator })
|
376
369
|
end
|
377
370
|
value
|
378
371
|
end
|
@@ -389,18 +382,17 @@ class EvaluatorImpl
|
|
389
382
|
begin
|
390
383
|
result = calculate(left, right, o, scope)
|
391
384
|
rescue ArgumentError => e
|
392
|
-
fail(Issues::RUNTIME_ERROR, o, {:detail => e.message}, e)
|
385
|
+
fail(Issues::RUNTIME_ERROR, o, { :detail => e.message }, e)
|
393
386
|
end
|
394
387
|
result
|
395
388
|
end
|
396
389
|
|
397
|
-
|
398
390
|
# Handles binary expression where lhs and rhs are array/hash or numeric and operator is +, - , *, % / << >>
|
399
391
|
#
|
400
392
|
def calculate(left, right, bin_expr, scope)
|
401
393
|
operator = bin_expr.operator
|
402
394
|
unless ARITHMETIC_OPERATORS.include?(operator)
|
403
|
-
fail(Issues::UNSUPPORTED_OPERATOR, bin_expr, {:operator => operator})
|
395
|
+
fail(Issues::UNSUPPORTED_OPERATOR, bin_expr, { :operator => operator })
|
404
396
|
end
|
405
397
|
|
406
398
|
left_o = bin_expr.left_expr
|
@@ -415,8 +407,9 @@ class EvaluatorImpl
|
|
415
407
|
delete(left, right)
|
416
408
|
when '<<'
|
417
409
|
unless left.is_a?(Array)
|
418
|
-
fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, {:operator => operator, :left_value => left})
|
410
|
+
fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, { :operator => operator, :left_value => left })
|
419
411
|
end
|
412
|
+
|
420
413
|
left + [right]
|
421
414
|
end
|
422
415
|
else
|
@@ -426,8 +419,9 @@ class EvaluatorImpl
|
|
426
419
|
begin
|
427
420
|
if operator == '%' && (left.is_a?(Float) || right.is_a?(Float))
|
428
421
|
# Deny users the fun of seeing severe rounding errors and confusing results
|
429
|
-
fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, {:operator => operator, :left_value => left}) if left.is_a?(Float)
|
430
|
-
|
422
|
+
fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, { :operator => operator, :left_value => left }) if left.is_a?(Float)
|
423
|
+
|
424
|
+
fail(Issues::OPERATOR_NOT_APPLICABLE_WHEN, left_o, { :operator => operator, :left_value => left, :right_value => right })
|
431
425
|
end
|
432
426
|
if right.is_a?(Time::TimeData) && !left.is_a?(Time::TimeData)
|
433
427
|
if operator == '+' || operator == '*' && right.is_a?(Time::Timespan)
|
@@ -438,23 +432,23 @@ class EvaluatorImpl
|
|
438
432
|
elsif operator == '-' && right.is_a?(Time::Timespan)
|
439
433
|
left = Time::Timespan.new((left * Time::NSECS_PER_SEC).to_i)
|
440
434
|
else
|
441
|
-
fail(Issues::OPERATOR_NOT_APPLICABLE_WHEN, left_o, {:operator => operator, :left_value => left, :right_value => right})
|
435
|
+
fail(Issues::OPERATOR_NOT_APPLICABLE_WHEN, left_o, { :operator => operator, :left_value => left, :right_value => right })
|
442
436
|
end
|
443
437
|
end
|
444
438
|
result = left.send(operator, right)
|
445
439
|
rescue NoMethodError
|
446
|
-
fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, {:operator => operator, :left_value => left})
|
440
|
+
fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, { :operator => operator, :left_value => left })
|
447
441
|
rescue ZeroDivisionError
|
448
442
|
fail(Issues::DIV_BY_ZERO, bin_expr.right_expr)
|
449
443
|
end
|
450
444
|
case result
|
451
445
|
when Float
|
452
446
|
if result == Float::INFINITY || result == -Float::INFINITY
|
453
|
-
fail(Issues::RESULT_IS_INFINITY, left_o, {:operator => operator})
|
447
|
+
fail(Issues::RESULT_IS_INFINITY, left_o, { :operator => operator })
|
454
448
|
end
|
455
449
|
when Integer
|
456
450
|
if result < MIN_INTEGER || result > MAX_INTEGER
|
457
|
-
fail(Issues::NUMERIC_OVERFLOW, bin_expr, {:value => result})
|
451
|
+
fail(Issues::NUMERIC_OVERFLOW, bin_expr, { :value => result })
|
458
452
|
end
|
459
453
|
end
|
460
454
|
result
|
@@ -514,9 +508,9 @@ class EvaluatorImpl
|
|
514
508
|
keys = o.keys || []
|
515
509
|
if left.is_a?(Types::PClassType)
|
516
510
|
# Evaluate qualified references without errors no undefined types
|
517
|
-
keys = keys.map {|key| key.is_a?(Model::QualifiedReference) ? Types::TypeParser.singleton.interpret(key) : evaluate(key, scope) }
|
511
|
+
keys = keys.map { |key| key.is_a?(Model::QualifiedReference) ? Types::TypeParser.singleton.interpret(key) : evaluate(key, scope) }
|
518
512
|
else
|
519
|
-
keys = keys.map {|key| evaluate(key, scope) }
|
513
|
+
keys = keys.map { |key| evaluate(key, scope) }
|
520
514
|
# Resource[File] becomes File
|
521
515
|
return keys[0] if Types::PResourceType::DEFAULT == left && keys.size == 1 && keys[0].is_a?(Types::PResourceType)
|
522
516
|
end
|
@@ -530,54 +524,55 @@ class EvaluatorImpl
|
|
530
524
|
right = evaluate(o.right_expr, scope)
|
531
525
|
|
532
526
|
begin
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
else
|
558
|
-
case o.operator
|
559
|
-
when '=='
|
560
|
-
@@compare_operator.equals(left,right)
|
561
|
-
when '!='
|
562
|
-
! @@compare_operator.equals(left,right)
|
563
|
-
when '<'
|
564
|
-
@@compare_operator.compare(left,right) < 0
|
565
|
-
when '<='
|
566
|
-
@@compare_operator.compare(left,right) <= 0
|
567
|
-
when '>'
|
568
|
-
@@compare_operator.compare(left,right) > 0
|
569
|
-
when '>='
|
570
|
-
@@compare_operator.compare(left,right) >= 0
|
527
|
+
# Left is a type
|
528
|
+
if left.is_a?(Types::PAnyType)
|
529
|
+
case o.operator
|
530
|
+
when '=='
|
531
|
+
@@type_calculator.equals(left, right)
|
532
|
+
|
533
|
+
when '!='
|
534
|
+
!@@type_calculator.equals(left, right)
|
535
|
+
|
536
|
+
when '<'
|
537
|
+
# left can be assigned to right, but they are not equal
|
538
|
+
@@type_calculator.assignable?(right, left) && !@@type_calculator.equals(left, right)
|
539
|
+
when '<='
|
540
|
+
# left can be assigned to right
|
541
|
+
@@type_calculator.assignable?(right, left)
|
542
|
+
when '>'
|
543
|
+
# right can be assigned to left, but they are not equal
|
544
|
+
@@type_calculator.assignable?(left, right) && !@@type_calculator.equals(left, right)
|
545
|
+
when '>='
|
546
|
+
# right can be assigned to left
|
547
|
+
@@type_calculator.assignable?(left, right)
|
548
|
+
else
|
549
|
+
fail(Issues::UNSUPPORTED_OPERATOR, o, { :operator => o.operator })
|
550
|
+
end
|
571
551
|
else
|
572
|
-
|
552
|
+
case o.operator
|
553
|
+
when '=='
|
554
|
+
@@compare_operator.equals(left, right)
|
555
|
+
when '!='
|
556
|
+
!@@compare_operator.equals(left, right)
|
557
|
+
when '<'
|
558
|
+
@@compare_operator.compare(left, right) < 0
|
559
|
+
when '<='
|
560
|
+
@@compare_operator.compare(left, right) <= 0
|
561
|
+
when '>'
|
562
|
+
@@compare_operator.compare(left, right) > 0
|
563
|
+
when '>='
|
564
|
+
@@compare_operator.compare(left, right) >= 0
|
565
|
+
else
|
566
|
+
fail(Issues::UNSUPPORTED_OPERATOR, o, { :operator => o.operator })
|
567
|
+
end
|
573
568
|
end
|
574
|
-
end
|
575
569
|
rescue ArgumentError => e
|
576
570
|
fail(Issues::COMPARISON_NOT_POSSIBLE, o, {
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
571
|
+
:operator => o.operator,
|
572
|
+
:left_value => left,
|
573
|
+
:right_value => right,
|
574
|
+
:detail => e.message
|
575
|
+
}, e)
|
581
576
|
end
|
582
577
|
end
|
583
578
|
|
@@ -620,14 +615,14 @@ class EvaluatorImpl
|
|
620
615
|
begin
|
621
616
|
pattern = Regexp.new(pattern) unless pattern.is_a?(Regexp)
|
622
617
|
rescue StandardError => e
|
623
|
-
fail(Issues::MATCH_NOT_REGEXP, o.right_expr, {:detail => e.message}, e)
|
618
|
+
fail(Issues::MATCH_NOT_REGEXP, o.right_expr, { :detail => e.message }, e)
|
624
619
|
end
|
625
620
|
unless left.is_a?(String)
|
626
|
-
fail(Issues::MATCH_NOT_STRING, o.left_expr, {:left_value => left})
|
621
|
+
fail(Issues::MATCH_NOT_STRING, o.left_expr, { :left_value => left })
|
627
622
|
end
|
628
623
|
|
629
624
|
matched = pattern.match(left) # nil, or MatchData
|
630
|
-
set_match_data(matched,scope) # creates ephemeral
|
625
|
+
set_match_data(matched, scope) # creates ephemeral
|
631
626
|
|
632
627
|
# convert match result to Boolean true, or false
|
633
628
|
o.operator == '=~' ? !!matched : !matched
|
@@ -670,13 +665,13 @@ class EvaluatorImpl
|
|
670
665
|
#
|
671
666
|
def eval_LiteralHash o, scope
|
672
667
|
# optimized
|
673
|
-
o.entries.
|
668
|
+
o.entries.each_with_object({}) { |entry, h| h[evaluate(entry.key, scope)] = evaluate(entry.value, scope); }
|
674
669
|
end
|
675
670
|
|
676
671
|
# Evaluates all statements and produces the last evaluated value
|
677
672
|
#
|
678
673
|
def eval_BlockExpression o, scope
|
679
|
-
o.statements.reduce(nil) {|
|
674
|
+
o.statements.reduce(nil) { |_memo, s| evaluate(s, scope) }
|
680
675
|
end
|
681
676
|
|
682
677
|
# Performs optimized search over case option values, lazily evaluating each
|
@@ -696,7 +691,7 @@ class EvaluatorImpl
|
|
696
691
|
the_default = nil
|
697
692
|
if o.options.find do |co|
|
698
693
|
# the first case option that matches
|
699
|
-
|
694
|
+
next unless co.values.find do |c|
|
700
695
|
c = unwind_parentheses(c)
|
701
696
|
case c
|
702
697
|
when Model::LiteralDefault
|
@@ -705,14 +700,14 @@ class EvaluatorImpl
|
|
705
700
|
when Model::UnfoldExpression
|
706
701
|
# not ideal for error reporting, since it is not known which unfolded result
|
707
702
|
# that caused an error - the entire unfold expression is blamed (i.e. the var c, passed to is_match?)
|
708
|
-
evaluate(c, scope).any? {|v| is_match?(test, v, c, co, scope) }
|
703
|
+
evaluate(c, scope).any? { |v| is_match?(test, v, c, co, scope) }
|
709
704
|
else
|
710
705
|
is_match?(test, evaluate(c, scope), c, co, scope)
|
711
706
|
end
|
712
707
|
end
|
708
|
+
|
713
709
|
result = evaluate(co.then_expr, scope)
|
714
710
|
true # the option was picked
|
715
|
-
end
|
716
711
|
end
|
717
712
|
result # an option was picked, and produced a result
|
718
713
|
else
|
@@ -729,7 +724,7 @@ class EvaluatorImpl
|
|
729
724
|
if o.query.is_a?(Model::ExportedQuery)
|
730
725
|
optionally_fail(Issues::RT_NO_STORECONFIGS, o);
|
731
726
|
end
|
732
|
-
CollectorTransformer.new().transform(o,scope)
|
727
|
+
CollectorTransformer.new().transform(o, scope)
|
733
728
|
end
|
734
729
|
|
735
730
|
def eval_ParenthesizedExpression(o, scope)
|
@@ -749,17 +744,15 @@ class EvaluatorImpl
|
|
749
744
|
end
|
750
745
|
|
751
746
|
def eval_Program(o, scope)
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
raise Puppet::ParseError.new(_("break() from context where this is illegal"), ex.file, ex.line)
|
762
|
-
end
|
747
|
+
file = o.locator.file
|
748
|
+
line = 0
|
749
|
+
# Add stack frame for "top scope" logic. See Puppet::Pops::PuppetStack
|
750
|
+
Puppet::Pops::PuppetStack.stack(file, line, self, 'evaluate', [o.body, scope])
|
751
|
+
# evaluate(o.body, scope)
|
752
|
+
rescue Puppet::Pops::Evaluator::PuppetStopIteration => ex
|
753
|
+
# breaking out of a file level program is not allowed
|
754
|
+
# TRANSLATOR break() is a method that should not be translated
|
755
|
+
raise Puppet::ParseError.new(_("break() from context where this is illegal"), ex.file, ex.line)
|
763
756
|
end
|
764
757
|
|
765
758
|
# Produces Array[PAnyType], an array of resource references
|
@@ -770,49 +763,51 @@ class EvaluatorImpl
|
|
770
763
|
|
771
764
|
# Get the type name
|
772
765
|
type_name =
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
evaluated_name = evaluate(tmp_name, scope)
|
785
|
-
unless type_name_acceptable
|
786
|
-
actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
|
787
|
-
fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual => actual})
|
788
|
-
end
|
766
|
+
if (tmp_name = o.type_name).is_a?(Model::QualifiedName)
|
767
|
+
tmp_name.value # already validated as a name
|
768
|
+
else
|
769
|
+
type_name_acceptable =
|
770
|
+
case o.type_name
|
771
|
+
when Model::QualifiedReference
|
772
|
+
true
|
773
|
+
when Model::AccessExpression
|
774
|
+
o.type_name.left_expr.is_a?(Model::QualifiedReference)
|
775
|
+
end
|
789
776
|
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=> evaluated_name.to_s})
|
777
|
+
evaluated_name = evaluate(tmp_name, scope)
|
778
|
+
unless type_name_acceptable
|
779
|
+
actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
|
780
|
+
fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, { :actual => actual })
|
795
781
|
end
|
796
|
-
'class'
|
797
782
|
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
783
|
+
# must be a CatalogEntry subtype
|
784
|
+
case evaluated_name
|
785
|
+
when Types::PClassType
|
786
|
+
unless evaluated_name.class_name.nil?
|
787
|
+
fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, { :actual => evaluated_name.to_s })
|
788
|
+
end
|
803
789
|
|
804
|
-
|
805
|
-
fail(Issues::UNKNOWN_RESOURCE_TYPE, o.type_string, {:type_name => evaluated_name.to_s})
|
790
|
+
'class'
|
806
791
|
|
807
|
-
|
808
|
-
|
809
|
-
|
792
|
+
when Types::PResourceType
|
793
|
+
unless evaluated_name.title().nil?
|
794
|
+
fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, { :actual => evaluated_name.to_s })
|
795
|
+
end
|
796
|
+
|
797
|
+
evaluated_name.type_name # assume validated
|
798
|
+
|
799
|
+
when Types::PTypeReferenceType
|
800
|
+
fail(Issues::UNKNOWN_RESOURCE_TYPE, o.type_string, { :type_name => evaluated_name.to_s })
|
801
|
+
|
802
|
+
else
|
803
|
+
actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
|
804
|
+
fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, { :actual => actual })
|
805
|
+
end
|
810
806
|
end
|
811
|
-
end
|
812
807
|
|
813
808
|
# This is a runtime check - the model is valid, but will have runtime issues when evaluated
|
814
809
|
# and storeconfigs is not set.
|
815
|
-
if
|
810
|
+
if o.exported
|
816
811
|
optionally_fail(Issues::RT_NO_STORECONFIGS_EXPORT, o);
|
817
812
|
end
|
818
813
|
|
@@ -821,7 +816,7 @@ class EvaluatorImpl
|
|
821
816
|
body_to_params = {}
|
822
817
|
|
823
818
|
# titles are evaluated before attribute operations
|
824
|
-
o.bodies.map do |
|
819
|
+
o.bodies.map do |body|
|
825
820
|
titles = evaluate(body.title, scope)
|
826
821
|
|
827
822
|
# Title may not be nil
|
@@ -833,23 +828,25 @@ class EvaluatorImpl
|
|
833
828
|
if titles.nil?
|
834
829
|
fail(Issues::MISSING_TITLE, body.title)
|
835
830
|
end
|
831
|
+
|
836
832
|
titles = [titles].flatten
|
837
833
|
|
838
834
|
# Check types of evaluated titles and duplicate entries
|
839
835
|
titles.each_with_index do |title, index|
|
840
836
|
if title.nil?
|
841
|
-
fail(Issues::MISSING_TITLE_AT, body.title, {:index => index})
|
837
|
+
fail(Issues::MISSING_TITLE_AT, body.title, { :index => index })
|
842
838
|
|
843
839
|
elsif !title.is_a?(String) && title != :default
|
844
840
|
actual = type_calculator.generalize(type_calculator.infer(title)).to_s
|
845
|
-
fail(Issues::ILLEGAL_TITLE_TYPE_AT, body.title, {:index => index, :actual => actual})
|
841
|
+
fail(Issues::ILLEGAL_TITLE_TYPE_AT, body.title, { :index => index, :actual => actual })
|
846
842
|
|
847
843
|
elsif title == EMPTY_STRING
|
848
|
-
|
844
|
+
fail(Issues::EMPTY_STRING_TITLE_AT, body.title, { :index => index })
|
849
845
|
|
850
846
|
elsif titles_to_body[title]
|
851
|
-
fail(Issues::DUPLICATE_TITLE, o, {:title => title})
|
847
|
+
fail(Issues::DUPLICATE_TITLE, o, { :title => title })
|
852
848
|
end
|
849
|
+
|
853
850
|
titles_to_body[title] = body
|
854
851
|
end
|
855
852
|
|
@@ -860,16 +857,16 @@ class EvaluatorImpl
|
|
860
857
|
|
861
858
|
# Store evaluated parameters in a hash associated with the body, but do not yet create resource
|
862
859
|
# since the entry containing :defaults may appear later
|
863
|
-
body_to_params[body] = body.operations.
|
860
|
+
body_to_params[body] = body.operations.each_with_object({}) do |op, param_memo|
|
864
861
|
params = evaluate(op, scope)
|
865
862
|
params = [params] unless params.is_a?(Array)
|
866
863
|
params.each do |p|
|
867
864
|
if param_memo.include? p.name
|
868
|
-
fail(Issues::DUPLICATE_ATTRIBUTE, o, {:attribute => p.name})
|
865
|
+
fail(Issues::DUPLICATE_ATTRIBUTE, o, { :attribute => p.name })
|
869
866
|
end
|
867
|
+
|
870
868
|
param_memo[p.name] = p
|
871
869
|
end
|
872
|
-
param_memo
|
873
870
|
end
|
874
871
|
end
|
875
872
|
|
@@ -878,7 +875,7 @@ class EvaluatorImpl
|
|
878
875
|
# evaluating the ResourceExpression.
|
879
876
|
#
|
880
877
|
defaults_hash = body_to_params[titles_to_body[:default]] || {}
|
881
|
-
o.bodies.map do |
|
878
|
+
o.bodies.map do |body|
|
882
879
|
titles = body_to_titles[body]
|
883
880
|
params = defaults_hash.merge(body_to_params[body] || {})
|
884
881
|
create_resources(o, scope, virtual, exported, type_name, titles, params.values)
|
@@ -913,9 +910,9 @@ class EvaluatorImpl
|
|
913
910
|
hashed_params = evaluate(o.expr, scope)
|
914
911
|
unless hashed_params.is_a?(Hash)
|
915
912
|
actual = type_calculator.generalize(type_calculator.infer(hashed_params)).to_s
|
916
|
-
fail(Issues::TYPE_MISMATCH, o.expr, {:expected => 'Hash', :actual => actual})
|
913
|
+
fail(Issues::TYPE_MISMATCH, o.expr, { :expected => 'Hash', :actual => actual })
|
917
914
|
end
|
918
|
-
hashed_params.map { |k,v| create_resource_parameter(o, scope, k, v, '=>') }
|
915
|
+
hashed_params.map { |k, v| create_resource_parameter(o, scope, k, v, '=>') }
|
919
916
|
end
|
920
917
|
|
921
918
|
# Sets default parameter values for a type, produces the type
|
@@ -923,13 +920,13 @@ class EvaluatorImpl
|
|
923
920
|
def eval_ResourceDefaultsExpression(o, scope)
|
924
921
|
type = evaluate(o.type_ref, scope)
|
925
922
|
type_name =
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
evaluated_parameters = o.operations.map {|op| evaluate(op, scope) }
|
923
|
+
if type.is_a?(Types::PResourceType) && !type.type_name.nil? && type.title.nil?
|
924
|
+
type.type_name # assume it is a valid name
|
925
|
+
else
|
926
|
+
actual = type_calculator.generalize(type_calculator.infer(type))
|
927
|
+
fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_ref, { :actual => actual })
|
928
|
+
end
|
929
|
+
evaluated_parameters = o.operations.map { |op| evaluate(op, scope) }
|
933
930
|
create_resource_defaults(o, scope, type_name, evaluated_parameters)
|
934
931
|
# Produce the type
|
935
932
|
type
|
@@ -943,7 +940,7 @@ class EvaluatorImpl
|
|
943
940
|
#
|
944
941
|
functor = o.functor_expr
|
945
942
|
if functor.is_a?(Model::QualifiedReference) ||
|
946
|
-
|
943
|
+
functor.is_a?(Model::AccessExpression) && functor.left_expr.is_a?(Model::QualifiedReference)
|
947
944
|
# instantiation
|
948
945
|
type = evaluate(functor, scope)
|
949
946
|
return call_function_with_block('new', unfold([type], o.arguments || [], scope), o, scope)
|
@@ -958,7 +955,7 @@ class EvaluatorImpl
|
|
958
955
|
# helpful to point out this easy to make Epp error
|
959
956
|
fail(Issues::ILLEGAL_EPP_PARAMETERS, o)
|
960
957
|
else
|
961
|
-
fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, {:feature=>'function name', :container => o})
|
958
|
+
fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, { :feature => 'function name', :container => o })
|
962
959
|
end
|
963
960
|
name = o.functor_expr.value
|
964
961
|
call_function_with_block(name, unfold([], o.arguments, scope), o, scope)
|
@@ -968,13 +965,15 @@ class EvaluatorImpl
|
|
968
965
|
#
|
969
966
|
def eval_CallMethodExpression(o, scope)
|
970
967
|
unless o.functor_expr.is_a? Model::NamedAccessExpression
|
971
|
-
fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, {:feature=>'function accessor', :container => o})
|
968
|
+
fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, { :feature => 'function accessor', :container => o })
|
972
969
|
end
|
970
|
+
|
973
971
|
receiver = unfold([], [o.functor_expr.left_expr], scope)
|
974
972
|
name = o.functor_expr.right_expr
|
975
973
|
unless name.is_a? Model::QualifiedName
|
976
|
-
fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, {:feature=>'function name', :container => o})
|
974
|
+
fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, { :feature => 'function name', :container => o })
|
977
975
|
end
|
976
|
+
|
978
977
|
name = name.value # the string function name
|
979
978
|
|
980
979
|
obj = receiver[0]
|
@@ -1025,7 +1024,7 @@ class EvaluatorImpl
|
|
1025
1024
|
when Model::UnfoldExpression
|
1026
1025
|
# not ideal for error reporting, since it is not known which unfolded result
|
1027
1026
|
# that caused an error - the entire unfold expression is blamed (i.e. the var c, passed to is_match?)
|
1028
|
-
evaluate(me, scope).any? {|v| is_match?(test, v, me, s, scope) }
|
1027
|
+
evaluate(me, scope).any? { |v| is_match?(test, v, me, s, scope) }
|
1029
1028
|
else
|
1030
1029
|
is_match?(test, evaluate(me, scope), me, s, scope)
|
1031
1030
|
end
|
@@ -1065,10 +1064,10 @@ class EvaluatorImpl
|
|
1065
1064
|
# Evaluates Puppet DSL `unless`
|
1066
1065
|
def eval_UnlessExpression o, scope
|
1067
1066
|
scope.with_guarded_scope do
|
1068
|
-
|
1069
|
-
evaluate(o.then_expr, scope)
|
1070
|
-
else
|
1067
|
+
if is_true?(evaluate(o.test, scope), o.test)
|
1071
1068
|
evaluate(o.else_expr, scope)
|
1069
|
+
else
|
1070
|
+
evaluate(o.then_expr, scope)
|
1072
1071
|
end
|
1073
1072
|
end
|
1074
1073
|
end
|
@@ -1087,7 +1086,9 @@ class EvaluatorImpl
|
|
1087
1086
|
# may occur for some evaluation use cases.
|
1088
1087
|
case name
|
1089
1088
|
when String
|
1089
|
+
# do nothing
|
1090
1090
|
when Numeric
|
1091
|
+
# do nothing
|
1091
1092
|
else
|
1092
1093
|
fail(Issues::ILLEGAL_VARIABLE_EXPRESSION, o.expr)
|
1093
1094
|
end
|
@@ -1097,10 +1098,9 @@ class EvaluatorImpl
|
|
1097
1098
|
# Evaluates double quoted strings that may contain interpolation
|
1098
1099
|
#
|
1099
1100
|
def eval_ConcatenatedString o, scope
|
1100
|
-
o.segments.collect {|expr| string(evaluate(expr, scope), scope)}.join
|
1101
|
+
o.segments.collect { |expr| string(evaluate(expr, scope), scope) }.join
|
1101
1102
|
end
|
1102
1103
|
|
1103
|
-
|
1104
1104
|
# If the wrapped expression is a QualifiedName, it is taken as the name of a variable in scope.
|
1105
1105
|
# Note that this is different from the 3.x implementation, where an initial qualified name
|
1106
1106
|
# is accepted. (e.g. `"---${var + 1}---"` is legal. This implementation requires such concrete
|
@@ -1124,7 +1124,7 @@ class EvaluatorImpl
|
|
1124
1124
|
end
|
1125
1125
|
|
1126
1126
|
def string_Symbol(o, scope)
|
1127
|
-
if :undef == o
|
1127
|
+
if :undef == o # optimized comparison 1.44 vs 1.95
|
1128
1128
|
EMPTY_STRING
|
1129
1129
|
else
|
1130
1130
|
o.to_s
|
@@ -1132,11 +1132,11 @@ class EvaluatorImpl
|
|
1132
1132
|
end
|
1133
1133
|
|
1134
1134
|
def string_Array(o, scope)
|
1135
|
-
"[#{o.map {|e| string(e, scope)}.join(COMMA_SEPARATOR)}]"
|
1135
|
+
"[#{o.map { |e| string(e, scope) }.join(COMMA_SEPARATOR)}]"
|
1136
1136
|
end
|
1137
1137
|
|
1138
1138
|
def string_Hash(o, scope)
|
1139
|
-
"{#{o.map {|k,v| "#{string(k, scope)} => #{string(v, scope)}"}.join(COMMA_SEPARATOR)}}"
|
1139
|
+
"{#{o.map { |k, v| "#{string(k, scope)} => #{string(v, scope)}" }.join(COMMA_SEPARATOR)}}"
|
1140
1140
|
end
|
1141
1141
|
|
1142
1142
|
def string_Regexp(o, scope)
|
@@ -1210,37 +1210,38 @@ class EvaluatorImpl
|
|
1210
1210
|
case x
|
1211
1211
|
when Array
|
1212
1212
|
y = case y
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
end
|
1213
|
+
when Array then y
|
1214
|
+
when Hash then y.to_a
|
1215
|
+
else [y]
|
1216
|
+
end
|
1218
1217
|
x + y # new array with concatenation
|
1219
1218
|
when Hash
|
1220
1219
|
y = case y
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1220
|
+
when Hash then y
|
1221
|
+
when Array
|
1222
|
+
# Hash[[a, 1, b, 2]] => {}
|
1223
|
+
# Hash[a,1,b,2] => {a => 1, b => 2}
|
1224
|
+
# Hash[[a,1], [b,2]] => {[a,1] => [b,2]}
|
1225
|
+
# Hash[[[a,1], [b,2]]] => {a => 1, b => 2}
|
1226
|
+
# Use type calculator to determine if array is Array[Array[?]], and if so use second form
|
1227
|
+
# of call
|
1228
|
+
t = @@type_calculator.infer(y)
|
1229
|
+
if t.element_type.is_a? Types::PArrayType
|
1230
|
+
y.to_h
|
1231
|
+
else
|
1232
|
+
Hash[*y]
|
1233
|
+
end
|
1234
|
+
else
|
1235
|
+
raise ArgumentError, _('Can only append Array or Hash to a Hash')
|
1236
|
+
end
|
1238
1237
|
x.merge y # new hash with overwrite
|
1239
1238
|
when URI
|
1240
|
-
raise ArgumentError
|
1239
|
+
raise ArgumentError, _('An URI can only be merged with an URI or String') unless y.is_a?(String) || y.is_a?(URI)
|
1240
|
+
|
1241
1241
|
x + y
|
1242
1242
|
when Types::PBinaryType::Binary
|
1243
|
-
raise ArgumentError
|
1243
|
+
raise ArgumentError, _('Can only append Binary to a Binary') unless y.is_a?(Types::PBinaryType::Binary)
|
1244
|
+
|
1244
1245
|
Types::PBinaryType::Binary.from_binary_string(x.binary_buffer + y.binary_buffer)
|
1245
1246
|
else
|
1246
1247
|
concatenate([x], y)
|
@@ -1258,22 +1259,20 @@ class EvaluatorImpl
|
|
1258
1259
|
case x
|
1259
1260
|
when Array
|
1260
1261
|
y = case y
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
y.each {|e| result.delete(e) }
|
1262
|
+
when Array then y
|
1263
|
+
when Hash then y.to_a
|
1264
|
+
else [y]
|
1265
|
+
end
|
1266
|
+
y.each { |e| result.delete(e) }
|
1267
1267
|
when Hash
|
1268
1268
|
y = case y
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
y.each {|e| result.delete(e) }
|
1269
|
+
when Array then y
|
1270
|
+
when Hash then y.keys
|
1271
|
+
else [y]
|
1272
|
+
end
|
1273
|
+
y.each { |e| result.delete(e) }
|
1275
1274
|
else
|
1276
|
-
raise ArgumentError
|
1275
|
+
raise ArgumentError, _("Can only delete from an Array or Hash.")
|
1277
1276
|
end
|
1278
1277
|
result
|
1279
1278
|
end
|
@@ -1309,6 +1308,7 @@ class EvaluatorImpl
|
|
1309
1308
|
|
1310
1309
|
def unwind_parentheses(o)
|
1311
1310
|
return o unless o.is_a?(Model::ParenthesizedExpression)
|
1311
|
+
|
1312
1312
|
unwind_parentheses(o.expr)
|
1313
1313
|
end
|
1314
1314
|
private :unwind_parentheses
|