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
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'digest/md5'
|
2
2
|
require 'digest/sha1'
|
3
|
+
require 'time'
|
3
4
|
|
4
5
|
# A stand-alone module for calculating checksums
|
5
6
|
# in a generic way.
|
@@ -41,8 +42,8 @@ module Puppet::Util::Checksums
|
|
41
42
|
Digest::SHA256.hexdigest(content)
|
42
43
|
end
|
43
44
|
|
44
|
-
def
|
45
|
-
|
45
|
+
def sha256?(string)
|
46
|
+
string =~ /^\h{64}$/
|
46
47
|
end
|
47
48
|
|
48
49
|
def sha256_file(filename, lite = false)
|
@@ -52,10 +53,6 @@ module Puppet::Util::Checksums
|
|
52
53
|
checksum_file(digest, filename, lite)
|
53
54
|
end
|
54
55
|
|
55
|
-
def sha256lite_file(filename)
|
56
|
-
sha256_file(filename, true)
|
57
|
-
end
|
58
|
-
|
59
56
|
def sha256_stream(lite = false, &block)
|
60
57
|
require 'digest/sha2'
|
61
58
|
digest = Digest::SHA256.new
|
@@ -66,6 +63,18 @@ module Puppet::Util::Checksums
|
|
66
63
|
64
|
67
64
|
end
|
68
65
|
|
66
|
+
def sha256lite(content)
|
67
|
+
sha256(content[0..511])
|
68
|
+
end
|
69
|
+
|
70
|
+
def sha256lite?(string)
|
71
|
+
sha256?(string)
|
72
|
+
end
|
73
|
+
|
74
|
+
def sha256lite_file(filename)
|
75
|
+
sha256_file(filename, true)
|
76
|
+
end
|
77
|
+
|
69
78
|
def sha256lite_stream(&block)
|
70
79
|
sha256_stream(true, &block)
|
71
80
|
end
|
@@ -79,9 +88,8 @@ module Puppet::Util::Checksums
|
|
79
88
|
Digest::MD5.hexdigest(content)
|
80
89
|
end
|
81
90
|
|
82
|
-
|
83
|
-
|
84
|
-
md5(content[0..511])
|
91
|
+
def md5?(string)
|
92
|
+
string =~ /^\h{32}$/
|
85
93
|
end
|
86
94
|
|
87
95
|
# Calculate a checksum of a file's content using Digest::MD5.
|
@@ -90,11 +98,6 @@ module Puppet::Util::Checksums
|
|
90
98
|
checksum_file(digest, filename, lite)
|
91
99
|
end
|
92
100
|
|
93
|
-
# Calculate a checksum of the first 500 chars of a file's content using Digest::MD5.
|
94
|
-
def md5lite_file(filename)
|
95
|
-
md5_file(filename, true)
|
96
|
-
end
|
97
|
-
|
98
101
|
def md5_stream(lite = false, &block)
|
99
102
|
digest = Digest::MD5.new
|
100
103
|
checksum_stream(digest, block, lite)
|
@@ -104,6 +107,20 @@ module Puppet::Util::Checksums
|
|
104
107
|
32
|
105
108
|
end
|
106
109
|
|
110
|
+
# Calculate a checksum of the first 500 chars of the content using Digest::MD5.
|
111
|
+
def md5lite(content)
|
112
|
+
md5(content[0..511])
|
113
|
+
end
|
114
|
+
|
115
|
+
def md5lite?(string)
|
116
|
+
md5?(string)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Calculate a checksum of the first 500 chars of a file's content using Digest::MD5.
|
120
|
+
def md5lite_file(filename)
|
121
|
+
md5_file(filename, true)
|
122
|
+
end
|
123
|
+
|
107
124
|
def md5lite_stream(&block)
|
108
125
|
md5_stream(true, &block)
|
109
126
|
end
|
@@ -112,6 +129,17 @@ module Puppet::Util::Checksums
|
|
112
129
|
md5_hex_length
|
113
130
|
end
|
114
131
|
|
132
|
+
def mtime(content)
|
133
|
+
""
|
134
|
+
end
|
135
|
+
|
136
|
+
def mtime?(string)
|
137
|
+
return true if string.is_a? Time
|
138
|
+
!!DateTime.parse(string)
|
139
|
+
rescue
|
140
|
+
false
|
141
|
+
end
|
142
|
+
|
115
143
|
# Return the :mtime timestamp of a file.
|
116
144
|
def mtime_file(filename)
|
117
145
|
Puppet::FileSystem.stat(filename).send(:mtime)
|
@@ -125,18 +153,13 @@ module Puppet::Util::Checksums
|
|
125
153
|
nil
|
126
154
|
end
|
127
155
|
|
128
|
-
def mtime(content)
|
129
|
-
""
|
130
|
-
end
|
131
|
-
|
132
156
|
# Calculate a checksum using Digest::SHA1.
|
133
157
|
def sha1(content)
|
134
158
|
Digest::SHA1.hexdigest(content)
|
135
159
|
end
|
136
160
|
|
137
|
-
|
138
|
-
|
139
|
-
sha1(content[0..511])
|
161
|
+
def sha1?(string)
|
162
|
+
string =~ /^\h{40}$/
|
140
163
|
end
|
141
164
|
|
142
165
|
# Calculate a checksum of a file's content using Digest::SHA1.
|
@@ -145,11 +168,6 @@ module Puppet::Util::Checksums
|
|
145
168
|
checksum_file(digest, filename, lite)
|
146
169
|
end
|
147
170
|
|
148
|
-
# Calculate a checksum of the first 500 chars of a file's content using Digest::SHA1.
|
149
|
-
def sha1lite_file(filename)
|
150
|
-
sha1_file(filename, true)
|
151
|
-
end
|
152
|
-
|
153
171
|
def sha1_stream(lite = false, &block)
|
154
172
|
digest = Digest::SHA1.new
|
155
173
|
checksum_stream(digest, block, lite)
|
@@ -159,6 +177,20 @@ module Puppet::Util::Checksums
|
|
159
177
|
40
|
160
178
|
end
|
161
179
|
|
180
|
+
# Calculate a checksum of the first 500 chars of the content using Digest::SHA1.
|
181
|
+
def sha1lite(content)
|
182
|
+
sha1(content[0..511])
|
183
|
+
end
|
184
|
+
|
185
|
+
def sha1lite?(string)
|
186
|
+
sha1?(string)
|
187
|
+
end
|
188
|
+
|
189
|
+
# Calculate a checksum of the first 500 chars of a file's content using Digest::SHA1.
|
190
|
+
def sha1lite_file(filename)
|
191
|
+
sha1_file(filename, true)
|
192
|
+
end
|
193
|
+
|
162
194
|
def sha1lite_stream(&block)
|
163
195
|
sha1_stream(true, &block)
|
164
196
|
end
|
@@ -167,6 +199,17 @@ module Puppet::Util::Checksums
|
|
167
199
|
sha1_hex_length
|
168
200
|
end
|
169
201
|
|
202
|
+
def ctime(content)
|
203
|
+
""
|
204
|
+
end
|
205
|
+
|
206
|
+
def ctime?(string)
|
207
|
+
return true if string.is_a? Time
|
208
|
+
!!DateTime.parse(string)
|
209
|
+
rescue
|
210
|
+
false
|
211
|
+
end
|
212
|
+
|
170
213
|
# Return the :ctime of a file.
|
171
214
|
def ctime_file(filename)
|
172
215
|
Puppet::FileSystem.stat(filename).send(:ctime)
|
@@ -176,10 +219,14 @@ module Puppet::Util::Checksums
|
|
176
219
|
mtime_stream(&block)
|
177
220
|
end
|
178
221
|
|
179
|
-
def
|
222
|
+
def none(content)
|
180
223
|
""
|
181
224
|
end
|
182
225
|
|
226
|
+
def none?(string)
|
227
|
+
string.empty?
|
228
|
+
end
|
229
|
+
|
183
230
|
# Return a "no checksum"
|
184
231
|
def none_file(filename)
|
185
232
|
""
|
@@ -191,10 +238,6 @@ module Puppet::Util::Checksums
|
|
191
238
|
""
|
192
239
|
end
|
193
240
|
|
194
|
-
def none(content)
|
195
|
-
""
|
196
|
-
end
|
197
|
-
|
198
241
|
class DigestLite
|
199
242
|
def initialize(digest, lite = false)
|
200
243
|
@digest = digest
|
@@ -317,7 +317,7 @@ module Puppet::Util::Execution
|
|
317
317
|
end.join(" ") if command.is_a?(Array)
|
318
318
|
|
319
319
|
options[:custom_environment] ||= {}
|
320
|
-
Puppet::Util.withenv(options[:custom_environment]) do
|
320
|
+
Puppet::Util.withenv(options[:custom_environment], :windows) do
|
321
321
|
Puppet::Util::Windows::Process.execute(command, options, stdin, stdout, stderr)
|
322
322
|
end
|
323
323
|
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'openssl'
|
3
|
+
|
1
4
|
module Puppet::Util::HttpProxy
|
2
5
|
def self.proxy(uri)
|
3
6
|
if self.no_proxy?(uri)
|
@@ -122,4 +125,73 @@ module Puppet::Util::HttpProxy
|
|
122
125
|
|
123
126
|
return Puppet.settings[:http_proxy_password]
|
124
127
|
end
|
128
|
+
|
129
|
+
# Return a Net::HTTP::Proxy object.
|
130
|
+
#
|
131
|
+
# This method optionally configures SSL correctly if the URI scheme is
|
132
|
+
# 'https', including setting up the root certificate store so remote server
|
133
|
+
# SSL certificates can be validated.
|
134
|
+
#
|
135
|
+
# @param [URI] uri The URI that is to be accessed.
|
136
|
+
# @return [Net::HTTP::Proxy] object constructed tailored for the passed URI
|
137
|
+
def self.get_http_object(uri)
|
138
|
+
proxy = proxy(uri)
|
139
|
+
|
140
|
+
if uri.scheme == 'https'
|
141
|
+
cert_store = OpenSSL::X509::Store.new
|
142
|
+
cert_store.set_default_paths
|
143
|
+
|
144
|
+
proxy.use_ssl = true
|
145
|
+
proxy.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
146
|
+
proxy.cert_store = cert_store
|
147
|
+
end
|
148
|
+
|
149
|
+
if Puppet[:http_debug]
|
150
|
+
proxy.set_debug_output($stderr)
|
151
|
+
end
|
152
|
+
|
153
|
+
proxy.open_timeout = Puppet[:http_connect_timeout]
|
154
|
+
proxy.read_timeout = Puppet[:http_read_timeout]
|
155
|
+
|
156
|
+
proxy
|
157
|
+
end
|
158
|
+
|
159
|
+
# Retrieve a document through HTTP(s), following redirects if necessary.
|
160
|
+
#
|
161
|
+
# Based on the the client implementation in the HTTP pool.
|
162
|
+
#
|
163
|
+
# @see Puppet::Network::HTTP::Connection#request_with_redirects
|
164
|
+
#
|
165
|
+
# @param [URI] uri The address of the resource to retrieve.
|
166
|
+
# @param [symbol] method The name of the Net::HTTP method to use, typically :get, :head, :post etc.
|
167
|
+
# @param [FixNum] redirect_limit The number of redirections that can be followed.
|
168
|
+
# @return [Net::HTTPResponse] a response object
|
169
|
+
def self.request_with_redirects(uri, method, redirect_limit = 10, &block)
|
170
|
+
current_uri = uri
|
171
|
+
response = nil
|
172
|
+
|
173
|
+
0.upto(redirect_limit) do |redirection|
|
174
|
+
proxy = get_http_object(current_uri)
|
175
|
+
response = proxy.send(:head, current_uri.path)
|
176
|
+
|
177
|
+
if [301, 302, 307].include?(response.code.to_i)
|
178
|
+
# handle the redirection
|
179
|
+
current_uri = URI.parse(response['location'])
|
180
|
+
next
|
181
|
+
end
|
182
|
+
|
183
|
+
if block_given?
|
184
|
+
headers = {'Accept' => 'binary', 'accept-encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3'}
|
185
|
+
response = proxy.send("request_#{method}".to_sym, current_uri.path, headers, &block)
|
186
|
+
else
|
187
|
+
response = proxy.send(method, current_uri.path)
|
188
|
+
end
|
189
|
+
|
190
|
+
Puppet.debug("HTTP #{method.to_s.upcase} request to #{current_uri} returned #{response.code} #{response.message}")
|
191
|
+
|
192
|
+
return response
|
193
|
+
end
|
194
|
+
|
195
|
+
raise RedirectionLimitExceededException, "Too many HTTP redirections for #{uri}"
|
196
|
+
end
|
125
197
|
end
|
data/lib/puppet/util/log.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'puppet/util/tagging'
|
2
2
|
require 'puppet/util/classgen'
|
3
|
+
require 'puppet/util/psych_support'
|
3
4
|
require 'puppet/network/format_support'
|
4
5
|
require 'facter'
|
5
6
|
|
@@ -9,6 +10,7 @@ require 'facter'
|
|
9
10
|
class Puppet::Util::Log
|
10
11
|
include Puppet::Util
|
11
12
|
extend Puppet::Util::ClassGen
|
13
|
+
include Puppet::Util::PsychSupport
|
12
14
|
include Puppet::Util::Tagging
|
13
15
|
include Puppet::Network::FormatSupport
|
14
16
|
|
data/lib/puppet/util/logging.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
# A module to make logging a bit easier.
|
2
2
|
require 'puppet/util/log'
|
3
3
|
require 'puppet/error'
|
4
|
+
require 'puppet/util/multi_match.rb'
|
5
|
+
|
4
6
|
require 'facter'
|
5
7
|
|
6
|
-
module Puppet::Util
|
8
|
+
module Puppet::Util
|
9
|
+
module Logging
|
7
10
|
|
8
11
|
def send_log(level, message)
|
9
12
|
Puppet::Util::Log.create({:level => level, :source => log_source, :message => message}.merge(log_metadata))
|
@@ -148,6 +151,43 @@ module Puppet::Util::Logging
|
|
148
151
|
key ||= "#{file}:#{line}"
|
149
152
|
issue_deprecation_warning(message, key, file, line, false)
|
150
153
|
end
|
154
|
+
MM = MultiMatch
|
155
|
+
FILE_AND_LINE = MM::TUPLE
|
156
|
+
FILE_NO_LINE = MM.new(MM::NOT_NIL, nil).freeze
|
157
|
+
NO_FILE_LINE = MM.new(nil, MM::NOT_NIL).freeze
|
158
|
+
|
159
|
+
# Logs a (non deprecation) warning once for a given key.
|
160
|
+
#
|
161
|
+
# @param kind [String] The kind of warning. The
|
162
|
+
# kind must be one of the defined kinds for the Puppet[:disable_warnings] setting.
|
163
|
+
# @param message [String] The message to log (logs via warning)
|
164
|
+
# @param key [String] Key used to make this warning unique
|
165
|
+
# @param file [String,nil] the File related to the warning
|
166
|
+
# @param line [Integer,nil] the Line number related to the warning
|
167
|
+
# warning as unique
|
168
|
+
#
|
169
|
+
# Either :file and :line and/or :key must be passed.
|
170
|
+
def warn_once(kind, key, message, file = nil, line = nil)
|
171
|
+
return if Puppet[:disable_warnings].include?(kind)
|
172
|
+
$unique_warnings ||= {}
|
173
|
+
if $unique_warnings.length < 100 then
|
174
|
+
if (! $unique_warnings.has_key?(key)) then
|
175
|
+
$unique_warnings[key] = message
|
176
|
+
call_trace =
|
177
|
+
case MM.new(file, line)
|
178
|
+
when FILE_AND_LINE
|
179
|
+
"\n (at #{file}:#{line})"
|
180
|
+
when FILE_NO_LINE
|
181
|
+
"\n (in #{file})"
|
182
|
+
when NO_FILE_LINE
|
183
|
+
"\n (in unknown file, line #{line})"
|
184
|
+
else
|
185
|
+
"\n (file & line not available)"
|
186
|
+
end
|
187
|
+
warning("#{message}#{call_trace}")
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
151
191
|
|
152
192
|
def get_deprecation_offender()
|
153
193
|
# we have to put this in its own method to simplify testing; we need to be able to mock the offender results in
|
@@ -163,6 +203,7 @@ module Puppet::Util::Logging
|
|
163
203
|
end
|
164
204
|
|
165
205
|
def clear_deprecation_warnings
|
206
|
+
$unique_warnings.clear if $unique_warnings
|
166
207
|
$deprecation_warnings.clear if $deprecation_warnings
|
167
208
|
end
|
168
209
|
|
@@ -266,3 +307,4 @@ module Puppet::Util::Logging
|
|
266
307
|
to_s
|
267
308
|
end
|
268
309
|
end
|
310
|
+
end
|
@@ -21,7 +21,7 @@ end
|
|
21
21
|
class Symbol
|
22
22
|
def <=> (other)
|
23
23
|
self.to_s <=> other.to_s
|
24
|
-
end
|
24
|
+
end
|
25
25
|
|
26
26
|
def intern
|
27
27
|
self
|
@@ -117,7 +117,7 @@ if Puppet::Util::Platform.windows?
|
|
117
117
|
alias __original_set_default_paths set_default_paths
|
118
118
|
def set_default_paths
|
119
119
|
# This can be removed once openssl integrates with windows
|
120
|
-
# cert store, see
|
120
|
+
# cert store, see https://rt.openssl.org/Ticket/Display.html?id=2158
|
121
121
|
Puppet::Util::Windows::RootCerts.instance.to_a.uniq.each do |x509|
|
122
122
|
begin
|
123
123
|
add_cert(x509)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# MultiMatch allows multiple values to be tested at once in a case expression.
|
2
|
+
# This class is needed since Array does not implement the === operator to mean
|
3
|
+
# "each v === other.each v".
|
4
|
+
#
|
5
|
+
# This class is useful in situations when the Puppet Type System cannot be used
|
6
|
+
# (e.g. in Logging, since it needs to be able to log very early i the intialization
|
7
|
+
# cycle of puppet)
|
8
|
+
#
|
9
|
+
# Typically used with the constants
|
10
|
+
# NOT_NIL
|
11
|
+
# TUPLE
|
12
|
+
# TRIPLE
|
13
|
+
#
|
14
|
+
# which test against single NOT_NIL value, Array with two NOT_NIL, and Array with three NOT_NIL
|
15
|
+
#
|
16
|
+
module Puppet::Util
|
17
|
+
class MultiMatch
|
18
|
+
attr_reader :values
|
19
|
+
|
20
|
+
def initialize(*values)
|
21
|
+
@values = values
|
22
|
+
end
|
23
|
+
|
24
|
+
def ===(other)
|
25
|
+
lv = @values # local var is faster than instance var
|
26
|
+
case other
|
27
|
+
when MultiMatch
|
28
|
+
return false unless other.values.size == values.size
|
29
|
+
other.values.each_with_index {|v, i| return false unless lv[i] === v || v === lv[i]}
|
30
|
+
when Array
|
31
|
+
return false unless other.size == values.size
|
32
|
+
other.each_with_index {|v, i| return false unless lv[i] === v || v === lv[i]}
|
33
|
+
else
|
34
|
+
false
|
35
|
+
end
|
36
|
+
true
|
37
|
+
end
|
38
|
+
|
39
|
+
# Matches any value that is not nil using the === operator.
|
40
|
+
#
|
41
|
+
class MatchNotNil
|
42
|
+
def ===(v)
|
43
|
+
!v.nil?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
NOT_NIL = MatchNotNil.new().freeze
|
48
|
+
TUPLE = MultiMatch.new(NOT_NIL, NOT_NIL).freeze
|
49
|
+
TRIPLE = MultiMatch.new(NOT_NIL, NOT_NIL, NOT_NIL).freeze
|
50
|
+
end
|
51
|
+
end
|