puppet 6.16.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/Gemfile +5 -3
- data/Gemfile.lock +31 -33
- data/README.md +4 -5
- data/Rakefile +4 -12
- 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/agent.rb +2 -2
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/agent.rb +22 -6
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +66 -31
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +166 -169
- data/lib/puppet/environments.rb +41 -15
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +66 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/feature/base.rb +1 -1
- 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_bucket/dipper.rb +1 -1
- 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 +13 -1
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +4 -4
- data/lib/puppet/file_system/uniquefile.rb +8 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +3 -8
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +23 -13
- data/lib/puppet/http/client.rb +170 -115
- 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 +13 -19
- data/lib/puppet/http/resolver.rb +10 -23
- data/lib/puppet/http/resolver/server_list.rb +23 -45
- data/lib/puppet/http/resolver/settings.rb +7 -10
- data/lib/puppet/http/resolver/srv.rb +11 -15
- data/lib/puppet/http/response.rb +49 -48
- 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 +15 -27
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -70
- data/lib/puppet/http/service/file_server.rb +19 -28
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +16 -24
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +27 -6
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +3 -7
- data/lib/puppet/indirector/file_metadata/http.rb +25 -5
- data/lib/puppet/indirector/file_metadata/rest.rb +5 -11
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +2 -103
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- 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/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +93 -14
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -42
- data/lib/puppet/parser/compiler.rb +1 -199
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +3 -71
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -13
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- 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/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- 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 -22
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- 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 +28 -42
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -11
- data/lib/puppet/provider/package/gem.rb +27 -5
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pip2.rb +17 -0
- 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 +6 -4
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +2 -1
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +11 -4
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reports/http.rb +2 -0
- data/lib/puppet/resource.rb +3 -90
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +5 -112
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +84 -35
- data/lib/puppet/settings/base_setting.rb +26 -2
- 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_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +37 -1
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +19 -16
- data/lib/puppet/transaction.rb +3 -9
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +10 -8
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +9 -77
- data/lib/puppet/type/file.rb +45 -22
- data/lib/puppet/type/file/checksum.rb +5 -5
- data/lib/puppet/type/file/source.rb +33 -13
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/service.rb +53 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -13
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +14 -2
- data/lib/puppet/util/windows.rb +3 -7
- 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 +5 -15
- 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/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +52 -486
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +242 -8
- 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 +713 -1380
- data/man/man5/puppet.conf.5 +84 -98
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- 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 +55 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-module.8 +1 -58
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -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/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/integration/application/agent_spec.rb +157 -59
- data/spec/integration/application/apply_spec.rb +150 -150
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +78 -29
- data/spec/integration/application/help_spec.rb +44 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +76 -4
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +33 -5
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +29 -30
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/compiler_spec.rb +11 -0
- 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 +6 -5
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +2 -2
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +9 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/agent_spec.rb +3 -4
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +74 -8
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +17 -4
- data/spec/unit/application_spec.rb +9 -4
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +14 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +96 -44
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +12 -10
- data/spec/unit/defaults_spec.rb +77 -28
- data/spec/unit/environments_spec.rb +96 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +2 -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 +14 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -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/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +71 -17
- 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 +34 -15
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -65
- data/spec/unit/http/service/file_server_spec.rb +5 -6
- data/spec/unit/http/service/puppetserver_spec.rb +112 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -3
- data/spec/unit/http/session_spec.rb +24 -35
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/facter_spec.rb +97 -0
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- 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/http_spec.rb +27 -0
- 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/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +3 -267
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -98
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- 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 +61 -73
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +51 -22
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +77 -22
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- 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 +7 -17
- 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/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dpkg_spec.rb +22 -55
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +402 -166
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +50 -15
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +22 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +0 -12
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +3 -59
- 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 +586 -239
- data/spec/unit/ssl/base_spec.rb +36 -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 +78 -49
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +3 -3
- 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 +4 -5
- data/spec/unit/type/file_spec.rb +134 -102
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +209 -0
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +70 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -127
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +3 -21
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +76 -270
- 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 -85
- 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 -182
- 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 -64
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -20
- data/lib/puppet/parser/environment_compiler.rb +0 -199
- 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/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -282
- 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/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- 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 -79
- 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/man_spec.rb +0 -31
- 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 -723
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- 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
data/lib/puppet.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'puppet/version'
|
2
2
|
require 'puppet/concurrent/synchronized'
|
3
3
|
|
4
|
-
if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.
|
5
|
-
raise LoadError, "Puppet #{Puppet.version} requires Ruby 2.
|
4
|
+
if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.5.0")
|
5
|
+
raise LoadError, "Puppet #{Puppet.version} requires Ruby 2.5.0 or greater, found Ruby #{RUBY_VERSION.dup}."
|
6
6
|
end
|
7
7
|
|
8
|
-
Puppet::OLDEST_RECOMMENDED_RUBY_VERSION = '2.
|
8
|
+
Puppet::OLDEST_RECOMMENDED_RUBY_VERSION = '2.5.0'
|
9
9
|
|
10
10
|
$LOAD_PATH.extend(Puppet::Concurrent::Synchronized)
|
11
11
|
|
@@ -27,16 +27,16 @@ require 'puppet/external/pson/pure'
|
|
27
27
|
require 'puppet/gettext/config'
|
28
28
|
require 'puppet/defaults'
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
# the top-level module
|
30
|
+
# Defines the `Puppet` module. There are different entry points into Puppet
|
31
|
+
# depending on your use case.
|
33
32
|
#
|
34
|
-
#
|
35
|
-
# preferences for things like debugging
|
33
|
+
# To use puppet as a library, see {Puppet::Pal}.
|
36
34
|
#
|
37
|
-
#
|
38
|
-
|
39
|
-
#
|
35
|
+
# To create a new application, see {Puppet::Application}.
|
36
|
+
#
|
37
|
+
# To create a new function, see {Puppet::Functions}.
|
38
|
+
#
|
39
|
+
# To access puppet's REST APIs, see https://puppet.com/docs/puppet/latest/http_api/http_api_index.html.
|
40
40
|
#
|
41
41
|
# @api public
|
42
42
|
module Puppet
|
@@ -97,12 +97,6 @@ module Puppet
|
|
97
97
|
# Load the base features.
|
98
98
|
require 'puppet/feature/base'
|
99
99
|
|
100
|
-
# Store a new default value.
|
101
|
-
def self.define_settings(section, hash)
|
102
|
-
Puppet.deprecation_warning('The method Puppet.define_settings is deprecated and will be removed in a future release')
|
103
|
-
@@settings.define_settings(section, hash)
|
104
|
-
end
|
105
|
-
|
106
100
|
# setting access and stuff
|
107
101
|
def self.[]=(param,value)
|
108
102
|
@@settings[param] = value
|
@@ -245,7 +239,6 @@ module Puppet
|
|
245
239
|
|
246
240
|
{
|
247
241
|
:environments => Puppet::Environments::Cached.new(Puppet::Environments::Combined.new(*loaders)),
|
248
|
-
:http_pool => proc { Puppet.runtime[:http].pool },
|
249
242
|
:ssl_context => proc {
|
250
243
|
begin
|
251
244
|
cert = Puppet::X509::CertProvider.new
|
@@ -260,7 +253,6 @@ module Puppet
|
|
260
253
|
raise e
|
261
254
|
end
|
262
255
|
},
|
263
|
-
:ssl_host => proc { Puppet::SSL::Host.localhost(true) },
|
264
256
|
:http_session => proc { Puppet.runtime[:http].create_session },
|
265
257
|
:plugins => proc { Puppet::Plugins::Configuration.load_plugins },
|
266
258
|
:rich_data => false
|
@@ -364,7 +356,6 @@ require 'puppet/ssl'
|
|
364
356
|
require 'puppet/module'
|
365
357
|
require 'puppet/data_binding'
|
366
358
|
require 'puppet/util/storage'
|
367
|
-
require 'puppet/status'
|
368
359
|
require 'puppet/file_bucket/file'
|
369
360
|
require 'puppet/plugins/configuration'
|
370
361
|
require 'puppet/pal/pal_api'
|
data/lib/puppet/agent.rb
CHANGED
@@ -64,10 +64,10 @@ class Puppet::Agent
|
|
64
64
|
now = Time.now.to_i
|
65
65
|
wait_for_lock_deadline ||= now + Puppet[:maxwaitforlock]
|
66
66
|
|
67
|
-
if Puppet[:waitforlock]
|
67
|
+
if Puppet[:waitforlock] < 1
|
68
68
|
Puppet.notice _("Run of %{client_class} already in progress; skipping (%{lockfile_path} exists)") % { client_class: client_class, lockfile_path: lockfile_path }
|
69
69
|
nil
|
70
|
-
elsif now
|
70
|
+
elsif now >= wait_for_lock_deadline
|
71
71
|
Puppet.notice _("Exiting now because the maxwaitforlock timeout has been exceeded.")
|
72
72
|
nil
|
73
73
|
else
|
data/lib/puppet/agent/locker.rb
CHANGED
@@ -27,14 +27,7 @@ module Puppet::Agent::Locker
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
# @deprecated
|
31
30
|
def running?
|
32
|
-
#TRANSLATORS 'Puppet::Agent::Locker.running?' is a method name and should not be translated
|
33
|
-
message = _('Puppet::Agent::Locker.running? is deprecated as it is inherently unsafe.')
|
34
|
-
#TRANSLATORS 'LockError' should not be translated
|
35
|
-
message += ' ' + _('The only safe way to know if the lock is locked is to try lock and perform some '\
|
36
|
-
'action and then handle the LockError that may result.')
|
37
|
-
Puppet.deprecation_warning(message)
|
38
31
|
lockfile.locked?
|
39
32
|
end
|
40
33
|
|
data/lib/puppet/application.rb
CHANGED
@@ -6,95 +6,74 @@ require 'puppet/application_support'
|
|
6
6
|
|
7
7
|
module Puppet
|
8
8
|
|
9
|
-
#
|
10
|
-
# * setting up options
|
11
|
-
# * setting up logs
|
12
|
-
# * choosing what to run
|
13
|
-
# * representing execution status
|
9
|
+
# Defines an abstract Puppet application.
|
14
10
|
#
|
15
|
-
#
|
16
|
-
# An application is a subclass of Puppet::Application.
|
17
|
-
#
|
18
|
-
# For legacy compatibility,
|
19
|
-
# Puppet::Application[:example].run
|
20
|
-
# is equivalent to
|
21
|
-
# Puppet::Application::Example.new.run
|
11
|
+
# # Usage
|
22
12
|
#
|
13
|
+
# To create a new application extend `Puppet::Application`. Derived applications
|
14
|
+
# must implement the `main` method and should implement the `summary` and
|
15
|
+
# `help` methods in order to be included in `puppet help`, and should define
|
16
|
+
# application-specific options. For example:
|
23
17
|
#
|
18
|
+
# ```
|
24
19
|
# class Puppet::Application::Example < Puppet::Application
|
25
20
|
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
# end
|
30
|
-
#
|
31
|
-
# # run_command is called to actually run the specified command
|
32
|
-
# def run_command
|
33
|
-
# send Puppet::Util::CommandLine.new.args.shift
|
34
|
-
# end
|
21
|
+
# def summary
|
22
|
+
# "My puppet example application"
|
23
|
+
# end
|
35
24
|
#
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
25
|
+
# def help
|
26
|
+
# <<~HELP
|
27
|
+
# puppet-example(8) -- #{summary}
|
28
|
+
# ...
|
29
|
+
# HELP
|
30
|
+
# end
|
41
31
|
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
32
|
+
# # define arg with a required option
|
33
|
+
# option("--arg ARGUMENT") do |v|
|
34
|
+
# options[:arg] = v
|
35
|
+
# end
|
45
36
|
#
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
37
|
+
# # define arg with an optional option
|
38
|
+
# option("--maybe [ARGUMENT]") do |v|
|
39
|
+
# options[:maybe] = v
|
40
|
+
# end
|
49
41
|
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
# ...
|
53
|
-
# # let's say to the framework we finally handle this option
|
54
|
-
# true
|
55
|
-
# end
|
42
|
+
# # define long and short arg
|
43
|
+
# option("--all", "-a")
|
56
44
|
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
45
|
+
# def initialize(command_line = Puppet::Util::CommandLine.new)
|
46
|
+
# super
|
47
|
+
# @data = {}
|
48
|
+
# end
|
60
49
|
#
|
61
|
-
#
|
62
|
-
#
|
63
|
-
#
|
64
|
-
#
|
65
|
-
# end
|
50
|
+
# def main
|
51
|
+
# # call action
|
52
|
+
# send(@command_line.args.shift)
|
53
|
+
# end
|
66
54
|
#
|
67
|
-
#
|
68
|
-
#
|
69
|
-
#
|
55
|
+
# def read
|
56
|
+
# # read action
|
57
|
+
# end
|
70
58
|
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
# arguments, including the long option, the short option, a description...
|
75
|
-
# Refer to +OptionParser+ documentation for the exact format.
|
76
|
-
# * If the option method is given a block, this one will be called whenever
|
77
|
-
# the option is encountered in the command-line argument.
|
78
|
-
# * If the option method has no block, a default functionality will be used, that
|
79
|
-
# stores the argument (or true/false if the option doesn't require an argument) in
|
80
|
-
# the global (to the application) options array.
|
81
|
-
# * If a given option was not defined by a the +option+ method, but it exists as a Puppet settings:
|
82
|
-
# * if +unknown+ was used with a block, it will be called with the option name and argument
|
83
|
-
# * if +unknown+ wasn't used, then the option/argument is handed to Puppet.settings.handlearg for
|
84
|
-
# a default behavior
|
59
|
+
# def write
|
60
|
+
# # write action
|
61
|
+
# end
|
85
62
|
#
|
86
|
-
#
|
63
|
+
# end
|
64
|
+
# ```
|
87
65
|
#
|
88
|
-
#
|
89
|
-
#
|
90
|
-
# The default +setup+ behaviour is to: read Puppet configuration and manage log level and destination
|
66
|
+
# Puppet defines the following application lifecycle methods that are called in
|
67
|
+
# the following order:
|
91
68
|
#
|
92
|
-
#
|
93
|
-
#
|
94
|
-
#
|
95
|
-
#
|
69
|
+
# * {#initialize}
|
70
|
+
# * {#initialize_app_defaults}
|
71
|
+
# * {#preinit}
|
72
|
+
# * {#parse_options}
|
73
|
+
# * {#setup}
|
74
|
+
# * {#main}
|
96
75
|
#
|
97
|
-
#
|
76
|
+
# ## Execution state
|
98
77
|
# The class attributes/methods of Puppet::Application serve as a global place to set and query the execution
|
99
78
|
# status of the application: stopping, restarting, etc. The setting of the application status does not directly
|
100
79
|
# affect its running status; it's assumed that the various components within the application will consult these
|
@@ -104,21 +83,27 @@ module Puppet
|
|
104
83
|
#
|
105
84
|
# So, if something in your application needs to stop the process, for some reason, you might consider:
|
106
85
|
#
|
86
|
+
# ```
|
107
87
|
# def stop_me!
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
88
|
+
# # indicate that we're stopping
|
89
|
+
# Puppet::Application.stop!
|
90
|
+
# # ...do stuff...
|
111
91
|
# end
|
92
|
+
# ```
|
112
93
|
#
|
113
94
|
# And, if you have some component that involves a long-running process, you might want to consider:
|
114
95
|
#
|
96
|
+
# ```
|
115
97
|
# def my_long_process(giant_list_to_munge)
|
116
|
-
#
|
117
|
-
#
|
118
|
-
#
|
119
|
-
#
|
120
|
-
#
|
98
|
+
# giant_list_to_munge.collect do |member|
|
99
|
+
# # bail if we're stopping
|
100
|
+
# return if Puppet::Application.stop_requested?
|
101
|
+
# process_member(member)
|
102
|
+
# end
|
121
103
|
# end
|
104
|
+
# ```
|
105
|
+
# @abstract
|
106
|
+
# @api public
|
122
107
|
class Application
|
123
108
|
require 'puppet/util'
|
124
109
|
include Puppet::Util
|
@@ -137,34 +122,42 @@ class Application
|
|
137
122
|
self.run_status = nil
|
138
123
|
end
|
139
124
|
|
125
|
+
# Signal that the application should stop.
|
126
|
+
# @api public
|
140
127
|
def stop!
|
141
128
|
self.run_status = :stop_requested
|
142
129
|
end
|
143
130
|
|
131
|
+
# Signal that the application should restart.
|
132
|
+
# @api public
|
144
133
|
def restart!
|
145
134
|
self.run_status = :restart_requested
|
146
135
|
end
|
147
136
|
|
148
137
|
# Indicates that Puppet::Application.restart! has been invoked and components should
|
149
138
|
# do what is necessary to facilitate a restart.
|
139
|
+
# @api public
|
150
140
|
def restart_requested?
|
151
141
|
:restart_requested == run_status
|
152
142
|
end
|
153
143
|
|
154
144
|
# Indicates that Puppet::Application.stop! has been invoked and components should do what is necessary
|
155
145
|
# for a clean stop.
|
146
|
+
# @api public
|
156
147
|
def stop_requested?
|
157
148
|
:stop_requested == run_status
|
158
149
|
end
|
159
150
|
|
160
151
|
# Indicates that one of stop! or start! was invoked on Puppet::Application, and some kind of process
|
161
152
|
# shutdown/short-circuit may be necessary.
|
153
|
+
# @api public
|
162
154
|
def interrupted?
|
163
155
|
[:restart_requested, :stop_requested].include? run_status
|
164
156
|
end
|
165
157
|
|
166
158
|
# Indicates that Puppet::Application believes that it's in usual running run_mode (no stop/restart request
|
167
159
|
# currently active).
|
160
|
+
# @api public
|
168
161
|
def clear?
|
169
162
|
run_status.nil?
|
170
163
|
end
|
@@ -270,14 +263,21 @@ class Application
|
|
270
263
|
end
|
271
264
|
private :try_load_class
|
272
265
|
|
266
|
+
# Return an instance of the specified application.
|
267
|
+
#
|
268
|
+
# @param [Symbol] name the lowercase name of the application
|
269
|
+
# @return [Puppet::Application] an instance of the specified name
|
270
|
+
# @raise [Puppet::Error] if the application class was not found.
|
271
|
+
# @raise [LoadError] if there was a problem loading the application file.
|
272
|
+
# @api public
|
273
273
|
def [](name)
|
274
274
|
find(name).new
|
275
275
|
end
|
276
276
|
|
277
277
|
# Sets or gets the run_mode name. Sets the run_mode name if a mode_name is
|
278
278
|
# passed. Otherwise, gets the run_mode or a default run_mode
|
279
|
-
#
|
280
|
-
def run_mode(
|
279
|
+
# @api public
|
280
|
+
def run_mode(mode_name = nil)
|
281
281
|
if mode_name
|
282
282
|
Puppet.settings.preferred_run_mode = mode_name
|
283
283
|
end
|
@@ -288,12 +288,19 @@ class Application
|
|
288
288
|
@run_mode = Puppet::Util::RunMode[ mode_name || Puppet.settings.preferred_run_mode ]
|
289
289
|
end
|
290
290
|
|
291
|
-
# Sets environment_mode name
|
291
|
+
# Sets environment_mode name. When acting as a compiler, the environment mode
|
292
|
+
# should be `:local` since the directory must exist to compile the catalog.
|
293
|
+
# When acting as an agent, the environment mode should be `:remote` since
|
294
|
+
# the Puppet[:environment] setting refers to an environment directoy on a remote
|
295
|
+
# system. The `:not_required` mode is for cases where the application does not
|
296
|
+
# need an environment to run.
|
297
|
+
#
|
292
298
|
# @param mode_name [Symbol] The name of the environment mode to run in. May
|
293
|
-
# be one of
|
294
|
-
# application looks for its specified environment. If
|
295
|
-
#
|
299
|
+
# be one of `:local`, `:remote`, or `:not_required`. This impacts where the
|
300
|
+
# application looks for its specified environment. If `:not_required` or
|
301
|
+
# `:remote` are set, the application will not fail if the environment does
|
296
302
|
# not exist on the local filesystem.
|
303
|
+
# @api public
|
297
304
|
def environment_mode(mode_name)
|
298
305
|
raise Puppet::Error, _("Invalid environment mode '%{mode_name}'") % { mode_name: mode_name } unless [:local, :remote, :not_required].include?(mode_name)
|
299
306
|
@environment_mode = mode_name
|
@@ -301,11 +308,14 @@ class Application
|
|
301
308
|
|
302
309
|
# Gets environment_mode name. If none is set with `environment_mode=`,
|
303
310
|
# default to :local.
|
311
|
+
# @return [Symbol] The current environment mode
|
312
|
+
# @api public
|
304
313
|
def get_environment_mode
|
305
314
|
@environment_mode || :local
|
306
315
|
end
|
307
316
|
|
308
317
|
# This is for testing only
|
318
|
+
# @api public
|
309
319
|
def clear_everything_for_tests
|
310
320
|
@run_mode = @banner = @run_status = @option_parser_commands = nil
|
311
321
|
end
|
@@ -327,37 +337,66 @@ class Application
|
|
327
337
|
exit(0)
|
328
338
|
end
|
329
339
|
|
330
|
-
|
340
|
+
# Initialize the application receiving the {Puppet::Util::CommandLine} object
|
341
|
+
# containing the application name and arguments.
|
342
|
+
#
|
343
|
+
# @param command_line [Puppet::Util::CommandLine] An instance of the command line to create the application with
|
344
|
+
# @api public
|
345
|
+
def initialize(command_line = Puppet::Util::CommandLine.new)
|
346
|
+
@command_line = CommandLineArgs.new(command_line.subcommand_name, command_line.args.dup)
|
347
|
+
@options = {}
|
348
|
+
end
|
349
|
+
|
350
|
+
# Now that the `run_mode` has been resolved, return default settings for the
|
351
|
+
# application. Note these values may be overridden when puppet's configuration
|
352
|
+
# is loaded later.
|
353
|
+
#
|
354
|
+
# @example To override the facts terminus:
|
355
|
+
# def app_defaults
|
356
|
+
# super.merge({
|
357
|
+
# :facts_terminus => 'yaml'
|
358
|
+
# })
|
359
|
+
# end
|
360
|
+
#
|
361
|
+
# @return [Hash<String, String>] default application settings
|
362
|
+
# @api public
|
363
|
+
def app_defaults
|
331
364
|
Puppet::Settings.app_defaults_for_run_mode(self.class.run_mode).merge(
|
332
365
|
:name => name
|
333
366
|
)
|
334
367
|
end
|
335
368
|
|
369
|
+
# Initialize application defaults. It's usually not necessary to override this method.
|
370
|
+
# @return [void]
|
371
|
+
# @api public
|
336
372
|
def initialize_app_defaults()
|
337
373
|
Puppet.settings.initialize_app_defaults(app_defaults)
|
338
374
|
end
|
339
375
|
|
340
|
-
#
|
376
|
+
# The preinit block is the first code to be called in your application, after
|
377
|
+
# `initialize`, but before option parsing, setup or command execution. It is
|
378
|
+
# usually not necessary to override this method.
|
379
|
+
# @return [void]
|
380
|
+
# @api public
|
341
381
|
def preinit
|
342
382
|
end
|
343
383
|
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
end
|
348
|
-
|
349
|
-
# call in setup of subclass to deprecate an application
|
384
|
+
# Call in setup of subclass to deprecate an application.
|
385
|
+
# @return [void]
|
386
|
+
# @api public
|
350
387
|
def deprecate
|
351
388
|
@deprecated = true
|
352
389
|
end
|
353
390
|
|
391
|
+
# Return true if this application is deprecated.
|
392
|
+
# @api public
|
354
393
|
def deprecated?
|
355
394
|
@deprecated
|
356
395
|
end
|
357
396
|
|
358
|
-
# Execute the application.
|
359
|
-
# @api public
|
397
|
+
# Execute the application. This method should not be overridden.
|
360
398
|
# @return [void]
|
399
|
+
# @api public
|
361
400
|
def run
|
362
401
|
|
363
402
|
# I don't really like the names of these lifecycle phases. It would be nice to change them to some more meaningful
|
@@ -382,18 +421,34 @@ class Application
|
|
382
421
|
exit_on_fail(_("Could not run")) { run_command }
|
383
422
|
end
|
384
423
|
|
424
|
+
# This method must be overridden and perform whatever action is required for
|
425
|
+
# the application. The `command_line` reader contains the actions and
|
426
|
+
# arguments.
|
427
|
+
# @return [void]
|
428
|
+
# @api public
|
385
429
|
def main
|
386
430
|
raise NotImplementedError, _("No valid command or main")
|
387
431
|
end
|
388
432
|
|
433
|
+
# Run the application. By default, it calls {#main}.
|
434
|
+
# @return [void]
|
435
|
+
# @api public
|
389
436
|
def run_command
|
390
437
|
main
|
391
438
|
end
|
392
439
|
|
440
|
+
# Setup the application. It is usually not necessary to override this method.
|
441
|
+
# @return [void]
|
442
|
+
# @api public
|
393
443
|
def setup
|
394
444
|
setup_logs
|
395
445
|
end
|
396
446
|
|
447
|
+
# Setup logging. By default the `console` log destination will only be created
|
448
|
+
# if `debug` or `verbose` is specified on the command line. Override to customize
|
449
|
+
# the logging behavior.
|
450
|
+
# @return [void]
|
451
|
+
# @api public
|
397
452
|
def setup_logs
|
398
453
|
handle_logdest_arg(Puppet[:logdest]) if !options[:setdest]
|
399
454
|
|
@@ -436,11 +491,10 @@ class Application
|
|
436
491
|
# Output basic information about the runtime environment for debugging
|
437
492
|
# purposes.
|
438
493
|
#
|
439
|
-
# @api public
|
440
|
-
#
|
441
494
|
# @param extra_info [Hash{String => #to_s}] a flat hash of extra information
|
442
495
|
# to log. Intended to be passed to super by subclasses.
|
443
496
|
# @return [void]
|
497
|
+
# @api public
|
444
498
|
def log_runtime_environment(extra_info=nil)
|
445
499
|
runtime_info = {
|
446
500
|
'puppet_version' => Puppet.version,
|
@@ -453,6 +507,21 @@ class Application
|
|
453
507
|
Puppet.debug 'Runtime environment: ' + runtime_info.map{|k,v| k + '=' + v.to_s}.join(', ')
|
454
508
|
end
|
455
509
|
|
510
|
+
# Options defined with the `option` method are parsed from settings and the command line.
|
511
|
+
# Refer to {OptionParser} documentation for the exact format. Options are parsed as follows:
|
512
|
+
#
|
513
|
+
# * If the option method is given a block, then it will be called whenever the option is encountered in the command-line argument.
|
514
|
+
# * If the option method has no block, then the default option handler will store the argument in the `options` instance variable.
|
515
|
+
# * If a given option was not defined by an `option` method, but it exists as a Puppet setting:
|
516
|
+
# * if `unknown` was used with a block, it will be called with the option name and argument.
|
517
|
+
# * if `unknown` wasn't used, then the option/argument is handed to Puppet.settings.handlearg for
|
518
|
+
# a default behavior.
|
519
|
+
# * The `-h` and `--help` options are automatically handled by the command line before creating the application.
|
520
|
+
#
|
521
|
+
# Options specified on the command line override settings. It is usually not
|
522
|
+
# necessary to override this method.
|
523
|
+
# @return [void]
|
524
|
+
# @api public
|
456
525
|
def parse_options
|
457
526
|
# Create an option parser
|
458
527
|
option_parser = OptionParser.new(self.class.banner)
|
@@ -500,6 +569,9 @@ class Application
|
|
500
569
|
self.class.to_s.sub(/.*::/,"").downcase.to_sym
|
501
570
|
end
|
502
571
|
|
572
|
+
# Return the text to display when running `puppet help`.
|
573
|
+
# @return [String] The help to display
|
574
|
+
# @api public
|
503
575
|
def help
|
504
576
|
_("No help available for puppet %{app_name}") % { app_name: name }
|
505
577
|
end
|
@@ -507,6 +579,8 @@ class Application
|
|
507
579
|
# The description used in top level `puppet help` output
|
508
580
|
# If left empty in implementations, we will attempt to extract
|
509
581
|
# the summary from the help text itself.
|
582
|
+
# @return [String]
|
583
|
+
# @api public
|
510
584
|
def summary
|
511
585
|
""
|
512
586
|
end
|