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
@@ -12,16 +12,16 @@ describe Puppet::Application::Agent do
|
|
12
12
|
before :each do
|
13
13
|
@puppetd = Puppet::Application[:agent]
|
14
14
|
|
15
|
-
@
|
15
|
+
@agent = double('agent')
|
16
|
+
allow(Puppet::Agent).to receive(:new).and_return(@agent)
|
17
|
+
|
18
|
+
@daemon = Puppet::Daemon.new(@agent, nil)
|
16
19
|
allow(@daemon).to receive(:daemonize)
|
17
20
|
allow(@daemon).to receive(:start)
|
18
21
|
allow(@daemon).to receive(:stop)
|
19
22
|
allow(Puppet::Daemon).to receive(:new).and_return(@daemon)
|
20
23
|
Puppet[:daemonize] = false
|
21
24
|
|
22
|
-
@agent = double('agent')
|
23
|
-
allow(Puppet::Agent).to receive(:new).and_return(@agent)
|
24
|
-
|
25
25
|
@puppetd.preinit
|
26
26
|
allow(Puppet::Util::Log).to receive(:newdestination)
|
27
27
|
|
@@ -122,6 +122,10 @@ describe Puppet::Application::Agent do
|
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
|
+
it "should log the agent start time" do
|
126
|
+
expect(@puppetd.options[:start_time]).to be_a(Time)
|
127
|
+
end
|
128
|
+
|
125
129
|
it "should set waitforcert to 0 with --onetime and if --waitforcert wasn't given" do
|
126
130
|
allow(@agent).to receive(:run).and_return(2)
|
127
131
|
Puppet[:onetime] = true
|
@@ -505,7 +509,7 @@ describe Puppet::Application::Agent do
|
|
505
509
|
|
506
510
|
it "should run the agent with the supplied job_id" do
|
507
511
|
@puppetd.options[:job_id] = 'special id'
|
508
|
-
expect(@agent).to receive(:run).with(:job_id => 'special id').and_return(:report)
|
512
|
+
expect(@agent).to receive(:run).with(hash_including(:job_id => 'special id')).and_return(:report)
|
509
513
|
|
510
514
|
expect { execute_agent }.to exit_with 0
|
511
515
|
end
|
@@ -14,14 +14,6 @@ describe Puppet::Application::Apply do
|
|
14
14
|
Puppet[:reports] = "none"
|
15
15
|
end
|
16
16
|
|
17
|
-
after :each do
|
18
|
-
Puppet::Node::Facts.indirection.reset_terminus_class
|
19
|
-
Puppet::Node::Facts.indirection.cache_class = nil
|
20
|
-
|
21
|
-
Puppet::Node.indirection.reset_terminus_class
|
22
|
-
Puppet::Node.indirection.cache_class = nil
|
23
|
-
end
|
24
|
-
|
25
17
|
[:debug,:loadclasses,:test,:verbose,:use_nodes,:detailed_exitcodes,:catalog, :write_catalog_summary].each do |option|
|
26
18
|
it "should declare handle_#{option} method" do
|
27
19
|
expect(@apply).to respond_to("handle_#{option}".to_sym)
|
@@ -182,13 +174,11 @@ describe Puppet::Application::Apply do
|
|
182
174
|
Puppet[:prerun_command] = ''
|
183
175
|
Puppet[:postrun_command] = ''
|
184
176
|
|
185
|
-
Puppet::Node::Facts.indirection.terminus_class = :memory
|
186
|
-
Puppet::Node::Facts.indirection.cache_class = :memory
|
187
177
|
Puppet::Node.indirection.terminus_class = :memory
|
188
178
|
Puppet::Node.indirection.cache_class = :memory
|
189
179
|
|
190
|
-
|
191
|
-
Puppet::Node::Facts.indirection.save(
|
180
|
+
facts = Puppet::Node::Facts.new(Puppet[:node_name_value])
|
181
|
+
Puppet::Node::Facts.indirection.save(facts)
|
192
182
|
|
193
183
|
@node = Puppet::Node.new(Puppet[:node_name_value])
|
194
184
|
Puppet::Node.indirection.save(@node)
|
@@ -3,95 +3,133 @@ require 'spec_helper'
|
|
3
3
|
require 'puppet/application/describe'
|
4
4
|
|
5
5
|
describe Puppet::Application::Describe do
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
let(:describe) { Puppet::Application[:describe] }
|
7
|
+
|
8
|
+
it "lists all types" do
|
9
|
+
describe.command_line.args << '--list'
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
expect {
|
12
|
+
describe.run
|
13
|
+
}.to output(/These are the types known to puppet:/).to_stdout
|
12
14
|
end
|
13
15
|
|
14
|
-
it "
|
15
|
-
|
16
|
+
it "describes a single type" do
|
17
|
+
describe.command_line.args << 'exec'
|
18
|
+
|
19
|
+
expect {
|
20
|
+
describe.run
|
21
|
+
}.to output(/exec.*====.*Executes external commands/m).to_stdout
|
16
22
|
end
|
17
23
|
|
18
|
-
|
19
|
-
|
20
|
-
expect(@describe).to respond_to("handle_#{option}".to_sym)
|
21
|
-
end
|
24
|
+
it "describes multiple types" do
|
25
|
+
describe.command_line.args.concat(['exec', 'file'])
|
22
26
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
27
|
+
expect {
|
28
|
+
describe.run
|
29
|
+
}.to output(/Executes external commands.*Manages files, including their content, ownership, and permissions./m).to_stdout
|
27
30
|
end
|
28
31
|
|
32
|
+
it "describes parameters for the type by default" do
|
33
|
+
describe.command_line.args << 'exec'
|
29
34
|
|
30
|
-
|
31
|
-
|
32
|
-
|
35
|
+
expect {
|
36
|
+
describe.run
|
37
|
+
}.to output(/Parameters\n----------/m).to_stdout
|
38
|
+
end
|
33
39
|
|
34
|
-
|
35
|
-
|
40
|
+
it "lists parameter names, but excludes description in short mode" do
|
41
|
+
describe.command_line.args.concat(['exec', '-s'])
|
42
|
+
|
43
|
+
expect {
|
44
|
+
describe.run
|
45
|
+
}.to output(/Parameters.*command, creates, cwd/m).to_stdout
|
36
46
|
end
|
37
47
|
|
38
|
-
|
39
|
-
|
40
|
-
@describe.handle_short(nil)
|
48
|
+
it "outputs providers for the type" do
|
49
|
+
describe.command_line.args.concat(['exec', '--providers'])
|
41
50
|
|
42
|
-
|
43
|
-
|
51
|
+
expect {
|
52
|
+
describe.run
|
53
|
+
}.to output(/Providers.*#{Regexp.escape('**posix**')}.*#{Regexp.escape('**windows**')}/m).to_stdout
|
44
54
|
end
|
45
55
|
|
46
|
-
|
47
|
-
|
48
|
-
allow(@describe.command_line).to receive(:args).and_return(['1','2'])
|
49
|
-
@describe.setup
|
56
|
+
it "lists metaparameters for a type" do
|
57
|
+
describe.command_line.args.concat(['exec', '--meta'])
|
50
58
|
|
51
|
-
|
52
|
-
|
59
|
+
expect {
|
60
|
+
describe.run
|
61
|
+
}.to output(/Meta Parameters.*#{Regexp.escape('**notify**')}/m).to_stdout
|
53
62
|
end
|
54
63
|
|
55
|
-
|
64
|
+
it "outputs no documentation if the summary is missing" do
|
65
|
+
Puppet::Type.newtype(:describe_test) {}
|
66
|
+
|
67
|
+
describe.command_line.args << '--list'
|
68
|
+
expect {
|
69
|
+
describe.run
|
70
|
+
}.to output(/#{Regexp.escape("describe_test - .. no documentation ..")}/).to_stdout
|
71
|
+
end
|
56
72
|
|
57
|
-
|
58
|
-
|
59
|
-
|
73
|
+
it "outputs the first short sentence ending in a dot" do
|
74
|
+
Puppet::Type.newtype(:describe_test) do
|
75
|
+
@doc = "ends in a dot."
|
60
76
|
end
|
61
77
|
|
62
|
-
|
63
|
-
|
78
|
+
describe.command_line.args << '--list'
|
79
|
+
expect {
|
80
|
+
describe.run
|
81
|
+
}.to output(/#{Regexp.escape("describe_test - ends in a dot\n")}/).to_stdout
|
82
|
+
end
|
64
83
|
|
65
|
-
|
84
|
+
it "outputs the first short sentence missing a dot" do
|
85
|
+
Puppet::Type.newtype(:describe_test) do
|
86
|
+
@doc = "missing a dot"
|
87
|
+
end
|
66
88
|
|
67
|
-
|
89
|
+
describe.command_line.args << '--list'
|
90
|
+
expect {
|
91
|
+
describe.run
|
92
|
+
}.to output(/describe_test - missing a dot\n/).to_stdout
|
93
|
+
end
|
94
|
+
|
95
|
+
it "truncates long summaries ending in a dot" do
|
96
|
+
Puppet::Type.newtype(:describe_test) do
|
97
|
+
@doc = "This sentence is more than 45 characters and ends in a dot."
|
68
98
|
end
|
69
99
|
|
70
|
-
|
71
|
-
|
72
|
-
|
100
|
+
describe.command_line.args << '--list'
|
101
|
+
expect {
|
102
|
+
describe.run
|
103
|
+
}.to output(/#{Regexp.escape("describe_test - This sentence is more than 45 characters and ...")}/).to_stdout
|
104
|
+
end
|
73
105
|
|
74
|
-
|
75
|
-
|
106
|
+
it "truncates long summaries missing a dot" do
|
107
|
+
Puppet::Type.newtype(:describe_test) do
|
108
|
+
@doc = "This sentence is more than 45 characters and is missing a dot"
|
76
109
|
end
|
110
|
+
|
111
|
+
describe.command_line.args << '--list'
|
112
|
+
expect {
|
113
|
+
describe.run
|
114
|
+
}.to output(/#{Regexp.escape("describe_test - This sentence is more than 45 characters and ...")}/).to_stdout
|
77
115
|
end
|
78
116
|
|
79
|
-
it "
|
80
|
-
|
117
|
+
it "formats text with long non-space runs without garbling" do
|
118
|
+
f = Formatter.new(76)
|
81
119
|
|
82
|
-
|
120
|
+
teststring = <<TESTSTRING
|
83
121
|
. 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 nick@magpie.puppetlabs.lan
|
84
122
|
**this part should not repeat!**
|
85
123
|
TESTSTRING
|
86
124
|
|
87
|
-
|
125
|
+
expected_result = <<EXPECTED
|
88
126
|
.
|
89
127
|
1234567890123456789012345678901234567890123456789012345678901234567890123456
|
90
128
|
7890123456789012345678901234567890 nick@magpie.puppetlabs.lan
|
91
129
|
**this part should not repeat!**
|
92
130
|
EXPECTED
|
93
131
|
|
94
|
-
result =
|
95
|
-
expect(result).to eql(
|
132
|
+
result = f.wrap(teststring, {:indent => 0, :scrub => true})
|
133
|
+
expect(result).to eql(expected_result)
|
96
134
|
end
|
97
135
|
end
|
@@ -459,7 +459,7 @@ describe Puppet::Application::Device do
|
|
459
459
|
resource = Puppet::Type.type(:user).new(:name => "jim").to_resource
|
460
460
|
allow(device.command_line).to receive(:args).and_return(['user', 'jim'])
|
461
461
|
expect(Puppet::Resource.indirection).to receive(:find).with('user/jim').and_return(resource)
|
462
|
-
expect(device).to receive(:puts).with("user { 'jim':\n}")
|
462
|
+
expect(device).to receive(:puts).with("user { 'jim':\n ensure => 'absent',\n}")
|
463
463
|
expect { device.main }.to exit_with 0
|
464
464
|
end
|
465
465
|
|
@@ -470,7 +470,7 @@ describe Puppet::Application::Device do
|
|
470
470
|
allow(device.options).to receive(:[]).with(:to_yaml).and_return(true)
|
471
471
|
allow(device.command_line).to receive(:args).and_return(['user'])
|
472
472
|
expect(Puppet::Resource.indirection).to receive(:search).with('user/', {}).and_return(resources)
|
473
|
-
expect(device).to receive(:puts).with("---\nuser:\n title:
|
473
|
+
expect(device).to receive(:puts).with("---\nuser:\n title:\n ensure: absent\n")
|
474
474
|
expect { device.main }.to exit_with 0
|
475
475
|
end
|
476
476
|
end
|
@@ -114,12 +114,31 @@ describe Puppet::Application::Filebucket do
|
|
114
114
|
@filebucket.setup
|
115
115
|
end
|
116
116
|
|
117
|
-
it "should default to the first server_list entry if set" do
|
117
|
+
it "should default to the first good server_list entry if server_list is set" do
|
118
|
+
stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 200)
|
118
119
|
Puppet[:server_list] = "foo,bar,baz"
|
119
120
|
expect(Puppet::FileBucket::Dipper).to receive(:new).with(hash_including(Server: "foo"))
|
120
121
|
@filebucket.setup
|
121
122
|
end
|
122
123
|
|
124
|
+
it "should walk server_list until it finds a good entry" do
|
125
|
+
stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 502)
|
126
|
+
stub_request(:get, "https://bar:8140/status/v1/simple/master").to_return(status: 200)
|
127
|
+
Puppet[:server_list] = "foo,bar,baz"
|
128
|
+
expect(Puppet::FileBucket::Dipper).to receive(:new).with(hash_including(Server: "bar"))
|
129
|
+
@filebucket.setup
|
130
|
+
end
|
131
|
+
|
132
|
+
# FileBucket catches any exceptions raised, logs them, then just exits
|
133
|
+
it "raises an error if there are no functional servers in server_list" do
|
134
|
+
stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 404)
|
135
|
+
stub_request(:get, "https://bar:8140/status/v1/simple/master").to_return(status: 404)
|
136
|
+
Puppet[:server] = 'horacio'
|
137
|
+
Puppet[:server_list] = "foo,bar"
|
138
|
+
|
139
|
+
expect{@filebucket.setup}.to exit_with(1)
|
140
|
+
end
|
141
|
+
|
123
142
|
it "should fall back to server if server_list is empty" do
|
124
143
|
Puppet[:server_list] = ""
|
125
144
|
expect(Puppet::FileBucket::Dipper).to receive(:new).with(hash_including(Server: "puppet"))
|
@@ -127,8 +146,9 @@ describe Puppet::Application::Filebucket do
|
|
127
146
|
end
|
128
147
|
|
129
148
|
it "should take both the server and port specified in server_list" do
|
149
|
+
stub_request(:get, "https://foo:632/status/v1/simple/master").to_return(status: 200)
|
130
150
|
Puppet[:server_list] = "foo:632,bar:6215,baz:351"
|
131
|
-
expect(Puppet::FileBucket::Dipper).to receive(:new).with({ :Server => "foo", :Port =>
|
151
|
+
expect(Puppet::FileBucket::Dipper).to receive(:new).with({ :Server => "foo", :Port => 632 })
|
132
152
|
@filebucket.setup
|
133
153
|
end
|
134
154
|
end
|
@@ -12,9 +12,9 @@ describe Puppet::Application::Resource do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
describe "in preinit" do
|
15
|
-
it "should
|
15
|
+
it "should include provider parameter by default" do
|
16
16
|
@resource_app.preinit
|
17
|
-
expect(@resource_app.extra_params).to eq([])
|
17
|
+
expect(@resource_app.extra_params).to eq([:provider])
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -22,10 +22,6 @@ describe Puppet::Configurer::FactHandler do
|
|
22
22
|
|
23
23
|
let(:facthandler) { FactHandlerTester.new('production') }
|
24
24
|
|
25
|
-
before :each do
|
26
|
-
Puppet::Node::Facts.indirection.terminus_class = :memory
|
27
|
-
end
|
28
|
-
|
29
25
|
describe "when finding facts" do
|
30
26
|
it "should use the node name value to retrieve the facts" do
|
31
27
|
foo_facts = Puppet::Node::Facts.new('foo')
|
@@ -108,7 +104,7 @@ describe Puppet::Configurer::FactHandler do
|
|
108
104
|
expect(text).to include(test_fact[:encoded])
|
109
105
|
|
110
106
|
# this is not sufficient to test whether these values are sent via HTTP GET or HTTP POST in actual catalog request
|
111
|
-
expect(JSON.parse(
|
107
|
+
expect(JSON.parse(Puppet::Util.uri_unescape(to_upload[:facts]))['values']).to eq(test_fact[:hash])
|
112
108
|
end
|
113
109
|
end
|
114
110
|
end
|
@@ -133,7 +129,7 @@ describe Puppet::Configurer::FactHandler do
|
|
133
129
|
expect(to_upload).to eq({:facts_format => 'application/json', :facts => text})
|
134
130
|
expect(text).to include(test_fact[:encoded])
|
135
131
|
|
136
|
-
expect(JSON.parse(
|
132
|
+
expect(JSON.parse(Puppet::Util.uri_unescape(to_upload[:facts]))['values']).to eq(test_fact[:hash])
|
137
133
|
end
|
138
134
|
end
|
139
135
|
end
|
@@ -142,9 +138,9 @@ describe Puppet::Configurer::FactHandler do
|
|
142
138
|
facts = Puppet::Node::Facts.new(Puppet[:node_name_value], 'my_name_fact' => 'other_node_name')
|
143
139
|
Puppet::Node::Facts.indirection.save(facts)
|
144
140
|
|
145
|
-
# prefer
|
141
|
+
# prefer Puppet::Util.uri_unescape but validate CGI also works
|
146
142
|
encoded_facts = facthandler.facts_for_uploading[:facts]
|
147
|
-
expect(
|
143
|
+
expect(Puppet::Util.uri_unescape(encoded_facts)).to validate_against('api/schemas/facts.json')
|
148
144
|
expect(CGI.unescape(encoded_facts)).to validate_against('api/schemas/facts.json')
|
149
145
|
end
|
150
146
|
end
|
@@ -6,13 +6,17 @@ describe Puppet::Configurer::PluginHandler do
|
|
6
6
|
let(:pluginhandler) { Puppet::Configurer::PluginHandler.new() }
|
7
7
|
let(:environment) { Puppet::Node::Environment.create(:myenv, []) }
|
8
8
|
|
9
|
+
before :each do
|
10
|
+
# PluginHandler#load_plugin has an extra-strong rescue clause
|
11
|
+
# this mock is to make sure that we don't silently ignore errors
|
12
|
+
expect(Puppet).not_to receive(:err)
|
13
|
+
end
|
14
|
+
|
9
15
|
context "server agent version is 5.3.4" do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
# Server_agent version needs to be at 5.3.4 in order to mount locales
|
15
|
-
Puppet.push_context({:server_agent_version => "5.3.4"})
|
16
|
+
around do |example|
|
17
|
+
Puppet.override(server_agent_version: "5.3.4") do
|
18
|
+
example.run
|
19
|
+
end
|
16
20
|
end
|
17
21
|
|
18
22
|
it "downloads plugins, facts, and locales" do
|
@@ -43,12 +47,10 @@ describe Puppet::Configurer::PluginHandler do
|
|
43
47
|
end
|
44
48
|
|
45
49
|
context "server agent version is 5.3.3" do
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
# Server_agent version needs to be at 5.3.4 in order to mount locales
|
51
|
-
Puppet.push_context({:server_agent_version => "5.3.3"})
|
50
|
+
around do |example|
|
51
|
+
Puppet.override(server_agent_version: "5.3.3") do
|
52
|
+
example.run
|
53
|
+
end
|
52
54
|
end
|
53
55
|
|
54
56
|
it "returns downloaded plugin, fact, but not locale filenames" do
|
@@ -69,15 +71,30 @@ describe Puppet::Configurer::PluginHandler do
|
|
69
71
|
end
|
70
72
|
|
71
73
|
context "blank server agent version" do
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
74
|
+
around do |example|
|
75
|
+
Puppet.override(server_agent_version: "") do
|
76
|
+
example.run
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it "returns downloaded plugin, fact, but not locale filenames" do
|
81
|
+
times_called = 0
|
82
|
+
allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) do
|
83
|
+
times_called += 1
|
84
|
+
|
85
|
+
if times_called == 1
|
86
|
+
%w[/a]
|
87
|
+
else
|
88
|
+
%w[/b]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b])
|
93
|
+
expect(times_called).to eq(2)
|
79
94
|
end
|
95
|
+
end
|
80
96
|
|
97
|
+
context "nil server agent version" do
|
81
98
|
it "returns downloaded plugin, fact, but not locale filenames" do
|
82
99
|
times_called = 0
|
83
100
|
allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) do
|
@@ -4,20 +4,18 @@ require 'webmock/rspec'
|
|
4
4
|
|
5
5
|
describe Puppet::Configurer do
|
6
6
|
before do
|
7
|
-
Puppet::Node::Facts.indirection.terminus_class = :memory
|
8
|
-
Puppet::Node::Facts.indirection.save(facts)
|
9
|
-
|
10
7
|
Puppet[:server] = "puppetmaster"
|
11
8
|
Puppet[:report] = true
|
12
9
|
|
13
10
|
catalog.add_resource(resource)
|
14
11
|
end
|
15
12
|
|
13
|
+
let(:node_name) { Puppet[:node_name_value] }
|
16
14
|
let(:configurer) { Puppet::Configurer.new }
|
17
15
|
let(:report) { Puppet::Transaction::Report.new }
|
18
|
-
let(:catalog) { Puppet::Resource::Catalog.new(
|
16
|
+
let(:catalog) { Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote(Puppet[:environment].to_sym)) }
|
19
17
|
let(:resource) { Puppet::Resource.new(:notice, 'a') }
|
20
|
-
let(:facts) { Puppet::Node::Facts.new(
|
18
|
+
let(:facts) { Puppet::Node::Facts.new(node_name) }
|
21
19
|
|
22
20
|
describe "when executing a pre-run hook" do
|
23
21
|
it "should do nothing if the hook is set to an empty string" do
|
@@ -104,6 +102,7 @@ describe Puppet::Configurer do
|
|
104
102
|
end
|
105
103
|
|
106
104
|
it "should respect node_name_fact when setting the host on a report" do
|
105
|
+
Puppet[:node_name_value] = nil
|
107
106
|
Puppet[:node_name_fact] = 'my_name_fact'
|
108
107
|
facts.values = {'my_name_fact' => 'node_name_from_fact'}
|
109
108
|
Puppet::Node::Facts.indirection.save(facts)
|
@@ -149,7 +148,7 @@ describe Puppet::Configurer do
|
|
149
148
|
configurer = Puppet::Configurer.new("test_tuuid", "test_jid")
|
150
149
|
|
151
150
|
report = Puppet::Transaction::Report.new(nil, "test", "aaaa")
|
152
|
-
expect(Puppet::Transaction::Report).to receive(:new).with(anything, anything, 'test_tuuid', 'test_jid').and_return(report)
|
151
|
+
expect(Puppet::Transaction::Report).to receive(:new).with(anything, anything, 'test_tuuid', 'test_jid', anything).and_return(report)
|
153
152
|
expect(configurer).to receive(:send_report).with(report)
|
154
153
|
|
155
154
|
configurer.run
|
@@ -319,7 +318,7 @@ describe Puppet::Configurer do
|
|
319
318
|
end
|
320
319
|
|
321
320
|
it "should refetch the catalog if the server specifies a new environment in the catalog" do
|
322
|
-
catalog = Puppet::Resource::Catalog.new(
|
321
|
+
catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
|
323
322
|
expect(configurer).to receive(:retrieve_catalog).and_return(catalog).twice
|
324
323
|
|
325
324
|
configurer.run
|
@@ -614,7 +613,7 @@ describe Puppet::Configurer do
|
|
614
613
|
end
|
615
614
|
|
616
615
|
it "should set its cached_catalog_status to 'explicitly requested' if the cached catalog is from a different environment" do
|
617
|
-
cached_catalog = Puppet::Resource::Catalog.new(
|
616
|
+
cached_catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
|
618
617
|
expects_cached_catalog_only(cached_catalog)
|
619
618
|
|
620
619
|
options = {}
|
@@ -647,7 +646,7 @@ describe Puppet::Configurer do
|
|
647
646
|
end
|
648
647
|
|
649
648
|
it "should return the cached catalog when the environment doesn't match" do
|
650
|
-
cached_catalog = Puppet::Resource::Catalog.new(
|
649
|
+
cached_catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
|
651
650
|
expects_cached_catalog_only(cached_catalog)
|
652
651
|
|
653
652
|
allow(Puppet).to receive(:info)
|
@@ -705,7 +704,7 @@ describe Puppet::Configurer do
|
|
705
704
|
Puppet[:environment] = 'second_env'
|
706
705
|
configurer = Puppet::Configurer.new
|
707
706
|
|
708
|
-
catalog = Puppet::Resource::Catalog.new(
|
707
|
+
catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote("production"))
|
709
708
|
expects_new_catalog_only(catalog)
|
710
709
|
|
711
710
|
expect(Puppet).to receive(:err).with("Not using catalog because its environment 'production' does not match agent specified environment 'second_env' and strict_environment_mode is set")
|
@@ -727,7 +726,7 @@ describe Puppet::Configurer do
|
|
727
726
|
Puppet[:environment] = 'second_env'
|
728
727
|
configurer = Puppet::Configurer.new
|
729
728
|
|
730
|
-
catalog = Puppet::Resource::Catalog.new(
|
729
|
+
catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote("production"))
|
731
730
|
expects_cached_catalog_only(catalog)
|
732
731
|
|
733
732
|
expect(Puppet).to receive(:err).with("Not using catalog because its environment 'production' does not match agent specified environment 'second_env' and strict_environment_mode is set")
|
@@ -827,7 +826,7 @@ describe Puppet::Configurer do
|
|
827
826
|
end
|
828
827
|
|
829
828
|
it "should return nil if its cached catalog environment doesn't match server-specified environment" do
|
830
|
-
cached_catalog = Puppet::Resource::Catalog.new(
|
829
|
+
cached_catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
|
831
830
|
|
832
831
|
expects_fallback_to_cached_catalog(cached_catalog)
|
833
832
|
|
@@ -837,7 +836,7 @@ describe Puppet::Configurer do
|
|
837
836
|
end
|
838
837
|
|
839
838
|
it "should set its cached_catalog_status to 'not_used' if the cached catalog environment doesn't match server-specified environment" do
|
840
|
-
cached_catalog = Puppet::Resource::Catalog.new(
|
839
|
+
cached_catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
|
841
840
|
|
842
841
|
expects_fallback_to_cached_catalog(cached_catalog)
|
843
842
|
|
@@ -857,7 +856,7 @@ describe Puppet::Configurer do
|
|
857
856
|
it "should not update the cached catalog in noop mode" do
|
858
857
|
Puppet[:noop] = true
|
859
858
|
|
860
|
-
stub_request(:
|
859
|
+
stub_request(:post, %r{/puppet/v3/catalog}).to_return(:status => 200, :body => catalog.render(:json), :headers => {'Content-Type' => 'application/json'})
|
861
860
|
|
862
861
|
Puppet::Resource::Catalog.indirection.cache_class = :json
|
863
862
|
path = Puppet::Resource::Catalog.indirection.cache.path(catalog.name)
|
@@ -871,7 +870,7 @@ describe Puppet::Configurer do
|
|
871
870
|
Puppet[:noop] = false
|
872
871
|
Puppet[:log_level] = 'info'
|
873
872
|
|
874
|
-
stub_request(:
|
873
|
+
stub_request(:post, %r{/puppet/v3/catalog}).to_return(:status => 200, :body => catalog.render(:json), :headers => {'Content-Type' => 'application/json'})
|
875
874
|
|
876
875
|
Puppet::Resource::Catalog.indirection.cache_class = :json
|
877
876
|
cache_path = Puppet::Resource::Catalog.indirection.cache.path(Puppet[:node_name_value])
|
@@ -884,7 +883,7 @@ describe Puppet::Configurer do
|
|
884
883
|
end
|
885
884
|
|
886
885
|
it "successfully applies the catalog without a cache" do
|
887
|
-
stub_request(:
|
886
|
+
stub_request(:post, %r{/puppet/v3/catalog}).to_return(:status => 200, :body => catalog.render(:json), :headers => {'Content-Type' => 'application/json'})
|
888
887
|
|
889
888
|
Puppet::Resource::Catalog.indirection.cache_class = nil
|
890
889
|
|
@@ -999,7 +998,7 @@ describe Puppet::Configurer do
|
|
999
998
|
|
1000
999
|
it "should not failover during an apply run" do
|
1001
1000
|
Puppet.settings[:server_list] = ["myserver:123"]
|
1002
|
-
catalog = Puppet::Resource::Catalog.new(
|
1001
|
+
catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote(Puppet[:environment].to_sym))
|
1003
1002
|
configurer.run(catalog: catalog)
|
1004
1003
|
end
|
1005
1004
|
|
@@ -1044,7 +1043,7 @@ describe Puppet::Configurer do
|
|
1044
1043
|
Puppet::Resource::Catalog.indirection.terminus_class = :rest
|
1045
1044
|
|
1046
1045
|
stub_request(:get, 'https://myserver:123/status/v1/simple/master').to_return(status: 200)
|
1047
|
-
stub_request(:
|
1046
|
+
stub_request(:post, %r{https://myserver:123/puppet/v3/catalog}).to_return(status: 200)
|
1048
1047
|
node_request = stub_request(:get, %r{https://myserver:123/puppet/v3/node/}).to_return(status: 200)
|
1049
1048
|
|
1050
1049
|
configurer.run
|