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/type/file.rb
CHANGED
|
@@ -367,9 +367,10 @@ Puppet::Type.newtype(:file) do
|
|
|
367
367
|
creator_count += 1 if self.should(param)
|
|
368
368
|
end
|
|
369
369
|
creator_count += 1 if @parameters.include?(:source)
|
|
370
|
+
|
|
370
371
|
self.fail "You cannot specify more than one of #{CREATORS.collect { |p| p.to_s}.join(", ")}" if creator_count > 1
|
|
371
372
|
|
|
372
|
-
self.fail "You cannot specify a remote recursion without a source" if !self[:source]
|
|
373
|
+
self.fail "You cannot specify a remote recursion without a source" if !self[:source] && self[:recurse] == :remote
|
|
373
374
|
|
|
374
375
|
self.fail "You cannot specify source when using checksum 'none'" if self[:checksum] == :none && !self[:source].nil?
|
|
375
376
|
|
|
@@ -377,13 +378,19 @@ Puppet::Type.newtype(:file) do
|
|
|
377
378
|
self.fail "You cannot specify content when using checksum '#{checksum_type}'" if self[:checksum] == checksum_type && !self[:content].nil?
|
|
378
379
|
end
|
|
379
380
|
|
|
380
|
-
self.warning "Possible error: recurselimit is set but not recurse, no recursion will happen" if !self[:recurse]
|
|
381
|
+
self.warning "Possible error: recurselimit is set but not recurse, no recursion will happen" if !self[:recurse] && self[:recurselimit]
|
|
381
382
|
|
|
382
383
|
if @parameters[:content] && @parameters[:content].actual_content
|
|
383
384
|
# Now that we know the checksum, update content (in case it was created before checksum was known).
|
|
384
385
|
@parameters[:content].value = @parameters[:checksum].sum(@parameters[:content].actual_content)
|
|
385
386
|
end
|
|
386
387
|
|
|
388
|
+
if self[:checksum] && self[:checksum_value] && !send("#{self[:checksum]}?", self[:checksum_value])
|
|
389
|
+
self.fail "Checksum value '#{self[:checksum_value]}' is not a valid checksum type #{self[:checksum]}"
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
self.warning "Checksum value is ignored unless content or source are specified" if self[:checksum_value] && !self[:content] && !self[:source]
|
|
393
|
+
|
|
387
394
|
provider.validate if provider.respond_to?(:validate)
|
|
388
395
|
end
|
|
389
396
|
|
|
@@ -398,7 +405,7 @@ Puppet::Type.newtype(:file) do
|
|
|
398
405
|
|
|
399
406
|
# Determine the user to write files as.
|
|
400
407
|
def asuser
|
|
401
|
-
if self.should(:owner)
|
|
408
|
+
if self.should(:owner) && ! self.should(:owner).is_a?(Symbol)
|
|
402
409
|
writeable = Puppet::Util::SUIDManager.asuser(self.should(:owner)) {
|
|
403
410
|
FileTest.writable?(::File.dirname(self[:path]))
|
|
404
411
|
}
|
|
@@ -571,22 +578,29 @@ Puppet::Type.newtype(:file) do
|
|
|
571
578
|
remove_less_specific_files(result)
|
|
572
579
|
end
|
|
573
580
|
|
|
581
|
+
def remove_less_specific_files(files)
|
|
582
|
+
existing_files = catalog.vertices.select { |r| r.is_a?(self.class) }
|
|
583
|
+
self.class.remove_less_specific_files(files, self[:path], existing_files) do |file|
|
|
584
|
+
file[:path]
|
|
585
|
+
end
|
|
586
|
+
end
|
|
587
|
+
|
|
574
588
|
# This is to fix bug #2296, where two files recurse over the same
|
|
575
589
|
# set of files. It's a rare case, and when it does happen you're
|
|
576
590
|
# not likely to have many actual conflicts, which is good, because
|
|
577
591
|
# this is a pretty inefficient implementation.
|
|
578
|
-
def remove_less_specific_files(files)
|
|
592
|
+
def self.remove_less_specific_files(files, parent_path, existing_files, &block)
|
|
579
593
|
# REVISIT: is this Windows safe? AltSeparator?
|
|
580
|
-
mypath =
|
|
581
|
-
other_paths =
|
|
582
|
-
select
|
|
583
|
-
collect { |r| r
|
|
594
|
+
mypath = parent_path.split(::File::Separator)
|
|
595
|
+
other_paths = existing_files.
|
|
596
|
+
select { |r| (yield r) != parent_path}.
|
|
597
|
+
collect { |r| (yield r).split(::File::Separator) }.
|
|
584
598
|
select { |p| p[0,mypath.length] == mypath }
|
|
585
599
|
|
|
586
600
|
return files if other_paths.empty?
|
|
587
601
|
|
|
588
602
|
files.reject { |file|
|
|
589
|
-
path = file
|
|
603
|
+
path = (yield file).split(::File::Separator)
|
|
590
604
|
other_paths.any? { |p| path[0,p.length] == p }
|
|
591
605
|
}
|
|
592
606
|
end
|
|
@@ -629,12 +643,43 @@ Puppet::Type.newtype(:file) do
|
|
|
629
643
|
|
|
630
644
|
# Recurse against our remote file.
|
|
631
645
|
def recurse_remote(children)
|
|
646
|
+
recurse_remote_metadata.each do |meta|
|
|
647
|
+
if meta.relative_path == "."
|
|
648
|
+
self[:checksum] = meta.checksum_type
|
|
649
|
+
parameter(:source).metadata = meta
|
|
650
|
+
next
|
|
651
|
+
end
|
|
652
|
+
children[meta.relative_path] ||= newchild(meta.relative_path)
|
|
653
|
+
children[meta.relative_path][:source] = meta.source
|
|
654
|
+
children[meta.relative_path][:checksum] = meta.checksum_type
|
|
655
|
+
children[meta.relative_path].parameter(:source).metadata = meta
|
|
656
|
+
end
|
|
657
|
+
|
|
658
|
+
children
|
|
659
|
+
end
|
|
660
|
+
|
|
661
|
+
def recurse_remote_metadata
|
|
632
662
|
sourceselect = self[:sourceselect]
|
|
633
663
|
|
|
634
664
|
total = self[:source].collect do |source|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
665
|
+
# For each inlined file resource, the catalog contains a hash mapping
|
|
666
|
+
# source path to lists of metadata returned by a server-side search.
|
|
667
|
+
if recursive_metadata = catalog.recursive_metadata[title]
|
|
668
|
+
result = recursive_metadata[source]
|
|
669
|
+
else
|
|
670
|
+
result = perform_recursion(source)
|
|
671
|
+
end
|
|
672
|
+
|
|
673
|
+
next unless result
|
|
674
|
+
return [] if top = result.find { |r| r.relative_path == "." } and top.ftype != "directory"
|
|
675
|
+
result.each do |data|
|
|
676
|
+
if data.relative_path == '.'
|
|
677
|
+
data.source = source
|
|
678
|
+
else
|
|
679
|
+
# REMIND: appending file paths to URL may not be safe, e.g. foo+bar
|
|
680
|
+
data.source = "#{source}/#{data.relative_path}"
|
|
681
|
+
end
|
|
682
|
+
end
|
|
638
683
|
break result if result and ! result.empty? and sourceselect == :first
|
|
639
684
|
result
|
|
640
685
|
end.flatten.compact
|
|
@@ -644,22 +689,12 @@ Puppet::Type.newtype(:file) do
|
|
|
644
689
|
found = []
|
|
645
690
|
total.reject! do |data|
|
|
646
691
|
result = found.include?(data.relative_path)
|
|
647
|
-
found << data.relative_path unless
|
|
692
|
+
found << data.relative_path unless result
|
|
648
693
|
result
|
|
649
694
|
end
|
|
650
695
|
end
|
|
651
696
|
|
|
652
|
-
total
|
|
653
|
-
if meta.relative_path == "."
|
|
654
|
-
parameter(:source).metadata = meta
|
|
655
|
-
next
|
|
656
|
-
end
|
|
657
|
-
children[meta.relative_path] ||= newchild(meta.relative_path)
|
|
658
|
-
children[meta.relative_path][:source] = meta.source
|
|
659
|
-
children[meta.relative_path].parameter(:source).metadata = meta
|
|
660
|
-
end
|
|
661
|
-
|
|
662
|
-
children
|
|
697
|
+
total
|
|
663
698
|
end
|
|
664
699
|
|
|
665
700
|
def perform_recursion(path)
|
|
@@ -707,7 +742,27 @@ Puppet::Type.newtype(:file) do
|
|
|
707
742
|
end
|
|
708
743
|
|
|
709
744
|
def retrieve
|
|
710
|
-
|
|
745
|
+
# This check is done in retrieve to ensure it happens before we try to use
|
|
746
|
+
# metadata in `copy_source_values`, but so it only fails the resource and not
|
|
747
|
+
# catalog validation (because that would be a breaking change from Puppet 4).
|
|
748
|
+
if Puppet.features.microsoft_windows? && parameter(:source) &&
|
|
749
|
+
[:use, :use_when_creating].include?(self[:source_permissions])
|
|
750
|
+
err_msg = "Copying owner/mode/group from the source file on Windows" <<
|
|
751
|
+
" is not supported; use source_permissions => ignore."
|
|
752
|
+
|
|
753
|
+
if self[:owner] == nil || self[:group] == nil || self[:mode] == nil
|
|
754
|
+
# Fail on Windows if source permissions are being used and the file resource
|
|
755
|
+
# does not have mode owner, group, and mode all set (which would take precedence).
|
|
756
|
+
self.fail err_msg
|
|
757
|
+
else
|
|
758
|
+
# Warn if use source permissions is specified on Windows
|
|
759
|
+
self.warning err_msg
|
|
760
|
+
end
|
|
761
|
+
end
|
|
762
|
+
|
|
763
|
+
# `checksum_value` implies explicit management of all metadata, so skip metadata
|
|
764
|
+
# retrieval. Otherwise, if source is set, retrieve metadata for source.
|
|
765
|
+
if (source = parameter(:source)) && property(:checksum_value).nil?
|
|
711
766
|
source.copy_source_values
|
|
712
767
|
end
|
|
713
768
|
super
|
|
@@ -786,9 +841,10 @@ Puppet::Type.newtype(:file) do
|
|
|
786
841
|
resource
|
|
787
842
|
end
|
|
788
843
|
|
|
789
|
-
# Write out the file.
|
|
790
|
-
#
|
|
791
|
-
|
|
844
|
+
# Write out the file. To write content, pass the property as an argument
|
|
845
|
+
# to delegate writing to; must implement a #write method that takes the file
|
|
846
|
+
# as an argument.
|
|
847
|
+
def write(property = nil)
|
|
792
848
|
remove_existing(:file)
|
|
793
849
|
|
|
794
850
|
mode = self.should(:mode) # might be nil
|
|
@@ -797,7 +853,8 @@ Puppet::Type.newtype(:file) do
|
|
|
797
853
|
if write_temporary_file?
|
|
798
854
|
Puppet::Util.replace_file(self[:path], mode_int) do |file|
|
|
799
855
|
file.binmode
|
|
800
|
-
|
|
856
|
+
devfail 'a property should have been provided if write_temporary_file? returned true' if property.nil?
|
|
857
|
+
content_checksum = property.write(file)
|
|
801
858
|
file.flush
|
|
802
859
|
fail_if_checksum_is_wrong(file.path, content_checksum) if validate_checksum?
|
|
803
860
|
if self[:validate_cmd]
|
|
@@ -809,7 +866,7 @@ Puppet::Type.newtype(:file) do
|
|
|
809
866
|
end
|
|
810
867
|
else
|
|
811
868
|
umask = mode ? 000 : 022
|
|
812
|
-
Puppet::Util.withumask(umask) { ::File.open(self[:path], 'wb', mode_int ) { |f|
|
|
869
|
+
Puppet::Util.withumask(umask) { ::File.open(self[:path], 'wb', mode_int ) { |f| property.write(f) if property } }
|
|
813
870
|
end
|
|
814
871
|
|
|
815
872
|
# make sure all of the modes are actually correct
|
|
@@ -889,16 +946,9 @@ Puppet::Type.newtype(:file) do
|
|
|
889
946
|
self.fail "File written to disk did not match checksum; discarding changes (#{content_checksum} vs #{newsum})"
|
|
890
947
|
end
|
|
891
948
|
|
|
892
|
-
# write the current content. Note that if there is no content property
|
|
893
|
-
# simply opening the file with 'w' as done in write is enough to truncate
|
|
894
|
-
# or write an empty length file.
|
|
895
|
-
def write_content(file)
|
|
896
|
-
(content = property(:content)) && content.write(file)
|
|
897
|
-
end
|
|
898
|
-
|
|
899
949
|
def write_temporary_file?
|
|
900
|
-
#
|
|
901
|
-
#
|
|
950
|
+
# Unfortunately we don't know the source file size before fetching it so
|
|
951
|
+
# let's assume the file won't be empty. Why isn't it part of the metadata?
|
|
902
952
|
(c = property(:content) and c.length) || @parameters[:source]
|
|
903
953
|
end
|
|
904
954
|
|
|
@@ -914,6 +964,7 @@ Puppet::Type.newtype(:file) do
|
|
|
914
964
|
thing.sync unless thing.safe_insync?(currentvalue)
|
|
915
965
|
end
|
|
916
966
|
end
|
|
967
|
+
|
|
917
968
|
end
|
|
918
969
|
|
|
919
970
|
# We put all of the properties in separate files, because there are so many
|
|
@@ -922,6 +973,7 @@ end
|
|
|
922
973
|
require 'puppet/type/file/checksum'
|
|
923
974
|
require 'puppet/type/file/content' # can create the file
|
|
924
975
|
require 'puppet/type/file/source' # can create the file
|
|
976
|
+
require 'puppet/type/file/checksum_value' # can create the file, in place of content
|
|
925
977
|
require 'puppet/type/file/target' # creates a different type of file
|
|
926
978
|
require 'puppet/type/file/ensure' # can create the file
|
|
927
979
|
require 'puppet/type/file/owner'
|
|
@@ -21,7 +21,7 @@ module Puppet
|
|
|
21
21
|
puppet master's filebucket with the _desired_ content for each file,
|
|
22
22
|
then instructs the agent to retrieve the content for a specific
|
|
23
23
|
checksum. For more details,
|
|
24
|
-
[see the `static_compiler` section in the catalog indirection docs](
|
|
24
|
+
[see the `static_compiler` section in the catalog indirection docs](https://docs.puppetlabs.com/references/latest/indirection.html#catalog).
|
|
25
25
|
|
|
26
26
|
To use a central filebucket for backups, you will usually want to declare
|
|
27
27
|
a filebucket resource and a resource default for the `backup` attribute
|
data/lib/puppet/type/group.rb
CHANGED
|
@@ -80,7 +80,9 @@ module Puppet
|
|
|
80
80
|
|
|
81
81
|
newproperty(:members, :array_matching => :all, :required_features => :manages_members) do
|
|
82
82
|
desc "The members of the group. For directory services where group
|
|
83
|
-
membership is stored in the group objects, not the users.
|
|
83
|
+
membership is stored in the group objects, not the users. Use
|
|
84
|
+
with auth_membership to determine whether the specified members
|
|
85
|
+
are inclusive or the minimum."
|
|
84
86
|
|
|
85
87
|
def change_to_s(currentvalue, newvalue)
|
|
86
88
|
currentvalue = currentvalue.join(",") if currentvalue != :absent
|
|
@@ -116,7 +118,9 @@ module Puppet
|
|
|
116
118
|
end
|
|
117
119
|
|
|
118
120
|
newparam(:auth_membership, :boolean => true, :parent => Puppet::Parameter::Boolean) do
|
|
119
|
-
desc "
|
|
121
|
+
desc "Whether the provider is authoritative for group membership. This
|
|
122
|
+
must be set to true to allow setting the group to no members with
|
|
123
|
+
`members => [],`."
|
|
120
124
|
defaultto false
|
|
121
125
|
end
|
|
122
126
|
|
|
@@ -45,19 +45,24 @@ Puppet::Type.newtype(:interface) do
|
|
|
45
45
|
newvalues(:auto, :full, :half)
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
+
newproperty(:access_vlan) do
|
|
49
|
+
desc "Interface static access vlan."
|
|
50
|
+
newvalues(/^\d+/)
|
|
51
|
+
end
|
|
52
|
+
|
|
48
53
|
newproperty(:native_vlan) do
|
|
49
|
-
desc "Interface native vlan
|
|
54
|
+
desc "Interface native vlan when trunking."
|
|
50
55
|
newvalues(/^\d+/)
|
|
51
56
|
end
|
|
52
57
|
|
|
53
58
|
newproperty(:encapsulation) do
|
|
54
59
|
desc "Interface switchport encapsulation."
|
|
55
|
-
newvalues(:none, :dot1q, :isl )
|
|
60
|
+
newvalues(:none, :dot1q, :isl, :negotiate)
|
|
56
61
|
end
|
|
57
62
|
|
|
58
63
|
newproperty(:mode) do
|
|
59
64
|
desc "Interface switchport mode."
|
|
60
|
-
newvalues(:access, :trunk)
|
|
65
|
+
newvalues(:access, :trunk, 'dynamic auto', 'dynamic desirable')
|
|
61
66
|
end
|
|
62
67
|
|
|
63
68
|
newproperty(:allowed_trunk_vlans) do
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Puppet::Type.newtype(:macauthorization) do
|
|
2
2
|
|
|
3
3
|
@doc = "Manage the Mac OS X authorization database. See the
|
|
4
|
-
[Apple developer site](
|
|
4
|
+
[Apple developer site](https://developer.apple.com/documentation/Security/Conceptual/Security_Overview/Security_Services/chapter_4_section_5.html)
|
|
5
5
|
for more information.
|
|
6
6
|
|
|
7
7
|
Note that authorization store directives with hyphens in their names have
|
data/lib/puppet/type/package.rb
CHANGED
|
@@ -74,6 +74,12 @@ module Puppet
|
|
|
74
74
|
value. On packaging systems that manage configuration files separately
|
|
75
75
|
from "normal" system files, you can uninstall config files by
|
|
76
76
|
specifying `purged` as the ensure value. This defaults to `installed`.
|
|
77
|
+
|
|
78
|
+
Version numbers must match the full version to install, including
|
|
79
|
+
release if the provider uses a release moniker. Ranges or semver
|
|
80
|
+
patterns are not accepted except for the `gem` package provider. For
|
|
81
|
+
example, to install the bash package from the rpm
|
|
82
|
+
`bash-4.1.2-29.el6.x86_64.rpm`, use the string `'4.1.2-29.el6'`.
|
|
77
83
|
EOT
|
|
78
84
|
|
|
79
85
|
attr_accessor :latest
|
data/lib/puppet/type/schedule.rb
CHANGED
|
@@ -2,7 +2,7 @@ module Puppet
|
|
|
2
2
|
Type.newtype(:schedule) do
|
|
3
3
|
@doc = <<-'EOT'
|
|
4
4
|
Define schedules for Puppet. Resources can be limited to a schedule by using the
|
|
5
|
-
[`schedule`](
|
|
5
|
+
[`schedule`](https://docs.puppetlabs.com/references/latest/metaparameter.html#schedule)
|
|
6
6
|
metaparameter.
|
|
7
7
|
|
|
8
8
|
Currently, **schedules can only be used to stop a resource from being
|
data/lib/puppet/type/stage.rb
CHANGED
|
@@ -2,7 +2,7 @@ Puppet::Type.newtype(:stage) do
|
|
|
2
2
|
desc "A resource type for creating new run stages. Once a stage is available,
|
|
3
3
|
classes can be assigned to it by declaring them with the resource-like syntax
|
|
4
4
|
and using
|
|
5
|
-
[the `stage` metaparameter](
|
|
5
|
+
[the `stage` metaparameter](https://docs.puppetlabs.com/references/latest/metaparameter.html#stage).
|
|
6
6
|
|
|
7
7
|
Note that new stages are not useful unless you also declare their order
|
|
8
8
|
in relation to the default `main` stage.
|
data/lib/puppet/type/user.rb
CHANGED
|
@@ -185,25 +185,26 @@ module Puppet
|
|
|
185
185
|
end
|
|
186
186
|
|
|
187
187
|
newproperty(:password, :required_features => :manages_passwords) do
|
|
188
|
-
desc %q{The user's password, in whatever encrypted format the local
|
|
189
|
-
system
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
hashes
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
need to be specified as
|
|
188
|
+
desc %q{The user's password, in whatever encrypted format the local system
|
|
189
|
+
requires. Consult your operating system's documentation for acceptable password
|
|
190
|
+
encryption formats and requirements.
|
|
191
|
+
|
|
192
|
+
* Mac OS X 10.5 and 10.6, and some older Linux distributions, use salted SHA1
|
|
193
|
+
hashes. You can use Puppet's built-in `sha1` function to generate a salted SHA1
|
|
194
|
+
hash from a password.
|
|
195
|
+
* Mac OS X 10.7 (Lion), and many recent Linux distributions, use salted SHA512
|
|
196
|
+
hashes. The Puppet Labs [stdlib][] module contains a `str2saltedsha512` function
|
|
197
|
+
which can generate password hashes for these operating systems.
|
|
198
|
+
* OS X 10.8 and higher use salted SHA512 PBKDF2 hashes. When managing passwords
|
|
199
|
+
on these systems, the `salt` and `iterations` attributes need to be specified as
|
|
200
|
+
well as the password.
|
|
200
201
|
* Windows passwords can only be managed in cleartext, as there is no Windows API
|
|
201
202
|
for setting the password hash.
|
|
202
203
|
|
|
203
204
|
[stdlib]: https://github.com/puppetlabs/puppetlabs-stdlib/
|
|
204
205
|
|
|
205
|
-
|
|
206
|
-
|
|
206
|
+
Enclose any value that includes a dollar sign ($) in single quotes (') to avoid
|
|
207
|
+
accidental variable interpolation.}
|
|
207
208
|
|
|
208
209
|
validate do |value|
|
|
209
210
|
raise ArgumentError, "Passwords cannot include ':'" if value.is_a?(String) and value.include?(":")
|
|
@@ -584,14 +585,15 @@ module Puppet
|
|
|
584
585
|
end
|
|
585
586
|
|
|
586
587
|
newproperty(:salt, :required_features => :manages_password_salt) do
|
|
587
|
-
desc "This is the 32
|
|
588
|
+
desc "This is the 32-byte salt used to generate the PBKDF2 password used in
|
|
588
589
|
OS X. This field is required for managing passwords on OS X >= 10.8."
|
|
589
590
|
end
|
|
590
591
|
|
|
591
592
|
newproperty(:iterations, :required_features => :manages_password_salt) do
|
|
592
593
|
desc "This is the number of iterations of a chained computation of the
|
|
593
|
-
password hash
|
|
594
|
-
is used in OS X
|
|
594
|
+
[PBKDF2 password hash](https://en.wikipedia.org/wiki/PBKDF2). This parameter
|
|
595
|
+
is used in OS X, and is required for managing passwords on OS X 10.8 and
|
|
596
|
+
newer."
|
|
595
597
|
|
|
596
598
|
munge do |value|
|
|
597
599
|
if value.is_a?(String) and value =~/^[-0-9]+$/
|
data/lib/puppet/type/yumrepo.rb
CHANGED
|
@@ -21,6 +21,16 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
21
21
|
YUM_BOOLEAN=/^(True|False|0|1|No|Yes)$/i
|
|
22
22
|
YUM_BOOLEAN_DOC="Valid values are: False/0/No or True/1/Yes."
|
|
23
23
|
|
|
24
|
+
# Common munge logic for YUM_BOOLEAN values. Munges for two requirements:
|
|
25
|
+
# 1) Because of how regex validation works in Puppet::Parameter::Value,
|
|
26
|
+
# Boolean false and lowercase false will not be considered invalid. However,
|
|
27
|
+
# if the user specified false (or true), they meant False (or True).
|
|
28
|
+
# 2) In order for parameter removal to work correctly, when absent is passed
|
|
29
|
+
# as a string it needs to be munged back to a symbol.
|
|
30
|
+
munge_yum_bool = Proc.new do |val|
|
|
31
|
+
val.to_s == 'absent' ? :absent : val.to_s.capitalize
|
|
32
|
+
end
|
|
33
|
+
|
|
24
34
|
VALID_SCHEMES = %w[file http https ftp]
|
|
25
35
|
|
|
26
36
|
newparam(:name, :namevar => true) do
|
|
@@ -81,6 +91,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
81
91
|
#{ABSENT_DOC}"
|
|
82
92
|
|
|
83
93
|
newvalues(YUM_BOOLEAN, :absent)
|
|
94
|
+
munge(&munge_yum_bool)
|
|
84
95
|
end
|
|
85
96
|
|
|
86
97
|
newproperty(:gpgcheck) do
|
|
@@ -90,6 +101,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
90
101
|
#{ABSENT_DOC}"
|
|
91
102
|
|
|
92
103
|
newvalues(YUM_BOOLEAN, :absent)
|
|
104
|
+
munge(&munge_yum_bool)
|
|
93
105
|
end
|
|
94
106
|
|
|
95
107
|
newproperty(:repo_gpgcheck) do
|
|
@@ -98,6 +110,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
98
110
|
#{ABSENT_DOC}"
|
|
99
111
|
|
|
100
112
|
newvalues(YUM_BOOLEAN, :absent)
|
|
113
|
+
munge(&munge_yum_bool)
|
|
101
114
|
end
|
|
102
115
|
|
|
103
116
|
newproperty(:gpgkey) do
|
|
@@ -179,6 +192,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
179
192
|
#{ABSENT_DOC}"
|
|
180
193
|
|
|
181
194
|
newvalues(YUM_BOOLEAN, :absent)
|
|
195
|
+
munge(&munge_yum_bool)
|
|
182
196
|
end
|
|
183
197
|
|
|
184
198
|
newproperty(:failovermethod) do
|
|
@@ -194,6 +208,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
194
208
|
#{ABSENT_DOC}"
|
|
195
209
|
|
|
196
210
|
newvalues(YUM_BOOLEAN, :absent)
|
|
211
|
+
munge(&munge_yum_bool)
|
|
197
212
|
end
|
|
198
213
|
|
|
199
214
|
newproperty(:retries) do
|
|
@@ -231,6 +246,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
231
246
|
#{ABSENT_DOC}"
|
|
232
247
|
|
|
233
248
|
newvalues(YUM_BOOLEAN, :absent)
|
|
249
|
+
munge(&munge_yum_bool)
|
|
234
250
|
end
|
|
235
251
|
|
|
236
252
|
newproperty(:priority) do
|
|
@@ -307,6 +323,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
307
323
|
#{ABSENT_DOC}"
|
|
308
324
|
|
|
309
325
|
newvalues(YUM_BOOLEAN, :absent)
|
|
326
|
+
munge(&munge_yum_bool)
|
|
310
327
|
end
|
|
311
328
|
|
|
312
329
|
newproperty(:sslcacert) do
|
|
@@ -323,6 +340,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
323
340
|
#{ABSENT_DOC}"
|
|
324
341
|
|
|
325
342
|
newvalues(YUM_BOOLEAN, :absent)
|
|
343
|
+
munge(&munge_yum_bool)
|
|
326
344
|
end
|
|
327
345
|
|
|
328
346
|
newproperty(:sslclientcert) do
|
|
@@ -359,6 +377,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
359
377
|
#{ABSENT_DOC}"
|
|
360
378
|
|
|
361
379
|
newvalues(YUM_BOOLEAN, :absent)
|
|
380
|
+
munge(&munge_yum_bool)
|
|
362
381
|
end
|
|
363
382
|
|
|
364
383
|
newproperty(:assumeyes) do
|
|
@@ -367,6 +386,7 @@ Puppet::Type.newtype(:yumrepo) do
|
|
|
367
386
|
#{ABSENT_DOC}"
|
|
368
387
|
|
|
369
388
|
newvalues(YUM_BOOLEAN, :absent)
|
|
389
|
+
munge(&munge_yum_bool)
|
|
370
390
|
end
|
|
371
391
|
|
|
372
392
|
newproperty(:deltarpm_percentage) do
|
data/lib/puppet/type.rb
CHANGED
|
@@ -1246,7 +1246,7 @@ class Type
|
|
|
1246
1246
|
event _would_ have been sent.
|
|
1247
1247
|
|
|
1248
1248
|
**Important note:**
|
|
1249
|
-
[The `noop` setting](
|
|
1249
|
+
[The `noop` setting](https://docs.puppetlabs.com/references/latest/configuration.html#noop)
|
|
1250
1250
|
allows you to globally enable or disable noop mode, but it will _not_ override
|
|
1251
1251
|
the `noop` metaparameter on individual resources. That is, the value of the
|
|
1252
1252
|
global `noop` setting will _only_ affect resources that do not have an explicit
|
|
@@ -1266,7 +1266,7 @@ class Type
|
|
|
1266
1266
|
The value of this metaparameter must be the `name` of a `schedule`
|
|
1267
1267
|
resource. This means you must declare a schedule resource, then
|
|
1268
1268
|
refer to it by name; see
|
|
1269
|
-
[the docs for the `schedule` type](
|
|
1269
|
+
[the docs for the `schedule` type](https://docs.puppetlabs.com/references/latest/type.html#schedule)
|
|
1270
1270
|
for more info.
|
|
1271
1271
|
|
|
1272
1272
|
schedule { 'everyday':
|
|
@@ -1558,7 +1558,7 @@ class Type
|
|
|
1558
1558
|
|
|
1559
1559
|
newmetaparam(:require, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :NONE}) do
|
|
1560
1560
|
desc "One or more resources that this resource depends on, expressed as
|
|
1561
|
-
[resource references](
|
|
1561
|
+
[resource references](https://docs.puppetlabs.com/puppet/latest/reference/lang_data_resource_reference.html).
|
|
1562
1562
|
Multiple resources can be specified as an array of references. When this
|
|
1563
1563
|
attribute is present:
|
|
1564
1564
|
|
|
@@ -1567,12 +1567,12 @@ class Type
|
|
|
1567
1567
|
This is one of the four relationship metaparameters, along with
|
|
1568
1568
|
`before`, `notify`, and `subscribe`. For more context, including the
|
|
1569
1569
|
alternate chaining arrow (`->` and `~>`) syntax, see
|
|
1570
|
-
[the language page on relationships](
|
|
1570
|
+
[the language page on relationships](https://docs.puppetlabs.com/puppet/latest/reference/lang_relationships.html)."
|
|
1571
1571
|
end
|
|
1572
1572
|
|
|
1573
1573
|
newmetaparam(:subscribe, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :ALL_EVENTS, :callback => :refresh}) do
|
|
1574
1574
|
desc "One or more resources that this resource depends on, expressed as
|
|
1575
|
-
[resource references](
|
|
1575
|
+
[resource references](https://docs.puppetlabs.com/puppet/latest/reference/lang_data_resource_reference.html).
|
|
1576
1576
|
Multiple resources can be specified as an array of references. When this
|
|
1577
1577
|
attribute is present:
|
|
1578
1578
|
|
|
@@ -1585,12 +1585,12 @@ class Type
|
|
|
1585
1585
|
This is one of the four relationship metaparameters, along with
|
|
1586
1586
|
`before`, `require`, and `notify`. For more context, including the
|
|
1587
1587
|
alternate chaining arrow (`->` and `~>`) syntax, see
|
|
1588
|
-
[the language page on relationships](
|
|
1588
|
+
[the language page on relationships](https://docs.puppetlabs.com/puppet/latest/reference/lang_relationships.html)."
|
|
1589
1589
|
end
|
|
1590
1590
|
|
|
1591
1591
|
newmetaparam(:before, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :NONE}) do
|
|
1592
1592
|
desc "One or more resources that depend on this resource, expressed as
|
|
1593
|
-
[resource references](
|
|
1593
|
+
[resource references](https://docs.puppetlabs.com/puppet/latest/reference/lang_data_resource_reference.html).
|
|
1594
1594
|
Multiple resources can be specified as an array of references. When this
|
|
1595
1595
|
attribute is present:
|
|
1596
1596
|
|
|
@@ -1599,12 +1599,12 @@ class Type
|
|
|
1599
1599
|
This is one of the four relationship metaparameters, along with
|
|
1600
1600
|
`require`, `notify`, and `subscribe`. For more context, including the
|
|
1601
1601
|
alternate chaining arrow (`->` and `~>`) syntax, see
|
|
1602
|
-
[the language page on relationships](
|
|
1602
|
+
[the language page on relationships](https://docs.puppetlabs.com/puppet/latest/reference/lang_relationships.html)."
|
|
1603
1603
|
end
|
|
1604
1604
|
|
|
1605
1605
|
newmetaparam(:notify, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :ALL_EVENTS, :callback => :refresh}) do
|
|
1606
1606
|
desc "One or more resources that depend on this resource, expressed as
|
|
1607
|
-
[resource references](
|
|
1607
|
+
[resource references](https://docs.puppetlabs.com/puppet/latest/reference/lang_data_resource_reference.html).
|
|
1608
1608
|
Multiple resources can be specified as an array of references. When this
|
|
1609
1609
|
attribute is present:
|
|
1610
1610
|
|
|
@@ -1617,7 +1617,7 @@ class Type
|
|
|
1617
1617
|
This is one of the four relationship metaparameters, along with
|
|
1618
1618
|
`before`, `require`, and `subscribe`. For more context, including the
|
|
1619
1619
|
alternate chaining arrow (`->` and `~>`) syntax, see
|
|
1620
|
-
[the language page on relationships](
|
|
1620
|
+
[the language page on relationships](https://docs.puppetlabs.com/puppet/latest/reference/lang_relationships.html)."
|
|
1621
1621
|
end
|
|
1622
1622
|
|
|
1623
1623
|
newmetaparam(:stage) do
|
|
@@ -1630,7 +1630,7 @@ class Type
|
|
|
1630
1630
|
By default, all classes are declared in the `main` stage. To assign a class
|
|
1631
1631
|
to a different stage, you must:
|
|
1632
1632
|
|
|
1633
|
-
* Declare the new stage as a [`stage` resource](
|
|
1633
|
+
* Declare the new stage as a [`stage` resource](https://docs.puppetlabs.com/references/latest/type.html#stage).
|
|
1634
1634
|
* Declare an order relationship between the new stage and the `main` stage.
|
|
1635
1635
|
* Use the resource-like syntax to declare the class, and set the `stage`
|
|
1636
1636
|
metaparameter to the name of the desired stage.
|
data/lib/puppet/util/autoload.rb
CHANGED
|
@@ -2,6 +2,15 @@ require 'pathname'
|
|
|
2
2
|
require 'puppet/util/rubygems'
|
|
3
3
|
require 'puppet/util/warnings'
|
|
4
4
|
require 'puppet/util/methodhelper'
|
|
5
|
+
require 'puppet/pops/adaptable'
|
|
6
|
+
|
|
7
|
+
# An adapter that ties the module_directories cache to the environment where the modules are parsed. This
|
|
8
|
+
# adapter ensures that the life-cycle of this cache doesn't exceed the life-cycle of the environment.
|
|
9
|
+
#
|
|
10
|
+
# @api private
|
|
11
|
+
class Puppet::Util::ModuleDirectoriesAdapter < Puppet::Pops::Adaptable::Adapter
|
|
12
|
+
attr_accessor :directories
|
|
13
|
+
end
|
|
5
14
|
|
|
6
15
|
# Autoload paths, either based on names or all at once.
|
|
7
16
|
class Puppet::Util::Autoload
|
|
@@ -99,12 +108,6 @@ class Puppet::Util::Autoload
|
|
|
99
108
|
end
|
|
100
109
|
|
|
101
110
|
def module_directories(env)
|
|
102
|
-
# We're using a per-thread cache of module directories so that we don't
|
|
103
|
-
# scan the filesystem each time we try to load something. This is reset
|
|
104
|
-
# at the beginning of compilation and at the end of an agent run.
|
|
105
|
-
$env_module_directories ||= {}
|
|
106
|
-
|
|
107
|
-
|
|
108
111
|
# This is a little bit of a hack. Basically, the autoloader is being
|
|
109
112
|
# called indirectly during application bootstrapping when we do things
|
|
110
113
|
# such as check "features". However, during bootstrapping, we haven't
|
|
@@ -129,11 +132,13 @@ class Puppet::Util::Autoload
|
|
|
129
132
|
|
|
130
133
|
if env
|
|
131
134
|
# if the app defaults have been initialized then it should be safe to access the module path setting.
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
Puppet::Util::ModuleDirectoriesAdapter.adapt(env) do |a|
|
|
136
|
+
a.directories ||= env.modulepath.collect do |dir|
|
|
137
|
+
Dir.entries(dir).reject { |f| f =~ /^\./ }.collect { |f| File.join(dir, f, "lib") }
|
|
138
|
+
end.flatten.find_all do |d|
|
|
139
|
+
FileTest.directory?(d)
|
|
140
|
+
end
|
|
141
|
+
end.directories
|
|
137
142
|
else
|
|
138
143
|
[]
|
|
139
144
|
end
|