puppet 4.3.2 → 4.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- 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
@@ -3,6 +3,7 @@ require 'puppet/indirector'
|
|
3
3
|
require 'puppet/transaction'
|
4
4
|
require 'puppet/util/tagging'
|
5
5
|
require 'puppet/graph'
|
6
|
+
require 'securerandom'
|
6
7
|
|
7
8
|
require 'puppet/resource/capability_finder'
|
8
9
|
|
@@ -32,6 +33,22 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
32
33
|
# The id of the code input to the compiler.
|
33
34
|
attr_accessor :code_id
|
34
35
|
|
36
|
+
# The UUID of the catalog
|
37
|
+
attr_accessor :catalog_uuid
|
38
|
+
|
39
|
+
# @return [Integer] catalog format version number. This value is constant
|
40
|
+
# for a given version of Puppet; it is incremented when a new release of
|
41
|
+
# Puppet changes the API for the various objects that make up the catalog.
|
42
|
+
attr_accessor :catalog_format
|
43
|
+
|
44
|
+
# Inlined file metadata for non-recursive find
|
45
|
+
# A hash of title => metadata
|
46
|
+
attr_accessor :metadata
|
47
|
+
|
48
|
+
# Inlined file metadata for recursive search
|
49
|
+
# A hash of title => { source => [metadata, ...] }
|
50
|
+
attr_accessor :recursive_metadata
|
51
|
+
|
35
52
|
# How long this catalog took to retrieve. Used for reporting stats.
|
36
53
|
attr_accessor :retrieval_duration
|
37
54
|
|
@@ -272,6 +289,10 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
272
289
|
def initialize(name = nil, environment = Puppet::Node::Environment::NONE, code_id = nil)
|
273
290
|
super()
|
274
291
|
@name = name
|
292
|
+
@catalog_uuid = SecureRandom.uuid
|
293
|
+
@catalog_format = 1
|
294
|
+
@metadata = {}
|
295
|
+
@recursive_metadata = {}
|
275
296
|
@classes = []
|
276
297
|
@resource_table = {}
|
277
298
|
@resources = []
|
@@ -379,6 +400,12 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
379
400
|
result.code_id = code_id
|
380
401
|
end
|
381
402
|
|
403
|
+
if catalog_uuid = data['catalog_uuid']
|
404
|
+
result.catalog_uuid = catalog_uuid
|
405
|
+
end
|
406
|
+
|
407
|
+
result.catalog_format = data['catalog_format'] || 0
|
408
|
+
|
382
409
|
if environment = data['environment']
|
383
410
|
result.environment = environment
|
384
411
|
result.environment_instance = Puppet::Node::Environment.remote(environment.to_sym)
|
@@ -411,20 +438,46 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
411
438
|
result.add_class(*classes)
|
412
439
|
end
|
413
440
|
|
441
|
+
if metadata = data['metadata']
|
442
|
+
result.metadata = metadata.inject({}) { |h, (k, v)| h[k] = Puppet::FileServing::Metadata.from_data_hash(v); h }
|
443
|
+
end
|
444
|
+
|
445
|
+
if recursive_metadata = data['recursive_metadata']
|
446
|
+
result.recursive_metadata = recursive_metadata.inject({}) do |h, (title, source_to_meta_hash)|
|
447
|
+
h[title] = source_to_meta_hash.inject({}) do |inner_h, (source, metas)|
|
448
|
+
inner_h[source] = metas.map {|meta| Puppet::FileServing::Metadata.from_data_hash(meta)}
|
449
|
+
inner_h
|
450
|
+
end
|
451
|
+
h
|
452
|
+
end
|
453
|
+
end
|
454
|
+
|
414
455
|
result
|
415
456
|
end
|
416
457
|
|
417
458
|
def to_data_hash
|
459
|
+
metadata_hash = metadata.inject({}) { |h, (k, v)| h[k] = v.to_data_hash; h }
|
460
|
+
recursive_metadata_hash = recursive_metadata.inject({}) do |h, (title, source_to_meta_hash)|
|
461
|
+
h[title] = source_to_meta_hash.inject({}) do |inner_h, (source, metas)|
|
462
|
+
inner_h[source] = metas.map {|meta| meta.to_data_hash}
|
463
|
+
inner_h
|
464
|
+
end
|
465
|
+
h
|
466
|
+
end
|
467
|
+
|
418
468
|
{
|
419
469
|
'tags' => tags,
|
420
470
|
'name' => name,
|
421
471
|
'version' => version,
|
422
472
|
'code_id' => code_id,
|
423
|
-
'
|
473
|
+
'catalog_uuid' => catalog_uuid,
|
474
|
+
'catalog_format' => catalog_format,
|
475
|
+
'environment' => environment.to_s,
|
424
476
|
'resources' => @resources.collect { |v| @resource_table[v].to_data_hash },
|
425
477
|
'edges' => edges. collect { |e| e.to_data_hash },
|
426
|
-
'classes' => classes
|
427
|
-
}
|
478
|
+
'classes' => classes,
|
479
|
+
}.merge(metadata_hash.empty? ? {} : {'metadata' => metadata_hash})
|
480
|
+
.merge(recursive_metadata_hash.empty? ? {} : {'recursive_metadata' => recursive_metadata_hash})
|
428
481
|
end
|
429
482
|
|
430
483
|
# Convert our catalog into a RAL catalog.
|
@@ -536,6 +589,10 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
536
589
|
|
537
590
|
result.version = self.version
|
538
591
|
result.code_id = self.code_id
|
592
|
+
result.catalog_uuid = self.catalog_uuid
|
593
|
+
result.catalog_format = self.catalog_format
|
594
|
+
result.metadata = self.metadata
|
595
|
+
result.recursive_metadata = self.recursive_metadata
|
539
596
|
|
540
597
|
map = {}
|
541
598
|
resources.each do |resource|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'time'
|
2
2
|
require 'puppet/network/format_support'
|
3
|
+
require 'puppet/util/psych_support'
|
3
4
|
|
4
5
|
module Puppet
|
5
6
|
class Resource
|
@@ -11,6 +12,7 @@ module Puppet
|
|
11
12
|
#
|
12
13
|
# @api private
|
13
14
|
class Status
|
15
|
+
include Puppet::Util::PsychSupport
|
14
16
|
include Puppet::Util::Tagging
|
15
17
|
include Puppet::Network::FormatSupport
|
16
18
|
|
@@ -181,7 +183,14 @@ module Puppet
|
|
181
183
|
@failed = data['failed']
|
182
184
|
|
183
185
|
@events = data['events'].map do |event|
|
184
|
-
|
186
|
+
# in YAML (for reports) we serialize this as an object, but
|
187
|
+
# in PSON it becomes a hash. Depending on where we came from
|
188
|
+
# we might not need to deserialize it.
|
189
|
+
if event.class == Puppet::Transaction::Event
|
190
|
+
event
|
191
|
+
else
|
192
|
+
Puppet::Transaction::Event.from_data_hash(event)
|
193
|
+
end
|
185
194
|
end
|
186
195
|
end
|
187
196
|
|
@@ -194,7 +203,7 @@ module Puppet
|
|
194
203
|
'resource_type' => @resource_type,
|
195
204
|
'containment_path' => @containment_path,
|
196
205
|
'evaluation_time' => @evaluation_time,
|
197
|
-
'tags' => @tags,
|
206
|
+
'tags' => @tags.to_a,
|
198
207
|
'time' => @time.iso8601(9),
|
199
208
|
'failed' => @failed,
|
200
209
|
'changed' => @changed,
|
data/lib/puppet/resource/type.rb
CHANGED
@@ -174,12 +174,9 @@ class Puppet::Resource::Type
|
|
174
174
|
|
175
175
|
if code
|
176
176
|
if @match # Only bother setting up the ephemeral scope if there are match variables to add into it
|
177
|
-
|
178
|
-
elevel = scope.ephemeral_level
|
177
|
+
scope.with_guarded_scope do
|
179
178
|
scope.ephemeral_from(@match, file, line)
|
180
179
|
code.safeevaluate(scope)
|
181
|
-
ensure
|
182
|
-
scope.unset_ephemeral_var(elevel)
|
183
180
|
end
|
184
181
|
else
|
185
182
|
code.safeevaluate(scope)
|
@@ -346,6 +343,9 @@ class Puppet::Resource::Type
|
|
346
343
|
end
|
347
344
|
|
348
345
|
# Validate and set any arguments passed by the resource as variables in the scope.
|
346
|
+
#
|
347
|
+
# This method is known to only be used on the server/compile side.
|
348
|
+
#
|
349
349
|
# @param resource [Puppet::Parser::Resource] the resource
|
350
350
|
# @param scope [Puppet::Parser::Scope] the scope
|
351
351
|
#
|
@@ -360,9 +360,6 @@ class Puppet::Resource::Type
|
|
360
360
|
resource.add_parameters_from_consume
|
361
361
|
inject_external_parameters(resource, scope)
|
362
362
|
|
363
|
-
resource_hash = {}
|
364
|
-
resource.each { |k, v| resource_hash[k.to_s] = v.value unless k == :name || k == :title }
|
365
|
-
|
366
363
|
if @type == :hostclass
|
367
364
|
scope[TITLE] = resource.title.to_s.downcase
|
368
365
|
scope[NAME] = resource.name.to_s.downcase
|
@@ -370,12 +367,21 @@ class Puppet::Resource::Type
|
|
370
367
|
scope[TITLE] = resource.title
|
371
368
|
scope[NAME] = resource.name
|
372
369
|
end
|
373
|
-
|
374
370
|
scope.class_set(self.name,scope) if hostclass? || node?
|
375
371
|
|
376
|
-
|
377
|
-
|
378
|
-
|
372
|
+
param_hash = scope.with_parameter_scope(arguments.keys) do |param_scope|
|
373
|
+
# Assign directly to the parameter scope to avoid scope parameter validation at this point. It
|
374
|
+
# will happen anyway when the values are assigned to the scope after the parameter scoped has
|
375
|
+
# been popped.
|
376
|
+
resource.each { |k, v| param_scope[k.to_s] = v.value unless k == :name || k == :title }
|
377
|
+
assign_defaults(resource, param_scope, scope)
|
378
|
+
param_scope.to_hash
|
379
|
+
end
|
380
|
+
|
381
|
+
validate_resource_hash(resource, param_hash)
|
382
|
+
|
383
|
+
# Assign parameter values to current scope
|
384
|
+
param_hash.each { |param, value| exceptwrap { scope[param] = value }}
|
379
385
|
end
|
380
386
|
|
381
387
|
# Lookup and inject parameters from external scope
|
@@ -385,29 +391,30 @@ class Puppet::Resource::Type
|
|
385
391
|
# Only lookup parameters for host classes
|
386
392
|
return unless type == :hostclass
|
387
393
|
parameters = resource.parameters
|
388
|
-
arguments.each do |param_name,
|
389
|
-
|
390
|
-
param = parameters[
|
394
|
+
arguments.each do |param_name, default|
|
395
|
+
sym_name = param_name.to_sym
|
396
|
+
param = parameters[sym_name]
|
391
397
|
next unless param.nil? || param.value.nil?
|
392
|
-
|
393
|
-
|
398
|
+
catch(:no_such_key) do
|
399
|
+
bound_value = Puppet::Pops::Lookup.search_and_merge("#{name}::#{param_name}", Puppet::Pops::Lookup::Invocation.new(scope), nil)
|
400
|
+
# Assign bound value but don't let an undef trump a default expression
|
401
|
+
resource[sym_name] = bound_value unless bound_value.nil? && !default.nil?
|
402
|
+
end
|
394
403
|
end
|
395
404
|
end
|
396
405
|
private :inject_external_parameters
|
397
406
|
|
398
|
-
def assign_defaults(resource,
|
407
|
+
def assign_defaults(resource, param_scope, scope)
|
399
408
|
return unless resource.is_a?(Puppet::Parser::Resource)
|
400
409
|
parameters = resource.parameters
|
401
|
-
hashed_types = parameter_struct.hashed_elements
|
402
410
|
arguments.each do |param_name, default|
|
403
411
|
next if default.nil?
|
404
412
|
name = param_name.to_sym
|
405
413
|
param = parameters[name]
|
406
414
|
next unless param.nil? || param.value.nil?
|
407
|
-
|
408
|
-
value = default.safeevaluate(scope)
|
415
|
+
value = exceptwrap { param_scope.evaluate3x(param_name, default, scope) }
|
409
416
|
resource[name] = value
|
410
|
-
|
417
|
+
param_scope[param_name] = value
|
411
418
|
end
|
412
419
|
end
|
413
420
|
private :assign_defaults
|
@@ -552,21 +559,4 @@ class Puppet::Resource::Type
|
|
552
559
|
type_factory.struct(members)
|
553
560
|
end
|
554
561
|
private :create_params_struct
|
555
|
-
|
556
|
-
# Consult external data bindings for class parameter values which must be
|
557
|
-
# namespaced in the backend.
|
558
|
-
#
|
559
|
-
# Example:
|
560
|
-
#
|
561
|
-
# class foo($port=0){ ... }
|
562
|
-
#
|
563
|
-
# We make a request to the backend for the key 'foo::port' not 'foo'
|
564
|
-
#
|
565
|
-
def lookup_external_default_for(param, scope)
|
566
|
-
if type == :hostclass
|
567
|
-
catch(:no_such_key) { return Puppet::Pops::Lookup.search_and_merge("#{name}::#{param}", Puppet::Pops::Lookup::Invocation.new(scope), nil) }
|
568
|
-
end
|
569
|
-
nil
|
570
|
-
end
|
571
|
-
private :lookup_external_default_for
|
572
562
|
end
|
data/lib/puppet/settings.rb
CHANGED
@@ -1077,7 +1077,7 @@ Generated on #{Time.now}.
|
|
1077
1077
|
#
|
1078
1078
|
# @api private
|
1079
1079
|
# @todo this code duplicates {Puppet::Util::RunMode#which_dir} as described
|
1080
|
-
# in {
|
1080
|
+
# in {https://projects.puppetlabs.com/issues/16637 #16637}
|
1081
1081
|
def which_configuration_file
|
1082
1082
|
if explicit_config_file? or Puppet.features.root? then
|
1083
1083
|
return main_config_file
|
@@ -82,7 +82,7 @@ private
|
|
82
82
|
def unique_sections_in(ini, file, allowed_section_names)
|
83
83
|
ini.section_lines.collect do |section|
|
84
84
|
if !allowed_section_names.empty? && !allowed_section_names.include?(section.name)
|
85
|
-
raise(Puppet::Error, "Illegal section '#{section.name}' in config file #{file} at line #{section.line_number}. The only valid puppet.conf sections are: [#{allowed_section_names.join(", ")}]. Please use the directory environments feature to specify environments. (See
|
85
|
+
raise(Puppet::Error, "Illegal section '#{section.name}' in config file #{file} at line #{section.line_number}. The only valid puppet.conf sections are: [#{allowed_section_names.join(", ")}]. Please use the directory environments feature to specify environments. (See https://docs.puppetlabs.com/puppet/latest/reference/environments.html)")
|
86
86
|
end
|
87
87
|
section.name
|
88
88
|
end.uniq
|
@@ -3,7 +3,7 @@
|
|
3
3
|
class Puppet::Settings::EnvironmentConf
|
4
4
|
|
5
5
|
ENVIRONMENT_CONF_ONLY_SETTINGS = [:modulepath, :manifest, :config_version].freeze
|
6
|
-
VALID_SETTINGS = (ENVIRONMENT_CONF_ONLY_SETTINGS + [:environment_timeout, :environment_data_provider]).freeze
|
6
|
+
VALID_SETTINGS = (ENVIRONMENT_CONF_ONLY_SETTINGS + [:environment_timeout, :environment_data_provider, :static_catalogs]).freeze
|
7
7
|
|
8
8
|
# Given a path to a directory environment, attempts to load and parse an
|
9
9
|
# environment.conf in ini format, and return an EnvironmentConf instance.
|
@@ -39,8 +39,8 @@ class Puppet::Settings::EnvironmentConf
|
|
39
39
|
# Configuration values are exactly those returned by the environment object,
|
40
40
|
# without interpolation. This is a special case for the default configured
|
41
41
|
# environment returned by the Puppet::Environments::StaticPrivate loader.
|
42
|
-
def self.static_for(environment, environment_timeout = 0)
|
43
|
-
Static.new(environment, environment_timeout)
|
42
|
+
def self.static_for(environment, environment_timeout = 0, static_catalogs = false)
|
43
|
+
Static.new(environment, environment_timeout, static_catalogs)
|
44
44
|
end
|
45
45
|
|
46
46
|
attr_reader :section, :path_to_env, :global_modulepath
|
@@ -108,6 +108,12 @@ class Puppet::Settings::EnvironmentConf
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
+
def static_catalogs
|
112
|
+
get_setting(:static_catalogs, Puppet.settings.value(:static_catalogs)) do |value|
|
113
|
+
value
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
111
117
|
def config_version
|
112
118
|
get_setting(:config_version) do |config_version|
|
113
119
|
absolute(config_version)
|
@@ -141,7 +147,7 @@ class Puppet::Settings::EnvironmentConf
|
|
141
147
|
|
142
148
|
def get_setting(setting_name, default = nil)
|
143
149
|
value = raw_setting(setting_name)
|
144
|
-
value
|
150
|
+
value = default if value.nil?
|
145
151
|
yield value
|
146
152
|
end
|
147
153
|
|
@@ -161,10 +167,12 @@ class Puppet::Settings::EnvironmentConf
|
|
161
167
|
class Static
|
162
168
|
attr_reader :environment_timeout
|
163
169
|
attr_reader :environment_data_provider
|
170
|
+
attr_reader :static_catalogs
|
164
171
|
|
165
|
-
def initialize(environment, environment_timeout, environment_data_provider = 'none')
|
172
|
+
def initialize(environment, environment_timeout, static_catalogs, environment_data_provider = 'none')
|
166
173
|
@environment = environment
|
167
174
|
@environment_timeout = environment_timeout
|
175
|
+
@static_catalogs = static_catalogs
|
168
176
|
@environment_data_provider = environment_data_provider
|
169
177
|
end
|
170
178
|
|
@@ -62,7 +62,7 @@ module Puppet::SSL::CertificateFactory
|
|
62
62
|
# extensions to.
|
63
63
|
# @param csr [OpenSSL::X509::Request] The CSR associated with the given
|
64
64
|
# certificate, which may specify requested extensions for the given cert.
|
65
|
-
# See
|
65
|
+
# See https://tools.ietf.org/html/rfc2985 Section 5.4.2 Extension request
|
66
66
|
# @param issuer [OpenSSL::X509::Certificate, OpenSSL::X509::Request] An X509 CSR
|
67
67
|
# if this is a self signed certificate, or the X509 certificate of the CA if
|
68
68
|
# this is a CA signed certificate.
|
@@ -100,7 +100,7 @@ module Puppet::SSL::CertificateFactory
|
|
100
100
|
# something went wrong up there. --daniel 2011-10-11
|
101
101
|
defaults = { "nsComment" => "Puppet Ruby/OpenSSL Internal Certificate" }
|
102
102
|
|
103
|
-
# See
|
103
|
+
# See https://www.openssl.org/docs/apps/x509v3_config.html
|
104
104
|
# for information about the special meanings of 'hash', 'keyid', 'issuer'
|
105
105
|
override = {
|
106
106
|
"subjectKeyIdentifier" => "hash",
|
@@ -126,7 +126,7 @@ module Puppet::SSL::CertificateFactory
|
|
126
126
|
# complaint that the issuer keyid can't be fetched, which breaks all
|
127
127
|
# sorts of things in our test suite and, e.g., bootstrapping the CA.
|
128
128
|
#
|
129
|
-
#
|
129
|
+
# https://tools.ietf.org/html/rfc5280#section-4.2.1.1 says that, to be a
|
130
130
|
# conforming CA we MAY omit the field if we are self-signed, which I
|
131
131
|
# think gives us a pass in the specific case.
|
132
132
|
#
|
@@ -23,7 +23,7 @@ require 'puppet/ssl/certificate_signer'
|
|
23
23
|
#
|
24
24
|
# This behavior is dictated by PKCS#9/RFC 2985 section 5.4.2.
|
25
25
|
#
|
26
|
-
# @see
|
26
|
+
# @see https://tools.ietf.org/html/rfc2985 "RFC 2985 Section 5.4.2 Extension request"
|
27
27
|
#
|
28
28
|
class Puppet::SSL::CertificateRequest < Puppet::SSL::Base
|
29
29
|
wraps OpenSSL::X509::Request
|
@@ -193,7 +193,7 @@ DOC
|
|
193
193
|
#
|
194
194
|
# The format of CSR attributes is specified in PKCS#10/RFC 2986
|
195
195
|
#
|
196
|
-
# @see
|
196
|
+
# @see https://tools.ietf.org/html/rfc2986 "RFC 2986 Certification Request Syntax Specification"
|
197
197
|
#
|
198
198
|
# @api public
|
199
199
|
#
|
@@ -289,8 +289,8 @@ DOC
|
|
289
289
|
# that in turn holds the elements. This is why we have to unpack an array
|
290
290
|
# every time we unpack a Set/Seq.
|
291
291
|
#
|
292
|
-
# @see
|
293
|
-
# @see
|
292
|
+
# @see https://tools.ietf.org/html/rfc2985#ref-10 5.4.2 CSR Extension Request structure
|
293
|
+
# @see https://tools.ietf.org/html/rfc5280 4.1 Certificate Extension structure
|
294
294
|
#
|
295
295
|
# @api private
|
296
296
|
#
|
@@ -48,7 +48,7 @@ class Puppet::SSL::Validator::DefaultValidator #< class Puppet::SSL::Validator
|
|
48
48
|
# chain being verified.
|
49
49
|
#
|
50
50
|
# From the [OpenSSL
|
51
|
-
# documentation](
|
51
|
+
# documentation](https://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html):
|
52
52
|
# The `verify_callback` function is used to control the behaviour when the
|
53
53
|
# SSL_VERIFY_PEER flag is set. It must be supplied by the application and
|
54
54
|
# receives two arguments: preverify_ok indicates, whether the verification of
|
@@ -121,7 +121,13 @@ module Puppet::Test
|
|
121
121
|
end
|
122
122
|
|
123
123
|
# The process environment is a shared, persistent resource.
|
124
|
-
|
124
|
+
# Can't use Puppet.features.microsoft_windows? as it may be mocked out in a test. This can cause test recurring test failures
|
125
|
+
if (!!File::ALT_SEPARATOR)
|
126
|
+
mode = :windows
|
127
|
+
else
|
128
|
+
mode = :posix
|
129
|
+
end
|
130
|
+
$old_env = Puppet::Util.get_environment(mode)
|
125
131
|
|
126
132
|
# So is the load_path
|
127
133
|
$old_load_path = $LOAD_PATH.dup
|
@@ -171,13 +177,19 @@ module Puppet::Test
|
|
171
177
|
end
|
172
178
|
$saved_indirection_state = nil
|
173
179
|
|
180
|
+
# Can't use Puppet.features.microsoft_windows? as it may be mocked out in a test. This can cause test recurring test failures
|
181
|
+
if (!!File::ALT_SEPARATOR)
|
182
|
+
mode = :windows
|
183
|
+
else
|
184
|
+
mode = :posix
|
185
|
+
end
|
174
186
|
# Restore the global process environment. Can't just assign because this
|
175
187
|
# is a magic variable, sadly, and doesn't do that™. It is sufficiently
|
176
188
|
# faster to use the compare-then-set model to avoid excessive work that it
|
177
189
|
# justifies the complexity. --daniel 2012-03-15
|
178
|
-
unless
|
179
|
-
|
180
|
-
$old_env.each {|k, v|
|
190
|
+
unless Puppet::Util.get_environment(mode) == $old_env
|
191
|
+
Puppet::Util.clear_environment(mode)
|
192
|
+
$old_env.each {|k, v| Puppet::Util.set_env(k, v, mode) }
|
181
193
|
end
|
182
194
|
|
183
195
|
# Restore the load_path late, to avoid messing with stubs from the test.
|