puppet 6.20.0-x64-mingw32 → 7.0.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 +16 -2
- data/Gemfile +0 -2
- data/Gemfile.lock +18 -24
- data/README.md +1 -1
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +1 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/application.rb +178 -108
- data/lib/puppet/application/agent.rb +0 -1
- data/lib/puppet/application/apply.rb +2 -3
- data/lib/puppet/application/device.rb +100 -105
- data/lib/puppet/application/filebucket.rb +13 -9
- data/lib/puppet/application/script.rb +0 -1
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/application_support.rb +0 -7
- data/lib/puppet/configurer.rb +30 -45
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +97 -167
- data/lib/puppet/environments.rb +59 -58
- data/lib/puppet/face/facts.rb +51 -51
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/http.rb +22 -13
- data/lib/puppet/http/client.rb +164 -114
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +5 -15
- data/lib/puppet/http/resolver/server_list.rb +6 -10
- data/lib/puppet/http/resolver/settings.rb +4 -7
- data/lib/puppet/http/resolver/srv.rb +7 -11
- data/lib/puppet/http/response.rb +36 -54
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +12 -26
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +22 -69
- data/lib/puppet/http/service/file_server.rb +18 -27
- data/lib/puppet/http/service/puppetserver.rb +26 -12
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +11 -20
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/facts/facter.rb +24 -3
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +0 -101
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/installer.rb +2 -48
- data/lib/puppet/module_tool/errors/shared.rb +2 -17
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +3 -1
- data/lib/puppet/parser/ast/leaf.rb +2 -3
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/resource.rb +0 -69
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +9 -37
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +0 -4
- data/lib/puppet/provider/package/dpkg.rb +0 -10
- data/lib/puppet/provider/package/gem.rb +23 -3
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -4
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/reference/configuration.rb +7 -6
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -89
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +3 -119
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +73 -66
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_provider.rb +17 -0
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +1 -3
- data/lib/puppet/transaction.rb +1 -7
- data/lib/puppet/transaction/report.rb +2 -4
- data/lib/puppet/type.rb +0 -76
- data/lib/puppet/type/file.rb +5 -7
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/util/autoload.rb +8 -1
- data/lib/puppet/util/execution.rb +0 -11
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/posix.rb +5 -54
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/run_mode.rb +9 -1
- data/lib/puppet/util/windows.rb +3 -8
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +4 -9
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +587 -1312
- data/man/man5/puppet.conf.5 +39 -99
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- 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 +51 -36
- data/man/man8/puppet-filebucket.8 +4 -4
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -58
- 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 +2 -2
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
- data/spec/integration/application/agent_spec.rb +27 -138
- data/spec/integration/application/apply_spec.rb +1 -20
- data/spec/integration/application/filebucket_spec.rb +16 -16
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/plugin_spec.rb +23 -1
- data/spec/integration/defaults_spec.rb +14 -3
- data/spec/integration/network/http_pool_spec.rb +3 -21
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/resource/type_collection_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +9 -4
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/adsi_spec.rb +1 -3
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/registry_spec.rb +10 -0
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/lib/puppet_spec/puppetserver.rb +1 -1
- data/spec/lib/puppet_spec/settings.rb +1 -0
- data/spec/spec_helper.rb +6 -1
- data/spec/unit/agent_spec.rb +6 -10
- data/spec/unit/application/agent_spec.rb +1 -0
- data/spec/unit/application/facts_spec.rb +35 -0
- data/spec/unit/application/filebucket_spec.rb +43 -39
- data/spec/unit/application/ssl_spec.rb +2 -2
- data/spec/unit/application_spec.rb +9 -51
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +6 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +12 -9
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +2 -8
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +72 -42
- data/spec/unit/environments_spec.rb +19 -99
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +11 -0
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
- data/spec/unit/forge/module_release_spec.rb +7 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +7 -8
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +13 -13
- data/spec/unit/http/service/compiler_spec.rb +0 -62
- data/spec/unit/http/service/file_server_spec.rb +3 -3
- data/spec/unit/http/service/puppetserver_spec.rb +34 -4
- data/spec/unit/http/service_spec.rb +0 -1
- data/spec/unit/http/session_spec.rb +16 -14
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/face_spec.rb +1 -0
- data/spec/unit/indirector/facts/facter_spec.rb +98 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/indirection_spec.rb +12 -8
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/request_spec.rb +0 -264
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -66
- data/spec/unit/network/authconfig_spec.rb +2 -129
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -1
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +33 -21
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/compiler_spec.rb +19 -3
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/resource_spec.rb +8 -14
- data/spec/unit/parser/templatewrapper_spec.rb +3 -4
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/property_spec.rb +0 -1
- data/spec/unit/provider/nameservice_spec.rb +64 -122
- data/spec/unit/provider/package/apt_spec.rb +8 -4
- data/spec/unit/provider/package/base_spec.rb +5 -6
- data/spec/unit/provider/package/dpkg_spec.rb +0 -48
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/pacman_spec.rb +12 -18
- data/spec/unit/provider/package/pip_spec.rb +11 -6
- data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/windows_spec.rb +0 -1
- data/spec/unit/provider/user/aix_spec.rb +0 -5
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +8 -18
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +10 -67
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +23 -13
- data/spec/unit/ssl/base_spec.rb +37 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/additional_resource_generator_spec.rb +7 -3
- data/spec/unit/transaction/event_manager_spec.rb +11 -14
- data/spec/unit/transaction/report_spec.rb +0 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +48 -91
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +2 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/selinux_spec.rb +2 -0
- data/spec/unit/type/file/source_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +18 -6
- data/spec/unit/type/group_spec.rb +6 -13
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +1 -1
- data/spec/unit/type/tidy_spec.rb +1 -0
- data/spec/unit/type_spec.rb +22 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +1 -5
- data/spec/unit/util/backups_spec.rb +2 -3
- data/spec/unit/util/execution_spec.rb +11 -44
- data/spec/unit/util/inifile_spec.rb +14 -6
- data/spec/unit/util/log_spec.rb +7 -8
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +15 -363
- data/spec/unit/util/run_mode_spec.rb +21 -121
- data/spec/unit/util/selinux_spec.rb +52 -76
- data/spec/unit/util/storage_spec.rb +1 -3
- data/spec/unit/util/suidmanager_spec.rb +41 -44
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +6 -31
- metadata +40 -233
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/ffi/posix.rb +0 -10
- data/lib/puppet/ffi/posix/constants.rb +0 -14
- data/lib/puppet/ffi/posix/functions.rb +0 -24
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -184
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/settings/alias_setting.rb +0 -37
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/fact_dif.rb +0 -62
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -309
- data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
- data/spec/unit/application/man_spec.rb +0 -52
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -78
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -148
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -645
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
@@ -11,7 +11,9 @@ describe Puppet::Type.type(:package).provider(:apt) do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
let(:provider) do
|
14
|
-
|
14
|
+
provider = subject()
|
15
|
+
provider.resource = resource
|
16
|
+
provider
|
15
17
|
end
|
16
18
|
|
17
19
|
it "should be the default provider on :osfamily => Debian" do
|
@@ -86,7 +88,7 @@ Version table:
|
|
86
88
|
|
87
89
|
describe ".instances" do
|
88
90
|
before do
|
89
|
-
allow(Puppet::Type::Package::ProviderDpkg).to receive(:instances).and_return([
|
91
|
+
allow(Puppet::Type::Package::ProviderDpkg).to receive(:instances).and_return([resource])
|
90
92
|
end
|
91
93
|
|
92
94
|
context "when package is manual marked" do
|
@@ -95,7 +97,8 @@ Version table:
|
|
95
97
|
end
|
96
98
|
|
97
99
|
it 'sets mark to manual' do
|
98
|
-
expect(
|
100
|
+
expect(resource).to receive(:mark=).with(:manual)
|
101
|
+
described_class.instances
|
99
102
|
end
|
100
103
|
end
|
101
104
|
|
@@ -105,7 +108,8 @@ Version table:
|
|
105
108
|
end
|
106
109
|
|
107
110
|
it 'does not set mark to manual' do
|
108
|
-
expect(
|
111
|
+
expect(resource).not_to receive(:mark=).with(:manual)
|
112
|
+
described_class.instances
|
109
113
|
end
|
110
114
|
end
|
111
115
|
end
|
@@ -1,18 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'puppet/provider/package'
|
3
3
|
|
4
|
-
Puppet::Type.type(:package).provide(:test_base_provider, parent: Puppet::Provider::Package) do
|
5
|
-
def query; end
|
6
|
-
end
|
7
|
-
|
8
4
|
describe Puppet::Provider::Package do
|
9
|
-
let(:provider) { Puppet::Type.type(:package).provider(:test_base_provider).new }
|
10
|
-
|
11
5
|
it 'returns absent for uninstalled packages when not purgeable' do
|
6
|
+
provider = Puppet::Provider::Package.new
|
7
|
+
expect(provider).to receive(:query).and_return(nil)
|
8
|
+
expect(provider.class).to receive(:feature?).with(:purgeable).and_return(false)
|
12
9
|
expect(provider.properties[:ensure]).to eq(:absent)
|
13
10
|
end
|
14
11
|
|
15
12
|
it 'returns purged for uninstalled packages when purgeable' do
|
13
|
+
provider = Puppet::Provider::Package.new
|
14
|
+
expect(provider).to receive(:query).and_return(nil)
|
16
15
|
expect(provider.class).to receive(:feature?).with(:purgeable).and_return(true)
|
17
16
|
expect(provider.properties[:ensure]).to eq(:purged)
|
18
17
|
end
|
@@ -392,39 +392,13 @@ describe Puppet::Type.type(:package).provider(:dpkg), unless: Puppet::Util::Plat
|
|
392
392
|
allow(Tempfile).to receive(:open).and_yield(tempfile)
|
393
393
|
end
|
394
394
|
|
395
|
-
it "installs first if package is not present and ensure holding" do
|
396
|
-
allow(provider).to receive(:execute)
|
397
|
-
allow(provider).to receive(:package_not_installed?).and_return(true)
|
398
|
-
expect(provider).to receive(:install).once
|
399
|
-
expect(provider).to receive(:hold)
|
400
|
-
provider.deprecated_hold
|
401
|
-
end
|
402
|
-
|
403
|
-
it "skips install new package if hold is true" do
|
404
|
-
allow(provider).to receive(:execute)
|
405
|
-
allow(provider).to receive(:package_not_installed?).and_return(true)
|
406
|
-
expect(provider).to receive(:install).once
|
407
|
-
expect(provider).to receive(:hold)
|
408
|
-
provider.deprecated_hold
|
409
|
-
end
|
410
|
-
|
411
|
-
it "skips install new package if package is allready installed" do
|
412
|
-
allow(provider).to receive(:execute)
|
413
|
-
allow(provider).to receive(:package_not_installed?).and_return(false)
|
414
|
-
expect(provider).not_to receive(:install)
|
415
|
-
expect(provider).to receive(:hold)
|
416
|
-
provider.deprecated_hold
|
417
|
-
end
|
418
|
-
|
419
395
|
it "executes dpkg --set-selections when holding" do
|
420
|
-
allow(provider).to receive(:package_not_installed?).and_return(false)
|
421
396
|
allow(provider).to receive(:install)
|
422
397
|
expect(provider).to receive(:execute).with([:dpkg, '--set-selections'], {:failonfail => false, :combine => false, :stdinfile => tempfile.path}).once
|
423
398
|
provider.hold
|
424
399
|
end
|
425
400
|
|
426
401
|
it "executes dpkg --set-selections when unholding" do
|
427
|
-
allow(provider).to receive(:package_not_installed?).and_return(false)
|
428
402
|
allow(provider).to receive(:install)
|
429
403
|
expect(provider).to receive(:execute).with([:dpkg, '--set-selections'], {:failonfail => false, :combine => false, :stdinfile => tempfile.path}).once
|
430
404
|
provider.hold
|
@@ -467,26 +441,4 @@ describe Puppet::Type.type(:package).provider(:dpkg), unless: Puppet::Util::Plat
|
|
467
441
|
provider.purge
|
468
442
|
end
|
469
443
|
|
470
|
-
context "package_not_installed?" do
|
471
|
-
context "allow_virtual false" do
|
472
|
-
before do
|
473
|
-
allow(resource).to receive(:allow_virtual?).and_return(false)
|
474
|
-
end
|
475
|
-
|
476
|
-
it "returns true if package is not found" do
|
477
|
-
expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_raise(Puppet::ExecutionFailure.new("eh"))
|
478
|
-
expect(provider.package_not_installed?).to eq(true)
|
479
|
-
end
|
480
|
-
|
481
|
-
it "returns true if package is not installed" do
|
482
|
-
expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_return("unknown ok not-installed #{resource_name}")
|
483
|
-
expect(provider.package_not_installed?).to eq(true)
|
484
|
-
end
|
485
|
-
|
486
|
-
it "returns false if package is installed" do
|
487
|
-
expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_return("install ok installed resource_name 1.2.3")
|
488
|
-
expect(provider.package_not_installed?).to eq(false)
|
489
|
-
end
|
490
|
-
end
|
491
|
-
end
|
492
444
|
end
|
@@ -12,6 +12,10 @@ context Puppet::Type.type(:package).provider(:gem) do
|
|
12
12
|
let(:provider_gem_cmd) { '/provider/gem' }
|
13
13
|
let(:execute_options) { {:failonfail => true, :combine => true, :custom_environment => {"HOME"=>ENV["HOME"]}} }
|
14
14
|
|
15
|
+
before do
|
16
|
+
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
17
|
+
end
|
18
|
+
|
15
19
|
context 'installing myresource' do
|
16
20
|
let(:resource) do
|
17
21
|
Puppet::Type.type(:package).new(
|
@@ -36,6 +40,34 @@ context Puppet::Type.type(:package).provider(:gem) do
|
|
36
40
|
allow(provider).to receive(:rubygem_version).and_return('1.9.9')
|
37
41
|
end
|
38
42
|
|
43
|
+
context 'on windows' do
|
44
|
+
let(:path) do
|
45
|
+
"C:\\Program Files\\Puppet Labs\\Puppet\\puppet\\bin;C:\\Program Files\\Puppet Labs\\Puppet\\bin;C:\\Ruby26-x64\\bin;C:\\Windows\\system32\\bin"
|
46
|
+
end
|
47
|
+
|
48
|
+
let(:expected_path) do
|
49
|
+
"C:\\Program Files\\Puppet Labs\\Puppet\\bin;C:\\Ruby26-x64\\bin;C:\\Windows\\system32\\bin"
|
50
|
+
end
|
51
|
+
|
52
|
+
before do
|
53
|
+
allow(Puppet::Util::Platform).to receive(:windows?).and_return(true)
|
54
|
+
allow(Puppet::Util).to receive(:get_env)
|
55
|
+
allow(Puppet::Util).to receive(:get_env).with('PATH').and_return(path)
|
56
|
+
allow(described_class).to receive(:validate_command).with(provider_gem_cmd)
|
57
|
+
stub_const('::File::PATH_SEPARATOR', ';')
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'removes puppet/bin from PATH' do
|
61
|
+
expect(described_class).to receive(:execute) \
|
62
|
+
.with(
|
63
|
+
anything,
|
64
|
+
hash_including(custom_environment: hash_including(PATH: expected_path))
|
65
|
+
)
|
66
|
+
.and_return("")
|
67
|
+
provider.install
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
39
71
|
it "should use the path to the gem command" do
|
40
72
|
allow(described_class).to receive(:validate_command).with(provider_gem_cmd)
|
41
73
|
expect(described_class).to receive(:execute).with(be_a(Array), execute_options) { |args| expect(args[0]).to eq(provider_gem_cmd) }.and_return("")
|
@@ -32,12 +32,10 @@ describe Puppet::Type.type(:package).provider(:pacman) do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should call yaourt to install the right package quietly when yaourt is installed" do
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
provider.install
|
40
|
-
end
|
35
|
+
allow(described_class).to receive(:yaourt?).and_return(true)
|
36
|
+
args = ['--noconfirm', '--needed', '--noprogressbar', '-S', resource[:name]]
|
37
|
+
expect(provider).to receive(:yaourt).at_least(:once).with(*args).and_return('')
|
38
|
+
provider.install
|
41
39
|
end
|
42
40
|
|
43
41
|
it "should raise an Puppet::Error if the installation failed" do
|
@@ -76,12 +74,10 @@ describe Puppet::Type.type(:package).provider(:pacman) do
|
|
76
74
|
end
|
77
75
|
|
78
76
|
it "should call yaourt to install the right package quietly when yaourt is installed" do
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
provider.install
|
84
|
-
end
|
77
|
+
expect(described_class).to receive(:yaourt?).and_return(true)
|
78
|
+
args = ['--noconfirm', '--needed', '--noprogressbar', '-x', '--arg=value', '-S', resource[:name]]
|
79
|
+
expect(provider).to receive(:yaourt).at_least(:once).with(*args).and_return('')
|
80
|
+
provider.install
|
85
81
|
end
|
86
82
|
end
|
87
83
|
|
@@ -176,12 +172,10 @@ describe Puppet::Type.type(:package).provider(:pacman) do
|
|
176
172
|
end
|
177
173
|
|
178
174
|
it "should call yaourt to remove the right package quietly" do
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
provider.uninstall
|
184
|
-
end
|
175
|
+
allow(described_class).to receive(:yaourt?).and_return(true)
|
176
|
+
args = ["--noconfirm", "--noprogressbar", "-R", resource[:name]]
|
177
|
+
expect(provider).to receive(:yaourt).with(*args)
|
178
|
+
provider.uninstall
|
185
179
|
end
|
186
180
|
|
187
181
|
it "adds any uninstall_options" do
|
@@ -14,8 +14,9 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
14
14
|
it { is_expected.to be_version_ranges }
|
15
15
|
|
16
16
|
before do
|
17
|
-
@resource = Puppet::
|
18
|
-
@
|
17
|
+
@resource = Puppet::Resource.new(:package, "fake_package")
|
18
|
+
allow(@resource).to receive(:original_parameters).and_return({})
|
19
|
+
@provider = described_class.new(@resource)
|
19
20
|
@client = double('client')
|
20
21
|
allow(@client).to receive(:call).with('package_releases', 'real_package').and_return(["1.3", "1.2.5", "1.2.4"])
|
21
22
|
allow(@client).to receive(:call).with('package_releases', 'fake_package').and_return([])
|
@@ -334,6 +335,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
334
335
|
|
335
336
|
it "should install" do
|
336
337
|
@resource[:ensure] = :installed
|
338
|
+
@resource[:source] = nil
|
337
339
|
expect(@provider).to receive(:execute).with(["/fake/bin/pip", ["install", "-q", "fake_package"]])
|
338
340
|
@provider.install
|
339
341
|
end
|
@@ -366,6 +368,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
366
368
|
|
367
369
|
it "should install a particular version" do
|
368
370
|
@resource[:ensure] = "0.0.0"
|
371
|
+
@resource[:source] = nil
|
369
372
|
# TJK
|
370
373
|
expect(@provider).to receive(:execute).with(["/fake/bin/pip", ["install", "-q", "fake_package==0.0.0"]])
|
371
374
|
@provider.install
|
@@ -373,6 +376,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
373
376
|
|
374
377
|
it "should upgrade" do
|
375
378
|
@resource[:ensure] = :latest
|
379
|
+
@resource[:source] = nil
|
376
380
|
# TJK
|
377
381
|
expect(@provider).to receive(:execute).with(["/fake/bin/pip", ["install", "-q", "--upgrade", "fake_package"]])
|
378
382
|
@provider.install
|
@@ -380,6 +384,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
380
384
|
|
381
385
|
it "should handle install options" do
|
382
386
|
@resource[:ensure] = :installed
|
387
|
+
@resource[:source] = nil
|
383
388
|
@resource[:install_options] = [{"--timeout" => "10"}, "--no-index"]
|
384
389
|
expect(@provider).to receive(:execute).with(["/fake/bin/pip", ["install", "-q", "--timeout=10", "--no-index", "fake_package"]])
|
385
390
|
@provider.install
|
@@ -410,7 +415,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
410
415
|
let(:pip) { '/fake/bin/pip' }
|
411
416
|
|
412
417
|
it "should look up version if pip is present" do
|
413
|
-
allow(described_class).to receive(:
|
418
|
+
allow(described_class).to receive(:pip_cmd).and_return(pip)
|
414
419
|
process = ['pip 8.0.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)']
|
415
420
|
allow(described_class).to receive(:execpipe).with([pip, '--version']).and_yield(process)
|
416
421
|
|
@@ -418,7 +423,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
418
423
|
end
|
419
424
|
|
420
425
|
it "parses multiple lines of output" do
|
421
|
-
allow(described_class).to receive(:
|
426
|
+
allow(described_class).to receive(:pip_cmd).and_return(pip)
|
422
427
|
process = [
|
423
428
|
"/usr/local/lib/python2.7/dist-packages/urllib3/contrib/socks.py:37: DependencyWarning: SOCKS support in urllib3 requires the installation of optional dependencies: specifically, PySocks. For more information, see https://urllib3.readthedocs.io/en/latest/contrib.html#socks-proxies",
|
424
429
|
" DependencyWarning",
|
@@ -430,7 +435,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
430
435
|
end
|
431
436
|
|
432
437
|
it "raises if there isn't a version string" do
|
433
|
-
allow(described_class).to receive(:
|
438
|
+
allow(described_class).to receive(:pip_cmd).and_return(pip)
|
434
439
|
allow(described_class).to receive(:execpipe).with([pip, '--version']).and_yield([""])
|
435
440
|
expect {
|
436
441
|
described_class.pip_version(pip)
|
@@ -439,7 +444,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
439
444
|
|
440
445
|
it "quotes commands with spaces" do
|
441
446
|
pip = 'C:\Program Files\Python27\Scripts\pip.exe'
|
442
|
-
allow(described_class).to receive(:
|
447
|
+
allow(described_class).to receive(:pip_cmd).and_return(pip)
|
443
448
|
process = ["pip 18.1 from c:\program files\python27\lib\site-packages\pip (python 2.7)\r\n"]
|
444
449
|
allow(described_class).to receive(:execpipe).with(["\"#{pip}\"", '--version']).and_yield(process)
|
445
450
|
|
@@ -8,6 +8,10 @@ describe Puppet::Type.type(:package).provider(:pkgdmg) do
|
|
8
8
|
it { is_expected.not_to be_uninstallable }
|
9
9
|
|
10
10
|
describe "when installing it should fail when" do
|
11
|
+
before :each do
|
12
|
+
expect(Puppet::Util).not_to receive(:execute)
|
13
|
+
end
|
14
|
+
|
11
15
|
it "no source is specified" do
|
12
16
|
expect { provider.install }.to raise_error(Puppet::Error, /must specify a package source/)
|
13
17
|
end
|
@@ -15,19 +15,20 @@ describe Puppet::Type.type(:package).provider(:puppet_gem) do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
if Puppet::Util::Platform.windows?
|
18
|
-
let(:provider_gem_cmd) { 'gem' }
|
18
|
+
let(:provider_gem_cmd) { 'C:\Program Files\Puppet Labs\Puppet\puppet\bin\gem.bat' }
|
19
19
|
else
|
20
20
|
let(:provider_gem_cmd) { '/opt/puppetlabs/puppet/bin/gem' }
|
21
21
|
end
|
22
22
|
|
23
23
|
custom_environment = {"HOME"=>ENV["HOME"]}
|
24
|
-
custom_environment['PKG_CONFIG_PATH'] = '/opt/puppetlabs/puppet/lib/pkgconfig'
|
24
|
+
custom_environment['PKG_CONFIG_PATH'] = '/opt/puppetlabs/puppet/lib/pkgconfig'
|
25
25
|
|
26
26
|
let(:execute_options) { {:failonfail => true, :combine => true, :custom_environment => custom_environment} }
|
27
27
|
|
28
28
|
before :each do
|
29
29
|
resource.provider = provider
|
30
30
|
allow(described_class).to receive(:command).with(:gemcmd).and_return(provider_gem_cmd)
|
31
|
+
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
31
32
|
end
|
32
33
|
|
33
34
|
context "when installing" do
|
@@ -4,6 +4,16 @@ describe 'Puppet::Type::Service::Provider::Smf',
|
|
4
4
|
unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
|
5
5
|
let(:provider_class) { Puppet::Type.type(:service).provider(:smf) }
|
6
6
|
|
7
|
+
def set_resource_params(params = {})
|
8
|
+
params.each do |param, value|
|
9
|
+
if value.nil?
|
10
|
+
@provider.resource.delete(param) if @provider.resource[param]
|
11
|
+
else
|
12
|
+
@provider.resource[param] = value
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
7
17
|
before(:each) do
|
8
18
|
# Create a mock resource
|
9
19
|
@resource = Puppet::Type.type(:service).new(
|
@@ -18,14 +28,13 @@ describe 'Puppet::Type::Service::Provider::Smf',
|
|
18
28
|
allow(Facter).to receive(:value).with(:osfamily).and_return('Solaris')
|
19
29
|
allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.2')
|
20
30
|
end
|
21
|
-
|
22
31
|
context ".instances" do
|
23
32
|
it "should have an instances method" do
|
24
33
|
expect(provider_class).to respond_to :instances
|
25
34
|
end
|
26
35
|
|
27
36
|
it "should get a list of services (excluding legacy)" do
|
28
|
-
expect(provider_class).to receive(:svcs).with('-H', '-o', 'state,fmri').and_return(File.read(my_fixture('
|
37
|
+
expect(provider_class).to receive(:svcs).with('-H', '-o', 'state,fmri').and_return(File.read(my_fixture('svcs_instances.out')))
|
29
38
|
instances = provider_class.instances.map { |p| {:name => p.get(:name), :ensure => p.get(:ensure)} }
|
30
39
|
# we dont manage legacy
|
31
40
|
expect(instances.size).to eq(3)
|
@@ -35,255 +44,482 @@ describe 'Puppet::Type::Service::Provider::Smf',
|
|
35
44
|
end
|
36
45
|
end
|
37
46
|
|
38
|
-
|
39
|
-
|
40
|
-
|
47
|
+
describe '#service_exists?' do
|
48
|
+
it 'returns true if the service exists' do
|
49
|
+
expect(@provider).to receive(:service_fmri)
|
50
|
+
expect(@provider.service_exists?).to be(true)
|
51
|
+
end
|
41
52
|
|
42
|
-
|
43
|
-
|
44
|
-
|
53
|
+
it 'returns false if the service does not exist' do
|
54
|
+
expect(@provider).to receive(:service_fmri).and_raise(
|
55
|
+
Puppet::ExecutionFailure, 'svcs failed!'
|
56
|
+
)
|
45
57
|
|
46
|
-
|
47
|
-
|
58
|
+
expect(@provider.service_exists?).to be(false)
|
59
|
+
end
|
48
60
|
end
|
49
61
|
|
50
|
-
|
51
|
-
|
52
|
-
|
62
|
+
describe '#setup_service' do
|
63
|
+
it 'noops if the service resource does not have the manifest parameter passed-in' do
|
64
|
+
expect(@provider).not_to receive(:svccfg)
|
53
65
|
|
54
|
-
|
55
|
-
|
56
|
-
|
66
|
+
set_resource_params({ :manifest => nil })
|
67
|
+
@provider.setup_service
|
68
|
+
end
|
57
69
|
|
58
|
-
|
59
|
-
|
60
|
-
|
70
|
+
context 'when the service resource has a manifest parameter passed-in' do
|
71
|
+
let(:manifest) { 'foo' }
|
72
|
+
before(:each) { set_resource_params({ :manifest => manifest }) }
|
73
|
+
|
74
|
+
it 'noops if the service resource already exists' do
|
75
|
+
expect(@provider).not_to receive(:svccfg)
|
76
|
+
|
77
|
+
expect(@provider).to receive(:service_exists?).and_return(true)
|
78
|
+
@provider.setup_service
|
79
|
+
end
|
61
80
|
|
62
|
-
|
63
|
-
|
81
|
+
it "imports the service resource's manifest" do
|
82
|
+
expect(@provider).to receive(:service_exists?).and_return(false)
|
83
|
+
|
84
|
+
expect(@provider).to receive(:svccfg).with(:import, manifest)
|
85
|
+
@provider.setup_service
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'raises a Puppet::Error if SMF fails to import the manifest' do
|
89
|
+
expect(@provider).to receive(:service_exists?).and_return(false)
|
90
|
+
|
91
|
+
failure_reason = 'svccfg failed!'
|
92
|
+
expect(@provider).to receive(:svccfg).with(:import, manifest).and_raise(Puppet::ExecutionFailure, failure_reason)
|
93
|
+
expect { @provider.setup_service }.to raise_error do |error|
|
94
|
+
expect(error).to be_a(Puppet::Error)
|
95
|
+
expect(error.message).to match(failure_reason)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
64
99
|
end
|
65
100
|
|
66
|
-
describe
|
67
|
-
|
68
|
-
|
101
|
+
describe '#service_fmri' do
|
102
|
+
it 'returns the memoized the fmri if it exists' do
|
103
|
+
@provider.instance_variable_set(:@fmri, 'resource_fmri')
|
104
|
+
expect(@provider.service_fmri).to eql('resource_fmri')
|
69
105
|
end
|
70
106
|
|
71
|
-
it
|
72
|
-
expect(@provider).to receive(:svcs).with('-
|
73
|
-
|
107
|
+
it 'raises a Puppet::Error if the service resource matches multiple FMRIs' do
|
108
|
+
expect(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_return(File.read(my_fixture('svcs_multiple_fmris.out')))
|
109
|
+
|
110
|
+
expect { @provider.service_fmri }.to raise_error do |error|
|
111
|
+
expect(error).to be_a(Puppet::Error)
|
112
|
+
expect(error.message).to match(@provider.resource[:name])
|
113
|
+
expect(error.message).to match('multiple')
|
114
|
+
|
115
|
+
matched_fmris = ["svc:/application/tstapp:one", "svc:/application/tstapp:two"]
|
116
|
+
expect(error.message).to match(matched_fmris.join(', '))
|
117
|
+
end
|
74
118
|
end
|
75
119
|
|
76
|
-
it
|
77
|
-
|
78
|
-
|
120
|
+
it 'raises a Puppet:ExecutionFailure if svcs fails' do
|
121
|
+
expect(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_raise(
|
122
|
+
Puppet::ExecutionFailure, 'svcs failed!'
|
123
|
+
)
|
124
|
+
|
125
|
+
expect { @provider.service_fmri }.to raise_error do |error|
|
126
|
+
expect(error).to be_a(Puppet::ExecutionFailure)
|
127
|
+
expect(error.message).to match('svcs failed!')
|
128
|
+
end
|
79
129
|
end
|
80
130
|
|
81
|
-
it "
|
82
|
-
|
83
|
-
|
84
|
-
|
131
|
+
it "returns the service resource's fmri and memoizes it" do
|
132
|
+
expect(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_return(File.read(my_fixture('svcs_fmri.out')))
|
133
|
+
|
134
|
+
expected_fmri = 'svc:/application/tstapp:default'
|
135
|
+
|
136
|
+
expect(@provider.service_fmri).to eql(expected_fmri)
|
137
|
+
expect(@provider.instance_variable_get(:@fmri)).to eql(expected_fmri)
|
85
138
|
end
|
139
|
+
end
|
86
140
|
|
87
|
-
|
88
|
-
|
89
|
-
|
141
|
+
describe '#enabled?' do
|
142
|
+
let(:fmri) { 'resource_fmri' }
|
143
|
+
before(:each) do
|
144
|
+
allow(@provider).to receive(:service_fmri).and_return(fmri)
|
90
145
|
end
|
91
146
|
|
92
|
-
it
|
93
|
-
|
94
|
-
|
147
|
+
it 'returns :true if the service is enabled' do
|
148
|
+
expect(@provider).to receive(:svccfg).with('-s', fmri, 'listprop', 'general/enabled').and_return(
|
149
|
+
'general/enabled boolean true'
|
150
|
+
)
|
151
|
+
|
152
|
+
expect(@provider.enabled?).to be(:true)
|
95
153
|
end
|
96
154
|
|
97
|
-
it
|
98
|
-
|
99
|
-
|
155
|
+
it 'return :false if the service is not enabled' do
|
156
|
+
expect(@provider).to receive(:svccfg).with('-s', fmri, 'listprop', 'general/enabled').and_return(
|
157
|
+
'general/enabled boolean false'
|
158
|
+
)
|
159
|
+
|
160
|
+
expect(@provider.enabled?).to be(:false)
|
100
161
|
end
|
101
162
|
|
102
|
-
it
|
103
|
-
|
104
|
-
expect(@provider.
|
163
|
+
it 'returns :false if the service does not exist' do
|
164
|
+
expect(@provider).to receive(:service_exists?).and_return(false)
|
165
|
+
expect(@provider.enabled?).to be(:false)
|
105
166
|
end
|
167
|
+
end
|
106
168
|
|
107
|
-
|
108
|
-
|
109
|
-
|
169
|
+
describe '#restartcmd' do
|
170
|
+
let(:fmri) { 'resource_fmri' }
|
171
|
+
before(:each) do
|
172
|
+
allow(@provider).to receive(:service_fmri).and_return(fmri)
|
110
173
|
end
|
111
174
|
|
112
|
-
it
|
113
|
-
|
114
|
-
|
175
|
+
it 'returns the right command for restarting the service for Solaris versions newer than 11.2' do
|
176
|
+
expect(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.3')
|
177
|
+
|
178
|
+
expect(@provider.restartcmd).to eql([@provider.command(:adm), :restart, '-s', fmri])
|
115
179
|
end
|
116
|
-
end
|
117
180
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
expect(@provider).to
|
122
|
-
expect(@provider).to receive(:wait).with('online')
|
123
|
-
@provider.start
|
181
|
+
it 'returns the right command for restarting the service on Solaris 11.2' do
|
182
|
+
expect(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.2')
|
183
|
+
|
184
|
+
expect(@provider.restartcmd).to eql([@provider.command(:adm), :restart, '-s', fmri])
|
124
185
|
end
|
125
186
|
|
126
|
-
it
|
127
|
-
expect(
|
128
|
-
|
129
|
-
expect(@provider).to
|
130
|
-
@provider.start
|
187
|
+
it 'returns the right command for restarting the service for Solaris versions older than Solaris 11.2' do
|
188
|
+
expect(Facter).to receive(:value).with(:operatingsystemrelease).and_return('10.3')
|
189
|
+
|
190
|
+
expect(@provider.restartcmd).to eql([@provider.command(:adm), :restart, fmri])
|
131
191
|
end
|
192
|
+
end
|
132
193
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
@provider.start
|
194
|
+
describe '#service_states' do
|
195
|
+
let(:fmri) { 'resource_fmri' }
|
196
|
+
before(:each) do
|
197
|
+
allow(@provider).to receive(:service_fmri).and_return(fmri)
|
138
198
|
end
|
139
199
|
|
140
|
-
it
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
200
|
+
it 'returns the current and next states of the service' do
|
201
|
+
expect(@provider).to receive(:svcs).with('-H', '-o', 'state,nstate', fmri).and_return(
|
202
|
+
'online disabled'
|
203
|
+
)
|
204
|
+
|
205
|
+
expect(@provider.service_states).to eql({ :current => 'online', :next => 'disabled' })
|
145
206
|
end
|
146
207
|
|
147
|
-
it "
|
148
|
-
expect(@provider).to receive(:
|
149
|
-
|
150
|
-
|
151
|
-
|
208
|
+
it "returns nil for the next state if svcs marks it as '-'" do
|
209
|
+
expect(@provider).to receive(:svcs).with('-H', '-o', 'state,nstate', fmri).and_return(
|
210
|
+
'online -'
|
211
|
+
)
|
212
|
+
|
213
|
+
expect(@provider.service_states).to eql({ :current => 'online', :next => nil })
|
152
214
|
end
|
153
215
|
end
|
154
216
|
|
155
|
-
|
217
|
+
describe '#wait' do
|
218
|
+
# TODO: Document this method!
|
219
|
+
def transition_service(from, to, tries)
|
220
|
+
intermediate_returns = [{ :current => from, :next => to }] * (tries - 1)
|
221
|
+
final_return = { :current => to, :next => nil }
|
222
|
+
|
223
|
+
allow(@provider).to receive(:service_states).and_return(*intermediate_returns.push(final_return))
|
224
|
+
end
|
225
|
+
|
156
226
|
before(:each) do
|
157
|
-
|
158
|
-
|
159
|
-
allow($CHILD_STATUS).to receive(:exitstatus).and_return(1)
|
227
|
+
allow(Timeout).to receive(:timeout).and_yield
|
228
|
+
allow(Kernel).to receive(:sleep)
|
160
229
|
end
|
161
230
|
|
162
|
-
it
|
163
|
-
|
164
|
-
|
165
|
-
expect(@provider).to receive(:svccfg).with(:import, "/tmp/myservice.xml")
|
166
|
-
expect(@provider).to receive(:texecute).with(:start, ["/usr/sbin/svcadm", :enable, '-rs', "/system/myservice"], true)
|
167
|
-
expect(@provider).to receive(:wait).with('online')
|
168
|
-
expect(@provider).to receive(:svcs).with('-H', '-o', 'state,nstate', "/system/myservice").and_return("online\t-")
|
169
|
-
@provider.start
|
231
|
+
it 'waits for the service to enter the desired state' do
|
232
|
+
transition_service('online', 'disabled', 1)
|
233
|
+
@provider.wait('offline', 'disabled', 'uninitialized')
|
170
234
|
end
|
171
235
|
|
172
|
-
it
|
173
|
-
expect(
|
174
|
-
|
175
|
-
expect { @provider.
|
236
|
+
it 'times out and raises a Puppet::Error after sixty seconds' do
|
237
|
+
expect(Timeout).to receive(:timeout).with(60).and_raise(Timeout::Error, 'method timed out!')
|
238
|
+
|
239
|
+
expect { @provider.wait('online') }.to raise_error do |error|
|
240
|
+
expect(error).to be_a(Puppet::Error)
|
241
|
+
expect(error.message).to match(@provider.resource[:name])
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
it 'sleeps a bit before querying the service state' do
|
246
|
+
transition_service('disabled', 'online', 10)
|
247
|
+
expect(Kernel).to receive(:sleep).with(1).exactly(9).times
|
248
|
+
|
249
|
+
@provider.wait('online')
|
176
250
|
end
|
177
251
|
end
|
178
252
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
@provider.
|
253
|
+
describe '#restart' do
|
254
|
+
let(:fmri) { 'resource_fmri' }
|
255
|
+
|
256
|
+
before(:each) do
|
257
|
+
allow(@provider).to receive(:service_fmri).and_return(fmri)
|
258
|
+
allow(@provider).to receive(:texecute)
|
259
|
+
allow(@provider).to receive(:wait)
|
260
|
+
end
|
261
|
+
|
262
|
+
it 'should restart the service' do
|
263
|
+
expect(@provider).to receive(:texecute)
|
264
|
+
@provider.restart
|
184
265
|
end
|
185
266
|
|
186
|
-
it
|
187
|
-
expect(@provider).to receive(:
|
188
|
-
|
189
|
-
expect { @provider.stop }.to raise_error Puppet::Error, ('Timed out waiting for /system/myservice to transition states')
|
267
|
+
it 'should wait for the service to restart' do
|
268
|
+
expect(@provider).to receive(:wait).with('online')
|
269
|
+
@provider.restart
|
190
270
|
end
|
191
271
|
end
|
192
272
|
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
273
|
+
describe '#status' do
|
274
|
+
let(:states) do
|
275
|
+
{
|
276
|
+
:current => 'online',
|
277
|
+
:next => nil
|
278
|
+
}
|
198
279
|
end
|
199
280
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
expect(@provider).to receive(:wait).with('online')
|
205
|
-
@provider.restart
|
206
|
-
end
|
281
|
+
before(:each) do
|
282
|
+
allow(@provider).to receive(:service_states).and_return(states)
|
283
|
+
|
284
|
+
allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('10.3')
|
207
285
|
end
|
208
286
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
expect(
|
213
|
-
expect(@provider).to receive(:wait).with('online')
|
214
|
-
@provider.restart
|
287
|
+
it "should run the status command if it's passed in" do
|
288
|
+
set_resource_params({ :status => 'status_cmd' })
|
289
|
+
expect(@provider).to receive(:ucommand).with(:status, false) do |_, _|
|
290
|
+
expect($CHILD_STATUS).to receive(:exitstatus).and_return(0)
|
215
291
|
end
|
292
|
+
expect(@provider).not_to receive(:service_states)
|
293
|
+
|
294
|
+
expect(@provider.status).to eql(:running)
|
216
295
|
end
|
217
296
|
|
218
|
-
|
219
|
-
it "
|
220
|
-
|
221
|
-
|
222
|
-
expect(@provider).to
|
223
|
-
@provider.restart
|
297
|
+
shared_examples 'returns the right status' do |svcs_state, expected_state|
|
298
|
+
it "returns '#{expected_state}' if the svcs state is '#{svcs_state}'" do
|
299
|
+
|
300
|
+
states[:current] = svcs_state
|
301
|
+
expect(@provider.status).to eql(expected_state)
|
224
302
|
end
|
225
303
|
end
|
226
|
-
end
|
227
304
|
|
228
|
-
|
229
|
-
|
230
|
-
|
305
|
+
include_examples 'returns the right status', 'online', :running
|
306
|
+
include_examples 'returns the right status', 'offline', :stopped
|
307
|
+
include_examples 'returns the right status', 'disabled', :stopped
|
308
|
+
include_examples 'returns the right status', 'uninitialized', :stopped
|
309
|
+
include_examples 'returns the right status', 'maintenance', :maintenance
|
310
|
+
include_examples 'returns the right status', 'degraded', :degraded
|
231
311
|
|
232
|
-
|
312
|
+
it "raises a Puppet::Error if the svcs state is 'legacy_run'" do
|
313
|
+
states[:current] = 'legacy_run'
|
314
|
+
expect { @provider.status }.to raise_error do |error|
|
233
315
|
expect(error).to be_a(Puppet::Error)
|
234
|
-
expect(error.message).to match(
|
235
|
-
expect(error.message).to match('multiple')
|
236
|
-
|
237
|
-
matched_fmris = ["svc:/application/tstapp:one", "svc:/application/tstapp:two"]
|
238
|
-
expect(error.message).to match(matched_fmris.join(', '))
|
316
|
+
expect(error.message).to match('legacy')
|
239
317
|
end
|
240
318
|
end
|
241
319
|
|
242
|
-
it
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
expect { @provider.service_fmri }.to raise_error do |error|
|
248
|
-
expect(error).to be_a(Puppet::ExecutionFailure)
|
249
|
-
expect(error.message).to match('svcs failed!')
|
320
|
+
it "raises a Puppet::Error if the svcs state is unmanageable" do
|
321
|
+
states[:current] = 'unmanageable state'
|
322
|
+
expect { @provider.status }.to raise_error do |error|
|
323
|
+
expect(error).to be_a(Puppet::Error)
|
324
|
+
expect(error.message).to match(states[:current])
|
250
325
|
end
|
251
326
|
end
|
252
327
|
|
253
|
-
it "returns the service
|
254
|
-
|
328
|
+
it "returns 'stopped' if the service does not exist" do
|
329
|
+
expect(@provider).to receive(:service_states).and_raise(Puppet::ExecutionFailure, 'service does not exist!')
|
330
|
+
expect(@provider.status).to eql(:stopped)
|
331
|
+
end
|
255
332
|
|
256
|
-
|
333
|
+
it "uses the current state for comparison if the next state is not provided" do
|
334
|
+
states[:next] = 'disabled'
|
335
|
+
expect(@provider.status).to eql(:stopped)
|
336
|
+
end
|
257
337
|
|
258
|
-
|
259
|
-
|
338
|
+
it "should return stopped for an incomplete service on Solaris 11" do
|
339
|
+
allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.3')
|
340
|
+
allow(@provider).to receive(:complete_service?).and_return(false)
|
341
|
+
expect(@provider.status).to eq(:stopped)
|
260
342
|
end
|
261
343
|
end
|
262
344
|
|
263
|
-
describe '#
|
264
|
-
let(:fmri) { '
|
265
|
-
|
345
|
+
describe '#maybe_clear_service_then_svcadm' do
|
346
|
+
let(:fmri) { 'resource_fmri' }
|
266
347
|
before(:each) do
|
267
348
|
allow(@provider).to receive(:service_fmri).and_return(fmri)
|
268
349
|
end
|
269
350
|
|
270
|
-
it '
|
271
|
-
|
351
|
+
it 'applies the svcadm subcommand with the given flags' do
|
352
|
+
expect(@provider).to receive(:adm).with('enable', '-rst', fmri)
|
353
|
+
@provider.maybe_clear_service_then_svcadm(:stopped, 'enable', '-rst')
|
354
|
+
end
|
272
355
|
|
273
|
-
|
356
|
+
[:maintenance, :degraded].each do |status|
|
357
|
+
it "clears the service before applying the svcadm subcommand if the service status is #{status}" do
|
358
|
+
expect(@provider).to receive(:adm).with('clear', fmri)
|
359
|
+
expect(@provider).to receive(:adm).with('enable', '-rst', fmri)
|
360
|
+
|
361
|
+
@provider.maybe_clear_service_then_svcadm(status, 'enable', '-rst')
|
362
|
+
end
|
274
363
|
end
|
364
|
+
end
|
275
365
|
|
276
|
-
|
277
|
-
|
278
|
-
|
366
|
+
describe '#flush' do
|
367
|
+
def mark_property_for_syncing(property, value)
|
368
|
+
properties_to_sync = @provider.instance_variable_get(:@properties_to_sync)
|
369
|
+
properties_to_sync[property] = value
|
279
370
|
end
|
280
371
|
|
281
|
-
it 'should
|
282
|
-
|
283
|
-
|
284
|
-
|
372
|
+
it 'should noop if enable and ensure do not need to be syncd' do
|
373
|
+
expect(@provider).not_to receive(:setup_service)
|
374
|
+
@provider.flush
|
375
|
+
end
|
285
376
|
|
286
|
-
|
377
|
+
context 'enable or ensure need to be syncd' do
|
378
|
+
let(:stopped_states) do
|
379
|
+
['offline', 'disabled', 'uninitialized']
|
380
|
+
end
|
381
|
+
|
382
|
+
let(:fmri) { 'resource_fmri' }
|
383
|
+
let(:mock_status) { :maintenance }
|
384
|
+
before(:each) do
|
385
|
+
allow(@provider).to receive(:setup_service)
|
386
|
+
allow(@provider).to receive(:service_fmri).and_return(fmri)
|
387
|
+
|
388
|
+
# We will update this mock on a per-test basis.
|
389
|
+
allow(@provider).to receive(:status).and_return(mock_status)
|
390
|
+
allow(@provider).to receive(:wait)
|
391
|
+
end
|
392
|
+
|
393
|
+
context 'only ensure needs to be syncd' do
|
394
|
+
it 'stops the service if ensure == stopped' do
|
395
|
+
mark_property_for_syncing(:ensure, :stopped)
|
396
|
+
|
397
|
+
expect(@provider).to receive(:maybe_clear_service_then_svcadm).with(mock_status, 'disable', '-st')
|
398
|
+
expect(@provider).to receive(:wait).with(*stopped_states)
|
399
|
+
|
400
|
+
@provider.flush
|
401
|
+
end
|
402
|
+
|
403
|
+
it 'starts the service if ensure == running' do
|
404
|
+
mark_property_for_syncing(:ensure, :running)
|
405
|
+
|
406
|
+
expect(@provider).to receive(:maybe_clear_service_then_svcadm).with(mock_status, 'enable', '-rst')
|
407
|
+
expect(@provider).to receive(:wait).with('online')
|
408
|
+
|
409
|
+
@provider.flush
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
413
|
+
context 'enable needs to be syncd' do
|
414
|
+
before(:each) do
|
415
|
+
# We will stub this value out later, this default is useful
|
416
|
+
# for the final state tests.
|
417
|
+
mark_property_for_syncing(:enable, true)
|
418
|
+
end
|
419
|
+
|
420
|
+
it 'enables the service' do
|
421
|
+
mark_property_for_syncing(:enable, true)
|
422
|
+
|
423
|
+
expect(@provider).to receive(:maybe_clear_service_then_svcadm).with(mock_status, 'enable', '-rs')
|
424
|
+
|
425
|
+
expect(@provider).to receive(:adm).with('mark', '-I', 'maintenance', fmri)
|
426
|
+
|
427
|
+
@provider.flush
|
428
|
+
end
|
429
|
+
|
430
|
+
it 'disables the service' do
|
431
|
+
mark_property_for_syncing(:enable, false)
|
432
|
+
|
433
|
+
expect(@provider).to receive(:maybe_clear_service_then_svcadm).with(mock_status, 'disable', '-s')
|
434
|
+
|
435
|
+
expect(@provider).to receive(:adm).with('mark', '-I', 'maintenance', fmri)
|
436
|
+
|
437
|
+
@provider.flush
|
438
|
+
end
|
439
|
+
|
440
|
+
context 'when the final service state is running' do
|
441
|
+
before(:each) do
|
442
|
+
allow(@provider).to receive(:status).and_return(:running)
|
443
|
+
end
|
444
|
+
|
445
|
+
it 'starts the service if enable was false' do
|
446
|
+
mark_property_for_syncing(:enable, false)
|
447
|
+
|
448
|
+
expect(@provider).to receive(:adm).with('disable', '-s', fmri)
|
449
|
+
expect(@provider).to receive(:adm).with('enable', '-rst', fmri)
|
450
|
+
expect(@provider).to receive(:wait).with('online')
|
451
|
+
|
452
|
+
@provider.flush
|
453
|
+
end
|
454
|
+
|
455
|
+
it 'waits for the service to start if enable was true' do
|
456
|
+
mark_property_for_syncing(:enable, true)
|
457
|
+
|
458
|
+
expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
|
459
|
+
expect(@provider).to receive(:wait).with('online')
|
460
|
+
|
461
|
+
@provider.flush
|
462
|
+
end
|
463
|
+
end
|
464
|
+
|
465
|
+
context 'when the final service state is stopped' do
|
466
|
+
before(:each) do
|
467
|
+
allow(@provider).to receive(:status).and_return(:stopped)
|
468
|
+
end
|
469
|
+
|
470
|
+
it 'stops the service if enable was true' do
|
471
|
+
mark_property_for_syncing(:enable, true)
|
472
|
+
|
473
|
+
expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
|
474
|
+
expect(@provider).to receive(:adm).with('disable', '-st', fmri)
|
475
|
+
expect(@provider).to receive(:wait).with(*stopped_states)
|
476
|
+
|
477
|
+
@provider.flush
|
478
|
+
end
|
479
|
+
|
480
|
+
it 'waits for the service to stop if enable was false' do
|
481
|
+
mark_property_for_syncing(:enable, false)
|
482
|
+
|
483
|
+
expect(@provider).to_not receive(:adm).with('disable', '-st', fmri)
|
484
|
+
expect(@provider).to receive(:wait).with(*stopped_states)
|
485
|
+
|
486
|
+
@provider.flush
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
it 'marks the service as being under maintenance if the final state is maintenance' do
|
491
|
+
expect(@provider).to receive(:status).and_return(:maintenance)
|
492
|
+
|
493
|
+
expect(@provider).to receive(:adm).with('clear', fmri)
|
494
|
+
expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
|
495
|
+
|
496
|
+
expect(@provider).to receive(:adm).with('mark', '-I', 'maintenance', fmri)
|
497
|
+
expect(@provider).to receive(:wait).with('maintenance')
|
498
|
+
|
499
|
+
@provider.flush
|
500
|
+
end
|
501
|
+
|
502
|
+
it 'uses the ensure value as the final state if ensure also needs to be syncd' do
|
503
|
+
mark_property_for_syncing(:ensure, :running)
|
504
|
+
expect(@provider).to receive(:status).and_return(:stopped)
|
505
|
+
|
506
|
+
expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
|
507
|
+
expect(@provider).to receive(:wait).with('online')
|
508
|
+
|
509
|
+
@provider.flush
|
510
|
+
end
|
511
|
+
|
512
|
+
it 'marks the final state of a degraded service as running' do
|
513
|
+
expect(@provider).to receive(:status).and_return(:degraded)
|
514
|
+
|
515
|
+
expect(@provider).to receive(:adm).with('clear', fmri)
|
516
|
+
expect(@provider).to receive(:adm).with('enable', '-rs', fmri)
|
517
|
+
|
518
|
+
expect(@provider).to receive(:wait).with('online')
|
519
|
+
|
520
|
+
@provider.flush
|
521
|
+
end
|
522
|
+
end
|
287
523
|
end
|
288
524
|
end
|
289
525
|
end
|