puppet 6.12.0-x64-mingw32 → 6.17.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 +2 -7
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +4 -2
- data/Gemfile.lock +39 -36
- data/README.md +18 -25
- data/ext/project_data.yaml +1 -1
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +52 -13
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- 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/configurer.rb +65 -69
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +154 -58
- data/lib/puppet/environments.rb +27 -20
- 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 +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +14 -10
- 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 +12 -16
- data/lib/puppet/file_system/windows.rb +7 -10
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/http.rb +5 -0
- data/lib/puppet/http/client.rb +293 -73
- data/lib/puppet/http/errors.rb +2 -0
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +46 -3
- data/lib/puppet/http/resolver/server_list.rb +76 -16
- data/lib/puppet/http/resolver/settings.rb +23 -3
- data/lib/puppet/http/resolver/srv.rb +29 -3
- data/lib/puppet/http/response.rb +87 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +151 -7
- data/lib/puppet/http/service/ca.rb +76 -14
- 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 +49 -23
- data/lib/puppet/http/session.rb +103 -7
- data/lib/puppet/indirector.rb +1 -1
- 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 +27 -8
- 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/request.rb +1 -1
- 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/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/base_pool.rb +7 -2
- 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 +184 -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 +11 -1
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +4 -29
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +6 -15
- data/lib/puppet/parser/compiler.rb +43 -33
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +18 -13
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +6 -6
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +12 -3
- data/lib/puppet/pops/loaders.rb +7 -5
- data/lib/puppet/pops/parser/evaluating_parser.rb +5 -7
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/p_object_type_extension.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/validation/checker4_0.rb +11 -1
- data/lib/puppet/pops/validation/tasks_checker.rb +5 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- 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/aptitude.rb +1 -1
- 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 +2 -2
- 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 +109 -25
- data/lib/puppet/provider/package/zypper.rb +59 -1
- data/lib/puppet/provider/service/systemd.rb +22 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -0
- data/lib/puppet/provider/user/directoryservice.rb +30 -5
- data/lib/puppet/provider/user/useradd.rb +22 -12
- data/lib/puppet/reports/http.rb +15 -9
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +31 -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_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- 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 +15 -11
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +18 -6
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +51 -60
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/package.rb +102 -10
- data/lib/puppet/type/service.rb +55 -8
- data/lib/puppet/type/user.rb +3 -28
- data/lib/puppet/util.rb +39 -15
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -18
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +2 -11
- 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/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/storage.rb +0 -1
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/windows/user.rb +23 -8
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +707 -574
- data/man/man5/puppet.conf.5 +74 -14
- data/man/man8/puppet-agent.8 +7 -7
- 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/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 +483 -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/defaults_spec.rb +1 -2
- data/spec/integration/http/client_spec.rb +47 -37
- 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 +2 -15
- data/spec/integration/network/http_pool_spec.rb +93 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +40 -5
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/puppetserver.rb +119 -0
- data/spec/shared_contexts/https.rb +29 -0
- 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/configurer/fact_handler_spec.rb +4 -8
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +17 -18
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +25 -2
- 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_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/file_system_spec.rb +26 -2
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +327 -35
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -2
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -11
- 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 +27 -9
- data/spec/unit/http/service_spec.rb +98 -5
- data/spec/unit/http/session_spec.rb +190 -7
- 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 +194 -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/request_spec.rb +1 -1
- 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/interface_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +559 -175
- 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/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +1 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +6 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- 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 +5 -0
- 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/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/service/windows_spec.rb +22 -14
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +43 -24
- 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/resource_spec.rb +3 -3
- 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 +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +1 -10
- data/spec/unit/transaction/report_spec.rb +5 -1
- data/spec/unit/transaction_spec.rb +0 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +89 -38
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/service_spec.rb +185 -8
- data/spec/unit/type/user_spec.rb +1 -2
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- 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 +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +5 -35
- metadata +73 -12
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -43,6 +43,7 @@ as an array in the form `[key, value]` and returns a hash containing the results
|
|
43
43
|
$data = { "orange" => 0, "blueberry" => 1, "raspberry" => 2 }
|
44
44
|
$filtered_data = $data.filter |$items| { $items[0] =~ /berry$/ }
|
45
45
|
# $filtered_data = {blueberry => 1, raspberry => 2}
|
46
|
+
~~~
|
46
47
|
|
47
48
|
When the first argument is an array and the lambda has two parameters, Puppet passes the
|
48
49
|
array's indexes (enumerated from 0) in the first parameter and its values in the second
|
@@ -338,10 +338,11 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
338
338
|
end
|
339
339
|
|
340
340
|
def replace_sensitive_data
|
341
|
-
parameters.
|
341
|
+
parameters.keys.each do |name|
|
342
|
+
param = parameters[name]
|
342
343
|
if param.value.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive)
|
343
344
|
@sensitive_parameters << name
|
344
|
-
|
345
|
+
parameters[name] = Puppet::Parser::Resource::Param.from_param(param, param.value.unwrap)
|
345
346
|
end
|
346
347
|
end
|
347
348
|
end
|
@@ -20,14 +20,14 @@ class AccessOperator
|
|
20
20
|
@semantic = access_expression
|
21
21
|
end
|
22
22
|
|
23
|
-
def access
|
23
|
+
def access(o, scope, *keys)
|
24
24
|
@@access_visitor.visit_this_2(self, o, scope, keys)
|
25
25
|
end
|
26
26
|
|
27
27
|
protected
|
28
28
|
|
29
29
|
def access_Object(o, scope, keys)
|
30
|
-
type = Puppet::Pops::Types::TypeCalculator.
|
30
|
+
type = Puppet::Pops::Types::TypeCalculator.infer_callable_methods_t(o)
|
31
31
|
if type.is_a?(Puppet::Pops::Types::TypeWithMembers)
|
32
32
|
access_func = type['[]']
|
33
33
|
return access_func.invoke(o, scope, keys) unless access_func.nil?
|
@@ -876,11 +876,11 @@ class EvaluatorImpl
|
|
876
876
|
def eval_ApplyExpression(o, scope)
|
877
877
|
# All expressions are wrapped in an ApplyBlockExpression so we can identify the contents of
|
878
878
|
# that block. However we don't want to serialize the block expression, so unwrap here.
|
879
|
-
body = if o.body.statements.count
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
879
|
+
body = if o.body.statements.count == 1
|
880
|
+
o.body.statements[0]
|
881
|
+
else
|
882
|
+
Model::BlockExpression.from_asserted_hash(o.body._pcore_init_hash)
|
883
|
+
end
|
884
884
|
|
885
885
|
Puppet.lookup(:apply_executor).apply(unfold([], o.arguments, scope), body, scope)
|
886
886
|
end
|
@@ -959,7 +959,7 @@ class EvaluatorImpl
|
|
959
959
|
name = name.value # the string function name
|
960
960
|
|
961
961
|
obj = receiver[0]
|
962
|
-
receiver_type = Types::TypeCalculator.
|
962
|
+
receiver_type = Types::TypeCalculator.infer_callable_methods_t(obj)
|
963
963
|
if receiver_type.is_a?(Types::TypeWithMembers)
|
964
964
|
member = receiver_type[name]
|
965
965
|
unless member.nil?
|
data/lib/puppet/pops/issues.rb
CHANGED
@@ -920,5 +920,10 @@ module Issues
|
|
920
920
|
LOADER_FAILURE = issue :LOADER_FAILURE, :type do
|
921
921
|
_('Failed to load: %{type_name}') % { type: type }
|
922
922
|
end
|
923
|
+
|
924
|
+
DEPRECATED_APP_ORCHESTRATION = issue :DEPRECATED_APP_ORCHESTRATION, :klass do
|
925
|
+
_("Use of the application-orchestration %{expr} is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html" % { expr: label(klass) })
|
926
|
+
end
|
927
|
+
|
923
928
|
end
|
924
929
|
end
|
@@ -19,8 +19,17 @@ class PuppetPlanInstantiator
|
|
19
19
|
|
20
20
|
# parse and validate
|
21
21
|
result = parser.parse_string(pp_code_string, source_ref)
|
22
|
-
|
23
|
-
|
22
|
+
|
23
|
+
# The parser attaches all definitions, including those nested in apply
|
24
|
+
# blocks, to the Program object. Node definitions in apply blocks are
|
25
|
+
# perfectly legal and don't count as the file containing multiple
|
26
|
+
# definitions for this purpose. By this point, we've already validated that
|
27
|
+
# there are no node definitions *outside* apply blocks, so we simply ignore
|
28
|
+
# them here.
|
29
|
+
definitions = result.definitions.reject { |definition| definition.is_a?(Puppet::Pops::Model::NodeDefinition) }
|
30
|
+
|
31
|
+
# Only one plan is allowed (and no other definitions)
|
32
|
+
case definitions.size
|
24
33
|
when 0
|
25
34
|
raise ArgumentError, _("The code loaded from %{source_ref} does not define the plan '%{plan_name}' - it is empty.") % { source_ref: source_ref, plan_name: typed_name.name }
|
26
35
|
when 1
|
@@ -28,7 +37,7 @@ class PuppetPlanInstantiator
|
|
28
37
|
else
|
29
38
|
raise ArgumentError, _("The code loaded from %{source_ref} must contain only the plan '%{plan_name}' - it has additional definitions.") % { source_ref: source_ref, plan_name: typed_name.name }
|
30
39
|
end
|
31
|
-
the_plan_definition =
|
40
|
+
the_plan_definition = definitions[0]
|
32
41
|
|
33
42
|
unless the_plan_definition.is_a?(Model::PlanDefinition)
|
34
43
|
raise ArgumentError, _("The code loaded from %{source_ref} does not define the plan '%{plan_name}' - no plan found.") % { source_ref: source_ref, plan_name: typed_name.name }
|
data/lib/puppet/pops/loaders.rb
CHANGED
@@ -19,12 +19,14 @@ class Loaders
|
|
19
19
|
attr_reader :environment
|
20
20
|
|
21
21
|
def self.new(environment, for_agent = false)
|
22
|
-
|
23
|
-
|
24
|
-
obj
|
25
|
-
|
22
|
+
environment.lock.synchronize do
|
23
|
+
obj = environment.loaders
|
24
|
+
if obj.nil?
|
25
|
+
obj = self.allocate
|
26
|
+
obj.send(:initialize, environment, for_agent)
|
27
|
+
end
|
28
|
+
obj
|
26
29
|
end
|
27
|
-
obj
|
28
30
|
end
|
29
31
|
|
30
32
|
def initialize(environment, for_agent)
|
@@ -15,7 +15,6 @@ class EvaluatingParser
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def parse_string(s, file_source = nil)
|
18
|
-
@file_source = file_source
|
19
18
|
clear()
|
20
19
|
# Handling of syntax error can be much improved (in general), now it bails out of the parser
|
21
20
|
# and does not have as rich information (when parsing a string), need to update it with the file source
|
@@ -24,20 +23,19 @@ class EvaluatingParser
|
|
24
23
|
# Also a possible improvement (if the YAML parser returns positions) is to provide correct output of position.
|
25
24
|
#
|
26
25
|
begin
|
27
|
-
assert_and_report(parser.parse_string(s, file_source)).model
|
26
|
+
assert_and_report(parser.parse_string(s, file_source), file_source).model
|
28
27
|
rescue Puppet::ParseErrorWithIssue => e
|
29
28
|
raise e
|
30
29
|
rescue Puppet::ParseError => e
|
31
30
|
# TODO: This is not quite right, why does not the exception have the correct file?
|
32
|
-
e.file =
|
31
|
+
e.file = file_source unless e.file.is_a?(String) && !e.file.empty?
|
33
32
|
raise e
|
34
33
|
end
|
35
34
|
end
|
36
35
|
|
37
36
|
def parse_file(file)
|
38
|
-
@file_source = file
|
39
37
|
clear()
|
40
|
-
assert_and_report(parser.parse_file(file)).model
|
38
|
+
assert_and_report(parser.parse_file(file), file).model
|
41
39
|
end
|
42
40
|
|
43
41
|
def evaluate_string(scope, s, file_source = nil)
|
@@ -96,10 +94,10 @@ class EvaluatingParser
|
|
96
94
|
Validation::ValidatorFactory_4_0.new().validator(acceptor)
|
97
95
|
end
|
98
96
|
|
99
|
-
def assert_and_report(parse_result)
|
97
|
+
def assert_and_report(parse_result, file_source)
|
100
98
|
return nil unless parse_result
|
101
99
|
if parse_result['source_ref'].nil? || parse_result['source_ref'] == ''
|
102
|
-
parse_result['source_ref'] =
|
100
|
+
parse_result['source_ref'] = file_source
|
103
101
|
end
|
104
102
|
validation_result = validate(parse_result.model)
|
105
103
|
|
@@ -153,6 +153,16 @@ class PObjectTypeExtension < PAnyType
|
|
153
153
|
@base_type.simple_name
|
154
154
|
end
|
155
155
|
|
156
|
+
# @api private
|
157
|
+
def implementation_class(create = true)
|
158
|
+
@base_type.implementation_class(create)
|
159
|
+
end
|
160
|
+
|
161
|
+
# @api private
|
162
|
+
def parameter_info(impl_class)
|
163
|
+
@base_type.parameter_info(impl_class)
|
164
|
+
end
|
165
|
+
|
156
166
|
protected
|
157
167
|
|
158
168
|
# Checks that the given `param_values` hash contains all keys present in the `parameters` of
|
@@ -123,6 +123,30 @@ class TypeCalculator
|
|
123
123
|
singleton.infer(o)
|
124
124
|
end
|
125
125
|
|
126
|
+
# Infers a type if given object may have callable members, else returns nil.
|
127
|
+
# Caller must check for nil or if returned type supports members.
|
128
|
+
# This is a much cheaper call than doing a call to the general infer(o) method.
|
129
|
+
#
|
130
|
+
# @api private
|
131
|
+
def self.infer_callable_methods_t(o)
|
132
|
+
# If being a value that cannot have Pcore based methods callable from Puppet Language
|
133
|
+
if (o.is_a?(String) ||
|
134
|
+
o.is_a?(Numeric) ||
|
135
|
+
o.is_a?(TrueClass) ||
|
136
|
+
o.is_a?(FalseClass) ||
|
137
|
+
o.is_a?(Regexp) ||
|
138
|
+
o.instance_of?(Array) ||
|
139
|
+
o.instance_of?(Hash) ||
|
140
|
+
Types::PUndefType::DEFAULT.instance?(o)
|
141
|
+
)
|
142
|
+
return nil
|
143
|
+
end
|
144
|
+
# For other objects (e.g. PObjectType instances, and runtime types) full inference needed, since that will
|
145
|
+
# cover looking into the runtime type registry.
|
146
|
+
#
|
147
|
+
infer(o)
|
148
|
+
end
|
149
|
+
|
126
150
|
# @api public
|
127
151
|
def self.generalize(o)
|
128
152
|
singleton.generalize(o)
|
@@ -93,7 +93,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
93
93
|
o = container(idx)
|
94
94
|
idx -= 1
|
95
95
|
case o
|
96
|
-
when NilClass, Model::HostClassDefinition, Model::Program
|
96
|
+
when NilClass, Model::ApplyExpression, Model::HostClassDefinition, Model::Program
|
97
97
|
# ok, stop scanning parents
|
98
98
|
when Model::BlockExpression
|
99
99
|
c = container(idx)
|
@@ -199,6 +199,11 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
199
199
|
end
|
200
200
|
end
|
201
201
|
|
202
|
+
def check_Application(o)
|
203
|
+
check_NamedDefinition(o)
|
204
|
+
acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
|
205
|
+
end
|
206
|
+
|
202
207
|
def check_AssignmentExpression(o)
|
203
208
|
case o.operator
|
204
209
|
when '='
|
@@ -296,6 +301,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
296
301
|
end
|
297
302
|
|
298
303
|
def check_CapabilityMapping(o)
|
304
|
+
acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
|
299
305
|
ok =
|
300
306
|
case o.component
|
301
307
|
when Model::QualifiedReference
|
@@ -865,6 +871,10 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
865
871
|
rvalue(o.matching_expr)
|
866
872
|
end
|
867
873
|
|
874
|
+
def check_SiteDefinition(o)
|
875
|
+
acceptor.accept(Issues::DEPRECATED_APP_ORCHESTRATION, o, {:klass => o})
|
876
|
+
end
|
877
|
+
|
868
878
|
def check_UnaryExpression(o)
|
869
879
|
rvalue(o.expr)
|
870
880
|
end
|
@@ -31,6 +31,7 @@ class ValidatorFactory_4_0 < Factory
|
|
31
31
|
p[Issues::RT_NO_STORECONFIGS] = Puppet[:storeconfigs] ? :ignore : :warning
|
32
32
|
|
33
33
|
p[Issues::FUTURE_RESERVED_WORD] = :deprecation
|
34
|
+
p[Issues::DEPRECATED_APP_ORCHESTRATION] = :deprecation
|
34
35
|
|
35
36
|
p[Issues::DUPLICATE_KEY] = Puppet[:strict] == :off ? :ignore : Puppet[:strict]
|
36
37
|
p[Issues::NAME_WITH_HYPHEN] = :error
|
@@ -330,8 +330,10 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
330
330
|
end
|
331
331
|
|
332
332
|
def ia_module_args
|
333
|
-
|
334
|
-
["-R", @resource[:ia_load_module].to_s]
|
333
|
+
raise ArgumentError, _("Cannot have both 'forcelocal' and 'ia_load_module' at the same time!") if @resource[:ia_load_module] && @resource[:forcelocal]
|
334
|
+
return ["-R", @resource[:ia_load_module].to_s] if @resource[:ia_load_module]
|
335
|
+
return ["-R", "files"] if @resource[:forcelocal]
|
336
|
+
[]
|
335
337
|
end
|
336
338
|
|
337
339
|
def lscmd
|
@@ -18,6 +18,7 @@ Puppet::Type.type(:group).provide :aix, :parent => Puppet::Provider::AixObject d
|
|
18
18
|
# Provider features
|
19
19
|
has_features :manages_aix_lam
|
20
20
|
has_features :manages_members
|
21
|
+
has_features :manages_local_users_and_groups
|
21
22
|
|
22
23
|
class << self
|
23
24
|
# Used by the AIX user provider. Returns a hash of:
|
@@ -2,9 +2,7 @@ require 'puppet/provider/nameservice/objectadd'
|
|
2
2
|
require 'puppet/util/libuser'
|
3
3
|
|
4
4
|
Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameService::ObjectAdd do
|
5
|
-
desc "Group management via `groupadd` and its ilk. The default for most platforms.
|
6
|
-
|
7
|
-
"
|
5
|
+
desc "Group management via `groupadd` and its ilk. The default for most platforms."
|
8
6
|
|
9
7
|
commands :add => "groupadd", :delete => "groupdel", :modify => "groupmod"
|
10
8
|
|
@@ -16,7 +14,9 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
16
14
|
|
17
15
|
optional_commands :localadd => "lgroupadd", :localdelete => "lgroupdel", :localmodify => "lgroupmod"
|
18
16
|
|
19
|
-
has_feature :
|
17
|
+
has_feature :manages_local_users_and_groups, :manages_members if Puppet.features.libuser?
|
18
|
+
|
19
|
+
options :members, :flag => '-M', :method => :mem
|
20
20
|
|
21
21
|
def exists?
|
22
22
|
return !!localgid if @resource.forcelocal?
|
@@ -28,25 +28,9 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
28
28
|
get(:gid)
|
29
29
|
end
|
30
30
|
|
31
|
-
def findgroup(key, value)
|
32
|
-
group_file = "/etc/group"
|
33
|
-
group_keys = ['group_name', 'password', 'gid', 'user_list']
|
34
|
-
index = group_keys.index(key)
|
35
|
-
File.open(group_file) do |f|
|
36
|
-
f.each_line do |line|
|
37
|
-
group = line.split(":")
|
38
|
-
if group[index] == value
|
39
|
-
f.close
|
40
|
-
return group
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
false
|
45
|
-
end
|
46
|
-
|
47
31
|
def localgid
|
48
|
-
group = findgroup(
|
49
|
-
return group[
|
32
|
+
group = findgroup(:group_name, resource[:name])
|
33
|
+
return group[:gid] if group
|
50
34
|
false
|
51
35
|
end
|
52
36
|
|
@@ -56,7 +40,7 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
56
40
|
# to ensure consistent behaviour of the useradd provider when
|
57
41
|
# using both useradd and luseradd
|
58
42
|
if not @resource.allowdupe? and @resource.forcelocal?
|
59
|
-
if @resource.should(:gid) and findgroup(
|
43
|
+
if @resource.should(:gid) and findgroup(:gid, @resource.should(:gid).to_s)
|
60
44
|
raise(Puppet::Error, _("GID %{resource} already exists, use allowdupe to force group creation") % { resource: @resource.should(:gid).to_s })
|
61
45
|
end
|
62
46
|
elsif @resource.allowdupe? and not @resource.forcelocal?
|
@@ -65,6 +49,11 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
65
49
|
[]
|
66
50
|
end
|
67
51
|
|
52
|
+
def create
|
53
|
+
super
|
54
|
+
set(:members, @resource[:members]) if @resource[:members]
|
55
|
+
end
|
56
|
+
|
68
57
|
def addcmd
|
69
58
|
if @resource.forcelocal?
|
70
59
|
cmd = [command(:localadd)]
|
@@ -85,13 +74,28 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
85
74
|
cmd
|
86
75
|
end
|
87
76
|
|
77
|
+
def validate_members(members)
|
78
|
+
members.each do |member|
|
79
|
+
member.split(',').each do |user|
|
80
|
+
Etc.getpwnam(user.strip)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
88
85
|
def modifycmd(param, value)
|
89
|
-
if @resource.forcelocal?
|
86
|
+
if @resource.forcelocal? || @resource[:members]
|
90
87
|
cmd = [command(:localmodify)]
|
91
88
|
@custom_environment = Puppet::Util::Libuser.getenv
|
92
89
|
else
|
93
90
|
cmd = [command(:modify)]
|
94
91
|
end
|
92
|
+
|
93
|
+
if param == :members
|
94
|
+
validate_members(value)
|
95
|
+
value = members_to_s(value)
|
96
|
+
purge_members if @resource[:auth_membership] && !members.empty?
|
97
|
+
end
|
98
|
+
|
95
99
|
cmd << flag(param) << value
|
96
100
|
# TODO the group type only really manages gid, so there are currently no
|
97
101
|
# tests for this behavior
|
@@ -109,4 +113,33 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
109
113
|
[command(:delete), @resource[:name]]
|
110
114
|
end
|
111
115
|
end
|
116
|
+
|
117
|
+
def members_insync?(current, should)
|
118
|
+
current.uniq.sort == @resource.parameter(:members).actual_should(current, should)
|
119
|
+
end
|
120
|
+
|
121
|
+
def members_to_s(current)
|
122
|
+
return '' if current.nil? || !current.kind_of?(Array)
|
123
|
+
current.join(',')
|
124
|
+
end
|
125
|
+
|
126
|
+
def purge_members
|
127
|
+
localmodify('-m', members_to_s(members), @resource.name)
|
128
|
+
end
|
129
|
+
|
130
|
+
private
|
131
|
+
|
132
|
+
def findgroup(key, value)
|
133
|
+
group_file = "/etc/group"
|
134
|
+
group_keys = [:group_name, :password, :gid, :user_list]
|
135
|
+
index = group_keys.index(key)
|
136
|
+
@group_content ||= File.read(group_file)
|
137
|
+
@group_content.each_line do |line|
|
138
|
+
group = line.split(":")
|
139
|
+
if group[index] == value
|
140
|
+
return Hash[group_keys.zip(group)]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
false
|
144
|
+
end
|
112
145
|
end
|