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
data/lib/puppet/type.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
require_relative '../puppet'
|
3
5
|
require_relative '../puppet/util/log'
|
4
6
|
require_relative '../puppet/util/metric'
|
@@ -14,7 +16,6 @@ require_relative '../puppet/concurrent/lock'
|
|
14
16
|
|
15
17
|
# see the bottom of the file for the rest of the inclusions
|
16
18
|
|
17
|
-
|
18
19
|
module Puppet
|
19
20
|
# The base class for all Puppet types.
|
20
21
|
#
|
@@ -100,8 +101,9 @@ class Type
|
|
100
101
|
# Order is only maintained against other types, not arbitrary objects.
|
101
102
|
# The natural order is based on the reference name used when comparing
|
102
103
|
return nil unless other.is_a?(Puppet::CompilableResourceType) || other.class.is_a?(Puppet::CompilableResourceType)
|
104
|
+
|
103
105
|
# against other type instances.
|
104
|
-
|
106
|
+
ref <=> other.ref
|
105
107
|
end
|
106
108
|
|
107
109
|
# Code related to resource type attributes.
|
@@ -121,7 +123,7 @@ class Type
|
|
121
123
|
# @return [Array<String>] all type attribute names in a defined order.
|
122
124
|
#
|
123
125
|
def self.allattrs
|
124
|
-
key_attributes | (parameters & [:provider]) | properties.collect
|
126
|
+
key_attributes | (parameters & [:provider]) | properties.collect(&:name) | parameters | metaparams
|
125
127
|
end
|
126
128
|
|
127
129
|
# Returns the class associated with the given attribute name.
|
@@ -134,11 +136,11 @@ class Type
|
|
134
136
|
# We cache the value, since this method gets called such a huge number
|
135
137
|
# of times (as in, hundreds of thousands in a given run).
|
136
138
|
unless @attrclasses.include?(name)
|
137
|
-
@attrclasses[name] = case
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
139
|
+
@attrclasses[name] = case attrtype(name)
|
140
|
+
when :property; @validproperties[name]
|
141
|
+
when :meta; @@metaparamhash[name]
|
142
|
+
when :param; @paramhash[name]
|
143
|
+
end
|
142
144
|
end
|
143
145
|
@attrclasses[name]
|
144
146
|
end
|
@@ -152,10 +154,10 @@ class Type
|
|
152
154
|
@attrtypes ||= {}
|
153
155
|
unless @attrtypes.include?(attr)
|
154
156
|
@attrtypes[attr] = case
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
157
|
+
when @validproperties.include?(attr); :property
|
158
|
+
when @paramhash.include?(attr); :param
|
159
|
+
when @@metaparamhash.include?(attr); :meta
|
160
|
+
end
|
159
161
|
end
|
160
162
|
|
161
163
|
@attrtypes[attr]
|
@@ -182,7 +184,7 @@ class Type
|
|
182
184
|
# specification to clearly state that the type is ensurable.
|
183
185
|
#
|
184
186
|
# @overload ensurable()
|
185
|
-
# @overload ensurable({
|
187
|
+
# @overload ensurable({ ... })
|
186
188
|
# @yield [ ] A block evaluated in scope of the new Parameter
|
187
189
|
# @yieldreturn [void]
|
188
190
|
# @return [void]
|
@@ -191,10 +193,10 @@ class Type
|
|
191
193
|
#
|
192
194
|
def self.ensurable(&block)
|
193
195
|
if block_given?
|
194
|
-
|
196
|
+
newproperty(:ensure, :parent => Puppet::Property::Ensure, &block)
|
195
197
|
else
|
196
|
-
|
197
|
-
|
198
|
+
newproperty(:ensure, :parent => Puppet::Property::Ensure) do
|
199
|
+
defaultvalues
|
198
200
|
end
|
199
201
|
end
|
200
202
|
end
|
@@ -209,7 +211,7 @@ class Type
|
|
209
211
|
# If the class has all three of these methods defined, then it's
|
210
212
|
# ensurable.
|
211
213
|
[:exists?, :create, :destroy].all? { |method|
|
212
|
-
|
214
|
+
public_method_defined?(method)
|
213
215
|
}
|
214
216
|
end
|
215
217
|
|
@@ -258,7 +260,7 @@ class Type
|
|
258
260
|
# @api private
|
259
261
|
#
|
260
262
|
def self.can_apply_to(target)
|
261
|
-
[
|
263
|
+
[target == :device ? :device : :host, :both].include?(apply_to)
|
262
264
|
end
|
263
265
|
|
264
266
|
# Processes the options for a named parameter.
|
@@ -273,7 +275,7 @@ class Type
|
|
273
275
|
define_method(name.to_s + "?") do
|
274
276
|
val = self[name]
|
275
277
|
if val == :true or val == true
|
276
|
-
|
278
|
+
true
|
277
279
|
end
|
278
280
|
end
|
279
281
|
end
|
@@ -294,6 +296,7 @@ class Type
|
|
294
296
|
#
|
295
297
|
def self.metaparamclass(name)
|
296
298
|
return nil if name.nil?
|
299
|
+
|
297
300
|
@@metaparamhash[name.intern]
|
298
301
|
end
|
299
302
|
|
@@ -301,7 +304,7 @@ class Type
|
|
301
304
|
# @return [Array<String>] all meta-parameter names
|
302
305
|
#
|
303
306
|
def self.metaparams
|
304
|
-
@@metaparams.collect
|
307
|
+
@@metaparams.collect(&:name)
|
305
308
|
end
|
306
309
|
|
307
310
|
# Returns the documentation for a given meta-parameter of this type.
|
@@ -385,7 +388,9 @@ class Type
|
|
385
388
|
#
|
386
389
|
def self.key_attributes
|
387
390
|
# This is a cache miss around 0.05 percent of the time. --daniel 2012-07-17
|
388
|
-
|
391
|
+
# rubocop:disable Naming/MemoizedInstanceVariableName
|
392
|
+
@key_attributes_cache ||= key_attribute_parameters.collect(&:name)
|
393
|
+
# rubocop:enable Naming/MemoizedInstanceVariableName
|
389
394
|
end
|
390
395
|
|
391
396
|
# Returns any parameters that should be included by default in puppet resource's output
|
@@ -426,7 +431,7 @@ class Type
|
|
426
431
|
case key_attributes.length
|
427
432
|
when 0; []
|
428
433
|
when 1;
|
429
|
-
[
|
434
|
+
[[/(.*)/m, [[key_attributes.first]]]]
|
430
435
|
else
|
431
436
|
raise Puppet::DevError, _("you must specify title patterns when there are two or more key attributes")
|
432
437
|
end
|
@@ -438,7 +443,7 @@ class Type
|
|
438
443
|
# @return [Object] an object that is a _uniqueness_key_ for this object
|
439
444
|
#
|
440
445
|
def uniqueness_key
|
441
|
-
self.class.key_attributes.sort_by
|
446
|
+
self.class.key_attributes.sort_by(&:to_s).map { |attribute_name| self[attribute_name] }
|
442
447
|
end
|
443
448
|
|
444
449
|
# Creates a new parameter.
|
@@ -461,12 +466,12 @@ class Type
|
|
461
466
|
|
462
467
|
param = genclass(
|
463
468
|
name,
|
464
|
-
:parent
|
469
|
+
:parent => options[:parent] || Puppet::Parameter,
|
465
470
|
:attributes => options[:attributes],
|
466
|
-
:block
|
467
|
-
:prefix
|
468
|
-
:array
|
469
|
-
:hash
|
471
|
+
:block => block,
|
472
|
+
:prefix => "Parameter",
|
473
|
+
:array => @parameters,
|
474
|
+
:hash => @paramhash
|
470
475
|
)
|
471
476
|
|
472
477
|
handle_param_options(name, options)
|
@@ -547,7 +552,8 @@ class Type
|
|
547
552
|
# @return [Array<String>] Returns the parameter names
|
548
553
|
def self.parameters
|
549
554
|
return [] unless defined?(@parameters)
|
550
|
-
|
555
|
+
|
556
|
+
@parameters.collect(&:name)
|
551
557
|
end
|
552
558
|
|
553
559
|
# @return [Puppet::Parameter] Returns the parameter class associated with the given parameter name.
|
@@ -566,10 +572,11 @@ class Type
|
|
566
572
|
def self.validattr?(name)
|
567
573
|
name = name.intern
|
568
574
|
return true if name == :name
|
575
|
+
|
569
576
|
@validattrs ||= {}
|
570
577
|
|
571
578
|
unless @validattrs.include?(name)
|
572
|
-
@validattrs[name] = !!(
|
579
|
+
@validattrs[name] = !!(validproperty?(name) or validparameter?(name) or metaparam?(name))
|
573
580
|
end
|
574
581
|
|
575
582
|
@validattrs[name]
|
@@ -594,6 +601,7 @@ class Type
|
|
594
601
|
# @return [Boolean] Returns true if the given name is the name of an existing parameter
|
595
602
|
def self.validparameter?(name)
|
596
603
|
raise Puppet::DevError, _("Class %{class_name} has not defined parameters") % { class_name: self } unless defined?(@parameters)
|
604
|
+
|
597
605
|
!!(@paramhash.include?(name) or @@metaparamhash.include?(name))
|
598
606
|
end
|
599
607
|
|
@@ -614,7 +622,7 @@ class Type
|
|
614
622
|
# @return [Boolean] true if a new parameter was added, false otherwise
|
615
623
|
def add_property_parameter(prop_name)
|
616
624
|
if self.class.validproperty?(prop_name) && !@parameters[prop_name]
|
617
|
-
|
625
|
+
newattr(prop_name)
|
618
626
|
return true
|
619
627
|
end
|
620
628
|
false
|
@@ -629,6 +637,7 @@ class Type
|
|
629
637
|
#
|
630
638
|
def name_var
|
631
639
|
return @name_var_cache unless @name_var_cache.nil?
|
640
|
+
|
632
641
|
key_attributes = self.class.key_attributes
|
633
642
|
@name_var_cache = (key_attributes.length == 1) && key_attributes.first
|
634
643
|
end
|
@@ -653,16 +662,16 @@ class Type
|
|
653
662
|
# not the current value.
|
654
663
|
obj.value
|
655
664
|
else
|
656
|
-
|
665
|
+
nil
|
657
666
|
end
|
658
667
|
end
|
659
668
|
|
660
669
|
# Sets the 'should' (wanted state) value of a property, or the value of a parameter.
|
661
|
-
#
|
670
|
+
#
|
662
671
|
# @raise [Puppet::Error] if the setting of the value fails, or if the given name is nil.
|
663
672
|
# @raise [Puppet::ResourceError] when the parameter validation raises Puppet::Error or
|
664
673
|
# ArgumentError
|
665
|
-
def []=(name,value)
|
674
|
+
def []=(name, value)
|
666
675
|
name = name.intern
|
667
676
|
|
668
677
|
fail("no parameter named '#{name}'") unless self.class.validattr?(name)
|
@@ -671,9 +680,9 @@ class Type
|
|
671
680
|
nv = name_var
|
672
681
|
name = nv if nv
|
673
682
|
end
|
674
|
-
raise Puppet::Error
|
683
|
+
raise Puppet::Error, "Got nil value for #{name}" if value.nil?
|
675
684
|
|
676
|
-
property =
|
685
|
+
property = newattr(name)
|
677
686
|
|
678
687
|
if property
|
679
688
|
begin
|
@@ -686,8 +695,6 @@ class Type
|
|
686
695
|
raise error
|
687
696
|
end
|
688
697
|
end
|
689
|
-
|
690
|
-
nil
|
691
698
|
end
|
692
699
|
|
693
700
|
# Removes an attribute from the object; useful in testing or in cleanup
|
@@ -703,7 +710,7 @@ class Type
|
|
703
710
|
if @parameters.has_key?(attr)
|
704
711
|
@parameters.delete(attr)
|
705
712
|
else
|
706
|
-
raise Puppet::DevError
|
713
|
+
raise Puppet::DevError, _("Undefined attribute '%{attribute}' in %{name}") % { attribute: attr, name: self }
|
707
714
|
end
|
708
715
|
end
|
709
716
|
|
@@ -721,7 +728,7 @@ class Type
|
|
721
728
|
# included since they are a subclass of parameter.
|
722
729
|
# @return [Array<Puppet::Parameter>] Array of parameter objects ( or subclass thereof )
|
723
730
|
def parameters_with_value
|
724
|
-
self.class.allattrs.
|
731
|
+
self.class.allattrs.filter_map { |attr| parameter(attr) }
|
725
732
|
end
|
726
733
|
|
727
734
|
# Iterates over all parameters with value currently set.
|
@@ -740,7 +747,7 @@ class Type
|
|
740
747
|
# @param options [Hash] options merged with a fixed set of options defined by this method, passed on to {Puppet::Transaction::Event}.
|
741
748
|
# @return [Puppet::Transaction::Event] the created event
|
742
749
|
def event(options = {})
|
743
|
-
Puppet::Transaction::Event.new(**{:resource => self, :file => file, :line => line, :tags => tags}.merge(options))
|
750
|
+
Puppet::Transaction::Event.new(**{ :resource => self, :file => file, :line => line, :tags => tags }.merge(options))
|
744
751
|
end
|
745
752
|
|
746
753
|
# @return [Object, nil] Returns the 'should' (wanted state) value for a specified property, or nil if the
|
@@ -778,8 +785,8 @@ class Type
|
|
778
785
|
raise Puppet::Error, "Resource type #{self.class.name} does not support parameter #{name}"
|
779
786
|
end
|
780
787
|
|
781
|
-
if provider and !
|
782
|
-
missing = klass.required_features.find_all { |f| !
|
788
|
+
if provider and !provider.class.supports_parameter?(klass)
|
789
|
+
missing = klass.required_features.find_all { |f| !provider.class.feature?(f) }
|
783
790
|
debug "Provider %s does not support features %s; not managing attribute %s" % [provider.class.name, missing.join(", "), name]
|
784
791
|
return nil
|
785
792
|
end
|
@@ -852,7 +859,7 @@ class Type
|
|
852
859
|
return unless parameter
|
853
860
|
|
854
861
|
value = parameter.default
|
855
|
-
if value and !
|
862
|
+
if value and !value.nil?
|
856
863
|
parameter.value = value
|
857
864
|
else
|
858
865
|
@parameters.delete(parameter.name)
|
@@ -906,6 +913,7 @@ class Type
|
|
906
913
|
# @return [???] the version of the catalog or 0 if there is no catalog.
|
907
914
|
def version
|
908
915
|
return 0 unless catalog
|
916
|
+
|
909
917
|
catalog.version
|
910
918
|
end
|
911
919
|
|
@@ -915,7 +923,7 @@ class Type
|
|
915
923
|
# ruby file adding a new type with new properties?
|
916
924
|
#
|
917
925
|
def properties
|
918
|
-
self.class.properties.
|
926
|
+
self.class.properties.filter_map { |prop| @parameters[prop.name] }
|
919
927
|
end
|
920
928
|
|
921
929
|
# Returns true if the type's notion of name is the identity of a resource.
|
@@ -925,9 +933,9 @@ class Type
|
|
925
933
|
# @return [Boolean] true, if this type's name is isomorphic with the object
|
926
934
|
def self.isomorphic?
|
927
935
|
if defined?(@isomorphic)
|
928
|
-
|
936
|
+
@isomorphic
|
929
937
|
else
|
930
|
-
|
938
|
+
true
|
931
939
|
end
|
932
940
|
end
|
933
941
|
|
@@ -947,19 +955,17 @@ class Type
|
|
947
955
|
# Once an object is managed, it always stays managed; but an object
|
948
956
|
# that is listed as unmanaged might become managed later in the process,
|
949
957
|
# so we have to check that every time
|
950
|
-
|
951
|
-
return @managed
|
952
|
-
else
|
958
|
+
unless @managed
|
953
959
|
@managed = false
|
954
960
|
properties.each { |property|
|
955
961
|
s = property.should
|
956
|
-
if s and !
|
962
|
+
if s and !property.class.unmanaged
|
957
963
|
@managed = true
|
958
964
|
break
|
959
965
|
end
|
960
966
|
}
|
961
|
-
return @managed
|
962
967
|
end
|
968
|
+
@managed
|
963
969
|
end
|
964
970
|
|
965
971
|
###############################
|
@@ -978,10 +984,10 @@ class Type
|
|
978
984
|
# Removes this object (FROM WHERE?)
|
979
985
|
# @todo removes if from where?
|
980
986
|
# @return [void]
|
981
|
-
def remove
|
987
|
+
def remove
|
982
988
|
# This is hackish (mmm, cut and paste), but it works for now, and it's
|
983
989
|
# better than warnings.
|
984
|
-
@parameters.each do |
|
990
|
+
@parameters.each do |_name, obj|
|
985
991
|
obj.remove
|
986
992
|
end
|
987
993
|
@parameters.clear
|
@@ -989,7 +995,7 @@ class Type
|
|
989
995
|
@parent = nil
|
990
996
|
|
991
997
|
# Remove the reference to the provider.
|
992
|
-
if
|
998
|
+
if provider
|
993
999
|
@provider.clear
|
994
1000
|
@provider = nil
|
995
1001
|
end
|
@@ -1029,48 +1035,7 @@ class Type
|
|
1029
1035
|
#
|
1030
1036
|
# @return [???, nil] WHAT DOES IT RETURN? GUESS IS VOID
|
1031
1037
|
def flush
|
1032
|
-
|
1033
|
-
end
|
1034
|
-
|
1035
|
-
# Returns true if all contained objects are in sync.
|
1036
|
-
# @todo "contained in what?" in the given "in" parameter?
|
1037
|
-
#
|
1038
|
-
# @todo deal with the comment _"FIXME I don't think this is used on the type instances any more,
|
1039
|
-
# it's really only used for testing"_
|
1040
|
-
# @return [Boolean] true if in sync, false otherwise.
|
1041
|
-
#
|
1042
|
-
def insync?(is)
|
1043
|
-
insync = true
|
1044
|
-
|
1045
|
-
property = @parameters[:ensure]
|
1046
|
-
if property
|
1047
|
-
unless is.include? property
|
1048
|
-
#TRANSLATORS 'is' is a variable name and should not be translated
|
1049
|
-
raise Puppet::DevError, _("The 'is' value is not in the 'is' array for '%{name}'") % { name: property.name }
|
1050
|
-
end
|
1051
|
-
ensureis = is[property]
|
1052
|
-
if property.safe_insync?(ensureis) and property.should == :absent
|
1053
|
-
return true
|
1054
|
-
end
|
1055
|
-
end
|
1056
|
-
|
1057
|
-
properties.each { |prop|
|
1058
|
-
unless is.include? prop
|
1059
|
-
#TRANSLATORS 'is' is a variable name and should not be translated
|
1060
|
-
raise Puppet::DevError, _("The 'is' value is not in the 'is' array for '%{name}'") % { name: prop.name }
|
1061
|
-
end
|
1062
|
-
|
1063
|
-
propis = is[prop]
|
1064
|
-
unless prop.safe_insync?(propis)
|
1065
|
-
prop.debug("Not in sync: #{propis.inspect} vs #{prop.should.inspect}")
|
1066
|
-
insync = false
|
1067
|
-
#else
|
1068
|
-
# property.debug("In sync")
|
1069
|
-
end
|
1070
|
-
}
|
1071
|
-
|
1072
|
-
#self.debug("#{self} sync status is #{insync}")
|
1073
|
-
insync
|
1038
|
+
provider.flush if provider and provider.respond_to?(:flush)
|
1074
1039
|
end
|
1075
1040
|
|
1076
1041
|
# Says if the ensure property should be retrieved if the resource is ensurable
|
@@ -1086,7 +1051,7 @@ class Type
|
|
1086
1051
|
# @return [Puppet::Resource] array of all property values (mix of types)
|
1087
1052
|
# @raise [fail???] if there is a provider and it is not suitable for the host this is evaluated for.
|
1088
1053
|
def retrieve
|
1089
|
-
fail "Provider #{provider.class.name} is not functional on this host" if
|
1054
|
+
fail "Provider #{provider.class.name} is not functional on this host" if provider.is_a?(Puppet::Provider) and !provider.class.suitable?
|
1090
1055
|
|
1091
1056
|
result = Puppet::Resource.new(self.class, title)
|
1092
1057
|
|
@@ -1106,6 +1071,7 @@ class Type
|
|
1106
1071
|
|
1107
1072
|
properties.each do |property|
|
1108
1073
|
next if property.name == :ensure
|
1074
|
+
|
1109
1075
|
if ensure_state == :absent
|
1110
1076
|
result[property] = :absent
|
1111
1077
|
else
|
@@ -1149,18 +1115,15 @@ class Type
|
|
1149
1115
|
# is the first property, which is important for skipping 'retrieve' on
|
1150
1116
|
# all the properties if the resource is absent.
|
1151
1117
|
ensure_state = false
|
1152
|
-
|
1118
|
+
properties.each_with_object({}) do |property, prophash|
|
1153
1119
|
if property.name == :ensure
|
1154
1120
|
ensure_state = property.retrieve
|
1155
1121
|
prophash[property] = ensure_state
|
1122
|
+
elsif ensure_state == :absent
|
1123
|
+
prophash[property] = :absent
|
1156
1124
|
else
|
1157
|
-
|
1158
|
-
prophash[property] = :absent
|
1159
|
-
else
|
1160
|
-
prophash[property] = property.retrieve
|
1161
|
-
end
|
1125
|
+
prophash[property] = property.retrieve
|
1162
1126
|
end
|
1163
|
-
prophash
|
1164
1127
|
end
|
1165
1128
|
end
|
1166
1129
|
|
@@ -1169,7 +1132,7 @@ class Type
|
|
1169
1132
|
def noop?
|
1170
1133
|
# If we're not a host_config, we're almost certainly part of
|
1171
1134
|
# Settings, and we want to ignore 'noop'
|
1172
|
-
return false if catalog and !
|
1135
|
+
return false if catalog and !catalog.host_config?
|
1173
1136
|
|
1174
1137
|
if defined?(@noop)
|
1175
1138
|
@noop
|
@@ -1188,7 +1151,7 @@ class Type
|
|
1188
1151
|
# Either requires providers or must be overridden.
|
1189
1152
|
# @raise [Puppet::DevError] when there are no providers and the implementation has not overridden this method.
|
1190
1153
|
def self.instances
|
1191
|
-
raise Puppet::DevError, _("%{name} has no providers and has not overridden 'instances'") % { name:
|
1154
|
+
raise Puppet::DevError, _("%{name} has no providers and has not overridden 'instances'") % { name: name } if provider_hash.empty?
|
1192
1155
|
|
1193
1156
|
# Put the default provider first, then the rest of the suitable providers.
|
1194
1157
|
provider_instances = {}
|
@@ -1200,7 +1163,7 @@ class Type
|
|
1200
1163
|
other = provider_instances[title]
|
1201
1164
|
if other
|
1202
1165
|
Puppet.debug {
|
1203
|
-
"%s %s found in both %s and %s; skipping the %s version" % [
|
1166
|
+
"%s %s found in both %s and %s; skipping the %s version" % [name.to_s.capitalize, title, other.class.name, instance.class.name, instance.class.name]
|
1204
1167
|
}
|
1205
1168
|
next
|
1206
1169
|
end
|
@@ -1220,13 +1183,13 @@ class Type
|
|
1220
1183
|
def self.providers_by_source
|
1221
1184
|
# Put the default provider first (can be nil), then the rest of the suitable providers.
|
1222
1185
|
sources = []
|
1223
|
-
[defaultprovider, suitableprovider].flatten.uniq.
|
1186
|
+
[defaultprovider, suitableprovider].flatten.uniq.filter_map do |provider|
|
1224
1187
|
next if provider.nil?
|
1225
1188
|
next if sources.include?(provider.source)
|
1226
1189
|
|
1227
1190
|
sources << provider.source
|
1228
1191
|
provider
|
1229
|
-
end
|
1192
|
+
end
|
1230
1193
|
end
|
1231
1194
|
|
1232
1195
|
# Converts a simple hash into a Resource instance.
|
@@ -1235,7 +1198,7 @@ class Type
|
|
1235
1198
|
# @return [Puppet::Resource] the resource created from the hash
|
1236
1199
|
# @raise [Puppet::Error] if a title is missing in the given hash
|
1237
1200
|
def self.hash2resource(hash)
|
1238
|
-
hash = hash.
|
1201
|
+
hash = hash.each_with_object({}) { |ary, result| result[ary[0].to_sym] = ary[1]; }
|
1239
1202
|
|
1240
1203
|
title = hash.delete(:title)
|
1241
1204
|
title ||= hash[:name]
|
@@ -1258,7 +1221,6 @@ class Type
|
|
1258
1221
|
resource
|
1259
1222
|
end
|
1260
1223
|
|
1261
|
-
|
1262
1224
|
# Returns an array of strings representing the containment hierarchy
|
1263
1225
|
# (types/classes) that make up the path to the resource from the root
|
1264
1226
|
# of the catalog. This is mostly used for logging purposes.
|
@@ -1267,9 +1229,9 @@ class Type
|
|
1267
1229
|
def pathbuilder
|
1268
1230
|
p = parent
|
1269
1231
|
if p
|
1270
|
-
[p.pathbuilder,
|
1232
|
+
[p.pathbuilder, ref].flatten
|
1271
1233
|
else
|
1272
|
-
[
|
1234
|
+
[ref]
|
1273
1235
|
end
|
1274
1236
|
end
|
1275
1237
|
|
@@ -1347,10 +1309,11 @@ class Type
|
|
1347
1309
|
and the second run will log the edit made by Puppet.)"
|
1348
1310
|
|
1349
1311
|
validate do |list|
|
1350
|
-
list = Array(list).collect
|
1312
|
+
list = Array(list).collect(&:to_sym)
|
1351
1313
|
unless list == [:all]
|
1352
1314
|
list.each do |param|
|
1353
1315
|
next if @resource.class.validattr?(param)
|
1316
|
+
|
1354
1317
|
fail "Cannot audit #{param}: not a valid attribute for #{resource}"
|
1355
1318
|
end
|
1356
1319
|
end
|
@@ -1359,6 +1322,7 @@ class Type
|
|
1359
1322
|
munge do |args|
|
1360
1323
|
properties_to_audit(args).each do |param|
|
1361
1324
|
next unless resource.class.validproperty?(param)
|
1325
|
+
|
1362
1326
|
resource.newattr(param)
|
1363
1327
|
end
|
1364
1328
|
end
|
@@ -1366,16 +1330,14 @@ class Type
|
|
1366
1330
|
def all_properties
|
1367
1331
|
resource.class.properties.find_all do |property|
|
1368
1332
|
resource.provider.nil? or resource.provider.class.supports_parameter?(property)
|
1369
|
-
end.collect
|
1370
|
-
property.name
|
1371
|
-
end
|
1333
|
+
end.collect(&:name)
|
1372
1334
|
end
|
1373
1335
|
|
1374
1336
|
def properties_to_audit(list)
|
1375
|
-
if !list.
|
1337
|
+
if !list.is_a?(Array) && list.to_sym == :all
|
1376
1338
|
all_properties
|
1377
1339
|
else
|
1378
|
-
Array(list).collect
|
1340
|
+
Array(list).collect(&:to_sym)
|
1379
1341
|
end
|
1380
1342
|
end
|
1381
1343
|
end
|
@@ -1411,11 +1373,11 @@ class Type
|
|
1411
1373
|
end
|
1412
1374
|
|
1413
1375
|
newmetaparam(:alias) do
|
1414
|
-
desc
|
1376
|
+
desc "Creates an alias for the resource. Puppet uses this internally when you
|
1415
1377
|
provide a symbolic title and an explicit namevar value:
|
1416
1378
|
|
1417
1379
|
file { 'sshdconfig':
|
1418
|
-
path => $
|
1380
|
+
path => $os['name'] ? {
|
1419
1381
|
solaris => '/usr/local/etc/ssh/sshd_config',
|
1420
1382
|
default => '/etc/ssh/sshd_config',
|
1421
1383
|
},
|
@@ -1447,7 +1409,7 @@ class Type
|
|
1447
1409
|
There's no way here for the Puppet parser to know that these two stanzas
|
1448
1410
|
should be affecting the same file.
|
1449
1411
|
|
1450
|
-
|
1412
|
+
"
|
1451
1413
|
|
1452
1414
|
munge do |aliases|
|
1453
1415
|
aliases = [aliases] unless aliases.is_a?(Array)
|
@@ -1457,7 +1419,7 @@ class Type
|
|
1457
1419
|
aliases.each do |other|
|
1458
1420
|
obj = @resource.catalog.resource(@resource.class.name, other)
|
1459
1421
|
if obj
|
1460
|
-
unless obj.
|
1422
|
+
unless obj.equal?(@resource) # same object?
|
1461
1423
|
self.fail("#{@resource.title} can not create alias #{other}: object already exists")
|
1462
1424
|
end
|
1463
1425
|
next
|
@@ -1530,11 +1492,11 @@ class Type
|
|
1530
1492
|
# @return [void]
|
1531
1493
|
def validate_relationship
|
1532
1494
|
@value.each do |ref|
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1495
|
+
next if @resource.catalog.resource(ref.to_s)
|
1496
|
+
|
1497
|
+
description = self.class.direction == :in ? "dependency" : "dependent"
|
1498
|
+
fail ResourceError, _("Could not find %{description} %{ref} for %{resource}") %
|
1499
|
+
{ description: description, ref: ref, resource: resource.ref }
|
1538
1500
|
end
|
1539
1501
|
end
|
1540
1502
|
|
@@ -1586,15 +1548,15 @@ class Type
|
|
1586
1548
|
|
1587
1549
|
## Corrected syntax of debug statement to reflect the way this was called.
|
1588
1550
|
# i.e. before, after, subscribe, notify
|
1589
|
-
|
1551
|
+
debug do
|
1590
1552
|
relation = case self.class.name
|
1591
|
-
|
1592
|
-
|
1593
|
-
|
1594
|
-
|
1595
|
-
|
1596
|
-
|
1597
|
-
|
1553
|
+
when "subscribe"
|
1554
|
+
"subscribes"
|
1555
|
+
when "notify"
|
1556
|
+
"notifies"
|
1557
|
+
else
|
1558
|
+
self.class.name
|
1559
|
+
end
|
1598
1560
|
|
1599
1561
|
"#{relation} to #{related_resource.ref}"
|
1600
1562
|
end
|
@@ -1610,13 +1572,12 @@ class Type
|
|
1610
1572
|
RelationshipMetaparam.subclasses
|
1611
1573
|
end
|
1612
1574
|
|
1613
|
-
|
1614
1575
|
# Note that the order in which the relationships params is defined
|
1615
1576
|
# matters. The labeled params (notify and subscribe) must be later,
|
1616
1577
|
# so that if both params are used, those ones win. It's a hackish
|
1617
1578
|
# solution, but it works.
|
1618
1579
|
|
1619
|
-
newmetaparam(:require, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :NONE}) do
|
1580
|
+
newmetaparam(:require, :parent => RelationshipMetaparam, :attributes => { :direction => :in, :events => :NONE }) do
|
1620
1581
|
desc "One or more resources that this resource depends on, expressed as
|
1621
1582
|
[resource references](https://puppet.com/docs/puppet/latest/lang_data_resource_reference.html).
|
1622
1583
|
Multiple resources can be specified as an array of references. When this
|
@@ -1630,7 +1591,7 @@ class Type
|
|
1630
1591
|
[the language page on relationships](https://puppet.com/docs/puppet/latest/lang_relationships.html)."
|
1631
1592
|
end
|
1632
1593
|
|
1633
|
-
newmetaparam(:subscribe, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :ALL_EVENTS, :callback => :refresh}) do
|
1594
|
+
newmetaparam(:subscribe, :parent => RelationshipMetaparam, :attributes => { :direction => :in, :events => :ALL_EVENTS, :callback => :refresh }) do
|
1634
1595
|
desc "One or more resources that this resource depends on, expressed as
|
1635
1596
|
[resource references](https://puppet.com/docs/puppet/latest/lang_data_resource_reference.html).
|
1636
1597
|
Multiple resources can be specified as an array of references. When this
|
@@ -1648,7 +1609,7 @@ class Type
|
|
1648
1609
|
[the language page on relationships](https://puppet.com/docs/puppet/latest/lang_relationships.html)."
|
1649
1610
|
end
|
1650
1611
|
|
1651
|
-
newmetaparam(:before, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :NONE}) do
|
1612
|
+
newmetaparam(:before, :parent => RelationshipMetaparam, :attributes => { :direction => :out, :events => :NONE }) do
|
1652
1613
|
desc "One or more resources that depend on this resource, expressed as
|
1653
1614
|
[resource references](https://puppet.com/docs/puppet/latest/lang_data_resource_reference.html).
|
1654
1615
|
Multiple resources can be specified as an array of references. When this
|
@@ -1662,7 +1623,7 @@ class Type
|
|
1662
1623
|
[the language page on relationships](https://puppet.com/docs/puppet/latest/lang_relationships.html)."
|
1663
1624
|
end
|
1664
1625
|
|
1665
|
-
newmetaparam(:notify, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :ALL_EVENTS, :callback => :refresh}) do
|
1626
|
+
newmetaparam(:notify, :parent => RelationshipMetaparam, :attributes => { :direction => :out, :events => :ALL_EVENTS, :callback => :refresh }) do
|
1666
1627
|
desc "One or more resources that depend on this resource, expressed as
|
1667
1628
|
[resource references](https://puppet.com/docs/puppet/latest/lang_data_resource_reference.html).
|
1668
1629
|
Multiple resources can be specified as an array of references. When this
|
@@ -1748,16 +1709,16 @@ class Type
|
|
1748
1709
|
suitable = suitableprovider
|
1749
1710
|
|
1750
1711
|
# Find which providers are a default for this system.
|
1751
|
-
defaults = suitable.find_all
|
1712
|
+
defaults = suitable.find_all(&:default?)
|
1752
1713
|
|
1753
1714
|
# If we don't have any default we use suitable providers
|
1754
1715
|
defaults = suitable if defaults.empty?
|
1755
|
-
max = defaults.collect
|
1716
|
+
max = defaults.collect(&:specificity).max
|
1756
1717
|
defaults = defaults.find_all { |provider| provider.specificity == max }
|
1757
1718
|
|
1758
1719
|
if defaults.length > 1
|
1759
1720
|
Puppet.warning(_("Found multiple default providers for %{name}: %{provider_list}; using %{selected_provider}") %
|
1760
|
-
{ name:
|
1721
|
+
{ name: name, provider_list: defaults.collect { |i| i.name.to_s }.join(", "), selected_provider: defaults[0].name })
|
1761
1722
|
end
|
1762
1723
|
|
1763
1724
|
@defaultprovider = defaults.shift unless defaults.empty?
|
@@ -1773,7 +1734,7 @@ class Type
|
|
1773
1734
|
# @return [Hash{ ??? => Puppet::Provider}] Returns a hash of WHAT EXACTLY for this type.
|
1774
1735
|
# @see provider_hash_by_type method to get the same for some other type
|
1775
1736
|
def self.provider_hash
|
1776
|
-
Puppet::Type.provider_hash_by_type(
|
1737
|
+
Puppet::Type.provider_hash_by_type(name)
|
1777
1738
|
end
|
1778
1739
|
|
1779
1740
|
# Returns the provider having the given name.
|
@@ -1809,7 +1770,7 @@ class Type
|
|
1809
1770
|
def self.validprovider?(name)
|
1810
1771
|
name = name.intern
|
1811
1772
|
|
1812
|
-
|
1773
|
+
provider_hash.has_key?(name) && provider_hash[name].suitable?
|
1813
1774
|
end
|
1814
1775
|
|
1815
1776
|
# Creates a new provider of a type.
|
@@ -1835,37 +1796,31 @@ class Type
|
|
1835
1796
|
|
1836
1797
|
pname = options[:parent]
|
1837
1798
|
parent = if pname
|
1838
|
-
|
1839
|
-
|
1840
|
-
|
1841
|
-
|
1842
|
-
|
1843
|
-
|
1844
|
-
|
1845
|
-
|
1846
|
-
|
1847
|
-
|
1848
|
-
end
|
1849
|
-
else
|
1850
|
-
Puppet::Provider
|
1851
|
-
end
|
1799
|
+
options.delete(:parent)
|
1800
|
+
if pname.is_a? Class
|
1801
|
+
pname
|
1802
|
+
else
|
1803
|
+
provider = self.provider(pname)
|
1804
|
+
provider || raise(Puppet::DevError, _("Could not find parent provider %{parent} of %{name}") % { parent: pname, name: name })
|
1805
|
+
end
|
1806
|
+
else
|
1807
|
+
Puppet::Provider
|
1808
|
+
end
|
1852
1809
|
|
1853
1810
|
options[:resource_type] ||= self
|
1854
1811
|
|
1855
|
-
|
1812
|
+
providify
|
1856
1813
|
|
1857
|
-
|
1814
|
+
genclass(
|
1858
1815
|
name,
|
1859
|
-
:parent
|
1860
|
-
:hash
|
1861
|
-
:prefix
|
1862
|
-
:block
|
1863
|
-
:include
|
1864
|
-
:extend
|
1816
|
+
:parent => parent,
|
1817
|
+
:hash => provider_hash,
|
1818
|
+
:prefix => "Provider",
|
1819
|
+
:block => block,
|
1820
|
+
:include => feature_module,
|
1821
|
+
:extend => feature_module,
|
1865
1822
|
:attributes => options
|
1866
1823
|
)
|
1867
|
-
|
1868
|
-
provider
|
1869
1824
|
end
|
1870
1825
|
|
1871
1826
|
# Ensures there is a `:provider` parameter defined.
|
@@ -1880,7 +1835,7 @@ class Type
|
|
1880
1835
|
# We expect that the class in which this code is executed will be something
|
1881
1836
|
# like Puppet::Type::Ssh_authorized_key::ParameterProvider.
|
1882
1837
|
desc <<-EOT
|
1883
|
-
The specific backend to use for this `#{
|
1838
|
+
The specific backend to use for this `#{to_s.split('::')[2].downcase}`
|
1884
1839
|
resource. You will seldom need to specify this --- Puppet will usually
|
1885
1840
|
discover the appropriate provider for your platform.
|
1886
1841
|
EOT
|
@@ -1901,7 +1856,7 @@ class Type
|
|
1901
1856
|
# its indentation with scrub. But we don't need to manually scrub the
|
1902
1857
|
# provider's doc string, since markdown_definitionlist sanitizes its inputs.
|
1903
1858
|
scrub(@doc) + "Available providers are:\n\n" + parenttype.providers.sort_by(&:to_s).collect { |i|
|
1904
|
-
markdown_definitionlist(
|
1859
|
+
markdown_definitionlist(i, scrub(parenttype().provider(i).doc))
|
1905
1860
|
}.join
|
1906
1861
|
end
|
1907
1862
|
|
@@ -1917,7 +1872,7 @@ class Type
|
|
1917
1872
|
provider_class = provider_class.class.name if provider_class.is_a?(Puppet::Provider)
|
1918
1873
|
|
1919
1874
|
unless @resource.class.provider(provider_class)
|
1920
|
-
raise ArgumentError, _("Invalid %{resource} provider '%{provider_class}'") % { resource: @resource.class.name, provider_class: provider_class}
|
1875
|
+
raise ArgumentError, _("Invalid %{resource} provider '%{provider_class}'") % { resource: @resource.class.name, provider_class: provider_class }
|
1921
1876
|
end
|
1922
1877
|
end
|
1923
1878
|
|
@@ -1949,15 +1904,15 @@ class Type
|
|
1949
1904
|
|
1950
1905
|
# Returns a list of suitable providers for the given type.
|
1951
1906
|
# A call to this method will load all providers if not already loaded and ask each if it is
|
1952
|
-
# suitable - those that are
|
1907
|
+
# suitable - those that are included in the result.
|
1953
1908
|
# @note This method also does some special processing which rejects a provider named `:fake` (for testing purposes).
|
1954
1909
|
# @return [Array<Puppet::Provider>] Returns an array of all suitable providers.
|
1955
1910
|
#
|
1956
1911
|
def self.suitableprovider
|
1957
1912
|
providerloader.loadall(Puppet.lookup(:current_environment)) if provider_hash.empty?
|
1958
|
-
provider_hash.find_all { |
|
1913
|
+
provider_hash.find_all { |_name, provider|
|
1959
1914
|
provider.suitable?
|
1960
|
-
}.collect { |
|
1915
|
+
}.collect { |_name, provider|
|
1961
1916
|
provider
|
1962
1917
|
}.reject { |p| p.name == :fake } # For testing
|
1963
1918
|
end
|
@@ -2024,16 +1979,16 @@ class Type
|
|
2024
1979
|
# requirement.
|
2025
1980
|
#
|
2026
1981
|
# @example Autorequire the files File['foo', 'bar']
|
2027
|
-
# autorequire( 'file', {
|
1982
|
+
# autorequire( 'file', { ['foo', 'bar'] })
|
2028
1983
|
#
|
2029
1984
|
# @example Autobefore the files File['foo', 'bar']
|
2030
|
-
# autobefore( 'file', {
|
1985
|
+
# autobefore( 'file', { ['foo', 'bar'] })
|
2031
1986
|
#
|
2032
1987
|
# @example Autosubscribe the files File['foo', 'bar']
|
2033
|
-
# autosubscribe( 'file', {
|
1988
|
+
# autosubscribe( 'file', { ['foo', 'bar'] })
|
2034
1989
|
#
|
2035
1990
|
# @example Autonotify the files File['foo', 'bar']
|
2036
|
-
# autonotify( 'file', {
|
1991
|
+
# autonotify( 'file', { ['foo', 'bar'] })
|
2037
1992
|
#
|
2038
1993
|
# @param name [String] the name of a type of which one or several resources should be autorelated e.g. "file"
|
2039
1994
|
# @yield [ ] a block returning list of names of given type to auto require
|
@@ -2081,7 +2036,7 @@ class Type
|
|
2081
2036
|
# @return [void]
|
2082
2037
|
def self.eachautobefore
|
2083
2038
|
@autobefores ||= {}
|
2084
|
-
@autobefores.each { |type,block|
|
2039
|
+
@autobefores.each { |type, block|
|
2085
2040
|
yield(type, block)
|
2086
2041
|
}
|
2087
2042
|
end
|
@@ -2093,7 +2048,7 @@ class Type
|
|
2093
2048
|
# @return [void]
|
2094
2049
|
def self.eachautosubscribe
|
2095
2050
|
@autosubscribes ||= {}
|
2096
|
-
@autosubscribes.each { |type,block|
|
2051
|
+
@autosubscribes.each { |type, block|
|
2097
2052
|
yield(type, block)
|
2098
2053
|
}
|
2099
2054
|
end
|
@@ -2105,7 +2060,7 @@ class Type
|
|
2105
2060
|
# @return [void]
|
2106
2061
|
def self.eachautonotify
|
2107
2062
|
@autonotifies ||= {}
|
2108
|
-
@autonotifies.each { |type,block|
|
2063
|
+
@autonotifies.each { |type, block|
|
2109
2064
|
yield(type, block)
|
2110
2065
|
}
|
2111
2066
|
end
|
@@ -2131,8 +2086,9 @@ class Type
|
|
2131
2086
|
next unless Puppet::Type.type(type)
|
2132
2087
|
|
2133
2088
|
# Retrieve the list of names from the block.
|
2134
|
-
list =
|
2089
|
+
list = instance_eval(&block)
|
2135
2090
|
next unless list
|
2091
|
+
|
2136
2092
|
list = [list] unless list.is_a?(Array)
|
2137
2093
|
|
2138
2094
|
# Collect the current prereqs
|
@@ -2180,7 +2136,7 @@ class Type
|
|
2180
2136
|
self.class.relationship_params.collect do |klass|
|
2181
2137
|
param = @parameters[klass.name]
|
2182
2138
|
param.to_edges if param
|
2183
|
-
end.flatten.
|
2139
|
+
end.flatten.compact
|
2184
2140
|
end
|
2185
2141
|
|
2186
2142
|
# Sets the initial list of tags to associate to this resource.
|
@@ -2231,6 +2187,7 @@ class Type
|
|
2231
2187
|
# @return [Boolean] true if the type should send itself a refresh event on change.
|
2232
2188
|
#
|
2233
2189
|
attr_accessor :self_refresh
|
2190
|
+
|
2234
2191
|
include Enumerable, Puppet::Util::ClassGen
|
2235
2192
|
|
2236
2193
|
include Puppet::Util
|
@@ -2254,7 +2211,7 @@ class Type
|
|
2254
2211
|
@parameters = []
|
2255
2212
|
@paramhash = {}
|
2256
2213
|
|
2257
|
-
@paramdoc = Hash.new { |hash,key|
|
2214
|
+
@paramdoc = Hash.new { |hash, key|
|
2258
2215
|
key = key.intern if key.is_a?(String)
|
2259
2216
|
if hash.include?(key)
|
2260
2217
|
hash[key]
|
@@ -2262,9 +2219,9 @@ class Type
|
|
2262
2219
|
"Param Documentation for #{key} not found"
|
2263
2220
|
end
|
2264
2221
|
}
|
2265
|
-
|
2222
|
+
# rubocop:disable Naming/MemoizedInstanceVariableName
|
2266
2223
|
@doc ||= ""
|
2267
|
-
|
2224
|
+
# rubocop:enable Naming/MemoizedInstanceVariableName
|
2268
2225
|
end
|
2269
2226
|
|
2270
2227
|
# Returns the name of this type (if specified) or the parent type #to_s.
|
@@ -2322,9 +2279,7 @@ class Type
|
|
2322
2279
|
# @return [void]
|
2323
2280
|
#
|
2324
2281
|
def log(msg)
|
2325
|
-
|
2326
2282
|
Puppet::Util::Log.create(
|
2327
|
-
|
2328
2283
|
:level => @parameters[:loglevel].value,
|
2329
2284
|
:message => msg,
|
2330
2285
|
|
@@ -2332,7 +2287,6 @@ class Type
|
|
2332
2287
|
)
|
2333
2288
|
end
|
2334
2289
|
|
2335
|
-
|
2336
2290
|
# instance methods related to instance intrinsics
|
2337
2291
|
# e.g., initialize and name
|
2338
2292
|
|
@@ -2375,7 +2329,7 @@ class Type
|
|
2375
2329
|
[:file, :line, :catalog, :exported, :virtual].each do |getter|
|
2376
2330
|
setter = getter.to_s + "="
|
2377
2331
|
val = resource.send(getter)
|
2378
|
-
|
2332
|
+
send(setter, val) if val
|
2379
2333
|
end
|
2380
2334
|
|
2381
2335
|
merge_tags_from(resource)
|
@@ -2401,13 +2355,11 @@ class Type
|
|
2401
2355
|
#
|
2402
2356
|
# @return [void]
|
2403
2357
|
def validate_resource
|
2404
|
-
|
2405
|
-
|
2406
|
-
|
2407
|
-
|
2408
|
-
|
2409
|
-
raise error
|
2410
|
-
end
|
2358
|
+
validate if respond_to?(:validate)
|
2359
|
+
rescue Puppet::Error, ArgumentError => detail
|
2360
|
+
error = Puppet::ResourceError.new("Validation of #{ref} failed: #{detail}")
|
2361
|
+
adderrorcontext(error, detail)
|
2362
|
+
raise error
|
2411
2363
|
end
|
2412
2364
|
|
2413
2365
|
protected
|
@@ -2449,8 +2401,9 @@ class Type
|
|
2449
2401
|
end
|
2450
2402
|
end
|
2451
2403
|
|
2452
|
-
parameters.each do |
|
2404
|
+
parameters.each do |_name, param|
|
2453
2405
|
next if param.sensitive
|
2406
|
+
|
2454
2407
|
if param.is_a?(Puppet::Parameter)
|
2455
2408
|
param.sensitive = param.is_sensitive if param.respond_to?(:is_sensitive)
|
2456
2409
|
end
|
@@ -2491,22 +2444,20 @@ class Type
|
|
2491
2444
|
# on invalid attributes.
|
2492
2445
|
no_values = []
|
2493
2446
|
(self.class.allattrs + hash.keys).uniq.each do |attr|
|
2494
|
-
|
2495
|
-
|
2496
|
-
|
2497
|
-
|
2498
|
-
|
2499
|
-
|
2500
|
-
|
2501
|
-
no_values << attr
|
2502
|
-
end
|
2503
|
-
rescue ArgumentError, Puppet::Error, TypeError
|
2504
|
-
raise
|
2505
|
-
rescue => detail
|
2506
|
-
error = Puppet::DevError.new(_("Could not set %{attribute} on %{class_name}: %{detail}") % { attribute: attr, class_name: self.class.name, detail: detail })
|
2507
|
-
error.set_backtrace(detail.backtrace)
|
2508
|
-
raise error
|
2447
|
+
# Set any defaults immediately. This is mostly done so
|
2448
|
+
# that the default provider is available for any other
|
2449
|
+
# property validation.
|
2450
|
+
if hash.has_key?(attr)
|
2451
|
+
self[attr] = hash[attr]
|
2452
|
+
else
|
2453
|
+
no_values << attr
|
2509
2454
|
end
|
2455
|
+
rescue ArgumentError, Puppet::Error, TypeError
|
2456
|
+
raise
|
2457
|
+
rescue => detail
|
2458
|
+
error = Puppet::DevError.new(_("Could not set %{attribute} on %{class_name}: %{detail}") % { attribute: attr, class_name: self.class.name, detail: detail })
|
2459
|
+
error.set_backtrace(detail.backtrace)
|
2460
|
+
raise error
|
2510
2461
|
end
|
2511
2462
|
no_values.each do |attr|
|
2512
2463
|
set_default(attr)
|
@@ -2536,7 +2487,7 @@ class Type
|
|
2536
2487
|
self.class.relationship_params.collect do |klass|
|
2537
2488
|
param = @parameters[klass.name]
|
2538
2489
|
param.validate_relationship if param
|
2539
|
-
end.flatten.
|
2490
|
+
end.flatten.compact
|
2540
2491
|
end
|
2541
2492
|
|
2542
2493
|
# @comment For now, leave the 'name' method functioning like it used to. Once 'title'
|
@@ -2558,12 +2509,13 @@ class Type
|
|
2558
2509
|
def parent
|
2559
2510
|
return nil unless catalog
|
2560
2511
|
return @parent if @parent
|
2512
|
+
|
2561
2513
|
parents = catalog.adjacent(self, :direction => :in)
|
2562
2514
|
@parent = if parents
|
2563
|
-
|
2564
|
-
|
2565
|
-
|
2566
|
-
|
2515
|
+
parents.shift
|
2516
|
+
else
|
2517
|
+
nil
|
2518
|
+
end
|
2567
2519
|
end
|
2568
2520
|
|
2569
2521
|
# Returns a reference to this as a string in "Type[name]" format.
|
@@ -2572,7 +2524,7 @@ class Type
|
|
2572
2524
|
def ref
|
2573
2525
|
# memoizing this is worthwhile ~ 3 percent of calls are the "first time
|
2574
2526
|
# around" in an average run of Puppet. --daniel 2012-07-17
|
2575
|
-
@ref ||= "#{self.class.name.to_s.capitalize}[#{
|
2527
|
+
@ref ||= "#{self.class.name.to_s.capitalize}[#{title}]"
|
2576
2528
|
end
|
2577
2529
|
|
2578
2530
|
# (see self_refresh)
|
@@ -2618,9 +2570,9 @@ class Type
|
|
2618
2570
|
if self.class.validparameter?(name_var)
|
2619
2571
|
@title = self[:name]
|
2620
2572
|
elsif self.class.validproperty?(name_var)
|
2621
|
-
@title =
|
2573
|
+
@title = should(name_var)
|
2622
2574
|
else
|
2623
|
-
|
2575
|
+
devfail "Could not find namevar #{name_var} for #{self.class.name}"
|
2624
2576
|
end
|
2625
2577
|
end
|
2626
2578
|
|
@@ -2631,22 +2583,23 @@ class Type
|
|
2631
2583
|
# @see #ref
|
2632
2584
|
#
|
2633
2585
|
def to_s
|
2634
|
-
|
2586
|
+
ref
|
2635
2587
|
end
|
2636
2588
|
|
2637
2589
|
# Convert this resource type instance to a Puppet::Resource.
|
2638
2590
|
# @return [Puppet::Resource] Returns a serializable representation of this resource
|
2639
2591
|
#
|
2640
2592
|
def to_resource
|
2641
|
-
resource =
|
2593
|
+
resource = retrieve_resource
|
2642
2594
|
resource.merge_tags_from(self)
|
2643
2595
|
|
2644
2596
|
@parameters.each do |name, param|
|
2645
2597
|
# Avoid adding each instance name twice
|
2646
|
-
next if param.class.isnamevar? and param.value ==
|
2598
|
+
next if param.class.isnamevar? and param.value == title
|
2647
2599
|
|
2648
2600
|
# We've already got property values
|
2649
2601
|
next if param.is_a?(Puppet::Property)
|
2602
|
+
|
2650
2603
|
resource[name] = param.value
|
2651
2604
|
end
|
2652
2605
|
|