puppet 6.11.1-x64-mingw32 → 6.16.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +3 -8
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +1 -0
- data/Gemfile.lock +39 -36
- data/README.md +17 -24
- data/ext/build_defaults.yaml +1 -0
- data/ext/project_data.yaml +1 -1
- data/ext/windows/service/daemon.rb +25 -20
- data/lib/puppet.rb +52 -13
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +12 -14
- data/lib/puppet/application/describe.rb +7 -5
- data/lib/puppet/application/device.rb +2 -2
- data/lib/puppet/application/filebucket.rb +19 -15
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/concurrent.rb +2 -0
- data/lib/puppet/concurrent/lock.rb +16 -0
- data/lib/puppet/concurrent/synchronized.rb +15 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +14 -0
- data/lib/puppet/configurer.rb +85 -83
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +158 -40
- data/lib/puppet/environments.rb +30 -20
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/face/facts.rb +8 -5
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +13 -9
- data/lib/puppet/file_system/memory_file.rb +6 -0
- data/lib/puppet/file_system/memory_impl.rb +13 -0
- data/lib/puppet/file_system/uniquefile.rb +4 -0
- data/lib/puppet/file_system/windows.rb +7 -10
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/errors.rb +2 -2
- data/lib/puppet/forge/repository.rb +31 -86
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +2 -2
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/find_file.rb +9 -9
- data/lib/puppet/functions/find_template.rb +63 -0
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/http.rb +7 -0
- data/lib/puppet/http/client.rb +341 -54
- data/lib/puppet/http/errors.rb +2 -0
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +34 -0
- data/lib/puppet/http/resolver.rb +57 -1
- data/lib/puppet/http/resolver/server_list.rb +98 -0
- data/lib/puppet/http/resolver/settings.rb +23 -2
- data/lib/puppet/http/resolver/srv.rb +36 -4
- data/lib/puppet/http/response.rb +68 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +179 -3
- data/lib/puppet/http/service/ca.rb +84 -21
- data/lib/puppet/http/service/compiler.rb +319 -0
- data/lib/puppet/http/service/file_server.rb +206 -0
- data/lib/puppet/http/service/report.rb +66 -0
- data/lib/puppet/http/session.rb +106 -31
- data/lib/puppet/indirector/catalog/compiler.rb +10 -0
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +4 -4
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/rest.rb +19 -0
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/rest.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +18 -0
- data/lib/puppet/loaders.rb +6 -0
- data/lib/puppet/metatype/manager.rb +80 -80
- data/lib/puppet/network/http/base_pool.rb +19 -1
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +6 -0
- data/lib/puppet/network/http/connection_adapter.rb +182 -0
- data/lib/puppet/network/http/nocache_pool.rb +2 -0
- data/lib/puppet/network/http/pool.rb +13 -6
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +24 -8
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +9 -29
- data/lib/puppet/parser/ast/pops_bridge.rb +6 -11
- data/lib/puppet/parser/compiler.rb +42 -32
- data/lib/puppet/parser/functions.rb +18 -13
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +12 -3
- data/lib/puppet/pops/loaders.rb +7 -5
- data/lib/puppet/pops/lookup/invocation.rb +10 -3
- data/lib/puppet/pops/model/pn_transformer.rb +5 -9
- data/lib/puppet/pops/parser/evaluating_parser.rb +8 -11
- data/lib/puppet/pops/serialization/json_path.rb +3 -3
- data/lib/puppet/pops/time/timespan.rb +3 -5
- data/lib/puppet/pops/types/p_object_type_extension.rb +10 -0
- data/lib/puppet/pops/types/string_converter.rb +6 -9
- data/lib/puppet/pops/types/type_calculator.rb +30 -10
- data/lib/puppet/pops/types/type_formatter.rb +9 -11
- data/lib/puppet/pops/types/type_parser.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +1 -1
- data/lib/puppet/pops/validation/tasks_checker.rb +5 -1
- data/lib/puppet/provider/aix_object.rb +4 -2
- data/lib/puppet/provider/group/aix.rb +1 -0
- data/lib/puppet/provider/group/groupadd.rb +57 -24
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +78 -4
- data/lib/puppet/provider/package/dnfmodule.rb +69 -15
- data/lib/puppet/provider/package/dpkg.rb +14 -7
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +41 -7
- data/lib/puppet/provider/package/openbsd.rb +13 -1
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip3.rb +0 -2
- data/lib/puppet/provider/package/pkg.rb +18 -5
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +5 -5
- data/lib/puppet/provider/package/puppet_gem.rb +6 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +108 -24
- data/lib/puppet/provider/package/zypper.rb +59 -1
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/service/systemd.rb +23 -5
- data/lib/puppet/provider/user/aix.rb +1 -0
- data/lib/puppet/provider/user/directoryservice.rb +30 -5
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +11 -8
- data/lib/puppet/reports/http.rb +13 -9
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +32 -1
- data/lib/puppet/settings.rb +4 -0
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- data/lib/puppet/ssl/ssl_provider.rb +20 -0
- data/lib/puppet/ssl/state_machine.rb +81 -35
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +7 -1
- data/lib/puppet/transaction.rb +33 -11
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +7 -2
- data/lib/puppet/type/file.rb +13 -0
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/file/source.rb +49 -58
- data/lib/puppet/type/group.rb +5 -4
- data/lib/puppet/type/package.rb +102 -10
- data/lib/puppet/type/service.rb +6 -8
- data/lib/puppet/type/user.rb +6 -30
- data/lib/puppet/util.rb +34 -11
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -18
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +2 -11
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +36 -10
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/storage.rb +0 -1
- data/lib/puppet/util/windows/adsi.rb +50 -20
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +9 -5
- data/locales/puppet.pot +640 -521
- data/man/man5/puppet.conf.5 +88 -9
- data/man/man8/puppet-agent.8 +6 -6
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-filebucket.8 +17 -2
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +4 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +2 -2
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/forge/bacula.json +76 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -102
- 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 +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -98
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -102
- data/spec/integration/application/agent_spec.rb +394 -0
- data/spec/integration/application/apply_spec.rb +132 -3
- data/spec/integration/application/filebucket_spec.rb +190 -0
- data/spec/integration/application/plugin_spec.rb +73 -0
- data/spec/integration/configurer_spec.rb +26 -7
- data/spec/integration/http/client_spec.rb +154 -0
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/module_tool/forge_spec.rb +51 -0
- data/spec/integration/network/http_pool_spec.rb +76 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +20 -9
- data/spec/lib/puppet_spec/puppetserver.rb +119 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/spec_helper.rb +6 -2
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +9 -5
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/resource_spec.rb +2 -2
- data/spec/unit/concurrent/lock_spec.rb +29 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +400 -406
- data/spec/unit/context/trusted_information_spec.rb +17 -0
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +38 -4
- data/spec/unit/environments_spec.rb +65 -28
- data/spec/unit/face/facts_spec.rb +24 -20
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/plugin_spec.rb +12 -10
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/file_system_spec.rb +26 -2
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/forge_spec.rb +12 -54
- data/spec/unit/forge/module_release_spec.rb +19 -6
- data/spec/unit/forge/repository_spec.rb +63 -157
- data/spec/unit/forge_spec.rb +46 -116
- data/spec/unit/functions/find_template_spec.rb +69 -0
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +395 -27
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +81 -12
- data/spec/unit/http/response_spec.rb +69 -0
- data/spec/unit/http/service/ca_spec.rb +100 -7
- data/spec/unit/http/service/compiler_spec.rb +627 -0
- data/spec/unit/http/service/file_server_spec.rb +308 -0
- data/spec/unit/http/service/report_spec.rb +118 -0
- data/spec/unit/http/service_spec.rb +117 -4
- data/spec/unit/http/session_spec.rb +237 -19
- data/spec/unit/indirector/catalog/compiler_spec.rb +47 -29
- data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
- data/spec/unit/indirector/facts/rest_spec.rb +79 -24
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +167 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
- data/spec/unit/indirector/node/rest_spec.rb +57 -2
- data/spec/unit/indirector/report/rest_spec.rb +58 -51
- data/spec/unit/indirector/resource/ral_spec.rb +7 -8
- data/spec/unit/indirector/rest_spec.rb +13 -0
- data/spec/unit/indirector/status/rest_spec.rb +43 -2
- data/spec/unit/network/http/connection_spec.rb +549 -176
- data/spec/unit/network/http/nocache_pool_spec.rb +25 -3
- data/spec/unit/network/http/pool_spec.rb +89 -11
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +16 -0
- data/spec/unit/node/facts_spec.rb +2 -1
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +6 -1
- data/spec/unit/pops/validator/validator_spec.rb +7 -2
- data/spec/unit/provider/aix_object_spec.rb +16 -2
- data/spec/unit/provider/group/groupadd_spec.rb +181 -56
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +43 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +76 -15
- data/spec/unit/provider/package/dpkg_spec.rb +28 -6
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkg_spec.rb +15 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +9 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +8 -0
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +292 -0
- data/spec/unit/provider/package/zypper_spec.rb +84 -0
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/service/init_spec.rb +1 -0
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +9 -0
- data/spec/unit/provider/service/systemd_spec.rb +92 -12
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/useradd_spec.rb +21 -8
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +0 -26
- data/spec/unit/puppet_pal_catalog_spec.rb +46 -0
- data/spec/unit/puppet_spec.rb +47 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +71 -0
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/transaction/persistence_spec.rb +1 -10
- data/spec/unit/transaction/report_spec.rb +4 -0
- data/spec/unit/transaction_spec.rb +45 -1
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +86 -35
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +1 -2
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/package/version/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +112 -42
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/storage_spec.rb +1 -8
- data/spec/unit/util/windows/adsi_spec.rb +55 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/x509/cert_provider_spec.rb +24 -4
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +6 -35
- metadata +92 -12
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/lib/puppet_spec/validators.rb +0 -37
@@ -217,13 +217,13 @@ class Puppet::Transaction::Report
|
|
217
217
|
end
|
218
218
|
|
219
219
|
# @api private
|
220
|
-
def initialize(configuration_version=nil, environment=nil, transaction_uuid=nil, job_id=nil)
|
220
|
+
def initialize(configuration_version=nil, environment=nil, transaction_uuid=nil, job_id=nil, start_time=Time.now)
|
221
221
|
@metrics = {}
|
222
222
|
@logs = []
|
223
223
|
@resource_statuses = {}
|
224
224
|
@external_times ||= {}
|
225
225
|
@host = Puppet[:node_name_value]
|
226
|
-
@time =
|
226
|
+
@time = start_time
|
227
227
|
@report_format = 10
|
228
228
|
@puppet_version = Puppet.version
|
229
229
|
@configuration_version = configuration_version
|
@@ -101,7 +101,7 @@ class Puppet::Transaction::ResourceHarness
|
|
101
101
|
# We persist the last known values for the properties of a resource after resource
|
102
102
|
# application.
|
103
103
|
# @param [Puppet::Type] resource resource whose values we are to persist.
|
104
|
-
# @param [
|
104
|
+
# @param [ResourceApplicationContext] context the application context to operate on.
|
105
105
|
def persist_system_values(resource, context)
|
106
106
|
param_to_event = {}
|
107
107
|
context.status.events.each do |ev|
|
data/lib/puppet/type.rb
CHANGED
@@ -10,6 +10,7 @@ require 'puppet/metatype/manager'
|
|
10
10
|
require 'puppet/util/errors'
|
11
11
|
require 'puppet/util/logging'
|
12
12
|
require 'puppet/util/tagging'
|
13
|
+
require 'puppet/concurrent/lock'
|
13
14
|
|
14
15
|
# see the bottom of the file for the rest of the inclusions
|
15
16
|
|
@@ -84,6 +85,11 @@ class Type
|
|
84
85
|
# Comparing type instances.
|
85
86
|
include Comparable
|
86
87
|
|
88
|
+
# These variables are used in Metatype::Manager for managing types
|
89
|
+
@types = {}
|
90
|
+
@manager_lock = Puppet::Concurrent::Lock.new
|
91
|
+
extend Puppet::MetaType::Manager
|
92
|
+
|
87
93
|
# Compares this type against the given _other_ (type) and returns -1, 0, or +1 depending on the order.
|
88
94
|
# @param other [Object] the object to compare against (produces nil, if not kind of Type}
|
89
95
|
# @return [-1, 0, +1, nil] produces -1 if this type is before the given _other_ type, 0 if equals, and 1 if after.
|
@@ -1486,7 +1492,7 @@ class Type
|
|
1486
1492
|
}
|
1487
1493
|
|
1488
1494
|
Tags are useful for things like applying a subset of a host's configuration
|
1489
|
-
with [the `tags` setting](/puppet/latest/configuration.html#tags)
|
1495
|
+
with [the `tags` setting](https://puppet.com/docs/puppet/latest/configuration.html#tags)
|
1490
1496
|
(e.g. `puppet agent --test --tags bootstrap`)."
|
1491
1497
|
|
1492
1498
|
munge do |tags|
|
@@ -2284,7 +2290,6 @@ end
|
|
2284
2290
|
#
|
2285
2291
|
attr_accessor :self_refresh
|
2286
2292
|
include Enumerable, Puppet::Util::ClassGen
|
2287
|
-
include Puppet::MetaType::Manager
|
2288
2293
|
|
2289
2294
|
include Puppet::Util
|
2290
2295
|
include Puppet::Util::Logging
|
data/lib/puppet/type/file.rb
CHANGED
@@ -110,6 +110,19 @@ Puppet::Type.newtype(:file) do
|
|
110
110
|
balancer to direct all filebucket traffic to a single master, or use
|
111
111
|
something like an out-of-band rsync task to synchronize the content on all
|
112
112
|
masters.
|
113
|
+
|
114
|
+
> **Note**: Enabling and using the backup option, and by extension the
|
115
|
+
filebucket resource, requires appropriate planning and management to ensure
|
116
|
+
that sufficient disk space is available for the file backups. Generally, you
|
117
|
+
can implement this using one of the following two options:
|
118
|
+
- Use a `find` command and `crontab` entry to retain only the last X days
|
119
|
+
of file backups. For example,
|
120
|
+
|
121
|
+
```shell script
|
122
|
+
find /opt/puppetlabs/server/data/puppetserver/bucket -type f -mtime +45 -atime +45 -print0 | xargs -0 rm
|
123
|
+
```
|
124
|
+
|
125
|
+
- Restrict the directory to a maximum size after which the oldest items are removed.
|
113
126
|
EOT
|
114
127
|
|
115
128
|
defaultto "puppet"
|
@@ -42,7 +42,11 @@ module Puppet
|
|
42
42
|
send resource[:loglevel], "[diff redacted]"
|
43
43
|
else
|
44
44
|
write_temporarily(param) do |path|
|
45
|
-
|
45
|
+
diff_output = diff(resource[:path], path)
|
46
|
+
if diff_output.encoding == Encoding::BINARY || !diff_output.valid_encoding?
|
47
|
+
diff_output = "Binary files #{resource[:path]} and #{path} differ"
|
48
|
+
end
|
49
|
+
send resource[:loglevel], "\n" + diff_output
|
46
50
|
end
|
47
51
|
end
|
48
52
|
end
|
@@ -2,10 +2,7 @@ require 'puppet/file_serving/content'
|
|
2
2
|
require 'puppet/file_serving/metadata'
|
3
3
|
require 'puppet/file_serving/terminus_helper'
|
4
4
|
|
5
|
-
require 'puppet/
|
6
|
-
require 'puppet/network/http'
|
7
|
-
require 'puppet/network/http/api/indirected_routes'
|
8
|
-
require 'puppet/network/http/compression'
|
5
|
+
require 'puppet/http'
|
9
6
|
|
10
7
|
module Puppet
|
11
8
|
# Copy files from a local or remote source. This state *only* does any work
|
@@ -14,11 +11,6 @@ module Puppet
|
|
14
11
|
# this state, during retrieval, modifies the appropriate other states
|
15
12
|
# so that things get taken care of appropriately.
|
16
13
|
Puppet::Type.type(:file).newparam(:source) do
|
17
|
-
include Puppet::Network::HTTP::Compression.module
|
18
|
-
|
19
|
-
BINARY_MIME_TYPES = [
|
20
|
-
Puppet::Network::FormatHandler.format_for('binary').mime
|
21
|
-
].join(', ').freeze
|
22
14
|
|
23
15
|
attr_accessor :source, :local
|
24
16
|
desc <<-'EOT'
|
@@ -55,6 +47,8 @@ module Puppet
|
|
55
47
|
The `http` source uses the server `Content-MD5` header as a checksum to
|
56
48
|
determine if the remote file has changed. If the server response does not
|
57
49
|
include that header, Puppet defaults to using the `Last-Modified` header.
|
50
|
+
Puppet will update the local file if the header is newer than the modified
|
51
|
+
time (mtime) of the local file.
|
58
52
|
|
59
53
|
Multiple `source` values can be specified as an array, and Puppet will
|
60
54
|
use the first source that exists. This can be used to serve different
|
@@ -129,18 +123,6 @@ module Puppet
|
|
129
123
|
metadata && metadata.checksum
|
130
124
|
end
|
131
125
|
|
132
|
-
# Look up (if necessary) and return local content.
|
133
|
-
def content
|
134
|
-
return @content if @content
|
135
|
-
raise Puppet::DevError, _("No source for content was stored with the metadata") unless metadata.source
|
136
|
-
|
137
|
-
tmp = Puppet::FileServing::Content.indirection.find(metadata.source, :environment => resource.catalog.environment_instance, :links => resource[:links])
|
138
|
-
unless tmp
|
139
|
-
self.fail "Could not find any content at %s" % metadata.source
|
140
|
-
end
|
141
|
-
@content = tmp.content
|
142
|
-
end
|
143
|
-
|
144
126
|
# Copy the values from the source to the resource. Yay.
|
145
127
|
def copy_source_values
|
146
128
|
devfail "Somehow got asked to copy source values without any metadata" unless metadata
|
@@ -273,63 +255,72 @@ module Puppet
|
|
273
255
|
end
|
274
256
|
end
|
275
257
|
|
276
|
-
def each_chunk_from
|
277
|
-
if Puppet[:default_file_terminus] == :file_server
|
278
|
-
|
258
|
+
def each_chunk_from(&block)
|
259
|
+
if Puppet[:default_file_terminus] == :file_server && scheme == 'puppet' && (uri.host.nil? || uri.host.empty?)
|
260
|
+
chunk_file_from_disk(metadata.full_path, &block)
|
279
261
|
elsif local?
|
280
|
-
chunk_file_from_disk
|
262
|
+
chunk_file_from_disk(full_path, &block)
|
281
263
|
else
|
282
|
-
chunk_file_from_source
|
264
|
+
chunk_file_from_source(&block)
|
283
265
|
end
|
284
266
|
end
|
285
267
|
|
286
|
-
def chunk_file_from_disk
|
287
|
-
File.open(
|
268
|
+
def chunk_file_from_disk(local_path)
|
269
|
+
File.open(local_path, "rb") do |src|
|
288
270
|
while chunk = src.read(8192) #rubocop:disable Lint/AssignmentInCondition
|
289
271
|
yield chunk
|
290
272
|
end
|
291
273
|
end
|
292
274
|
end
|
293
275
|
|
294
|
-
def
|
295
|
-
|
296
|
-
|
297
|
-
options[:code_id] = resource.catalog.code_id
|
298
|
-
request = Puppet::Indirector::Request.new(:static_file_content, :find, content_uri, nil, options)
|
299
|
-
else
|
300
|
-
request = Puppet::Indirector::Request.new(:file_content, :find, source_uri, nil, options)
|
301
|
-
end
|
276
|
+
def get_from_content_uri_source(url, &block)
|
277
|
+
session = Puppet.lookup(:http_session)
|
278
|
+
api = session.route_to(:fileserver, url: url)
|
302
279
|
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
280
|
+
api.get_static_file_content(
|
281
|
+
path: URI.unescape(url.path),
|
282
|
+
environment: resource.catalog.environment_instance.to_s,
|
283
|
+
code_id: resource.catalog.code_id,
|
284
|
+
&block
|
285
|
+
)
|
308
286
|
end
|
309
287
|
|
310
|
-
def
|
311
|
-
Puppet
|
288
|
+
def get_from_source_uri_source(url, &block)
|
289
|
+
session = Puppet.lookup(:http_session)
|
290
|
+
api = session.route_to(:fileserver, url: url)
|
291
|
+
|
292
|
+
api.get_file_content(
|
293
|
+
path: URI.unescape(url.path),
|
294
|
+
environment: resource.catalog.environment_instance.to_s,
|
295
|
+
&block
|
296
|
+
)
|
312
297
|
end
|
313
298
|
|
314
|
-
def
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
299
|
+
def get_from_http_source(url, &block)
|
300
|
+
client = Puppet.runtime[:http]
|
301
|
+
client.get(url, options: {include_system_store: true}) do |response|
|
302
|
+
raise Puppet::HTTP::ResponseError.new(response) unless response.success?
|
303
|
+
|
304
|
+
response.read_body(&block)
|
320
305
|
end
|
321
306
|
end
|
322
307
|
|
323
|
-
def chunk_file_from_source
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
end
|
308
|
+
def chunk_file_from_source(&block)
|
309
|
+
if uri.scheme =~ /^https?/
|
310
|
+
get_from_http_source(uri, &block)
|
311
|
+
elsif metadata.content_uri
|
312
|
+
content_url = URI.parse(Puppet::Util.uri_encode(metadata.content_uri))
|
313
|
+
get_from_content_uri_source(content_url, &block)
|
314
|
+
else
|
315
|
+
get_from_source_uri_source(uri, &block)
|
332
316
|
end
|
317
|
+
rescue Puppet::HTTP::ResponseError => e
|
318
|
+
handle_response_error(e.response)
|
319
|
+
end
|
320
|
+
|
321
|
+
def handle_response_error(response)
|
322
|
+
message = "Error #{response.code} on SERVER: #{response.body.empty? ? response.reason : response.body}"
|
323
|
+
raise Net::HTTPError.new(message, response.nethttp)
|
333
324
|
end
|
334
325
|
end
|
335
326
|
|
data/lib/puppet/type/group.rb
CHANGED
@@ -22,7 +22,7 @@ module Puppet
|
|
22
22
|
feature :system_groups,
|
23
23
|
"The provider allows you to create system groups with lower GIDs."
|
24
24
|
|
25
|
-
feature :
|
25
|
+
feature :manages_local_users_and_groups,
|
26
26
|
"Allows local groups to be managed on systems that also use some other
|
27
27
|
remote Name Switch Service (NSS) method of managing accounts."
|
28
28
|
|
@@ -175,7 +175,8 @@ module Puppet
|
|
175
175
|
end
|
176
176
|
|
177
177
|
newparam(:ia_load_module, :required_features => :manages_aix_lam) do
|
178
|
-
desc "The name of the I&A module to use to manage this
|
178
|
+
desc "The name of the I&A module to use to manage this group.
|
179
|
+
This should be set to `files` if managing local groups."
|
179
180
|
end
|
180
181
|
|
181
182
|
newproperty(:attributes, :parent => Puppet::Property::KeyValue, :required_features => :manages_aix_lam) do
|
@@ -213,10 +214,10 @@ module Puppet
|
|
213
214
|
end
|
214
215
|
|
215
216
|
newparam(:forcelocal, :boolean => true,
|
216
|
-
:required_features => :
|
217
|
+
:required_features => :manages_local_users_and_groups,
|
217
218
|
:parent => Puppet::Parameter::Boolean) do
|
218
219
|
desc "Forces the management of local accounts when accounts are also
|
219
|
-
being managed by some other Name Switch Service (NSS).
|
220
|
+
being managed by some other Name Switch Service (NSS). For AIX, refer to the `ia_load_module` parameter.
|
220
221
|
|
221
222
|
This option relies on your operating system's implementation of `luser*` commands, such as `luseradd` , `lgroupadd`, and `lusermod`. The `forcelocal` option could behave unpredictably in some circumstances. If the tools it depends on are not available, it might have no effect at all."
|
222
223
|
defaultto false
|
data/lib/puppet/type/package.rb
CHANGED
@@ -51,17 +51,21 @@ module Puppet
|
|
51
51
|
package database for installed version(s), and can select
|
52
52
|
which out of a set of available versions of a package to
|
53
53
|
install if asked."
|
54
|
+
feature :version_ranges, "The provider can ensure version ranges."
|
54
55
|
feature :holdable, "The provider is capable of placing packages on hold
|
55
56
|
such that they are not automatically upgraded as a result of
|
56
57
|
other package dependencies unless explicit action is taken by
|
57
|
-
a user or another package.
|
58
|
-
|
59
|
-
:methods => [:hold]
|
58
|
+
a user or another package.",
|
59
|
+
:methods => [:hold, :unhold]
|
60
60
|
feature :install_only, "The provider accepts options to only install packages never update (kernels, etc.)"
|
61
61
|
feature :install_options, "The provider accepts options to be
|
62
62
|
passed to the installer command."
|
63
63
|
feature :uninstall_options, "The provider accepts options to be
|
64
64
|
passed to the uninstaller command."
|
65
|
+
feature :disableable, "The provider can disable packages. This feature is used by specifying `disabled` as the
|
66
|
+
desired value for the package.",
|
67
|
+
:methods => [:disable]
|
68
|
+
feature :supports_flavors, "The provider accepts flavors, which are specific variants of packages."
|
65
69
|
feature :package_settings, "The provider accepts package_settings to be
|
66
70
|
ensured for the given package. The meaning and format of these settings is
|
67
71
|
provider-specific.",
|
@@ -80,10 +84,12 @@ module Puppet
|
|
80
84
|
specifying `purged` as the ensure value. This defaults to `installed`.
|
81
85
|
|
82
86
|
Version numbers must match the full version to install, including
|
83
|
-
release if the provider uses a release moniker.
|
84
|
-
patterns are not accepted except for the `gem` package provider. For
|
87
|
+
release if the provider uses a release moniker. For
|
85
88
|
example, to install the bash package from the rpm
|
86
89
|
`bash-4.1.2-29.el6.x86_64.rpm`, use the string `'4.1.2-29.el6'`.
|
90
|
+
|
91
|
+
On supported providers, version ranges can also be ensured. For example,
|
92
|
+
inequalities: `<2.0.0`, or intersections: `>1.0.0 <2.0.0`.
|
87
93
|
EOT
|
88
94
|
|
89
95
|
attr_accessor :latest
|
@@ -101,7 +107,11 @@ module Puppet
|
|
101
107
|
end
|
102
108
|
|
103
109
|
newvalue(:held, :event => :package_held, :required_features => :holdable) do
|
104
|
-
provider.
|
110
|
+
provider.deprecated_hold
|
111
|
+
end
|
112
|
+
|
113
|
+
newvalue(:disabled, :required_features => :disableable) do
|
114
|
+
provider.disable
|
105
115
|
end
|
106
116
|
|
107
117
|
# Alias the 'present' value.
|
@@ -151,7 +161,7 @@ module Puppet
|
|
151
161
|
@should.each { |should|
|
152
162
|
case should
|
153
163
|
when :present
|
154
|
-
return true unless [:absent, :purged, :held].include?(is)
|
164
|
+
return true unless [:absent, :purged, :held, :disabled].include?(is)
|
155
165
|
when :latest
|
156
166
|
# Short-circuit packages that are not present
|
157
167
|
return false if is == :absent || is == :purged
|
@@ -405,6 +415,16 @@ module Puppet
|
|
405
415
|
end
|
406
416
|
end
|
407
417
|
|
418
|
+
newproperty(:flavor, :required_features => :supports_flavors) do
|
419
|
+
desc "OpenBSD and DNF modules support 'flavors', which are
|
420
|
+
further specifications for which type of package you want."
|
421
|
+
validate do |value|
|
422
|
+
if [:disabled, "disabled"].include?(@resource[:ensure]) && value
|
423
|
+
raise ArgumentError, _('Cannot have both `ensure => disabled` and `flavor`')
|
424
|
+
end
|
425
|
+
end
|
426
|
+
end
|
427
|
+
|
408
428
|
newparam(:source) do
|
409
429
|
desc "Where to find the package file. This is only used by providers that don't
|
410
430
|
automatically download packages from a central repository. (For example:
|
@@ -484,9 +504,27 @@ module Puppet
|
|
484
504
|
newvalues(:true, :false)
|
485
505
|
end
|
486
506
|
|
487
|
-
newparam(:
|
488
|
-
desc
|
489
|
-
|
507
|
+
newparam(:enable_only, :boolean => false, :parent => Puppet::Parameter::Boolean) do
|
508
|
+
desc <<-EOT
|
509
|
+
Tells `dnf module` to only enable a specific module, instead
|
510
|
+
of installing its default profile.
|
511
|
+
|
512
|
+
Modules with no default profile will be enabled automatically
|
513
|
+
without the use of this parameter.
|
514
|
+
|
515
|
+
Conflicts with the `flavor` property, which selects a profile
|
516
|
+
to install.
|
517
|
+
EOT
|
518
|
+
defaultto false
|
519
|
+
|
520
|
+
validate do |value|
|
521
|
+
if [true, :true, "true"].include?(value) && @resource[:flavor]
|
522
|
+
raise ArgumentError, _('Cannot have both `enable_only => true` and `flavor`')
|
523
|
+
end
|
524
|
+
if [:disabled, "disabled"].include?(@resource[:ensure])
|
525
|
+
raise ArgumentError, _('Cannot have both `ensure => disabled` and `enable_only => true`')
|
526
|
+
end
|
527
|
+
end
|
490
528
|
end
|
491
529
|
|
492
530
|
newparam(:install_only, :boolean => false, :parent => Puppet::Parameter::Boolean, :required_features => :install_only) do
|
@@ -625,5 +663,59 @@ module Puppet
|
|
625
663
|
provider.reinstall
|
626
664
|
end
|
627
665
|
end
|
666
|
+
|
667
|
+
newproperty(:mark, :required_features => :holdable) do
|
668
|
+
mark_doc='Valid values are: hold/none'
|
669
|
+
desc <<-EOT
|
670
|
+
Set to hold to tell Debian apt/Solaris pkg to hold the package version
|
671
|
+
|
672
|
+
#{mark_doc}
|
673
|
+
Default is "none". Mark can be specified with or without `ensure`,
|
674
|
+
if `ensure` is missing will default to "present".
|
675
|
+
|
676
|
+
Mark cannot be specified together with "purged", "absent" or "held"
|
677
|
+
values for `ensure`.
|
678
|
+
EOT
|
679
|
+
newvalues(:hold, :none)
|
680
|
+
munge do |value|
|
681
|
+
case value
|
682
|
+
when "hold", :hold
|
683
|
+
:hold
|
684
|
+
when "none", :none
|
685
|
+
:none
|
686
|
+
else
|
687
|
+
raise ArgumentError, _('Invalid hold value %{value}. %{doc}') % { value: value.inspect, doc: mark_doc}
|
688
|
+
end
|
689
|
+
end
|
690
|
+
|
691
|
+
def insync?(is)
|
692
|
+
@should[0] == is
|
693
|
+
end
|
694
|
+
|
695
|
+
def should
|
696
|
+
@should[0] if @should && @should.is_a?(Array) && @should.size == 1
|
697
|
+
end
|
698
|
+
|
699
|
+
def retrieve
|
700
|
+
provider.properties[:mark]
|
701
|
+
end
|
702
|
+
|
703
|
+
def sync
|
704
|
+
if @should[0] == :hold
|
705
|
+
provider.hold
|
706
|
+
else
|
707
|
+
provider.unhold
|
708
|
+
end
|
709
|
+
end
|
710
|
+
end
|
711
|
+
|
712
|
+
validate do
|
713
|
+
if :held == @parameters[:ensure].should
|
714
|
+
warning '"ensure=>held" has been deprecated and will be removed in a future version, use "mark=hold" instead'
|
715
|
+
end
|
716
|
+
if @parameters[:mark] && [:absent, :purged, :held].include?(@parameters[:ensure].should)
|
717
|
+
raise ArgumentError, _('You cannot use "mark" property while "ensure" is one of ["absent", "purged", "held"]')
|
718
|
+
end
|
719
|
+
end
|
628
720
|
end
|
629
721
|
end
|