puppet 4.3.2-x64-mingw32 → 4.4.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +4 -4
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +65 -19
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +3 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node.rb +1 -1
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +38 -13
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
- data/lib/puppet/pops/evaluator/closure.rb +84 -68
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +34 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup.rb +14 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +26 -2
- data/lib/puppet/pops/model/model.rb +8 -8
- data/lib/puppet/pops/model/model_label_provider.rb +13 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +26 -19
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +11 -7
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +138 -381
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1247
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops/validation/checker4_0.rb +83 -55
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +5 -8
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/launchd.rb +6 -18
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +28 -38
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +4 -4
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +23 -14
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +42 -4
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +90 -4
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/integration/util/windows/security_spec.rb +6 -6
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +11 -3
- data/spec/unit/functions/lookup_spec.rb +58 -13
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +61 -5
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +16 -0
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +100 -43
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +47 -34
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/yum_spec.rb +11 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/launchd_spec.rb +17 -35
- data/spec/unit/provider/service/systemd_spec.rb +7 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +96 -57
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +1 -1
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +114 -26
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'puppet/file_serving/metadata'
|
2
|
+
require 'puppet/indirector/generic_http'
|
3
|
+
|
4
|
+
class Puppet::Indirector::FileContent::Http < Puppet::Indirector::GenericHttp
|
5
|
+
desc "Retrieve file contents from a remote HTTP server."
|
6
|
+
|
7
|
+
include Puppet::FileServing::TerminusHelper
|
8
|
+
|
9
|
+
@http_method = :get
|
10
|
+
|
11
|
+
def find(request)
|
12
|
+
response = super
|
13
|
+
model.from_binary(response.body)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'puppet/file_serving/http_metadata'
|
2
|
+
require 'puppet/indirector/generic_http'
|
3
|
+
require 'puppet/indirector/file_metadata'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class Puppet::Indirector::FileMetadata::Http < Puppet::Indirector::GenericHttp
|
7
|
+
desc "Retrieve file metadata from a remote HTTP server."
|
8
|
+
|
9
|
+
include Puppet::FileServing::TerminusHelper
|
10
|
+
|
11
|
+
@http_method = :head
|
12
|
+
|
13
|
+
def find(request)
|
14
|
+
head = super
|
15
|
+
|
16
|
+
if head.is_a?(Net::HTTPSuccess)
|
17
|
+
metadata = Puppet::FileServing::HttpMetadata.new(head)
|
18
|
+
metadata.checksum_type = request.options[:checksum_type] if request.options[:checksum_type]
|
19
|
+
metadata.collect
|
20
|
+
metadata
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def search(request)
|
25
|
+
raise Puppet::Error, "cannot lookup multiple files"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'puppet/file_serving/terminus_helper'
|
2
|
+
require 'puppet/util/http_proxy'
|
3
|
+
|
4
|
+
class Puppet::Indirector::GenericHttp < Puppet::Indirector::Terminus
|
5
|
+
desc "Retrieve data from a remote HTTP server."
|
6
|
+
|
7
|
+
class <<self
|
8
|
+
attr_accessor :http_method
|
9
|
+
end
|
10
|
+
|
11
|
+
def find(request)
|
12
|
+
uri = URI(request.uri)
|
13
|
+
method = self.class.http_method
|
14
|
+
Puppet::Util::HttpProxy.request_with_redirects(uri,method)
|
15
|
+
end
|
16
|
+
end
|
@@ -3,7 +3,7 @@ require 'puppet/indirector/exec'
|
|
3
3
|
|
4
4
|
class Puppet::Node::Exec < Puppet::Indirector::Exec
|
5
5
|
desc "Call an external program to get node information. See
|
6
|
-
the [External Nodes](
|
6
|
+
the [External Nodes](https://docs.puppetlabs.com/guides/external_nodes.html) page for more information."
|
7
7
|
include Puppet::Util
|
8
8
|
|
9
9
|
def command
|
@@ -3,7 +3,7 @@ require 'puppet/indirector/ldap'
|
|
3
3
|
|
4
4
|
class Puppet::Node::Ldap < Puppet::Indirector::Ldap
|
5
5
|
desc "Search in LDAP for node configuration information. See
|
6
|
-
the [LDAP Nodes](
|
6
|
+
the [LDAP Nodes](https://docs.puppetlabs.com/guides/ldap_nodes.html) page for more information. This will first
|
7
7
|
search for whatever the certificate name is, then (if that name
|
8
8
|
contains a `.`) for the short name, then `default`."
|
9
9
|
|
@@ -96,7 +96,8 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
|
|
96
96
|
# WEBrick in Ruby 1.9.1 only supports up to 1024 character lines in an HTTP request
|
97
97
|
# http://redmine.ruby-lang.org/issues/show/3991
|
98
98
|
if "GET #{uri_with_query_string} HTTP/1.1\r\n".length > 1024
|
99
|
-
|
99
|
+
uri_with_env = "#{uri}?environment=#{request.environment.name}"
|
100
|
+
http_post(req, uri_with_env, body, headers)
|
100
101
|
else
|
101
102
|
http_get(req, uri_with_query_string, headers)
|
102
103
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'puppet'
|
2
2
|
require 'puppet/pops'
|
3
|
-
require 'puppet/pops/evaluator/
|
3
|
+
require 'puppet/pops/evaluator/json_strict_literal_evaluator'
|
4
4
|
|
5
5
|
class Puppet::InfoService::ClassInformationService
|
6
6
|
|
@@ -41,7 +41,7 @@ class Puppet::InfoService::ClassInformationService
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def literal_evaluator
|
44
|
-
@@literal_evaluator ||= Puppet::Pops::Evaluator::
|
44
|
+
@@literal_evaluator ||= Puppet::Pops::Evaluator::JsonStrictLiteralEvaluator.new
|
45
45
|
end
|
46
46
|
|
47
47
|
def result_of(f)
|
@@ -53,13 +53,17 @@ class Puppet::InfoService::ClassInformationService
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def parse_file(f)
|
56
|
+
return {:error => "The file #{f} does not exist"} unless Puppet::FileSystem.exist?(f)
|
57
|
+
|
56
58
|
begin
|
57
59
|
parse_result = @parser.parse_file(f)
|
58
|
-
|
59
|
-
{
|
60
|
-
|
61
|
-
|
62
|
-
|
60
|
+
{:classes =>
|
61
|
+
parse_result.definitions.select {|d| d.is_a?(Puppet::Pops::Model::HostClassDefinition)}.map do |d|
|
62
|
+
{:name => d.name,
|
63
|
+
:params => params = d.parameters.map {|p| extract_param(p) }
|
64
|
+
}
|
65
|
+
end
|
66
|
+
}
|
63
67
|
rescue StandardError => e
|
64
68
|
{:error => e.message }
|
65
69
|
end
|
@@ -79,17 +83,14 @@ class Puppet::InfoService::ClassInformationService
|
|
79
83
|
value_expr = p.value
|
80
84
|
return structure if value_expr.nil?
|
81
85
|
default_value = value_as_literal(value_expr)
|
82
|
-
|
83
|
-
structure[:default_literal] = default_value
|
84
|
-
return structure
|
85
|
-
end
|
86
|
+
structure[:default_literal] = default_value unless default_value.nil?
|
86
87
|
structure[:default_source] = extract_value_source(value_expr)
|
87
88
|
structure
|
88
89
|
end
|
89
90
|
|
90
91
|
def typeexpr_to_string(type_expr)
|
91
92
|
begin
|
92
|
-
type_parser.interpret_any(type_expr).to_s
|
93
|
+
type_parser.interpret_any(type_expr, nil).to_s
|
93
94
|
rescue Puppet::ParseError
|
94
95
|
# type is to complex - contains expressions that are not literal
|
95
96
|
nil
|
data/lib/puppet/loaders.rb
CHANGED
@@ -12,6 +12,7 @@ module Puppet
|
|
12
12
|
require 'puppet/pops/loader/static_loader'
|
13
13
|
require 'puppet/pops/loader/ruby_function_instantiator'
|
14
14
|
require 'puppet/pops/loader/puppet_function_instantiator'
|
15
|
+
require 'puppet/pops/loader/type_definition_instantiator'
|
15
16
|
require 'puppet/pops/loader/loader_paths'
|
16
17
|
require 'puppet/pops/loader/simple_environment_loader'
|
17
18
|
end
|
data/lib/puppet/module.rb
CHANGED
@@ -154,6 +154,9 @@ class Puppet::Module
|
|
154
154
|
end
|
155
155
|
|
156
156
|
if attr == :dependencies
|
157
|
+
unless value.is_a?(Array)
|
158
|
+
raise MissingMetadata, "The value for the key dependencies in the file metadata.json of the module #{self.name} must be an array, not: '#{value}'"
|
159
|
+
end
|
157
160
|
value.each do |dep|
|
158
161
|
name = dep['name']
|
159
162
|
dep['name'] = name.tr('-', '/') unless name.nil?
|
@@ -1,7 +1,14 @@
|
|
1
|
-
source 'https://rubygems.org'
|
1
|
+
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
2
2
|
|
3
3
|
puppetversion = ENV.key?('PUPPET_VERSION') ? "#{ENV['PUPPET_VERSION']}" : ['>= 3.3']
|
4
|
+
gem 'metadata-json-lint'
|
4
5
|
gem 'puppet', puppetversion
|
5
|
-
gem 'puppetlabs_spec_helper', '>= 0.
|
6
|
+
gem 'puppetlabs_spec_helper', '>= 1.0.0'
|
6
7
|
gem 'puppet-lint', '>= 1.0.0'
|
7
8
|
gem 'facter', '>= 1.7.0'
|
9
|
+
gem 'rspec-puppet'
|
10
|
+
|
11
|
+
# rspec must be v2 for ruby 1.8.7
|
12
|
+
if RUBY_VERSION >= '1.8.7' and RUBY_VERSION < '1.9'
|
13
|
+
gem 'rspec', '~> 2.0'
|
14
|
+
end
|
@@ -7,6 +7,6 @@
|
|
7
7
|
# environment (to compare the resulting system state to the desired state).
|
8
8
|
#
|
9
9
|
# Learn more about module testing here:
|
10
|
-
#
|
10
|
+
# https://docs.puppetlabs.com/guides/tests_smoke.html
|
11
11
|
#
|
12
|
-
include
|
12
|
+
include ::<%= metadata.name %>
|
@@ -25,13 +25,13 @@ class Puppet::ModuleTool::Tar::Mini
|
|
25
25
|
#
|
26
26
|
# This check was mainly added to ignore 'x' and 'g' flags from the PAX
|
27
27
|
# standard but will also ignore any other non-standard tar flags.
|
28
|
-
# tar format info:
|
29
|
-
# pax format info:
|
28
|
+
# tar format info: https://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.bpxa500%2Ftaf.htm
|
29
|
+
# pax format info: https://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.bpxa500%2Fpxarchfm.htm
|
30
30
|
def find_valid_files(tarfile)
|
31
31
|
Archive::Tar::Minitar.open(tarfile).collect do |entry|
|
32
32
|
flag = entry.typeflag
|
33
33
|
if flag.nil? || flag =~ /[[:digit:]]/ && (0..7).include?(flag.to_i)
|
34
|
-
entry.
|
34
|
+
entry.full_name
|
35
35
|
else
|
36
36
|
Puppet.debug "Invalid tar flag '#{flag}' will not be extracted: #{entry.name}"
|
37
37
|
next
|
@@ -81,10 +81,19 @@ class Puppet::Network::HTTP::Pool
|
|
81
81
|
|
82
82
|
Puppet.debug("Starting connection for #{site}")
|
83
83
|
http.start
|
84
|
+
setsockopts(http.instance_variable_get(:@socket))
|
84
85
|
http
|
85
86
|
end
|
86
87
|
end
|
87
88
|
|
89
|
+
# Set useful socket option(s) which lack from default settings in Net:HTTP
|
90
|
+
#
|
91
|
+
# @api private
|
92
|
+
def setsockopts(netio)
|
93
|
+
socket = netio.io
|
94
|
+
socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true)
|
95
|
+
end
|
96
|
+
|
88
97
|
# Release a connection back into the pool.
|
89
98
|
#
|
90
99
|
# @api private
|
data/lib/puppet/node.rb
CHANGED
@@ -75,7 +75,7 @@ class Puppet::Node
|
|
75
75
|
|
76
76
|
# Keep environment_name attribute and parameter in sync if they have been set
|
77
77
|
unless @environment.nil?
|
78
|
-
@parameters[ENVIRONMENT] = @environment.name if @parameters.include?(ENVIRONMENT)
|
78
|
+
@parameters[ENVIRONMENT] = @environment.name.to_s if @parameters.include?(ENVIRONMENT)
|
79
79
|
self.environment_name = @environment.name if instance_variable_defined?(:@environment_name)
|
80
80
|
end
|
81
81
|
@environment
|
@@ -186,6 +186,15 @@ class Puppet::Node::Environment
|
|
186
186
|
!original_manifest.nil? && !original_manifest.empty? && original_manifest != Puppet[:default_manifest]
|
187
187
|
end
|
188
188
|
|
189
|
+
# @api private
|
190
|
+
def static_catalogs?
|
191
|
+
if @static_catalogs.nil?
|
192
|
+
environment_conf = Puppet.lookup(:environments).get_conf(name)
|
193
|
+
@static_catalogs = (environment_conf.nil? ? Puppet[:static_catalogs] : environment_conf.static_catalogs)
|
194
|
+
end
|
195
|
+
@static_catalogs
|
196
|
+
end
|
197
|
+
|
189
198
|
# Return the environment configuration
|
190
199
|
# @return [Puppet::Settings::EnvironmentConf] The configuration
|
191
200
|
#
|
@@ -449,8 +458,8 @@ class Puppet::Node::Environment
|
|
449
458
|
private
|
450
459
|
|
451
460
|
def self.extralibs()
|
452
|
-
if
|
453
|
-
split_path(
|
461
|
+
if Puppet::Util.get_env('PUPPETLIB')
|
462
|
+
split_path(Puppet::Util.get_env('PUPPETLIB'))
|
454
463
|
else
|
455
464
|
[]
|
456
465
|
end
|
@@ -95,8 +95,12 @@ class Puppet::Parser::AST::PopsBridge
|
|
95
95
|
when Puppet::Pops::Model::SiteDefinition
|
96
96
|
instantiate_SiteDefinition(d, modname)
|
97
97
|
when Puppet::Pops::Model::FunctionDefinition
|
98
|
+
# The 3x logic calling this will not know what to do with the result, it is compacted away at the end
|
98
99
|
instantiate_FunctionDefinition(d, modname)
|
100
|
+
next
|
101
|
+
when Puppet::Pops::Model::TypeAlias
|
99
102
|
# The 3x logic calling this will not know what to do with the result, it is compacted away at the end
|
103
|
+
instantiate_TypeAlias(d, modname)
|
100
104
|
next
|
101
105
|
when Puppet::Pops::Model::Application
|
102
106
|
instantiate_ApplicationDefinition(d, modname)
|
@@ -242,35 +246,28 @@ class Puppet::Parser::AST::PopsBridge
|
|
242
246
|
# This is for 4x evaluator/loader
|
243
247
|
#
|
244
248
|
def instantiate_FunctionDefinition(function_definition, modname)
|
245
|
-
|
246
|
-
unless loaders
|
247
|
-
raise Puppet::ParseError, "Internal Error: Puppet Context ':loaders' missing - cannot define any functions"
|
248
|
-
end
|
249
|
-
loader =
|
250
|
-
if modname.nil? || modname == ""
|
251
|
-
# TODO : Later when functions can be private, a decision is needed regarding what that means.
|
252
|
-
# A private environment loader could be used for logic outside of modules, then only that logic
|
253
|
-
# would see the function.
|
254
|
-
#
|
255
|
-
# Use the private loader, this function may see the environment's dependencies (currently, all modules)
|
256
|
-
loaders.private_environment_loader()
|
257
|
-
else
|
258
|
-
# TODO : Later check if function is private, and then add it to
|
259
|
-
# private_loader_for_module
|
260
|
-
#
|
261
|
-
loaders.public_loader_for_module(modname)
|
262
|
-
end
|
263
|
-
unless loader
|
264
|
-
raise Puppet::ParseError, "Internal Error: did not find public loader for module: '#{modname}'"
|
265
|
-
end
|
249
|
+
loader = Puppet::Pops::Loaders.find_loader(modname)
|
266
250
|
|
267
|
-
# Instantiate Function, and store it in the
|
251
|
+
# Instantiate Function, and store it in the loader
|
268
252
|
typed_name, f = Puppet::Pops::Loader::PuppetFunctionInstantiator.create_from_model(function_definition, loader)
|
269
253
|
loader.set_entry(typed_name, f, Puppet::Pops::Adapters::SourcePosAdapter.adapt(function_definition).to_uri)
|
270
254
|
|
271
255
|
nil # do not want the function to inadvertently leak into 3x
|
272
256
|
end
|
273
257
|
|
258
|
+
# Propagates a found TypeAlias to the appropriate loader.
|
259
|
+
# This is for 4x evaluator/loader
|
260
|
+
#
|
261
|
+
def instantiate_TypeAlias(type_alias, modname)
|
262
|
+
loader = Puppet::Pops::Loaders.find_loader(modname)
|
263
|
+
|
264
|
+
# Bind the type alias to the loader using the alias
|
265
|
+
typed_name, t = Puppet::Pops::Loader::TypeDefinitionInstantiator.create_from_model(type_alias, loader)
|
266
|
+
loader.set_entry(typed_name, t, Puppet::Pops::Adapters::SourcePosAdapter.adapt(type_alias).to_uri)
|
267
|
+
|
268
|
+
nil # do not want the type alias to inadvertently leak into 3x
|
269
|
+
end
|
270
|
+
|
274
271
|
def code()
|
275
272
|
Expression.new(:value => @value)
|
276
273
|
end
|
@@ -20,7 +20,6 @@ class Puppet::Parser::Compiler
|
|
20
20
|
include Puppet::Pops::Evaluator::Runtime3Support
|
21
21
|
|
22
22
|
def self.compile(node, code_id = nil)
|
23
|
-
$env_module_directories = nil
|
24
23
|
node.environment.check_for_reparse
|
25
24
|
|
26
25
|
errors = node.environment.validation_errors
|
@@ -28,7 +27,7 @@ class Puppet::Parser::Compiler
|
|
28
27
|
errors.each { |e| Puppet.err(e) } if errors.size > 1
|
29
28
|
errmsg = [
|
30
29
|
"Compilation has been halted because: #{errors.first}",
|
31
|
-
"For more information, see
|
30
|
+
"For more information, see https://docs.puppetlabs.com/puppet/latest/reference/environments.html",
|
32
31
|
]
|
33
32
|
raise(Puppet::Error, errmsg.join(' '))
|
34
33
|
end
|
@@ -835,7 +834,8 @@ class Puppet::Parser::Compiler
|
|
835
834
|
# Set the node's parameters into the top-scope as variables.
|
836
835
|
def set_node_parameters
|
837
836
|
node.parameters.each do |param, value|
|
838
|
-
|
837
|
+
# Ensure node does not leak Symbol instances in general
|
838
|
+
@topscope[param.to_s] = value.is_a?(Symbol) ? value.to_s : value
|
839
839
|
end
|
840
840
|
# These might be nil.
|
841
841
|
catalog.client_version = node.parameters["clientversion"]
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'puppet/util/autoload'
|
2
2
|
require 'puppet/parser/scope'
|
3
|
+
require 'puppet/pops/adaptable'
|
3
4
|
|
4
5
|
# A module for managing parser functions. Each specified function
|
5
6
|
# is added to a central module that then gets included into the Scope
|
@@ -17,12 +18,12 @@ module Puppet::Parser::Functions
|
|
17
18
|
#
|
18
19
|
# @api private
|
19
20
|
def self.reset
|
20
|
-
@modules = {}
|
21
|
-
|
22
21
|
# Runs a newfunction to create a function for each of the log levels
|
22
|
+
root_env = Puppet.lookup(:root_environment)
|
23
|
+
AnonymousModuleAdapter.clear(root_env)
|
23
24
|
Puppet::Util::Log.levels.each do |level|
|
24
25
|
newfunction(level,
|
25
|
-
:environment =>
|
26
|
+
:environment => root_env,
|
26
27
|
:doc => "Log a message on the server at level #{level.to_s}.") do |vals|
|
27
28
|
send(level, vals.join(" "))
|
28
29
|
end
|
@@ -36,26 +37,37 @@ module Puppet::Parser::Functions
|
|
36
37
|
@autoloader ||= Puppet::Util::Autoload.new(self, "puppet/parser/functions")
|
37
38
|
end
|
38
39
|
|
40
|
+
# An adapter that ties the anonymous module that acts as the container for all 3x functions to the environment
|
41
|
+
# where the functions are created. This adapter ensures that the life-cycle of those functions doesn't exceed
|
42
|
+
# the life-cycle of the environment.
|
43
|
+
#
|
44
|
+
# @api private
|
45
|
+
class AnonymousModuleAdapter < Puppet::Pops::Adaptable::Adapter
|
46
|
+
attr_accessor :module
|
47
|
+
end
|
48
|
+
|
39
49
|
# Get the module that functions are mixed into corresponding to an
|
40
50
|
# environment
|
41
51
|
#
|
42
52
|
# @api private
|
43
53
|
def self.environment_module(env)
|
44
|
-
|
45
|
-
|
54
|
+
AnonymousModuleAdapter.adapt(env) do |a|
|
55
|
+
a.module ||= Module.new do
|
56
|
+
@metadata = {}
|
46
57
|
|
47
|
-
|
48
|
-
|
49
|
-
|
58
|
+
def self.all_function_info
|
59
|
+
@metadata
|
60
|
+
end
|
50
61
|
|
51
|
-
|
52
|
-
|
53
|
-
|
62
|
+
def self.get_function_info(name)
|
63
|
+
@metadata[name]
|
64
|
+
end
|
54
65
|
|
55
|
-
|
56
|
-
|
66
|
+
def self.add_function_info(name, info)
|
67
|
+
@metadata[name] = info
|
68
|
+
end
|
57
69
|
end
|
58
|
-
end
|
70
|
+
end.module
|
59
71
|
end
|
60
72
|
|
61
73
|
# Create a new Puppet DSL function.
|
@@ -70,7 +82,7 @@ module Puppet::Parser::Functions
|
|
70
82
|
# extend the behavior and functionality of Puppet.
|
71
83
|
#
|
72
84
|
# See also [Docs: Custom
|
73
|
-
# Functions](
|
85
|
+
# Functions](https://docs.puppetlabs.com/guides/custom_functions.html)
|
74
86
|
#
|
75
87
|
# @example Define a new Puppet DSL Function
|
76
88
|
# >> Puppet::Parser::Functions.newfunction(:double, :arity => 1,
|
@@ -113,7 +125,7 @@ module Puppet::Parser::Functions
|
|
113
125
|
# This string will be extracted by documentation generation tools.
|
114
126
|
#
|
115
127
|
# @option options [Integer] :arity (-1) the
|
116
|
-
# [arity](
|
128
|
+
# [arity](https://en.wikipedia.org/wiki/Arity) of the function. When
|
117
129
|
# specified as a positive integer the function is expected to receive
|
118
130
|
# _exactly_ the specified number of arguments. When specified as a
|
119
131
|
# negative number, the function is expected to receive _at least_ the
|