puppet 6.13.0-x86-mingw32 → 6.18.0-x86-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 +36 -32
- data/README.md +17 -24
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +33 -9
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- data/lib/puppet/application/apply.rb +18 -20
- 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/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/configurer.rb +58 -57
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +92 -12
- data/lib/puppet/environments.rb +4 -5
- data/lib/puppet/face/facts.rb +1 -1
- 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/feature/base.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +17 -13
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- 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/lstrip.rb +4 -4
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +3 -0
- data/lib/puppet/http/client.rb +263 -73
- 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 +97 -12
- data/lib/puppet/http/service/ca.rb +76 -14
- data/lib/puppet/http/service/compiler.rb +249 -16
- data/lib/puppet/http/service/file_server.rb +141 -20
- data/lib/puppet/http/service/report.rb +47 -17
- data/lib/puppet/http/session.rb +96 -7
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- 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 +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- 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/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- 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 +2 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +1 -0
- data/lib/puppet/network/http/pool.rb +8 -5
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +22 -5
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +30 -31
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- 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 -9
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- 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/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +24 -15
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +9 -4
- 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 +98 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +61 -14
- data/lib/puppet/provider/package/gem.rb +45 -9
- 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/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 +11 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +100 -20
- data/lib/puppet/provider/package/zypper.rb +62 -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 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +16 -5
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reports/http.rb +15 -9
- 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 +3 -1
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- 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/validator/default_validator.rb +1 -1
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +21 -14
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +3 -3
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +21 -8
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +75 -64
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +41 -3
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -29
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +13 -25
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +1 -10
- 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 +13 -7
- data/lib/puppet/util/platform.rb +5 -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/windows.rb +1 -0
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- 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 +5 -4
- 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 +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +641 -511
- data/man/man5/puppet.conf.5 +75 -10
- 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 +2 -2
- 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/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -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 -67
- 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 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -65
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -67
- 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 -67
- data/spec/integration/application/agent_spec.rb +475 -0
- data/spec/integration/application/apply_spec.rb +279 -150
- data/spec/integration/application/config_spec.rb +74 -0
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +239 -0
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +123 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +47 -37
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/indirector/report/yaml.rb +83 -0
- 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/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +127 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +12 -9
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +39 -10
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +64 -46
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +24 -1
- data/spec/unit/environments_spec.rb +8 -0
- data/spec/unit/face/config_spec.rb +3 -1
- 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/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +29 -0
- data/spec/unit/file_system_spec.rb +10 -0
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +321 -36
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -3
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -12
- data/spec/unit/http/service/compiler_spec.rb +332 -28
- data/spec/unit/http/service/file_server_spec.rb +100 -12
- data/spec/unit/http/service/report_spec.rb +19 -9
- data/spec/unit/http/service_spec.rb +94 -6
- data/spec/unit/http/session_spec.rb +159 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- 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/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http/pool_spec.rb +59 -13
- 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 +33 -0
- 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 +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/provider/group/groupadd_spec.rb +22 -8
- 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 +107 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
- data/spec/unit/provider/package/gem_spec.rb +40 -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/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 +12 -1
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +243 -1
- data/spec/unit/provider/package/zypper_spec.rb +98 -0
- data/spec/unit/provider/service/init_spec.rb +42 -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 +93 -18
- data/spec/unit/provider/service/windows_spec.rb +50 -14
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +30 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
- data/spec/unit/puppet_pal_2pec.rb +11 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
- data/spec/unit/puppet_spec.rb +33 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/reports/store_spec.rb +17 -13
- 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/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 +15 -0
- 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/service_spec.rb +218 -8
- data/spec/unit/type/user_spec.rb +32 -3
- 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/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- 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 +102 -54
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- 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 +84 -52
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -64
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
@@ -176,6 +176,19 @@ describe Puppet::Type.type(:package).provider(:zypper) do
|
|
176
176
|
@provider.install
|
177
177
|
end
|
178
178
|
|
179
|
+
it "should install the package with --no-gpg-checks" do
|
180
|
+
allow(@resource).to receive(:[]).with(:name).and_return("php5")
|
181
|
+
allow(@resource).to receive(:[]).with(:install_options).and_return(['--no-gpg-checks', {'-p' => '/vagrant/files/localrepo/'}])
|
182
|
+
allow(@resource).to receive(:should).with(:ensure).and_return("5.4.10-4.5.6")
|
183
|
+
allow(@resource).to receive(:allow_virtual?).and_return(false)
|
184
|
+
allow(@provider).to receive(:zypper_version).and_return("1.2.8")
|
185
|
+
|
186
|
+
expect(@provider).to receive(:zypper).with('--quiet', '--no-gpg-checks', :install,
|
187
|
+
'--auto-agree-with-licenses', '--no-confirm', '-p=/vagrant/files/localrepo/', 'php5-5.4.10-4.5.6')
|
188
|
+
expect(@provider).to receive(:query).and_return("php5 0 5.4.10 4.5.6 x86_64")
|
189
|
+
@provider.install
|
190
|
+
end
|
191
|
+
|
179
192
|
it "should install package with hash install options" do
|
180
193
|
allow(@resource).to receive(:[]).with(:name).and_return('vim')
|
181
194
|
allow(@resource).to receive(:[]).with(:install_options).and_return([{ '--a' => 'foo', '--b' => '"quoted bar"' }])
|
@@ -226,4 +239,89 @@ describe Puppet::Type.type(:package).provider(:zypper) do
|
|
226
239
|
@provider.uninstall
|
227
240
|
end
|
228
241
|
end
|
242
|
+
|
243
|
+
context 'when installing with VersionRange' do
|
244
|
+
let(:search_output) { File.read(my_fixture('zypper-search-uninstalled.out')) }
|
245
|
+
|
246
|
+
before(:each) do
|
247
|
+
allow(@resource).to receive(:[]).with(:name).and_return('vim')
|
248
|
+
allow(@resource).to receive(:allow_virtual?).and_return(false)
|
249
|
+
allow(@provider).to receive(:zypper_version).and_return('1.0.2')
|
250
|
+
|
251
|
+
expect(@provider).to receive(:zypper).with('search', '--match-exact', '--type', 'package', '--uninstalled-only', '-s', 'vim')
|
252
|
+
.and_return(search_output)
|
253
|
+
end
|
254
|
+
|
255
|
+
it 'does install the package if version is available' do
|
256
|
+
expect(@resource).to receive(:should).with(:ensure).and_return('>1.0')
|
257
|
+
|
258
|
+
expect(@provider).to receive(:zypper).with('--quiet', :install, '--auto-agree-with-licenses', '--no-confirm', 'vim-1.0.20040813-19.9')
|
259
|
+
expect(@provider).to receive(:query).and_return('vim 0 1.0.20040813 19.9 x86_64')
|
260
|
+
|
261
|
+
@provider.install
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'does consider range as version if version in range is not available' do
|
265
|
+
allow(@resource).to receive(:should).with(:ensure).and_return('>2.0')
|
266
|
+
|
267
|
+
expect(@provider).to receive(:zypper).with('--quiet', :install, '--auto-agree-with-licenses', '--no-confirm', 'vim->2.0')
|
268
|
+
.and_raise(Puppet::ExecutionFailure.new('My Error'))
|
269
|
+
|
270
|
+
expect { @provider.install }.to raise_error(Puppet::ExecutionFailure, 'My Error')
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
describe 'insync?' do
|
275
|
+
subject { @provider.insync?('1.19-2') }
|
276
|
+
|
277
|
+
context 'when versions are matching' do
|
278
|
+
before { allow(@resource).to receive(:[]).with(:ensure).and_return('1.19-2') }
|
279
|
+
|
280
|
+
it { is_expected.to be true }
|
281
|
+
end
|
282
|
+
|
283
|
+
context 'when version are not matching' do
|
284
|
+
before { allow(@resource).to receive(:[]).with(:ensure).and_return('1.19-3') }
|
285
|
+
|
286
|
+
it { is_expected.to be false }
|
287
|
+
end
|
288
|
+
|
289
|
+
context 'when version is in gt range' do
|
290
|
+
before { allow(@resource).to receive(:[]).with(:ensure).and_return('>1.19-0') }
|
291
|
+
|
292
|
+
it { is_expected.to be true }
|
293
|
+
end
|
294
|
+
|
295
|
+
context 'when version is not in gt range' do
|
296
|
+
before { allow(@resource).to receive(:[]).with(:ensure).and_return('>1.19-2') }
|
297
|
+
|
298
|
+
it { is_expected.to be false }
|
299
|
+
end
|
300
|
+
|
301
|
+
context 'when version is in min-max range' do
|
302
|
+
before { allow(@resource).to receive(:[]).with(:ensure).and_return('>1.19-0 <1.19-3') }
|
303
|
+
|
304
|
+
it { is_expected.to be true }
|
305
|
+
end
|
306
|
+
|
307
|
+
context 'when version is not in min-max range' do
|
308
|
+
before { allow(@resource).to receive(:[]).with(:ensure).and_return('>1.19-0 <1.19-2') }
|
309
|
+
|
310
|
+
it { is_expected.to be false }
|
311
|
+
end
|
312
|
+
|
313
|
+
context 'when using eq range' do
|
314
|
+
context 'when ensure without release' do
|
315
|
+
before { allow(@resource).to receive(:[]).with(:ensure).and_return('1.19') }
|
316
|
+
|
317
|
+
it { is_expected.to be true }
|
318
|
+
end
|
319
|
+
|
320
|
+
context 'when ensure with release' do
|
321
|
+
before { allow(@resource).to receive(:[]).with(:ensure).and_return('1.19-2') }
|
322
|
+
|
323
|
+
it { is_expected.to be true }
|
324
|
+
end
|
325
|
+
end
|
326
|
+
end
|
229
327
|
end
|
@@ -38,6 +38,47 @@ describe 'Puppet::Type::Service::Provider::Init', unless: Puppet::Util::Platform
|
|
38
38
|
%w{functions.sh reboot.sh shutdown.sh functions halt killall single linuxconf reboot boot wait-for-state rcS module-init-tools}
|
39
39
|
end
|
40
40
|
|
41
|
+
describe "when running on FreeBSD" do
|
42
|
+
before :each do
|
43
|
+
allow(Facter).to receive(:value).with(:operatingsystem).and_return('FreeBSD')
|
44
|
+
allow(Facter).to receive(:value).with(:osfamily).and_return('FreeBSD')
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should set its default path to include /etc/rc.d and /usr/local/etc/rc.d" do
|
48
|
+
expect(provider_class.defpath).to eq(["/etc/rc.d", "/usr/local/etc/rc.d"])
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "when running on HP-UX" do
|
53
|
+
before :each do
|
54
|
+
allow(Facter).to receive(:value).with(:operatingsystem).and_return('HP-UX')
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should set its default path to include /sbin/init.d" do
|
58
|
+
expect(provider_class.defpath).to eq("/sbin/init.d")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "when running on Archlinux" do
|
63
|
+
before :each do
|
64
|
+
allow(Facter).to receive(:value).with(:operatingsystem).and_return('Archlinux')
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should set its default path to include /etc/rc.d" do
|
68
|
+
expect(provider_class.defpath).to eq("/etc/rc.d")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "when not running on FreeBSD, HP-UX or Archlinux" do
|
73
|
+
before :each do
|
74
|
+
allow(Facter).to receive(:value).with(:operatingsystem).and_return('RedHat')
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should set its default path to include /etc/init.d" do
|
78
|
+
expect(provider_class.defpath).to eq("/etc/init.d")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
41
82
|
describe "when getting all service instances" do
|
42
83
|
before :each do
|
43
84
|
allow(provider_class).to receive(:defpath).and_return('tmp')
|
@@ -150,6 +191,7 @@ describe 'Puppet::Type::Service::Provider::Init', unless: Puppet::Util::Platform
|
|
150
191
|
|
151
192
|
describe "if the init script is present" do
|
152
193
|
before :each do
|
194
|
+
allow(File).to receive(:directory?).and_call_original
|
153
195
|
allow(File).to receive(:directory?).with("/service/path").and_return(true)
|
154
196
|
allow(File).to receive(:directory?).with("/alt/service/path").and_return(true)
|
155
197
|
allow(Puppet::FileSystem).to receive(:exist?).with("/service/path/myservice").and_return(true)
|
@@ -12,6 +12,15 @@ describe 'Puppet::Type::Service::Provider::Openbsd',
|
|
12
12
|
allow(FileTest).to receive(:executable?).with('/usr/sbin/rcctl').and_return(true)
|
13
13
|
end
|
14
14
|
|
15
|
+
# `execute` and `texecute` start a new process, consequently setting $CHILD_STATUS to a Process::Status instance,
|
16
|
+
# but because they are mocked, an external process is never executed and $CHILD_STATUS remain nil.
|
17
|
+
# In order to execute some parts of the code under test and to mock $CHILD_STATUS, we need this variable to be a
|
18
|
+
# Process::Status instance. We can achieve this by starting a process that does nothing (exit 0). By doing this,
|
19
|
+
# $CHILD_STATUS will be initialised with a instance of Process::Status and we will be able to mock it.
|
20
|
+
before(:all) do
|
21
|
+
`exit 0`
|
22
|
+
end
|
23
|
+
|
15
24
|
context "#instances" do
|
16
25
|
it "should have an instances method" do
|
17
26
|
expect(provider_class).to respond_to :instances
|
@@ -28,6 +28,7 @@ describe 'Puppet::Type::Service::Provider::Openwrt',
|
|
28
28
|
allow(FileTest).to receive(:executable?).with('/etc/rc.common').and_return(true)
|
29
29
|
|
30
30
|
# All OpenWrt tests operate on the init script directly. It must exist.
|
31
|
+
allow(File).to receive(:directory?).and_call_original
|
31
32
|
allow(File).to receive(:directory?).with('/etc/init.d').and_return(true)
|
32
33
|
|
33
34
|
allow(Puppet::FileSystem).to receive(:exist?).with('/etc/init.d/myservice').and_return(true)
|
@@ -4,6 +4,15 @@ describe 'Puppet::Type::Service::Provider::Redhat',
|
|
4
4
|
if: Puppet.features.posix? && !Puppet::Util::Platform.jruby?do
|
5
5
|
let(:provider_class) { Puppet::Type.type(:service).provider(:redhat) }
|
6
6
|
|
7
|
+
# `execute` and `texecute` start a new process, consequently setting $CHILD_STATUS to a Process::Status instance,
|
8
|
+
# but because they are mocked, an external process is never executed and $CHILD_STATUS remain nil.
|
9
|
+
# In order to execute some parts of the code under test and to mock $CHILD_STATUS, we need this variable to be a
|
10
|
+
# Process::Status instance. We can achieve this by starting a process that does nothing (exit 0). By doing this,
|
11
|
+
# $CHILD_STATUS will be initialised with a instance of Process::Status and we will be able to mock it.
|
12
|
+
before(:all) do
|
13
|
+
`exit 0`
|
14
|
+
end
|
15
|
+
|
7
16
|
before :each do
|
8
17
|
@class = Puppet::Type.type(:service).provider(:redhat)
|
9
18
|
@resource = double('resource')
|
@@ -1,18 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe 'Puppet::Type::Service::Provider::Systemd', unless: Puppet::Util::Platform.jruby? do
|
3
|
+
describe 'Puppet::Type::Service::Provider::Systemd', unless: Puppet::Util::Platform.jruby? || Puppet::Util::Platform.windows? do
|
4
4
|
let(:provider_class) { Puppet::Type.type(:service).provider(:systemd) }
|
5
|
-
if Puppet::Util::Platform.windows?
|
6
|
-
# Get a pid for $CHILD_STATUS to latch on to
|
7
|
-
command = "cmd.exe /c \"exit 0\""
|
8
|
-
Puppet::Util::Execution.execute(command, {:failonfail => false})
|
9
|
-
end
|
10
5
|
|
11
6
|
before :each do
|
12
7
|
allow(Puppet::Type.type(:service)).to receive(:defaultprovider).and_return(provider_class)
|
13
8
|
allow(provider_class).to receive(:which).with('systemctl').and_return('/bin/systemctl')
|
14
9
|
end
|
15
10
|
|
11
|
+
# `execute` and `texecute` start a new process, consequently setting $CHILD_STATUS to a Process::Status instance,
|
12
|
+
# but because they are mocked, an external process is never executed and $CHILD_STATUS remain nil.
|
13
|
+
# In order to execute some parts of the code under test and to mock $CHILD_STATUS, we need this variable to be a
|
14
|
+
# Process::Status instance. We can achieve this by starting a process that does nothing (exit 0). By doing this,
|
15
|
+
# $CHILD_STATUS will be initialised with a instance of Process::Status and we will be able to mock it.
|
16
|
+
before(:all) do
|
17
|
+
`exit 0`
|
18
|
+
end
|
19
|
+
|
16
20
|
let :provider do
|
17
21
|
provider_class.new(:name => 'sshd.service')
|
18
22
|
end
|
@@ -187,8 +191,18 @@ describe 'Puppet::Type::Service::Provider::Systemd', unless: Puppet::Util::Platf
|
|
187
191
|
autovt@.service
|
188
192
|
avahi-daemon.service
|
189
193
|
blk-availability.service
|
194
|
+
apparmor.service
|
195
|
+
umountnfs.service
|
196
|
+
urandom.service
|
197
|
+
brandbot.service
|
190
198
|
})
|
191
199
|
end
|
200
|
+
|
201
|
+
it "should print a debug message when a service with the state `bad` is found" do
|
202
|
+
expect(provider_class).to receive(:systemctl).with('list-unit-files', '--type', 'service', '--full', '--all', '--no-pager').and_return(File.read(my_fixture('list_unit_files_services')))
|
203
|
+
expect(Puppet).to receive(:debug).with("apparmor.service marked as bad by `systemctl`. It is recommended to be further checked.")
|
204
|
+
provider_class.instances
|
205
|
+
end
|
192
206
|
end
|
193
207
|
|
194
208
|
describe "#start" do
|
@@ -269,43 +283,43 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
|
|
269
283
|
describe "#enabled?" do
|
270
284
|
it "should return :true if the service is enabled" do
|
271
285
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
272
|
-
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
273
|
-
|
286
|
+
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
287
|
+
and_return(Puppet::Util::Execution::ProcessOutput.new("enabled\n", 0))
|
274
288
|
expect(provider.enabled?).to eq(:true)
|
275
289
|
end
|
276
290
|
|
277
291
|
it "should return :true if the service is static" do
|
278
292
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
279
|
-
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled','--', 'sshd.service'], :failonfail => false).
|
280
|
-
|
293
|
+
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled','--', 'sshd.service'], :failonfail => false).
|
294
|
+
and_return(Puppet::Util::Execution::ProcessOutput.new("static\n", 0))
|
281
295
|
expect(provider.enabled?).to eq(:true)
|
282
296
|
end
|
283
297
|
|
284
298
|
it "should return :false if the service is disabled" do
|
285
299
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
286
|
-
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
287
|
-
|
300
|
+
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
301
|
+
and_return(Puppet::Util::Execution::ProcessOutput.new("disabled\n", 1))
|
288
302
|
expect(provider.enabled?).to eq(:false)
|
289
303
|
end
|
290
304
|
|
291
305
|
it "should return :false if the service is indirect" do
|
292
306
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
293
|
-
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
294
|
-
|
307
|
+
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
308
|
+
and_return(Puppet::Util::Execution::ProcessOutput.new("indirect\n", 0))
|
295
309
|
expect(provider.enabled?).to eq(:false)
|
296
310
|
end
|
297
311
|
|
298
312
|
it "should return :false if the service is masked and the resource is attempting to be disabled" do
|
299
313
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service', :enable => false))
|
300
|
-
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
301
|
-
|
314
|
+
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
315
|
+
and_return(Puppet::Util::Execution::ProcessOutput.new("masked\n", 1))
|
302
316
|
expect(provider.enabled?).to eq(:false)
|
303
317
|
end
|
304
318
|
|
305
319
|
it "should return :mask if the service is masked and the resource is attempting to be masked" do
|
306
320
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service', :enable => 'mask'))
|
307
|
-
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
308
|
-
|
321
|
+
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
|
322
|
+
and_return(Puppet::Util::Execution::ProcessOutput.new("masked\n", 1))
|
309
323
|
expect(provider.enabled?).to eq(:mask)
|
310
324
|
end
|
311
325
|
end
|
@@ -428,6 +442,67 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
|
|
428
442
|
end
|
429
443
|
end
|
430
444
|
|
445
|
+
describe "#insync_enabled?" do
|
446
|
+
let(:provider) do
|
447
|
+
provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service', :enable => false))
|
448
|
+
end
|
449
|
+
|
450
|
+
before do
|
451
|
+
allow(provider).to receive(:cached_enabled?).and_return({ output: service_state, exitcode: 0 })
|
452
|
+
end
|
453
|
+
|
454
|
+
context 'when service state is static' do
|
455
|
+
let(:service_state) { 'static' }
|
456
|
+
|
457
|
+
it 'is always enabled_insync even if current value is the same as expected' do
|
458
|
+
expect(provider).to be_enabled_insync(:false)
|
459
|
+
end
|
460
|
+
|
461
|
+
it 'is always enabled_insync even if current value is not the same as expected' do
|
462
|
+
expect(provider).to be_enabled_insync(:true)
|
463
|
+
end
|
464
|
+
|
465
|
+
it 'logs a debug messsage' do
|
466
|
+
expect(Puppet).to receive(:debug).with("Unable to enable or disable static service sshd.service")
|
467
|
+
provider.enabled_insync?(:true)
|
468
|
+
end
|
469
|
+
end
|
470
|
+
|
471
|
+
context 'when service state is indirect' do
|
472
|
+
let(:service_state) { 'indirect' }
|
473
|
+
|
474
|
+
it 'is always enabled_insync even if current value is the same as expected' do
|
475
|
+
expect(provider).to be_enabled_insync(:false)
|
476
|
+
end
|
477
|
+
|
478
|
+
it 'is always enabled_insync even if current value is not the same as expected' do
|
479
|
+
expect(provider).to be_enabled_insync(:true)
|
480
|
+
end
|
481
|
+
|
482
|
+
it 'logs a debug messsage' do
|
483
|
+
expect(Puppet).to receive(:debug).with("Service sshd.service is in 'indirect' state and cannot be enabled/disabled")
|
484
|
+
provider.enabled_insync?(:true)
|
485
|
+
end
|
486
|
+
end
|
487
|
+
|
488
|
+
context 'when service state is enabled' do
|
489
|
+
let(:service_state) { 'enabled' }
|
490
|
+
|
491
|
+
it 'is enabled_insync if current value is the same as expected' do
|
492
|
+
expect(provider).to be_enabled_insync(:false)
|
493
|
+
end
|
494
|
+
|
495
|
+
it 'is not enabled_insync if current value is not the same as expected' do
|
496
|
+
expect(provider).not_to be_enabled_insync(:true)
|
497
|
+
end
|
498
|
+
|
499
|
+
it 'logs no debug messsage' do
|
500
|
+
expect(Puppet).not_to receive(:debug)
|
501
|
+
provider.enabled_insync?(:true)
|
502
|
+
end
|
503
|
+
end
|
504
|
+
end
|
505
|
+
|
431
506
|
describe "#get_start_link_count" do
|
432
507
|
it "should strip the '.service' from the search if present in the resource name" do
|
433
508
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
@@ -58,7 +58,7 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
58
58
|
it "should enable if managing enable and enable is true" do
|
59
59
|
resource[:enable] = :true
|
60
60
|
expect(service_util).to receive(:start)
|
61
|
-
expect(service_util).to receive(:
|
61
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START})
|
62
62
|
|
63
63
|
provider.start
|
64
64
|
end
|
@@ -66,7 +66,7 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
66
66
|
it "should manual start if managing enable and enable is false" do
|
67
67
|
resource[:enable] = :false
|
68
68
|
expect(service_util).to receive(:start)
|
69
|
-
expect(service_util).to receive(:
|
69
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DEMAND_START})
|
70
70
|
|
71
71
|
provider.start
|
72
72
|
end
|
@@ -88,6 +88,14 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
88
88
|
expect(provider.status).to eql(:stopped)
|
89
89
|
end
|
90
90
|
|
91
|
+
it "should report service as stopped when status cannot be retrieved" do
|
92
|
+
allow(service_util).to receive(:exists?).with(resource[:name]).and_return(true)
|
93
|
+
allow(service_util).to receive(:service_state).with(name).and_raise(Puppet::Error.new('Service query failed: The specified path is invalid.'))
|
94
|
+
|
95
|
+
expect(Puppet).to receive(:warning).with("Status for service #{resource[:name]} could not be retrieved: Service query failed: The specified path is invalid.")
|
96
|
+
expect(provider.status).to eql(:stopped)
|
97
|
+
end
|
98
|
+
|
91
99
|
[
|
92
100
|
:SERVICE_PAUSED,
|
93
101
|
:SERVICE_PAUSE_PENDING
|
@@ -119,6 +127,34 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
119
127
|
expect(provider.status).to eq(:running)
|
120
128
|
end
|
121
129
|
end
|
130
|
+
|
131
|
+
context 'when querying lmhosts', if: Puppet::Util::Platform.windows? do
|
132
|
+
# This service should be ubiquitous across all supported Windows platforms
|
133
|
+
let(:service) { Puppet::Type.type(:service).new(:name => 'lmhosts') }
|
134
|
+
|
135
|
+
before :each do
|
136
|
+
allow(service_util).to receive(:exists?).with(service.name).and_call_original
|
137
|
+
end
|
138
|
+
|
139
|
+
it "reports if the service is enabled" do
|
140
|
+
expect([:true, :false, :manual]).to include(service.provider.enabled?)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "reports on the service status" do
|
144
|
+
expect(
|
145
|
+
[
|
146
|
+
:running,
|
147
|
+
:'continue pending',
|
148
|
+
:'pause pending',
|
149
|
+
:paused,
|
150
|
+
:running,
|
151
|
+
:'start pending',
|
152
|
+
:'stop pending',
|
153
|
+
:stopped
|
154
|
+
]
|
155
|
+
).to include(service.provider.status)
|
156
|
+
end
|
157
|
+
end
|
122
158
|
end
|
123
159
|
|
124
160
|
describe "#restart" do
|
@@ -178,12 +214,12 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
178
214
|
|
179
215
|
describe "#enable" do
|
180
216
|
it "should set service start type to Service_Auto_Start when enabled" do
|
181
|
-
expect(service_util).to receive(:
|
217
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START})
|
182
218
|
provider.enable
|
183
219
|
end
|
184
220
|
|
185
|
-
it "raises an error if
|
186
|
-
expect(service_util).to receive(:
|
221
|
+
it "raises an error if set_startup_configuration fails" do
|
222
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START}).and_raise(Puppet::Error.new('foobar'))
|
187
223
|
|
188
224
|
expect {
|
189
225
|
provider.enable
|
@@ -193,12 +229,12 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
193
229
|
|
194
230
|
describe "#disable" do
|
195
231
|
it "should set service start type to Service_Disabled when disabled" do
|
196
|
-
expect(service_util).to receive(:
|
232
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DISABLED})
|
197
233
|
provider.disable
|
198
234
|
end
|
199
235
|
|
200
|
-
it "raises an error if
|
201
|
-
expect(service_util).to receive(:
|
236
|
+
it "raises an error if set_startup_configuration fails" do
|
237
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DISABLED}).and_raise(Puppet::Error.new('foobar'))
|
202
238
|
|
203
239
|
expect {
|
204
240
|
provider.disable
|
@@ -208,12 +244,12 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
208
244
|
|
209
245
|
describe "#manual_start" do
|
210
246
|
it "should set service start type to Service_Demand_Start (manual) when manual" do
|
211
|
-
expect(service_util).to receive(:
|
247
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DEMAND_START})
|
212
248
|
provider.manual_start
|
213
249
|
end
|
214
250
|
|
215
|
-
it "raises an error if
|
216
|
-
expect(service_util).to receive(:
|
251
|
+
it "raises an error if set_startup_configuration fails" do
|
252
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DEMAND_START}).and_raise(Puppet::Error.new('foobar'))
|
217
253
|
|
218
254
|
expect {
|
219
255
|
provider.manual_start
|
@@ -223,12 +259,12 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
223
259
|
|
224
260
|
describe "#delayed_start" do
|
225
261
|
it "should set service start type to Service_Config_Delayed_Auto_Start (delayed) when delayed" do
|
226
|
-
expect(service_util).to receive(:
|
262
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START, delayed: true})
|
227
263
|
provider.delayed_start
|
228
264
|
end
|
229
265
|
|
230
|
-
it "raises an error if
|
231
|
-
expect(service_util).to receive(:
|
266
|
+
it "raises an error if set_startup_configuration fails" do
|
267
|
+
expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START, delayed: true}).and_raise(Puppet::Error.new('foobar'))
|
232
268
|
|
233
269
|
expect {
|
234
270
|
provider.delayed_start
|