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
@@ -2,7 +2,7 @@ Puppet::Type.type(:package).provide :zypper, :parent => :rpm, :source => :rpm do
|
|
2
2
|
desc "Support for SuSE `zypper` package manager. Found in SLES10sp2+ and SLES11.
|
3
3
|
|
4
4
|
This provider supports the `install_options` attribute, which allows command-line flags to be passed to zypper.
|
5
|
-
These options should be specified as an array where each element is either a
|
5
|
+
These options should be specified as an array where each element is either a
|
6
6
|
string or a hash."
|
7
7
|
|
8
8
|
has_feature :versionable, :install_options, :virtual_packages
|
@@ -50,6 +50,41 @@ Puppet::Type.type(:package).provide :zypper, :parent => :rpm, :source => :rpm do
|
|
50
50
|
execute(cmd, { :failonfail => false, :combine => true})
|
51
51
|
end
|
52
52
|
|
53
|
+
def best_version(should)
|
54
|
+
if should.is_a?(String)
|
55
|
+
begin
|
56
|
+
should_range = Puppet::Util::Package::Version::Range.parse(should, Puppet::Util::Package::Version::Rpm)
|
57
|
+
rescue Puppet::Util::Package::Version::Range::ValidationFailure, Puppet::Util::Package::Version::Rpm::ValidationFailure
|
58
|
+
Puppet.debug("Cannot parse #{should} as a RPM version range")
|
59
|
+
return should
|
60
|
+
end
|
61
|
+
|
62
|
+
if should_range.is_a?(Puppet::Util::Package::Version::Range::Eq)
|
63
|
+
return should
|
64
|
+
end
|
65
|
+
|
66
|
+
sorted_versions = SortedSet.new
|
67
|
+
|
68
|
+
output = zypper('search', '--match-exact', '--type', 'package', '--uninstalled-only', '-s', @resource[:name])
|
69
|
+
output.lines.each do |line|
|
70
|
+
pkg_ver = line.split(/\s*\|\s*/)
|
71
|
+
next unless pkg_ver[1] == @resource[:name]
|
72
|
+
begin
|
73
|
+
rpm_version = Puppet::Util::Package::Version::Rpm.parse(pkg_ver[3])
|
74
|
+
|
75
|
+
sorted_versions << rpm_version if should_range.include?(rpm_version)
|
76
|
+
rescue Puppet::Util::Package::Version::Rpm::ValidationFailure
|
77
|
+
Puppet.debug("Cannot parse #{pkg_ver[3]} as a RPM version")
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
return sorted_versions.entries.last if sorted_versions.any?
|
82
|
+
|
83
|
+
Puppet.debug("No available version for package #{@resource[:name]} is included in range #{should_range}")
|
84
|
+
should
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
53
88
|
# Install a package using 'zypper'.
|
54
89
|
def install
|
55
90
|
should = @resource.should(:ensure)
|
@@ -62,6 +97,7 @@ Puppet::Type.type(:package).provide :zypper, :parent => :rpm, :source => :rpm do
|
|
62
97
|
should = nil
|
63
98
|
else
|
64
99
|
# Add the package version
|
100
|
+
should = best_version(should)
|
65
101
|
wanted = "#{wanted}-#{should}"
|
66
102
|
end
|
67
103
|
|
@@ -89,6 +125,7 @@ Puppet::Type.type(:package).provide :zypper, :parent => :rpm, :source => :rpm do
|
|
89
125
|
options = []
|
90
126
|
options << quiet
|
91
127
|
options << '--no-gpg-check' unless inst_opts.delete('--no-gpg-check').nil?
|
128
|
+
options << '--no-gpg-checks' unless inst_opts.delete('--no-gpg-checks').nil?
|
92
129
|
options << :install
|
93
130
|
|
94
131
|
#zypper 0.6.13 (OpenSuSE 10.2) does not support auto agree with licenses
|
@@ -142,4 +179,25 @@ Puppet::Type.type(:package).provide :zypper, :parent => :rpm, :source => :rpm do
|
|
142
179
|
end
|
143
180
|
|
144
181
|
end
|
182
|
+
|
183
|
+
def insync?(is)
|
184
|
+
return false if [:purged, :absent].include?(is)
|
185
|
+
|
186
|
+
should = @resource[:ensure]
|
187
|
+
if should.is_a?(String)
|
188
|
+
begin
|
189
|
+
should_version = Puppet::Util::Package::Version::Range.parse(should, Puppet::Util::Package::Version::Rpm)
|
190
|
+
rescue Puppet::Util::Package::Version::Range::ValidationFailure, Puppet::Util::Package::Version::Rpm::ValidationFailure
|
191
|
+
Puppet.debug("Cannot parse #{should} as a RPM version range")
|
192
|
+
return super
|
193
|
+
end
|
194
|
+
|
195
|
+
begin
|
196
|
+
is_version = Puppet::Util::Package::Version::Rpm.parse(is)
|
197
|
+
should_version.include?(is_version)
|
198
|
+
rescue Puppet::Util::Package::Version::Rpm::ValidationFailure
|
199
|
+
Puppet.debug("Cannot parse #{is} as a RPM version")
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
145
203
|
end
|
@@ -30,7 +30,8 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
30
30
|
def self.instances
|
31
31
|
i = []
|
32
32
|
output = systemctl('list-unit-files', '--type', 'service', '--full', '--all', '--no-pager')
|
33
|
-
output.scan(/^(\S+)\s+(disabled|enabled|masked|indirect)\s*$/i).each do |m|
|
33
|
+
output.scan(/^(\S+)\s+(disabled|enabled|masked|indirect|bad|static)\s*$/i).each do |m|
|
34
|
+
Puppet.debug("#{m[0]} marked as bad by `systemctl`. It is recommended to be further checked.") if m[1] == "bad"
|
34
35
|
i << new(:name => m[0])
|
35
36
|
end
|
36
37
|
return i
|
@@ -38,6 +39,22 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
38
39
|
return []
|
39
40
|
end
|
40
41
|
|
42
|
+
# Static services cannot be enabled or disabled manually. Indirect services
|
43
|
+
# should not be enabled or disabled due to limitations in systemd (see
|
44
|
+
# https://github.com/systemd/systemd/issues/6681).
|
45
|
+
def enabled_insync?(current)
|
46
|
+
case cached_enabled?[:output]
|
47
|
+
when 'static'
|
48
|
+
Puppet.debug("Unable to enable or disable static service #{@resource[:name]}")
|
49
|
+
return true
|
50
|
+
when 'indirect'
|
51
|
+
Puppet.debug("Service #{@resource[:name]} is in 'indirect' state and cannot be enabled/disabled")
|
52
|
+
return true
|
53
|
+
else
|
54
|
+
current == @resource[:enable]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
41
58
|
# This helper ensures that the enable state cache is always reset
|
42
59
|
# after a systemctl enable operation. A particular service state is not guaranteed
|
43
60
|
# after such an operation, so the cache must be emptied to prevent inconsistencies
|
@@ -69,12 +86,13 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
69
86
|
def cached_enabled?
|
70
87
|
return @cached_enabled if @cached_enabled
|
71
88
|
cmd = [command(:systemctl), 'is-enabled', '--', @resource[:name]]
|
72
|
-
|
89
|
+
result = execute(cmd, :failonfail => false)
|
90
|
+
@cached_enabled = { output: result.chomp, exitcode: result.exitstatus }
|
73
91
|
end
|
74
92
|
|
75
93
|
def enabled?
|
76
|
-
output = cached_enabled?
|
77
|
-
code =
|
94
|
+
output = cached_enabled?[:output]
|
95
|
+
code = cached_enabled?[:exitcode]
|
78
96
|
|
79
97
|
# The masked state is equivalent to the disabled state in terms of
|
80
98
|
# comparison so we only care to check if it is masked if we want to keep
|
@@ -14,29 +14,28 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
|
|
14
14
|
defaultfor :operatingsystem => :windows
|
15
15
|
confine :operatingsystem => :windows
|
16
16
|
|
17
|
-
has_feature :refreshable
|
18
|
-
has_feature :configurable_timeout
|
17
|
+
has_feature :refreshable, :configurable_timeout, :manages_logon_credentials
|
19
18
|
|
20
19
|
def enable
|
21
|
-
Puppet::Util::Windows::Service.
|
20
|
+
Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {startup_type: :SERVICE_AUTO_START})
|
22
21
|
rescue => detail
|
23
22
|
raise Puppet::Error.new(_("Cannot enable %{resource_name}, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail )
|
24
23
|
end
|
25
24
|
|
26
25
|
def disable
|
27
|
-
Puppet::Util::Windows::Service.
|
26
|
+
Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {startup_type: :SERVICE_DISABLED})
|
28
27
|
rescue => detail
|
29
28
|
raise Puppet::Error.new(_("Cannot disable %{resource_name}, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail )
|
30
29
|
end
|
31
30
|
|
32
31
|
def manual_start
|
33
|
-
Puppet::Util::Windows::Service.
|
32
|
+
Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {startup_type: :SERVICE_DEMAND_START})
|
34
33
|
rescue => detail
|
35
34
|
raise Puppet::Error.new(_("Cannot enable %{resource_name} for manual start, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail )
|
36
35
|
end
|
37
36
|
|
38
37
|
def delayed_start
|
39
|
-
Puppet::Util::Windows::Service.
|
38
|
+
Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {startup_type: :SERVICE_AUTO_START, delayed: true})
|
40
39
|
rescue => detail
|
41
40
|
raise Puppet::Error.new(_("Cannot enable %{resource_name} for delayed start, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail )
|
42
41
|
end
|
@@ -110,7 +109,10 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
|
|
110
109
|
raise Puppet::Error.new(_("Unknown service state '%{current_state}' for service '%{resource_name}'") % { current_state: current_state, resource_name: @resource[:name] })
|
111
110
|
end
|
112
111
|
debug("Service #{@resource[:name]} is #{current_state}")
|
113
|
-
|
112
|
+
state
|
113
|
+
rescue => detail
|
114
|
+
Puppet.warning("Status for service #{@resource[:name]} could not be retrieved: #{detail}")
|
115
|
+
:stopped
|
114
116
|
end
|
115
117
|
|
116
118
|
def default_timeout
|
@@ -125,4 +127,18 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
|
|
125
127
|
end
|
126
128
|
services
|
127
129
|
end
|
130
|
+
|
131
|
+
def logonaccount
|
132
|
+
return unless Puppet::Util::Windows::Service.exists?(@resource[:name])
|
133
|
+
Puppet::Util::Windows::Service.logon_account(@resource[:name])
|
134
|
+
end
|
135
|
+
|
136
|
+
def logonaccount=(value)
|
137
|
+
Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {logon_account: value, logon_password: @resource[:logonpassword]})
|
138
|
+
restart if @resource[:ensure] == :running && [:running, :paused].include?(status)
|
139
|
+
end
|
140
|
+
|
141
|
+
def logonpassword=(value)
|
142
|
+
Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {logon_password: value})
|
143
|
+
end
|
128
144
|
end
|
@@ -32,6 +32,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
|
|
32
32
|
has_features :manages_aix_lam
|
33
33
|
has_features :manages_homedir, :manages_passwords, :manages_shell
|
34
34
|
has_features :manages_expiry, :manages_password_age
|
35
|
+
has_features :manages_local_users_and_groups
|
35
36
|
|
36
37
|
class << self
|
37
38
|
def group_provider
|
@@ -387,7 +387,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
387
387
|
if (Puppet::Util::Package.versioncmp(self.class.get_os_version, '10.7') > 0)
|
388
388
|
assert_full_pbkdf2_password
|
389
389
|
|
390
|
-
sleep
|
390
|
+
sleep 3
|
391
391
|
flush_dscl_cache
|
392
392
|
users_plist = get_users_plist(@resource.name)
|
393
393
|
shadow_hash_data = get_shadow_hash_data(users_plist)
|
@@ -404,7 +404,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
404
404
|
if (Puppet::Util::Package.versioncmp(self.class.get_os_version, '10.7') > 0)
|
405
405
|
assert_full_pbkdf2_password
|
406
406
|
|
407
|
-
sleep
|
407
|
+
sleep 3
|
408
408
|
flush_dscl_cache
|
409
409
|
users_plist = get_users_plist(@resource.name)
|
410
410
|
shadow_hash_data = get_shadow_hash_data(users_plist)
|
@@ -435,8 +435,8 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
435
435
|
['home', 'uid', 'gid', 'comment', 'shell'].each do |setter_method|
|
436
436
|
define_method("#{setter_method}=") do |value|
|
437
437
|
if @property_hash[setter_method.intern]
|
438
|
-
if self.class.get_os_version
|
439
|
-
raise Puppet::Error, "OS X version
|
438
|
+
if self.class.get_os_version.split('.').last.to_i >= 14 && %w(home uid).include?(setter_method)
|
439
|
+
raise Puppet::Error, "OS X version #{self.class.get_os_version} does not allow changing #{setter_method} using puppet"
|
440
440
|
end
|
441
441
|
begin
|
442
442
|
dscl '.', '-change', "/Users/#{resource.name}", self.class.ns_to_ds_attribute_map[setter_method.intern], @property_hash[setter_method.intern], value
|
@@ -572,7 +572,32 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
572
572
|
else
|
573
573
|
users_plist['ShadowHashData'] = [binary_plist]
|
574
574
|
end
|
575
|
-
|
575
|
+
if Puppet::Util::Package.versioncmp(self.class.get_os_version, '10.15') < 0
|
576
|
+
write_users_plist_to_disk(users_plist)
|
577
|
+
else
|
578
|
+
write_and_import_shadow_hash_data(users_plist['ShadowHashData'].first)
|
579
|
+
end
|
580
|
+
end
|
581
|
+
|
582
|
+
# This method writes the ShadowHashData plist in a temporary file,
|
583
|
+
# then imports it using dsimport. macOS versions 10.15 and newer do
|
584
|
+
# not support directly managing binary plists, so we have to use an
|
585
|
+
# intermediary.
|
586
|
+
# dsimport is an archaic utilitary with hard-to-find documentation
|
587
|
+
#
|
588
|
+
# See http://web.archive.org/web/20090106120111/http://support.apple.com/kb/TA21305?viewlocale=en_US
|
589
|
+
# for information regarding the dsimport syntax
|
590
|
+
def write_and_import_shadow_hash_data(data_plist)
|
591
|
+
Tempfile.create("dsimport_#{@resource.name}", :encoding => Encoding::ASCII) do |dsimport_file|
|
592
|
+
dsimport_file.write <<-DSIMPORT
|
593
|
+
0x0A 0x5C 0x3A 0x2C dsRecTypeStandard:Users 2 dsAttrTypeStandard:RecordName base64:dsAttrTypeNative:ShadowHashData
|
594
|
+
#{@resource.name}:#{Base64.strict_encode64(data_plist)}
|
595
|
+
DSIMPORT
|
596
|
+
dsimport_file.flush
|
597
|
+
# Delete the user's existing ShadowHashData, since dsimport appends, not replaces
|
598
|
+
dscl('.', 'delete', "/Users/#{@resource.name}", 'ShadowHashData')
|
599
|
+
dsimport(dsimport_file.path, '/Local/Default', 'M')
|
600
|
+
end
|
576
601
|
end
|
577
602
|
|
578
603
|
# This method accepts an argument of a hex password hash, and base64
|
@@ -21,7 +21,11 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
|
|
21
21
|
options :expiry, :method => :sp_expire,
|
22
22
|
:munge => proc { |value|
|
23
23
|
if value == :absent
|
24
|
-
''
|
24
|
+
if Facter.value(:operatingsystem)=='SLES' && Facter.value(:operatingsystemmajrelease) == "11"
|
25
|
+
-1
|
26
|
+
else
|
27
|
+
''
|
28
|
+
end
|
25
29
|
else
|
26
30
|
case Facter.value(:operatingsystem)
|
27
31
|
when 'Solaris'
|
@@ -43,7 +47,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
|
|
43
47
|
}
|
44
48
|
|
45
49
|
optional_commands :localadd => "luseradd", :localdelete => "luserdel", :localmodify => "lusermod", :localpassword => "lchage"
|
46
|
-
has_feature :
|
50
|
+
has_feature :manages_local_users_and_groups if Puppet.features.libuser?
|
47
51
|
|
48
52
|
def exists?
|
49
53
|
return !!localuid if @resource.forcelocal?
|
@@ -64,12 +68,11 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
|
|
64
68
|
passwd_file = "/etc/passwd"
|
65
69
|
passwd_keys = [:account, :password, :uid, :gid, :gecos, :directory, :shell]
|
66
70
|
index = passwd_keys.index(key)
|
67
|
-
File.
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
end
|
71
|
+
@passwd_content ||= File.read(passwd_file)
|
72
|
+
@passwd_content.each_line do |line|
|
73
|
+
user = line.split(":")
|
74
|
+
if user[index] == value
|
75
|
+
return Hash[passwd_keys.zip(user)]
|
73
76
|
end
|
74
77
|
end
|
75
78
|
false
|
@@ -135,10 +138,17 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
|
|
135
138
|
|
136
139
|
def check_manage_home
|
137
140
|
cmd = []
|
138
|
-
if @resource.managehome?
|
139
|
-
|
140
|
-
|
141
|
-
|
141
|
+
if @resource.managehome?
|
142
|
+
# libuser does not implement the -m flag
|
143
|
+
cmd << "-m" unless @resource.forcelocal?
|
144
|
+
else
|
145
|
+
osfamily = Facter.value(:osfamily)
|
146
|
+
osversion = Facter.value(:operatingsystemmajrelease).to_i
|
147
|
+
# SLES 11 uses pwdutils instead of shadow, which does not have -M
|
148
|
+
# Solaris and OpenBSD use different useradd flavors
|
149
|
+
unless osfamily =~ /Solaris|OpenBSD/ || osfamily == 'Suse' && osversion <= 11
|
150
|
+
cmd << "-M"
|
151
|
+
end
|
142
152
|
end
|
143
153
|
cmd
|
144
154
|
end
|
data/lib/puppet/reports/http.rb
CHANGED
@@ -20,19 +20,25 @@ Puppet::Reports.register_report(:http) do
|
|
20
20
|
# (Puppet::Network::HTTP) but is used by Puppet Server's http client
|
21
21
|
# (Puppet::Server::HttpClient) to track metrics on the request made to the
|
22
22
|
# `reporturl` to store a report.
|
23
|
-
options = {
|
23
|
+
options = {
|
24
|
+
:metric_id => [:puppet, :report, :http],
|
25
|
+
:include_system_store => Puppet[:report_include_system_store],
|
26
|
+
}
|
27
|
+
|
28
|
+
# Puppet's http client implementation accepts userinfo in the URL
|
29
|
+
# but puppetserver's does not. So pass credentials explicitly.
|
24
30
|
if url.user && url.password
|
25
31
|
options[:basic_auth] = {
|
26
|
-
:
|
27
|
-
:
|
32
|
+
user: url.user,
|
33
|
+
password: url.password
|
28
34
|
}
|
29
35
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
+
|
37
|
+
client = Puppet.runtime[:http]
|
38
|
+
client.post(url, self.to_yaml, headers: headers, options: options) do |response|
|
39
|
+
unless response.success?
|
40
|
+
Puppet.err _("Unable to submit report to %{url} [%{code}] %{message}") % { url: Puppet[:reporturl].to_s, code: response.code, message: response.reason }
|
41
|
+
end
|
36
42
|
end
|
37
43
|
end
|
38
44
|
end
|
data/lib/puppet/reports/store.rb
CHANGED
data/lib/puppet/resource.rb
CHANGED
@@ -628,7 +628,8 @@ class Puppet::Resource
|
|
628
628
|
def self.extract_type_and_title(argtype, argtitle)
|
629
629
|
if (argtype.nil? || argtype == :component || argtype == :whit) &&
|
630
630
|
argtitle =~ /^([^\[\]]+)\[(.+)\]$/m then [ $1, $2 ]
|
631
|
-
elsif argtitle.nil? && argtype
|
631
|
+
elsif argtitle.nil? && argtype.is_a?(String) &&
|
632
|
+
argtype =~ /^([^\[\]]+)\[(.+)\]$/m then [ $1, $2 ]
|
632
633
|
elsif argtitle then [ argtype, argtitle ]
|
633
634
|
elsif argtype.is_a?(Puppet::Type) then [ argtype.class.name, argtype.title ]
|
634
635
|
else raise ArgumentError, _("No title provided and %{type} is not a valid resource reference") % { type: argtype.inspect }
|
data/lib/puppet/resource/type.rb
CHANGED
@@ -11,6 +11,7 @@ class Puppet::Resource::Type
|
|
11
11
|
include Puppet::Util::Warnings
|
12
12
|
include Puppet::Util::Errors
|
13
13
|
|
14
|
+
# @deprecated application orchestration will be removed in puppet 7 (capability_mapping, application, site)
|
14
15
|
RESOURCE_KINDS = [:hostclass, :node, :definition, :capability_mapping, :application, :site]
|
15
16
|
|
16
17
|
# Map the names used in our documentation to the names used internally
|
@@ -69,6 +70,8 @@ class Puppet::Resource::Type
|
|
69
70
|
|
70
71
|
# Evaluate the resources produced by the given resource. These resources are
|
71
72
|
# evaluated in a separate but identical scope from the rest of the resource.
|
73
|
+
#
|
74
|
+
# @deprecated application orchestration will be removed in puppet 7
|
72
75
|
def evaluate_produces(resource, scope)
|
73
76
|
# Only defined types and classes can produce capabilities
|
74
77
|
return unless definition? || hostclass?
|
@@ -161,19 +164,23 @@ class Puppet::Resource::Type
|
|
161
164
|
@module_name = options[:module_name]
|
162
165
|
end
|
163
166
|
|
167
|
+
# @deprecated application orchestration will be removed in puppet 7
|
164
168
|
def produces
|
165
169
|
@produces || EMPTY_ARRAY
|
166
170
|
end
|
167
171
|
|
172
|
+
# @deprecated application orchestration will be removed in puppet 7
|
168
173
|
def consumes
|
169
174
|
@consumes || EMPTY_ARRAY
|
170
175
|
end
|
171
176
|
|
177
|
+
# @deprecated application orchestration will be removed in puppet 7
|
172
178
|
def add_produces(blueprint)
|
173
179
|
@produces ||= []
|
174
180
|
@produces << blueprint
|
175
181
|
end
|
176
182
|
|
183
|
+
# @deprecated application orchestration will be removed in puppet 7
|
177
184
|
def add_consumes(blueprint)
|
178
185
|
@consumes ||= []
|
179
186
|
@consumes << blueprint
|
@@ -235,6 +242,7 @@ class Puppet::Resource::Type
|
|
235
242
|
when :node
|
236
243
|
:node
|
237
244
|
when :site
|
245
|
+
# @deprecated application orchestration will be removed in puppet 7
|
238
246
|
:site
|
239
247
|
end
|
240
248
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'puppet/parser/type_loader'
|
2
2
|
require 'puppet/util/file_watcher'
|
3
3
|
require 'puppet/util/warnings'
|
4
|
+
require 'puppet/concurrent/lock'
|
4
5
|
|
5
6
|
# @api private
|
6
7
|
class Puppet::Resource::TypeCollection
|
@@ -28,6 +29,7 @@ class Puppet::Resource::TypeCollection
|
|
28
29
|
@nodes = {}
|
29
30
|
@notfound = {}
|
30
31
|
@sites = []
|
32
|
+
@lock = Puppet::Concurrent::Lock.new
|
31
33
|
|
32
34
|
# So we can keep a list and match the first-defined regex
|
33
35
|
@node_list = []
|
@@ -225,25 +227,27 @@ class Puppet::Resource::TypeCollection
|
|
225
227
|
# Resolve namespaces and find the given object. Autoload it if
|
226
228
|
# necessary.
|
227
229
|
def find_or_load(name, type)
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
230
|
+
@lock.synchronize do
|
231
|
+
# Name is always absolute, but may start with :: which must be removed
|
232
|
+
fqname = (name[0,2] == COLON_COLON ? name[2..-1] : name)
|
233
|
+
|
234
|
+
result = send(type, fqname)
|
235
|
+
unless result
|
236
|
+
if @notfound[ fqname ] && Puppet[ :ignoremissingtypes ]
|
237
|
+
# do not try to autoload if we already tried and it wasn't conclusive
|
238
|
+
# as this is a time consuming operation. Warn the user.
|
239
|
+
# Check first if debugging is on since the call to debug_once is expensive
|
240
|
+
if Puppet[:debug]
|
241
|
+
debug_once _("Not attempting to load %{type} %{fqname} as this object was missing during a prior compilation") % { type: type, fqname: fqname }
|
242
|
+
end
|
243
|
+
else
|
244
|
+
fqname = munge_name(fqname)
|
245
|
+
result = loader.try_load_fqname(type, fqname)
|
246
|
+
@notfound[ fqname ] = result.nil?
|
239
247
|
end
|
240
|
-
else
|
241
|
-
fqname = munge_name(fqname)
|
242
|
-
result = loader.try_load_fqname(type, fqname)
|
243
|
-
@notfound[ fqname ] = result.nil?
|
244
248
|
end
|
249
|
+
result
|
245
250
|
end
|
246
|
-
result
|
247
251
|
end
|
248
252
|
|
249
253
|
def munge_name(name)
|