puppet 6.17.0-universal-darwin → 6.21.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -16
- data/Gemfile +2 -0
- data/Gemfile.lock +38 -34
- data/README.md +1 -2
- data/Rakefile +4 -12
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +10 -6
- data/lib/puppet/application/agent.rb +9 -3
- data/lib/puppet/application/apply.rb +20 -21
- data/lib/puppet/application/device.rb +1 -0
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +2 -2
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/script.rb +1 -0
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +50 -8
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +88 -38
- data/lib/puppet/environments.rb +84 -59
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +60 -0
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/posix.rb +10 -0
- data/lib/puppet/ffi/posix/constants.rb +14 -0
- data/lib/puppet/ffi/posix/functions.rb +24 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +1 -0
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/resolver.rb +5 -8
- data/lib/puppet/http/resolver/server_list.rb +18 -36
- data/lib/puppet/http/resolver/settings.rb +4 -4
- data/lib/puppet/http/resolver/srv.rb +5 -5
- data/lib/puppet/http/service.rb +3 -1
- data/lib/puppet/http/service/compiler.rb +1 -1
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/puppetserver.rb +39 -0
- data/lib/puppet/http/session.rb +5 -4
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_metadata/http.rb +1 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/request.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications/installer.rb +48 -2
- data/lib/puppet/module_tool/errors/shared.rb +17 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/pal_impl.rb +90 -13
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +3 -2
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -3
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/validation/checker4_0.rb +19 -15
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +13 -8
- data/lib/puppet/provider/package/apt.rb +67 -1
- data/lib/puppet/provider/package/aptitude.rb +6 -0
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +1 -0
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/debian.rb +2 -0
- data/lib/puppet/provider/user/aix.rb +3 -3
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +55 -8
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +6 -5
- data/lib/puppet/resource/type.rb +2 -1
- data/lib/puppet/rest/route.rb +2 -2
- data/lib/puppet/settings.rb +63 -21
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +10 -3
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +12 -8
- data/lib/puppet/trusted_external.rb +2 -2
- data/lib/puppet/type.rb +4 -3
- data/lib/puppet/type/file.rb +2 -2
- data/lib/puppet/type/file/source.rb +28 -8
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/service.rb +4 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +26 -12
- data/lib/puppet/util/autoload.rb +10 -15
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/connection.rb +8 -8
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fact_dif.rb +62 -0
- data/lib/puppet/util/posix.rb +54 -5
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +5 -1
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/api_types.rb +15 -1
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +1 -1
- data/lib/puppet/util/windows/user.rb +219 -0
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +342 -312
- data/man/man5/puppet.conf.5 +53 -18
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +32 -1
- data/man/man8/puppet-filebucket.8 +3 -3
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +2 -2
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +208 -55
- data/spec/integration/application/apply_spec.rb +168 -149
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +70 -21
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +53 -3
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +19 -1
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +5 -3
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +0 -10
- data/spec/integration/util/windows/user_spec.rb +7 -0
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +8 -0
- data/spec/lib/puppet_spec/settings.rb +6 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +1 -4
- data/spec/unit/agent_spec.rb +8 -6
- data/spec/unit/application/agent_spec.rb +3 -5
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +41 -10
- data/spec/unit/application/filebucket_spec.rb +0 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/application_spec.rb +60 -13
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer_spec.rb +86 -37
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +10 -3
- data/spec/unit/defaults_spec.rb +20 -1
- data/spec/unit/environments_spec.rb +176 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/node_spec.rb +2 -13
- data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/forge/module_release_spec.rb +2 -7
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/http/client_spec.rb +0 -1
- data/spec/unit/http/resolver_spec.rb +24 -5
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -3
- data/spec/unit/http/service/file_server_spec.rb +2 -3
- data/spec/unit/http/service/puppetserver_spec.rb +82 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -2
- data/spec/unit/http/session_spec.rb +8 -21
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/face_spec.rb +0 -1
- data/spec/unit/indirector/facts/facter_spec.rb +0 -1
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
- data/spec/unit/indirector/indirection_spec.rb +8 -12
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/key/file_spec.rb +0 -1
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +4 -4
- data/spec/unit/indirector/rest_spec.rb +1 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +0 -3
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -9
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/handler_spec.rb +0 -5
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +70 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/property_spec.rb +1 -0
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/group/groupadd_spec.rb +5 -2
- data/spec/unit/provider/nameservice_spec.rb +66 -65
- data/spec/unit/provider/package/apt_spec.rb +85 -3
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/base_spec.rb +6 -5
- data/spec/unit/provider/package/dpkg_spec.rb +22 -7
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pacman_spec.rb +18 -12
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/pip_spec.rb +6 -11
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +1 -1
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +28 -0
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +56 -3
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +8 -10
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/capability_finder_spec.rb +6 -1
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +11 -10
- data/spec/unit/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +576 -239
- data/spec/unit/ssl/base_spec.rb +0 -1
- data/spec/unit/ssl/host_spec.rb +0 -5
- data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
- data/spec/unit/transaction/event_manager_spec.rb +14 -11
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +2 -0
- data/spec/unit/transaction_spec.rb +13 -4
- data/spec/unit/type/file/content_spec.rb +0 -1
- data/spec/unit/type/file/selinux_spec.rb +0 -2
- data/spec/unit/type/file/source_spec.rb +1 -1
- data/spec/unit/type/file_spec.rb +0 -6
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/group_spec.rb +13 -6
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +36 -3
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +5 -1
- data/spec/unit/util/backups_spec.rb +1 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +15 -11
- data/spec/unit/util/inifile_spec.rb +6 -14
- data/spec/unit/util/log_spec.rb +8 -7
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/posix_spec.rb +363 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +6 -6
- data/spec/unit/util/selinux_spec.rb +76 -52
- data/spec/unit/util/storage_spec.rb +3 -1
- data/spec/unit/util/suidmanager_spec.rb +44 -41
- data/spec/unit/util_spec.rb +13 -6
- metadata +49 -50
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/man_spec.rb +0 -31
data/lib/puppet/environments.rb
CHANGED
@@ -159,8 +159,8 @@ module Puppet::Environments
|
|
159
159
|
# Reads environments from a directory on disk. Each environment is
|
160
160
|
# represented as a sub-directory. The environment's manifest setting is the
|
161
161
|
# `manifest` directory of the environment directory. The environment's
|
162
|
-
# modulepath setting is the global modulepath (from the `[
|
163
|
-
# for the
|
162
|
+
# modulepath setting is the global modulepath (from the `[server]` section
|
163
|
+
# for the server) prepended with the `modules` directory of the environment
|
164
164
|
# directory.
|
165
165
|
#
|
166
166
|
# @api private
|
@@ -277,7 +277,7 @@ module Puppet::Environments
|
|
277
277
|
def get(name)
|
278
278
|
@loaders.each do |loader|
|
279
279
|
env = loader.get(name)
|
280
|
-
if env
|
280
|
+
if env
|
281
281
|
return env
|
282
282
|
end
|
283
283
|
end
|
@@ -305,13 +305,23 @@ module Puppet::Environments
|
|
305
305
|
include Puppet::Concurrent::Synchronized
|
306
306
|
|
307
307
|
class DefaultCacheExpirationService
|
308
|
+
# Called when the environment is created.
|
309
|
+
#
|
310
|
+
# @param [Puppet::Node::Environment] env
|
308
311
|
def created(env)
|
309
312
|
end
|
310
313
|
|
314
|
+
# Is the environment with this name expired?
|
315
|
+
#
|
316
|
+
# @param [Symbol] env_name The symbolic environment name
|
317
|
+
# @return [Boolean]
|
311
318
|
def expired?(env_name)
|
312
319
|
false
|
313
320
|
end
|
314
321
|
|
322
|
+
# The environment with this name was evicted.
|
323
|
+
#
|
324
|
+
# @param [Symbol] env_name The symbolic environment name
|
315
325
|
def evicted(env_name)
|
316
326
|
end
|
317
327
|
end
|
@@ -336,12 +346,6 @@ module Puppet::Environments
|
|
336
346
|
@loader = loader
|
337
347
|
@cache_expiration_service = Puppet::Environments::Cached.cache_expiration_service
|
338
348
|
@cache = {}
|
339
|
-
|
340
|
-
# Holds expiration times in sorted order - next to expire is first
|
341
|
-
@expirations = SortedSet.new
|
342
|
-
|
343
|
-
# Infinity since it there are no entries, this is a cache of the first to expire time
|
344
|
-
@next_expiration = END_OF_TIME
|
345
349
|
end
|
346
350
|
|
347
351
|
# @!macro loader_list
|
@@ -362,12 +366,13 @@ module Puppet::Environments
|
|
362
366
|
clear_all_expired
|
363
367
|
result = @cache[name]
|
364
368
|
if result
|
369
|
+
Puppet.debug {"Found in cache '#{name}' #{result.label}"}
|
365
370
|
# found in cache
|
371
|
+
result.touch
|
366
372
|
return result.value
|
367
373
|
elsif (result = @loader.get(name))
|
368
374
|
# environment loaded, cache it
|
369
375
|
cache_entry = entry(result)
|
370
|
-
@cache_expiration_service.created(result)
|
371
376
|
add_entry(name, cache_entry)
|
372
377
|
result
|
373
378
|
end
|
@@ -377,28 +382,36 @@ module Puppet::Environments
|
|
377
382
|
def add_entry(name, cache_entry)
|
378
383
|
Puppet.debug {"Caching environment '#{name}' #{cache_entry.label}"}
|
379
384
|
@cache[name] = cache_entry
|
380
|
-
|
381
|
-
@expirations.add(expires)
|
382
|
-
if @next_expiration > expires
|
383
|
-
@next_expiration = expires
|
384
|
-
end
|
385
|
+
@cache_expiration_service.created(cache_entry.value)
|
385
386
|
end
|
386
387
|
private :add_entry
|
387
388
|
|
389
|
+
def clear_entry(name, entry)
|
390
|
+
@cache.delete(name)
|
391
|
+
Puppet.debug {"Evicting cache entry for environment '#{name}'"}
|
392
|
+
@cache_expiration_service.evicted(name.to_sym)
|
393
|
+
Puppet::GettextConfig.delete_text_domain(name)
|
394
|
+
Puppet.settings.clear_environment_settings(name)
|
395
|
+
end
|
396
|
+
private :clear_entry
|
397
|
+
|
388
398
|
# Clears the cache of the environment with the given name.
|
389
399
|
# (The intention is that this could be used from a MANUAL cache eviction command (TBD)
|
390
400
|
def clear(name)
|
391
|
-
@cache
|
392
|
-
|
401
|
+
entry = @cache[name]
|
402
|
+
clear_entry(name, entry) if entry
|
393
403
|
end
|
394
404
|
|
395
405
|
# Clears all cached environments.
|
396
406
|
# (The intention is that this could be used from a MANUAL cache eviction command (TBD)
|
397
|
-
def clear_all
|
407
|
+
def clear_all
|
398
408
|
super
|
409
|
+
|
410
|
+
@cache.each_pair do |name, entry|
|
411
|
+
clear_entry(name, entry)
|
412
|
+
end
|
413
|
+
|
399
414
|
@cache = {}
|
400
|
-
@expirations.clear
|
401
|
-
@next_expiration = END_OF_TIME
|
402
415
|
Puppet::GettextConfig.delete_environment_text_domains
|
403
416
|
end
|
404
417
|
|
@@ -407,17 +420,23 @@ module Puppet::Environments
|
|
407
420
|
#
|
408
421
|
def clear_all_expired()
|
409
422
|
t = Time.now
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
423
|
+
|
424
|
+
@cache.each_pair do |name, entry|
|
425
|
+
clear_if_expired(name, entry, t)
|
426
|
+
end
|
427
|
+
end
|
428
|
+
|
429
|
+
# Clear an environment if it is expired, either by exceeding its time to live, or
|
430
|
+
# through an explicit eviction determined by the cache expiration service.
|
431
|
+
#
|
432
|
+
def clear_if_expired(name, entry, t = Time.now)
|
433
|
+
return unless entry
|
434
|
+
|
435
|
+
if entry.expired?(t) || @cache_expiration_service.expired?(name.to_sym)
|
436
|
+
clear_entry(name, entry)
|
418
437
|
end
|
419
|
-
@next_expiration = @expirations.first || END_OF_TIME
|
420
438
|
end
|
439
|
+
private :clear_if_expired
|
421
440
|
|
422
441
|
# This implementation evicts the cache, and always gets the current
|
423
442
|
# configuration of the environment
|
@@ -428,32 +447,30 @@ module Puppet::Environments
|
|
428
447
|
#
|
429
448
|
# @!macro loader_get_conf
|
430
449
|
def get_conf(name)
|
431
|
-
|
450
|
+
clear_if_expired(name, @cache[name])
|
432
451
|
@loader.get_conf(name)
|
433
452
|
end
|
434
453
|
|
435
454
|
# Creates a suitable cache entry given the time to live for one environment
|
436
455
|
#
|
437
456
|
def entry(env)
|
438
|
-
ttl = (conf = get_conf(env.name))
|
457
|
+
ttl = if (conf = get_conf(env.name))
|
458
|
+
conf.environment_timeout
|
459
|
+
else
|
460
|
+
Puppet[:environment_timeout]
|
461
|
+
end
|
462
|
+
|
439
463
|
case ttl
|
440
464
|
when 0
|
441
465
|
NotCachedEntry.new(env) # Entry that is always expired (avoids syscall to get time)
|
442
466
|
when Float::INFINITY
|
443
467
|
Entry.new(env) # Entry that never expires (avoids syscall to get time)
|
444
468
|
else
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
# Also clears caches in Settings that may prevent the entry from being updated
|
451
|
-
def evict_if_expired(name)
|
452
|
-
if (result = @cache[name]) && (result.expired? || @cache_expiration_service.expired?(name))
|
453
|
-
Puppet.debug {"Evicting cache entry for environment '#{name}'"}
|
454
|
-
@cache_expiration_service.evicted(name)
|
455
|
-
clear(name)
|
456
|
-
Puppet.settings.clear_environment_settings(name)
|
469
|
+
if Puppet[:environment_timeout_mode] == :from_last_used
|
470
|
+
MRUEntry.new(env, ttl) # Entry that expires in ttl from when it was last touched
|
471
|
+
else
|
472
|
+
TTLEntry.new(env, ttl) # Entry that expires in ttl from when it was created
|
473
|
+
end
|
457
474
|
end
|
458
475
|
end
|
459
476
|
|
@@ -465,52 +482,60 @@ module Puppet::Environments
|
|
465
482
|
@value = value
|
466
483
|
end
|
467
484
|
|
468
|
-
def
|
485
|
+
def touch
|
486
|
+
end
|
487
|
+
|
488
|
+
def expired?(now)
|
469
489
|
false
|
470
490
|
end
|
471
491
|
|
472
492
|
def label
|
473
493
|
""
|
474
494
|
end
|
475
|
-
|
476
|
-
def expires
|
477
|
-
END_OF_TIME
|
478
|
-
end
|
479
495
|
end
|
480
496
|
|
481
497
|
# Always evicting entry
|
482
498
|
class NotCachedEntry < Entry
|
483
|
-
def expired?
|
499
|
+
def expired?(now)
|
484
500
|
true
|
485
501
|
end
|
486
502
|
|
487
503
|
def label
|
488
504
|
"(ttl = 0 sec)"
|
489
505
|
end
|
490
|
-
|
491
|
-
def expires
|
492
|
-
START_OF_TIME
|
493
|
-
end
|
494
506
|
end
|
495
507
|
|
496
|
-
#
|
508
|
+
# Policy that expires in ttl_seconds from when it was created
|
497
509
|
class TTLEntry < Entry
|
498
510
|
def initialize(value, ttl_seconds)
|
499
|
-
super
|
511
|
+
super(value)
|
500
512
|
@ttl = Time.now + ttl_seconds
|
501
513
|
@ttl_seconds = ttl_seconds
|
502
514
|
end
|
503
515
|
|
504
|
-
def expired?
|
505
|
-
|
516
|
+
def expired?(now)
|
517
|
+
now > @ttl
|
506
518
|
end
|
507
519
|
|
508
520
|
def label
|
509
521
|
"(ttl = #{@ttl_seconds} sec)"
|
510
522
|
end
|
523
|
+
end
|
511
524
|
|
512
|
-
|
513
|
-
|
525
|
+
# Policy that expires if it hasn't been touched within ttl_seconds
|
526
|
+
class MRUEntry < TTLEntry
|
527
|
+
def initialize(value, ttl_seconds)
|
528
|
+
super(value, ttl_seconds)
|
529
|
+
|
530
|
+
touch
|
531
|
+
end
|
532
|
+
|
533
|
+
def touch
|
534
|
+
@ttl = Time.now + @ttl_seconds
|
535
|
+
end
|
536
|
+
|
537
|
+
def label
|
538
|
+
"(mru = #{@ttl_seconds} sec)"
|
514
539
|
end
|
515
540
|
end
|
516
541
|
end
|
data/lib/puppet/face/catalog.rb
CHANGED
@@ -97,7 +97,7 @@ Puppet::Indirector::Face.define(:catalog, '0.0.1') do
|
|
97
97
|
A serialized catalog.
|
98
98
|
EOT
|
99
99
|
when_invoked do |*args|
|
100
|
-
Puppet.settings.preferred_run_mode = :
|
100
|
+
Puppet.settings.preferred_run_mode = :server
|
101
101
|
Puppet::Face[:catalog, :current].find(*args)
|
102
102
|
end
|
103
103
|
end
|
data/lib/puppet/face/config.rb
CHANGED
@@ -20,10 +20,10 @@ Puppet::Face.define(:config, '0.0.1') do
|
|
20
20
|
description <<-EOT
|
21
21
|
The section of the puppet.conf configuration file to interact with.
|
22
22
|
|
23
|
-
The three most commonly used sections are 'main', '
|
23
|
+
The three most commonly used sections are 'main', 'server', and 'agent'.
|
24
24
|
'Main' is the default, and is used by all Puppet applications. Other
|
25
25
|
sections can override 'main' values for specific applications --- the
|
26
|
-
'
|
26
|
+
'server' section affects Puppet Server, and the 'agent'
|
27
27
|
section affects puppet agent.
|
28
28
|
|
29
29
|
Less commonly used is the 'user' section, which affects puppet apply. Any
|
@@ -52,9 +52,9 @@ Puppet::Face.define(:config, '0.0.1') do
|
|
52
52
|
|
53
53
|
$ puppet config print rundir
|
54
54
|
|
55
|
-
Get a list of important directories from the
|
55
|
+
Get a list of important directories from the server's config:
|
56
56
|
|
57
|
-
$ puppet config print all --section
|
57
|
+
$ puppet config print all --section server | grep -E "(path|dir)"
|
58
58
|
EOT
|
59
59
|
|
60
60
|
when_invoked do |*args|
|
@@ -144,7 +144,7 @@ Puppet::Face.define(:config, '0.0.1') do
|
|
144
144
|
|
145
145
|
if name == 'environment' && options[:section] == 'main'
|
146
146
|
Puppet.warning _(<<-EOM).chomp
|
147
|
-
The environment should be set in either the `[user]`, `[agent]`, or `[
|
147
|
+
The environment should be set in either the `[user]`, `[agent]`, or `[server]`
|
148
148
|
section. Variables set in the `[agent]` section are used when running
|
149
149
|
`puppet agent`. Variables set in the `[user]` section are used when running
|
150
150
|
various other puppet subcommands, like `puppet apply` and `puppet module`; these
|
@@ -159,11 +159,38 @@ https://puppet.com/docs/puppet/latest/configuration.html#environment
|
|
159
159
|
report_section_and_environment(options[:section], Puppet.settings[:environment])
|
160
160
|
end
|
161
161
|
|
162
|
+
# only validate settings we recognize
|
163
|
+
setting = Puppet.settings.setting(name.to_sym)
|
164
|
+
if setting
|
165
|
+
# set the value, which will call `on_*_and_write` hooks, if any
|
166
|
+
Puppet.settings[setting.name] = value
|
167
|
+
|
168
|
+
# read the value to trigger interpolation and munge validation logic
|
169
|
+
Puppet.settings[setting.name]
|
170
|
+
end
|
171
|
+
|
162
172
|
path = Puppet::FileSystem.pathname(Puppet.settings.which_configuration_file)
|
163
173
|
Puppet::FileSystem.touch(path)
|
164
174
|
Puppet::FileSystem.open(path, nil, 'r+:UTF-8') do |file|
|
165
175
|
Puppet::Settings::IniFile.update(file) do |config|
|
166
|
-
|
176
|
+
if options[:section] == "master"
|
177
|
+
# delete requested master section if it exists,
|
178
|
+
# as server section should be used
|
179
|
+
setting_string = config.delete("master", name)
|
180
|
+
if setting_string
|
181
|
+
|
182
|
+
if Puppet::Util::Log.sendlevel?(:info)
|
183
|
+
report_section_and_environment(options[:section], Puppet.settings[:environment])
|
184
|
+
end
|
185
|
+
|
186
|
+
puts(_("Deleted setting from '%{section_name}': '%{setting_string}', and adding it to 'server' section") %
|
187
|
+
{ section_name: options[:section], name: name, setting_string: setting_string.strip })
|
188
|
+
end
|
189
|
+
# add the setting to the to server section instead of master section
|
190
|
+
config.set("server", name, value)
|
191
|
+
else
|
192
|
+
config.set(options[:section], name, value)
|
193
|
+
end
|
167
194
|
end
|
168
195
|
end
|
169
196
|
nil
|
@@ -185,9 +212,9 @@ https://puppet.com/docs/puppet/latest/configuration.html#environment
|
|
185
212
|
|
186
213
|
$ puppet config delete setting_name
|
187
214
|
|
188
|
-
Delete the setting 'setting_name' from the '
|
215
|
+
Delete the setting 'setting_name' from the 'server' configuration domain:
|
189
216
|
|
190
|
-
$ puppet config delete setting_name --section
|
217
|
+
$ puppet config delete setting_name --section server
|
191
218
|
EOT
|
192
219
|
|
193
220
|
when_invoked do |name, options|
|
@@ -202,18 +229,31 @@ https://puppet.com/docs/puppet/latest/configuration.html#environment
|
|
202
229
|
if Puppet::FileSystem.exist?(path)
|
203
230
|
Puppet::FileSystem.open(path, nil, 'r+:UTF-8') do |file|
|
204
231
|
Puppet::Settings::IniFile.update(file) do |config|
|
205
|
-
setting_string = config.delete(options[:section], name)
|
206
|
-
if setting_string
|
207
232
|
|
208
|
-
|
209
|
-
|
210
|
-
|
233
|
+
# delete from both master section and server section
|
234
|
+
if options[:section] == "master" || options[:section] == "server"
|
235
|
+
master_setting_string = config.delete("master", name)
|
236
|
+
puts(_("Deleted setting from '%{section_name}': '%{setting_string}'") %
|
237
|
+
{ section_name: 'master', name: name, setting_string: master_setting_string.strip[/[^=]+/] }) if master_setting_string
|
211
238
|
|
239
|
+
server_setting_string = config.delete("server", name)
|
212
240
|
puts(_("Deleted setting from '%{section_name}': '%{setting_string}'") %
|
213
|
-
|
241
|
+
{ section_name: 'server', name: name, setting_string: server_setting_string.strip[/[^=]+/] }) if server_setting_string
|
242
|
+
|
214
243
|
else
|
215
|
-
|
216
|
-
|
244
|
+
setting_string = config.delete(options[:section], name)
|
245
|
+
if setting_string
|
246
|
+
|
247
|
+
if Puppet::Util::Log.sendlevel?(:info)
|
248
|
+
report_section_and_environment(options[:section], Puppet.settings[:environment])
|
249
|
+
end
|
250
|
+
|
251
|
+
puts(_("Deleted setting from '%{section_name}': '%{setting_string}'") %
|
252
|
+
{ section_name: options[:section], name: name, setting_string: setting_string.strip })
|
253
|
+
else
|
254
|
+
Puppet.warning(_("No setting found in configuration file for section '%{section_name}' setting name '%{name}'") %
|
255
|
+
{ section_name: options[:section], name: name })
|
256
|
+
end
|
217
257
|
end
|
218
258
|
end
|
219
259
|
end
|
data/lib/puppet/face/epp.rb
CHANGED
@@ -440,7 +440,12 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
440
440
|
|
441
441
|
def render_inline(epp_source, compiler, options)
|
442
442
|
template_args = get_values(compiler, options)
|
443
|
-
Puppet::Pops::Evaluator::EppEvaluator.inline_epp(compiler.topscope, epp_source, template_args)
|
443
|
+
result = Puppet::Pops::Evaluator::EppEvaluator.inline_epp(compiler.topscope, epp_source, template_args)
|
444
|
+
if result.instance_of?(Puppet::Pops::Types::PSensitiveType::Sensitive)
|
445
|
+
result.unwrap
|
446
|
+
else
|
447
|
+
result
|
448
|
+
end
|
444
449
|
end
|
445
450
|
|
446
451
|
def render_file(epp_template_name, compiler, options, show_filename, file_nbr)
|
@@ -457,7 +462,12 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
457
462
|
if template_file.nil? && Puppet::FileSystem.exist?(epp_template_name)
|
458
463
|
epp_template_name = File.expand_path(epp_template_name)
|
459
464
|
end
|
460
|
-
|
465
|
+
result = Puppet::Pops::Evaluator::EppEvaluator.epp(compiler.topscope, epp_template_name, compiler.environment, template_args)
|
466
|
+
if result.instance_of?(Puppet::Pops::Types::PSensitiveType::Sensitive)
|
467
|
+
output << result.unwrap
|
468
|
+
else
|
469
|
+
output << result
|
470
|
+
end
|
461
471
|
rescue Puppet::ParseError => detail
|
462
472
|
Puppet.err("--- #{epp_template_name}") if show_filename
|
463
473
|
raise detail
|
data/lib/puppet/face/facts.rb
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
require 'puppet/indirector/face'
|
2
2
|
require 'puppet/node/facts'
|
3
|
+
require 'puppet/util/fact_dif'
|
4
|
+
|
5
|
+
EXCLUDE_LIST = %w[facterversion
|
6
|
+
swapfree_mb swapsize_mb
|
7
|
+
load_averages\.*
|
8
|
+
memory\.swap\.available_bytes memory\.swap\.capacity memory\.swap\.total_bytes
|
9
|
+
memory\.swap\.used_bytes memory\.swap\.available
|
10
|
+
memory\.system\.available memory\.system\.available_bytes memory\.system\.capacity memory\.swap\.used
|
11
|
+
memory\.system\.total_bytes memory\.system\.used memory\.system\.used_bytes
|
12
|
+
memoryfree memoryfree_mb memorysize_mb
|
13
|
+
mountpoints\..* mtu_.* mountpoints\..*\.capacity
|
14
|
+
networking\.interfaces\..*\.mtu networking\.mtu partitions\..*\.filesystem
|
15
|
+
partitions\..*\.size_bytes partitions\..*\.mount partitions\..*\.uuid
|
16
|
+
disks\..*\.size_bytes
|
17
|
+
hypervisors\.lpar\.partition_number hypervisors\.xen\.privileged hypervisors\.zone\..* hypervisors\.ldom\..*
|
18
|
+
processors\.speed
|
19
|
+
ldom_.*
|
20
|
+
boardassettag dmi\.board\.asset_tag
|
21
|
+
blockdevice_.*_vendor blockdevice_.*_size
|
22
|
+
system_uptime\.days system_uptime\.hours system_uptime\.seconds system_uptime\.uptime
|
23
|
+
uptime_days uptime_hours uptime_seconds
|
24
|
+
system_profiler\.uptime
|
25
|
+
sp_uptime
|
26
|
+
uptime]
|
3
27
|
|
4
28
|
Puppet::Indirector::Face.define(:facts, '0.0.1') do
|
5
29
|
copyright "Puppet Inc.", 2011
|
@@ -87,4 +111,40 @@ Puppet::Indirector::Face.define(:facts, '0.0.1') do
|
|
87
111
|
nil
|
88
112
|
end
|
89
113
|
end
|
114
|
+
|
115
|
+
action(:diff) do
|
116
|
+
summary _("Compare Facter 3 output with Facter 4 output")
|
117
|
+
description <<-'EOT'
|
118
|
+
Compares output from facter 3 with Facter 4 and prints the differences
|
119
|
+
EOT
|
120
|
+
returns "Differences between Facter 3 and Facter 4 output as an array."
|
121
|
+
notes <<-'EOT'
|
122
|
+
EOT
|
123
|
+
examples <<-'EOT'
|
124
|
+
get differences between facter versions:
|
125
|
+
$ puppet facts diff
|
126
|
+
EOT
|
127
|
+
|
128
|
+
render_as :json
|
129
|
+
|
130
|
+
when_invoked do |*args|
|
131
|
+
Puppet.settings.preferred_run_mode = :agent
|
132
|
+
Puppet::Node::Facts.indirection.terminus_class = :facter
|
133
|
+
|
134
|
+
if Puppet::Util::Package.versioncmp(Facter.value('facterversion'), '4.0.0') < 0
|
135
|
+
facter3_result = Puppet::Node::Facts.indirection.find(Puppet.settings[:certname])
|
136
|
+
begin
|
137
|
+
require 'facter-ng'
|
138
|
+
facter4_result = Puppet::Node::Facts.indirection.find(Puppet.settings[:certname])
|
139
|
+
rescue LoadError
|
140
|
+
raise ArgumentError, 'facter-ng could not be loaded'
|
141
|
+
end
|
142
|
+
fact_diff = FactDif.new(facter3_result.to_json, facter4_result.to_json, EXCLUDE_LIST)
|
143
|
+
fact_diff.difs
|
144
|
+
else
|
145
|
+
Puppet.warning _("Already using Facter 4. To use `puppet facts diff` remove facterng from the .conf file or run `puppet config set facterng false`.")
|
146
|
+
exit 0
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
90
150
|
end
|