puppet 6.20.0-x86-mingw32 → 7.4.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/Gemfile +1 -4
- data/Gemfile.lock +13 -13
- data/README.md +1 -1
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -2
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +2 -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 +172 -98
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/filebucket.rb +13 -9
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +27 -29
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +57 -162
- data/lib/puppet/environments.rb +8 -23
- data/lib/puppet/face/facts.rb +73 -49
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node/clean.rb +8 -0
- 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 +6 -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 +25 -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/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/formats.rb +67 -0
- 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/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/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/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/property/list.rb +1 -1
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/group/groupadd.rb +13 -8
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +30 -2
- data/lib/puppet/provider/package/aptitude.rb +6 -0
- 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/debian.rb +2 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/useradd.rb +55 -8
- data/lib/puppet/reference/configuration.rb +7 -5
- 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 +45 -33
- 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 +8 -16
- data/lib/puppet/type/user.rb +1 -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/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 +521 -1226
- data/man/man5/puppet.conf.5 +35 -95
- data/man/man8/puppet-agent.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +57 -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 +1 -1
- 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/integration/application/agent_spec.rb +57 -11
- data/spec/integration/application/apply_spec.rb +1 -1
- 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 +7 -3
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
- 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/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -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 +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/facts_spec.rb +86 -0
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/ssl_spec.rb +2 -2
- 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/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +22 -47
- data/spec/unit/environments_spec.rb +0 -3
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +14 -2
- 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 +22 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- 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/facts/facter_spec.rb +113 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- 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/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/network/authconfig_spec.rb +2 -129
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +45 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -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/functions/create_resources_spec.rb +2 -20
- 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/provider/group/groupadd_spec.rb +5 -2
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +24 -15
- data/spec/unit/provider/package/aptitude_spec.rb +1 -1
- 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/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/useradd_spec.rb +55 -3
- data/spec/unit/provider_spec.rb +0 -12
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +0 -56
- 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 +17 -0
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +19 -55
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- 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 +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -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/source_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +12 -6
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/run_mode_spec.rb +21 -121
- 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 +0 -18
- metadata +48 -219
- 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/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/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/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/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
@@ -198,7 +198,10 @@ describe Puppet::Type.type(:group).provider(:groupadd) do
|
|
198
198
|
end
|
199
199
|
|
200
200
|
describe "#findgroup" do
|
201
|
-
before
|
201
|
+
before do
|
202
|
+
allow(Puppet::FileSystem).to receive(:exist?).with('/etc/group').and_return(true)
|
203
|
+
allow(Puppet::FileSystem).to receive(:each_line).with('/etc/group').and_yield(content)
|
204
|
+
end
|
202
205
|
|
203
206
|
let(:content) { "sample_group_name:sample_password:sample_gid:sample_user_list" }
|
204
207
|
let(:output) do
|
@@ -221,7 +224,7 @@ describe Puppet::Type.type(:group).provider(:groupadd) do
|
|
221
224
|
end
|
222
225
|
|
223
226
|
it "reads the group file only once per resource" do
|
224
|
-
expect(
|
227
|
+
expect(Puppet::FileSystem).to receive(:each_line).with('/etc/group').once
|
225
228
|
5.times { provider.send(:findgroup, :group_name, 'sample_group_name') }
|
226
229
|
end
|
227
230
|
end
|
@@ -162,63 +162,6 @@ describe Puppet::Provider::NameService do
|
|
162
162
|
end
|
163
163
|
end
|
164
164
|
|
165
|
-
describe "#listbyname" do
|
166
|
-
it "should be deprecated" do
|
167
|
-
expect(Puppet).to receive(:deprecation_warning).with(/listbyname is deprecated/)
|
168
|
-
described_class.listbyname
|
169
|
-
end
|
170
|
-
|
171
|
-
it "should return a list of users if resource_type is user" do
|
172
|
-
described_class.resource_type = Puppet::Type.type(:user)
|
173
|
-
expect(Puppet::Etc).to receive(:setpwent)
|
174
|
-
allow(Puppet::Etc).to receive(:getpwent).and_return(*users)
|
175
|
-
expect(Puppet::Etc).to receive(:endpwent)
|
176
|
-
expect(described_class.listbyname).to eq(%w{root foo})
|
177
|
-
end
|
178
|
-
|
179
|
-
context "encoding handling" do
|
180
|
-
described_class.resource_type = Puppet::Type.type(:user)
|
181
|
-
|
182
|
-
# These two tests simulate an environment where there are two users with
|
183
|
-
# the same name on disk, but each name is stored on disk in a different
|
184
|
-
# encoding
|
185
|
-
it "should return names with invalid byte sequences replaced with '?'" do
|
186
|
-
allow(Etc).to receive(:getpwent).and_return(*utf_8_mixed_users)
|
187
|
-
expect(invalid_utf_8_jose).to_not be_valid_encoding
|
188
|
-
result = PuppetSpec::CharacterEncoding.with_external_encoding(Encoding::UTF_8) do
|
189
|
-
described_class.listbyname
|
190
|
-
end
|
191
|
-
expect(result).to eq(['root', 'foo', utf_8_jose, escaped_utf_8_jose])
|
192
|
-
end
|
193
|
-
|
194
|
-
it "should return names in their original encoding/bytes if they would not be valid UTF-8" do
|
195
|
-
allow(Etc).to receive(:getpwent).and_return(*latin_1_mixed_users)
|
196
|
-
result = PuppetSpec::CharacterEncoding.with_external_encoding(Encoding::ISO_8859_1) do
|
197
|
-
described_class.listbyname
|
198
|
-
end
|
199
|
-
expect(result).to eq(['root'.force_encoding(Encoding::UTF_8), 'foo'.force_encoding(Encoding::UTF_8), utf_8_jose, valid_latin1_jose])
|
200
|
-
end
|
201
|
-
end
|
202
|
-
|
203
|
-
it "should return a list of groups if resource_type is group", :unless => Puppet::Util::Platform.windows? do
|
204
|
-
described_class.resource_type = Puppet::Type.type(:group)
|
205
|
-
expect(Puppet::Etc).to receive(:setgrent)
|
206
|
-
allow(Puppet::Etc).to receive(:getgrent).and_return(*groups)
|
207
|
-
expect(Puppet::Etc).to receive(:endgrent)
|
208
|
-
expect(described_class.listbyname).to eq(%w{root bin})
|
209
|
-
end
|
210
|
-
|
211
|
-
it "should yield if a block given" do
|
212
|
-
yield_results = []
|
213
|
-
described_class.resource_type = Puppet::Type.type(:user)
|
214
|
-
expect(Puppet::Etc).to receive(:setpwent)
|
215
|
-
allow(Puppet::Etc).to receive(:getpwent).and_return(*users)
|
216
|
-
expect(Puppet::Etc).to receive(:endpwent)
|
217
|
-
described_class.listbyname {|x| yield_results << x }
|
218
|
-
expect(yield_results).to eq(%w{root foo})
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
165
|
describe "instances" do
|
223
166
|
it "should return a list of objects in UTF-8 with any invalid characters replaced with '?'" do
|
224
167
|
# These two tests simulate an environment where there are two users with
|
@@ -115,24 +115,12 @@ Version table:
|
|
115
115
|
allow(provider).to receive(:dpkgquery).and_return("name: #{resource.name}" )
|
116
116
|
end
|
117
117
|
|
118
|
-
context "when package is manual marked" do
|
119
|
-
before do
|
120
|
-
allow(described_class).to receive(:aptmark).with('showmanual').and_return("#{resource.name}\n")
|
121
|
-
end
|
122
|
-
|
123
|
-
it 'sets mark to manual' do
|
124
|
-
result = provider.query
|
125
|
-
expect(result[:mark]).to eql(:manual)
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
context 'when package is not manual marked ' do
|
130
|
-
before do
|
131
|
-
allow(described_class).to receive(:aptmark).with('showmanual').and_return('')
|
132
|
-
end
|
133
118
|
|
119
|
+
context 'when package is not installed on the system' do
|
134
120
|
it 'does not set mark to manual' do
|
135
121
|
result = provider.query
|
122
|
+
|
123
|
+
expect(described_class).not_to receive(:aptmark)
|
136
124
|
expect(result[:mark]).to be_nil
|
137
125
|
end
|
138
126
|
end
|
@@ -289,5 +277,26 @@ Version table:
|
|
289
277
|
|
290
278
|
provider.install
|
291
279
|
end
|
280
|
+
|
281
|
+
it "should install using the source attribute if present" do
|
282
|
+
resource[:ensure] = :installed
|
283
|
+
resource[:source] = '/my/local/package/file'
|
284
|
+
|
285
|
+
expect(provider).to receive(:aptget).with(any_args, :install, resource[:source])
|
286
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
287
|
+
|
288
|
+
provider.install
|
289
|
+
end
|
290
|
+
|
291
|
+
it "should install specific version using the source attribute if present" do
|
292
|
+
resource[:ensure] = '1.2.3'
|
293
|
+
resource[:source] = '/my/local/package/file'
|
294
|
+
|
295
|
+
expect(provider).to receive(:aptget).with(any_args, :install, resource[:source])
|
296
|
+
expect(provider).to receive(:properties).and_return({:mark => :none})
|
297
|
+
expect(provider).to receive(:query).and_return({:ensure => '1.2.3'})
|
298
|
+
|
299
|
+
provider.install
|
300
|
+
end
|
292
301
|
end
|
293
302
|
end
|
@@ -13,7 +13,7 @@ describe Puppet::Type.type(:package).provider(:aptitude) do
|
|
13
13
|
|
14
14
|
before do
|
15
15
|
allow(Puppet::Util).to receive(:which).with('/usr/bin/dpkg-query').and_return(dpkgquery_path)
|
16
|
-
allow(described_class).to receive(:aptmark).with('showmanual').and_return("")
|
16
|
+
allow(described_class).to receive(:aptmark).with('showmanual', 'faff').and_return("")
|
17
17
|
end
|
18
18
|
|
19
19
|
{ :absent => "deinstall ok config-files faff 1.2.3-1\n",
|
@@ -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("")
|
@@ -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
|