puppet 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- 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/build_defaults.yaml +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/hiera/scope.rb +1 -1
- 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 +45 -47
- 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/lookup_adapter.rb +73 -26
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +69 -22
- 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/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/file_system.rb +2 -2
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/forge.rb +1 -1
- 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/lookup.rb +126 -150
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/match.rb +1 -0
- 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/functions.rb +45 -6
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/facts/facter.rb +2 -13
- 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/hiera.rb +3 -1
- data/lib/puppet/indirector/indirection.rb +6 -2
- data/lib/puppet/indirector/json.rb +2 -2
- 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 +6 -2
- 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/environment.rb +11 -2
- data/lib/puppet/node.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +4 -11
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- 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/lookup.rb +128 -149
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -0
- 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/functions.rb +28 -16
- 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 +56 -14
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +80 -12
- 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 +98 -96
- data/lib/puppet/pops/evaluator/closure.rb +122 -106
- data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -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 +47 -42
- data/lib/puppet/pops/functions/function.rb +6 -2
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +50 -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 +18 -13
- 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/explainer.rb +73 -3
- data/lib/puppet/pops/lookup/invocation.rb +21 -19
- data/lib/puppet/pops/lookup.rb +17 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +179 -157
- data/lib/puppet/pops/model/model.rb +17 -8
- data/lib/puppet/pops/model/model_label_provider.rb +14 -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 +17 -13
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +428 -403
- 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 +16 -8
- 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 +140 -387
- 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 -1253
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation/checker4_0.rb +115 -63
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops.rb +0 -8
- 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/group/windows_adsi.rb +2 -2
- 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 +16 -9
- 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/rpm.rb +0 -1
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +7 -20
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/service/launchd.rb +6 -12
- 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/user/windows_adsi.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
- 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/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 +33 -42
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/settings.rb +1 -1
- 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/additional_resource_generator.rb +23 -5
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- 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/file.rb +91 -39
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +6 -2
- 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/type.rb +11 -11
- 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 +65 -28
- 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 +190 -0
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +22 -16
- 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 +84 -15
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/util/windows.rb +4 -0
- data/lib/puppet/util.rb +109 -22
- 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/puppet.rb +17 -0
- 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/application/environments/production/data/common.yaml +4 -0
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -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/functions/usee_puppet.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
- 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/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
- 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/collection_spec.rb +8 -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 +201 -0
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
- data/spec/integration/util/windows/security_spec.rb +8 -8
- 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/application/lookup_spec.rb +138 -28
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
- 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/epp_face_spec.rb +2 -2
- 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 +17 -9
- data/spec/unit/functions/inline_epp_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +88 -16
- 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 +62 -6
- data/spec/unit/hiera/scope_spec.rb +5 -2
- 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/indirector/json_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 +8 -0
- data/spec/unit/parser/compiler_spec.rb +16 -18
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
- 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 +127 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -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 -390
- 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 +159 -15
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
- 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 +88 -47
- 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/rpm_spec.rb +2 -25
- data/spec/unit/provider/package/yum_spec.rb +12 -1
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/debian_spec.rb +6 -24
- data/spec/unit/provider/service/init_spec.rb +11 -1
- data/spec/unit/provider/service/launchd_spec.rb +18 -25
- data/spec/unit/provider/service/systemd_spec.rb +25 -12
- data/spec/unit/provider/service/upstart_spec.rb +57 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
- data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
- 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 +99 -50
- 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 +46 -38
- 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 +48 -11
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +3342 -3195
- 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/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- 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
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
data/lib/puppet/resource.rb
CHANGED
|
@@ -438,19 +438,22 @@ class Puppet::Resource
|
|
|
438
438
|
end
|
|
439
439
|
|
|
440
440
|
missing_arguments.collect do |param, default|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
441
|
+
rtype = resource_type
|
|
442
|
+
if rtype.type == :hostclass
|
|
443
|
+
using_bound_value = false
|
|
444
|
+
catch(:no_such_key) do
|
|
445
|
+
bound_value = Puppet::Pops::Lookup.search_and_merge("#{rtype.name}::#{param}", Puppet::Pops::Lookup::Invocation.new(scope), nil)
|
|
446
|
+
# Assign bound value but don't let an undef trump a default expression
|
|
447
|
+
unless bound_value.nil? && !default.nil?
|
|
448
|
+
self[param.to_sym] = bound_value
|
|
449
|
+
using_bound_value = true
|
|
450
|
+
end
|
|
451
|
+
end
|
|
452
|
+
end
|
|
453
|
+
unless using_bound_value
|
|
454
|
+
next if default.nil?
|
|
455
|
+
self[param.to_sym] = default.safeevaluate(scope)
|
|
451
456
|
end
|
|
452
|
-
|
|
453
|
-
self[param.to_sym] = value
|
|
454
457
|
param
|
|
455
458
|
end.compact
|
|
456
459
|
end
|
|
@@ -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
|
|
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
|
|
@@ -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.
|
|
@@ -22,9 +22,10 @@ class Puppet::Transaction::AdditionalResourceGenerator
|
|
|
22
22
|
end
|
|
23
23
|
return unless generated
|
|
24
24
|
generated = [generated] unless generated.is_a?(Array)
|
|
25
|
-
generated.collect do |res|
|
|
25
|
+
generated.collect! do |res|
|
|
26
26
|
@catalog.resource(res.ref) || res
|
|
27
|
-
end
|
|
27
|
+
end
|
|
28
|
+
unless resource.depthfirst?
|
|
28
29
|
# This is reversed becuase PUP-1963 changed how generated
|
|
29
30
|
# resources were added to the catalog. It exists for backwards
|
|
30
31
|
# compatibility only, and can probably be removed in Puppet 5
|
|
@@ -34,6 +35,9 @@ class Puppet::Transaction::AdditionalResourceGenerator
|
|
|
34
35
|
# catalog one by one adjacent to the parent resource. This
|
|
35
36
|
# causes an implicit reversal of their application order from
|
|
36
37
|
# the old code. The reverse makes it all work like it did.
|
|
38
|
+
generated.reverse!
|
|
39
|
+
end
|
|
40
|
+
generated.each do |res|
|
|
37
41
|
add_resource(res, resource)
|
|
38
42
|
|
|
39
43
|
add_generated_directed_dependency(resource, res)
|
|
@@ -138,10 +142,10 @@ class Puppet::Transaction::AdditionalResourceGenerator
|
|
|
138
142
|
def add_generated_directed_dependency(parent, child, label=nil)
|
|
139
143
|
if parent.depthfirst?
|
|
140
144
|
source = child
|
|
141
|
-
target = parent
|
|
145
|
+
target = parent
|
|
142
146
|
else
|
|
143
147
|
source = parent
|
|
144
|
-
target = child
|
|
148
|
+
target = child
|
|
145
149
|
end
|
|
146
150
|
|
|
147
151
|
# For each potential relationship metaparam, check if parent or
|
|
@@ -170,8 +174,22 @@ class Puppet::Transaction::AdditionalResourceGenerator
|
|
|
170
174
|
}
|
|
171
175
|
|
|
172
176
|
if not edge_exists
|
|
177
|
+
# We *cannot* use target.to_resource here!
|
|
178
|
+
#
|
|
179
|
+
# For reasons that are beyond my (and, perhaps, human)
|
|
180
|
+
# comprehension, to_resource will call retrieve. This is
|
|
181
|
+
# problematic if a generated resource needs the system to be
|
|
182
|
+
# changed by a previous resource (think a file on a path
|
|
183
|
+
# controlled by a mount resource).
|
|
184
|
+
#
|
|
185
|
+
# Instead of using to_resource, we just construct a resource as
|
|
186
|
+
# if the arguments to the Type instance had been passed to a
|
|
187
|
+
# Resource instead.
|
|
188
|
+
resource = ::Puppet::Resource.new(target.class, target.title,
|
|
189
|
+
:parameters => target.original_parameters)
|
|
190
|
+
|
|
173
191
|
source[:before] ||= []
|
|
174
|
-
source[:before] <<
|
|
192
|
+
source[:before] << resource
|
|
175
193
|
end
|
|
176
194
|
end
|
|
177
195
|
|
|
@@ -48,6 +48,17 @@ class Puppet::Transaction::Report
|
|
|
48
48
|
# @return [String] uuid
|
|
49
49
|
attr_accessor :transaction_uuid
|
|
50
50
|
|
|
51
|
+
# The id of the code input to the compiler.
|
|
52
|
+
attr_accessor :code_id
|
|
53
|
+
|
|
54
|
+
# A master generated catalog uuid, useful for connecting a single catalog to multiple reports.
|
|
55
|
+
attr_accessor :catalog_uuid
|
|
56
|
+
|
|
57
|
+
# Whether a cached catalog was used in the run, and if so, the reason that it was used.
|
|
58
|
+
# @return [String] One of the values: 'not_used', 'explicitly_requested',
|
|
59
|
+
# or 'on_failure'
|
|
60
|
+
attr_accessor :cached_catalog_status
|
|
61
|
+
|
|
51
62
|
# The host name for which the report is generated
|
|
52
63
|
# @return [String] the host name
|
|
53
64
|
attr_accessor :host
|
|
@@ -172,10 +183,13 @@ class Puppet::Transaction::Report
|
|
|
172
183
|
@host = Puppet[:node_name_value]
|
|
173
184
|
@time = Time.now
|
|
174
185
|
@kind = kind
|
|
175
|
-
@report_format =
|
|
186
|
+
@report_format = 5
|
|
176
187
|
@puppet_version = Puppet.version
|
|
177
188
|
@configuration_version = configuration_version
|
|
178
189
|
@transaction_uuid = transaction_uuid
|
|
190
|
+
@code_id = nil
|
|
191
|
+
@catalog_uuid = nil
|
|
192
|
+
@cached_catalog_status = nil
|
|
179
193
|
@environment = environment
|
|
180
194
|
@status = 'failed' # assume failed until the report is finalized
|
|
181
195
|
end
|
|
@@ -190,6 +204,19 @@ class Puppet::Transaction::Report
|
|
|
190
204
|
@status = data['status']
|
|
191
205
|
@host = data['host']
|
|
192
206
|
@time = data['time']
|
|
207
|
+
|
|
208
|
+
if catalog_uuid = data['catalog_uuid']
|
|
209
|
+
@catalog_uuid = catalog_uuid
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
if code_id = data['code_id']
|
|
213
|
+
@code_id = code_id
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
if cached_catalog_status = data['cached_catalog_status']
|
|
217
|
+
@cached_catalog_status = cached_catalog_status
|
|
218
|
+
end
|
|
219
|
+
|
|
193
220
|
if @time.is_a? String
|
|
194
221
|
@time = Time.parse(@time)
|
|
195
222
|
end
|
|
@@ -221,6 +248,9 @@ class Puppet::Transaction::Report
|
|
|
221
248
|
'time' => @time.iso8601(9),
|
|
222
249
|
'configuration_version' => @configuration_version,
|
|
223
250
|
'transaction_uuid' => @transaction_uuid,
|
|
251
|
+
'catalog_uuid' => @catalog_uuid,
|
|
252
|
+
'code_id' => @code_id,
|
|
253
|
+
'cached_catalog_status' => @cached_catalog_status,
|
|
224
254
|
'report_format' => @report_format,
|
|
225
255
|
'puppet_version' => @puppet_version,
|
|
226
256
|
'kind' => @kind,
|
|
@@ -69,8 +69,6 @@ class Puppet::Transaction::ResourceHarness
|
|
|
69
69
|
def perform_changes(resource, context)
|
|
70
70
|
cache(resource, :checked, Time.now)
|
|
71
71
|
|
|
72
|
-
return [] if ! allow_changes?(resource)
|
|
73
|
-
|
|
74
72
|
# Record the current state in state.yml.
|
|
75
73
|
context.audited_params.each do |param|
|
|
76
74
|
cache(resource, param, context.current_values[param])
|
|
@@ -96,29 +94,6 @@ class Puppet::Transaction::ResourceHarness
|
|
|
96
94
|
capture_audit_events(resource, context)
|
|
97
95
|
end
|
|
98
96
|
|
|
99
|
-
def allow_changes?(resource)
|
|
100
|
-
if resource.purging? and resource.deleting? and deps = relationship_graph.dependents(resource) \
|
|
101
|
-
and ! deps.empty? and deps.detect { |d| ! d.deleting? }
|
|
102
|
-
real_deps = deps.reject { |r| r.class.name == :whit }
|
|
103
|
-
if real_deps.empty?
|
|
104
|
-
true
|
|
105
|
-
else
|
|
106
|
-
deplabel = real_deps.collect { |r| r.ref }.join(",")
|
|
107
|
-
plurality = real_deps.length > 1 ? "":"s"
|
|
108
|
-
resource.warning "#{deplabel} still depend#{plurality} on me -- not purging"
|
|
109
|
-
false
|
|
110
|
-
end
|
|
111
|
-
else
|
|
112
|
-
true
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# allow_changes? is only made public to enable the existing spec tests to run
|
|
117
|
-
# under rspec 3 (apparently rspec 2 didn't enforce access controls?). Please do not
|
|
118
|
-
# treat this as part of a public API.
|
|
119
|
-
# Possible future improvement: rewrite to not require access to private methods.
|
|
120
|
-
public :allow_changes?
|
|
121
|
-
|
|
122
97
|
def sync_if_needed(param, context)
|
|
123
98
|
historical_value = context.historical_values[param.name]
|
|
124
99
|
current_value = context.current_values[param.name]
|
data/lib/puppet/transaction.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'puppet'
|
|
2
2
|
require 'puppet/util/tagging'
|
|
3
|
+
require 'puppet/util/skip_tags'
|
|
3
4
|
require 'puppet/application'
|
|
4
5
|
require 'digest/sha1'
|
|
5
6
|
require 'set'
|
|
@@ -185,6 +186,10 @@ class Puppet::Transaction
|
|
|
185
186
|
super
|
|
186
187
|
end
|
|
187
188
|
|
|
189
|
+
def skip_tags
|
|
190
|
+
@skip_tags ||= Puppet::Util::SkipTags.new(Puppet[:skip_tags]).tags
|
|
191
|
+
end
|
|
192
|
+
|
|
188
193
|
def prefetch_if_necessary(resource)
|
|
189
194
|
provider_class = resource.provider.class
|
|
190
195
|
return unless provider_class.respond_to?(:prefetch) and !prefetched_providers[resource.type][provider_class.name]
|
|
@@ -339,7 +344,9 @@ class Puppet::Transaction
|
|
|
339
344
|
|
|
340
345
|
# Should this resource be skipped?
|
|
341
346
|
def skip?(resource)
|
|
342
|
-
if
|
|
347
|
+
if skip_tags?(resource)
|
|
348
|
+
resource.debug "Skipping with skip tags #{skip_tags.join(", ")}"
|
|
349
|
+
elsif missing_tags?(resource)
|
|
343
350
|
resource.debug "Not tagged with #{tags.join(", ")}"
|
|
344
351
|
elsif ! scheduled?(resource)
|
|
345
352
|
resource.debug "Not scheduled"
|
|
@@ -375,6 +382,13 @@ class Puppet::Transaction
|
|
|
375
382
|
not resource.tagged?(*tags)
|
|
376
383
|
end
|
|
377
384
|
|
|
385
|
+
def skip_tags?(resource)
|
|
386
|
+
return false if ignore_tags?
|
|
387
|
+
return false if skip_tags.empty?
|
|
388
|
+
|
|
389
|
+
resource.tagged?(*skip_tags)
|
|
390
|
+
end
|
|
391
|
+
|
|
378
392
|
def split_qualified_tags?
|
|
379
393
|
false
|
|
380
394
|
end
|
|
@@ -389,4 +403,3 @@ class Puppet::Transaction
|
|
|
389
403
|
end
|
|
390
404
|
|
|
391
405
|
require 'puppet/transaction/report'
|
|
392
|
-
|
data/lib/puppet/type/augeas.rb
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# you may not use this file except in compliance with the License.
|
|
6
6
|
# You may obtain a copy of the License at
|
|
7
7
|
#
|
|
8
|
-
#
|
|
8
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
9
9
|
#
|
|
10
10
|
# Unless required by applicable law or agreed to in writing, software
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
data/lib/puppet/type/cron.rb
CHANGED
|
@@ -18,29 +18,29 @@ Puppet::Type.newtype(:cron) do
|
|
|
18
18
|
|
|
19
19
|
Example:
|
|
20
20
|
|
|
21
|
-
cron { logrotate:
|
|
22
|
-
command =>
|
|
23
|
-
user => root,
|
|
21
|
+
cron { 'logrotate':
|
|
22
|
+
command => '/usr/sbin/logrotate',
|
|
23
|
+
user => 'root',
|
|
24
24
|
hour => 2,
|
|
25
|
-
minute => 0
|
|
25
|
+
minute => 0,
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
Note that all periodic attributes can be specified as an array of values:
|
|
29
29
|
|
|
30
|
-
cron { logrotate:
|
|
31
|
-
command =>
|
|
32
|
-
user => root,
|
|
33
|
-
hour => [2, 4]
|
|
30
|
+
cron { 'logrotate':
|
|
31
|
+
command => '/usr/sbin/logrotate',
|
|
32
|
+
user => 'root',
|
|
33
|
+
hour => [2, 4],
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
...or using ranges or the step syntax `*/2` (although there's no guarantee
|
|
37
37
|
that your `cron` daemon supports these):
|
|
38
38
|
|
|
39
|
-
cron { logrotate:
|
|
40
|
-
command =>
|
|
41
|
-
user => root,
|
|
39
|
+
cron { 'logrotate':
|
|
40
|
+
command => '/usr/sbin/logrotate',
|
|
41
|
+
user => 'root',
|
|
42
42
|
hour => ['2-4'],
|
|
43
|
-
minute => '*/10'
|
|
43
|
+
minute => '*/10',
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
An important note: _the Cron type will not reset parameters that are
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'puppet/util/checksums'
|
|
2
|
+
require 'puppet/type/file/data_sync'
|
|
3
|
+
|
|
4
|
+
module Puppet
|
|
5
|
+
Puppet::Type.type(:file).newproperty(:checksum_value) do
|
|
6
|
+
include Puppet::Util::Checksums
|
|
7
|
+
include Puppet::DataSync
|
|
8
|
+
|
|
9
|
+
desc "The checksum of the source contents. Only md5 and sha256 are supported when
|
|
10
|
+
specifying this parameter. If this parameter is set, source_permissions will be
|
|
11
|
+
assumed to be false, and ownership and permissions will not be read from source."
|
|
12
|
+
|
|
13
|
+
def insync?(is)
|
|
14
|
+
# If checksum_value and source are specified, manage the file contents.
|
|
15
|
+
# Otherwise the content property will manage syncing.
|
|
16
|
+
if resource.parameter(:source).nil?
|
|
17
|
+
return true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
checksum_insync?(resource.parameter(:source), is, true) {|_is| super(_is)}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def property_matches?(current, desired)
|
|
24
|
+
return true if super(current, desired)
|
|
25
|
+
return date_matches?(resource.parameter(:checksum).value, current, desired)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def retrieve
|
|
29
|
+
# If checksum_value and source are specified, manage the file contents.
|
|
30
|
+
# Otherwise the content property will manage syncing. Don't compute the checksum twice.
|
|
31
|
+
if resource.parameter(:source).nil?
|
|
32
|
+
return nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
result = retrieve_checksum(resource)
|
|
36
|
+
# If the returned type matches the util/checksums format (prefixed with the type),
|
|
37
|
+
# strip the checksum type.
|
|
38
|
+
result = sumdata(result) if checksum?(result)
|
|
39
|
+
result
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def sync
|
|
43
|
+
if resource.parameter(:source).nil?
|
|
44
|
+
devfail "checksum_value#sync should not be called without a source parameter"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# insync? only returns false if it expects to manage the file content,
|
|
48
|
+
# so instruct the resource to write its contents.
|
|
49
|
+
contents_sync(resource.parameter(:source))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
end
|