puppet 6.20.0-x64-mingw32 → 7.4.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 +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
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
|
|
@@ -440,11 +495,10 @@ class Application
|
|
440
495
|
# Output basic information about the runtime environment for debugging
|
441
496
|
# purposes.
|
442
497
|
#
|
443
|
-
# @api public
|
444
|
-
#
|
445
498
|
# @param extra_info [Hash{String => #to_s}] a flat hash of extra information
|
446
499
|
# to log. Intended to be passed to super by subclasses.
|
447
500
|
# @return [void]
|
501
|
+
# @api public
|
448
502
|
def log_runtime_environment(extra_info=nil)
|
449
503
|
runtime_info = {
|
450
504
|
'puppet_version' => Puppet.version,
|
@@ -457,6 +511,21 @@ class Application
|
|
457
511
|
Puppet.debug 'Runtime environment: ' + runtime_info.map{|k,v| k + '=' + v.to_s}.join(', ')
|
458
512
|
end
|
459
513
|
|
514
|
+
# Options defined with the `option` method are parsed from settings and the command line.
|
515
|
+
# Refer to {OptionParser} documentation for the exact format. Options are parsed as follows:
|
516
|
+
#
|
517
|
+
# * If the option method is given a block, then it will be called whenever the option is encountered in the command-line argument.
|
518
|
+
# * If the option method has no block, then the default option handler will store the argument in the `options` instance variable.
|
519
|
+
# * If a given option was not defined by an `option` method, but it exists as a Puppet setting:
|
520
|
+
# * if `unknown` was used with a block, it will be called with the option name and argument.
|
521
|
+
# * if `unknown` wasn't used, then the option/argument is handed to Puppet.settings.handlearg for
|
522
|
+
# a default behavior.
|
523
|
+
# * The `-h` and `--help` options are automatically handled by the command line before creating the application.
|
524
|
+
#
|
525
|
+
# Options specified on the command line override settings. It is usually not
|
526
|
+
# necessary to override this method.
|
527
|
+
# @return [void]
|
528
|
+
# @api public
|
460
529
|
def parse_options
|
461
530
|
# Create an option parser
|
462
531
|
option_parser = OptionParser.new(self.class.banner)
|
@@ -504,6 +573,9 @@ class Application
|
|
504
573
|
self.class.to_s.sub(/.*::/,"").downcase.to_sym
|
505
574
|
end
|
506
575
|
|
576
|
+
# Return the text to display when running `puppet help`.
|
577
|
+
# @return [String] The help to display
|
578
|
+
# @api public
|
507
579
|
def help
|
508
580
|
_("No help available for puppet %{app_name}") % { app_name: name }
|
509
581
|
end
|
@@ -511,6 +583,8 @@ class Application
|
|
511
583
|
# The description used in top level `puppet help` output
|
512
584
|
# If left empty in implementations, we will attempt to extract
|
513
585
|
# the summary from the help text itself.
|
586
|
+
# @return [String]
|
587
|
+
# @api public
|
514
588
|
def summary
|
515
589
|
""
|
516
590
|
end
|
@@ -260,119 +260,115 @@ Licensed under the Apache 2.0 License
|
|
260
260
|
end
|
261
261
|
end
|
262
262
|
devices.collect do |devicename,device|
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
FileUtils.chown(user, group, Puppet[:confdir]) if user || group
|
300
|
-
end
|
263
|
+
# TODO when we drop support for ruby < 2.5 we can remove the extra block here
|
264
|
+
begin
|
265
|
+
device_url = URI.parse(device.url)
|
266
|
+
# Handle nil scheme & port
|
267
|
+
scheme = "#{device_url.scheme}://" if device_url.scheme
|
268
|
+
port = ":#{device_url.port}" if device_url.port
|
269
|
+
|
270
|
+
# override local $vardir and $certname
|
271
|
+
Puppet[:ssldir] = ::File.join(Puppet[:deviceconfdir], device.name, 'ssl')
|
272
|
+
Puppet[:confdir] = ::File.join(Puppet[:devicedir], device.name)
|
273
|
+
Puppet[:libdir] = options[:libdir] || ::File.join(Puppet[:devicedir], device.name, 'lib')
|
274
|
+
Puppet[:vardir] = ::File.join(Puppet[:devicedir], device.name)
|
275
|
+
Puppet[:certname] = device.name
|
276
|
+
ssl_context = nil
|
277
|
+
|
278
|
+
# create device directory under $deviceconfdir
|
279
|
+
Puppet::FileSystem.dir_mkpath(Puppet[:ssldir]) unless Puppet::FileSystem.dir_exist?(Puppet[:ssldir])
|
280
|
+
|
281
|
+
# this will reload and recompute default settings and create device-specific sub vardir
|
282
|
+
Puppet.settings.use :main, :agent, :ssl
|
283
|
+
|
284
|
+
# Workaround for PUP-8736: store ssl certs outside the cache directory to prevent accidental removal and keep the old path as symlink
|
285
|
+
optssldir = File.join(Puppet[:confdir], 'ssl')
|
286
|
+
Puppet::FileSystem.symlink(Puppet[:ssldir], optssldir) unless Puppet::FileSystem.exist?(optssldir)
|
287
|
+
|
288
|
+
unless options[:resource] || options[:facts] || options[:apply]
|
289
|
+
# Since it's too complicated to fix properly in the default settings, we workaround for PUP-9642 here.
|
290
|
+
# See https://github.com/puppetlabs/puppet/pull/7483#issuecomment-483455997 for details.
|
291
|
+
# This has to happen after `settings.use` above, so the directory is created and before `setup_host` below, where the SSL
|
292
|
+
# routines would fail with access errors
|
293
|
+
if Puppet.features.root? && !Puppet::Util::Platform.windows?
|
294
|
+
user = Puppet::Type.type(:user).new(name: Puppet[:user]).exists? ? Puppet[:user] : nil
|
295
|
+
group = Puppet::Type.type(:group).new(name: Puppet[:group]).exists? ? Puppet[:group] : nil
|
296
|
+
Puppet.debug("Fixing perms for #{user}:#{group} on #{Puppet[:confdir]}")
|
297
|
+
FileUtils.chown(user, group, Puppet[:confdir]) if user || group
|
298
|
+
end
|
301
299
|
|
302
|
-
|
300
|
+
ssl_context = setup_context
|
303
301
|
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
end
|
302
|
+
unless options[:libdir]
|
303
|
+
Puppet.override(ssl_context: ssl_context) do
|
304
|
+
Puppet::Configurer::PluginHandler.new.download_plugins(env) if Puppet::Configurer.should_pluginsync?
|
308
305
|
end
|
309
306
|
end
|
307
|
+
end
|
310
308
|
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
else
|
325
|
-
text = resources.map do |resource|
|
326
|
-
resource.prune_parameters(:parameters_to_include => @extra_params).to_manifest.force_encoding(Encoding.default_external)
|
327
|
-
end.join("\n")
|
328
|
-
end
|
329
|
-
(puts text)
|
330
|
-
0
|
331
|
-
elsif options[:facts]
|
332
|
-
Puppet.info _("retrieving facts from %{target} at %{scheme}%{url_host}%{port}%{url_path}") % { resource: type, target: device.name, scheme: scheme, url_host: device_url.host, port: port, url_path: device_url.path }
|
333
|
-
remote_facts = Puppet::Node::Facts.indirection.find(name, :environment => env)
|
334
|
-
# Give a proper name to the facts
|
335
|
-
remote_facts.name = remote_facts.values['clientcert']
|
336
|
-
renderer = Puppet::Network::FormatHandler.format(:console)
|
337
|
-
puts renderer.render(remote_facts)
|
338
|
-
0
|
339
|
-
elsif options[:apply]
|
340
|
-
# avoid reporting to server
|
341
|
-
Puppet::Transaction::Report.indirection.terminus_class = :yaml
|
342
|
-
Puppet::Resource::Catalog.indirection.cache_class = nil
|
343
|
-
|
344
|
-
require 'puppet/application/apply'
|
345
|
-
begin
|
346
|
-
Puppet[:node_terminus] = :plain
|
347
|
-
Puppet[:catalog_terminus] = :compiler
|
348
|
-
Puppet[:catalog_cache_terminus] = nil
|
349
|
-
Puppet[:facts_terminus] = :network_device
|
350
|
-
Puppet.override(:network_device => true) do
|
351
|
-
Puppet::Application::Apply.new(Puppet::Util::CommandLine.new('puppet', ["apply", options[:apply]])).run_command
|
352
|
-
end
|
353
|
-
end
|
309
|
+
# this inits the device singleton, so that the facts terminus
|
310
|
+
# and the various network_device provider can use it
|
311
|
+
Puppet::Util::NetworkDevice.init(device)
|
312
|
+
|
313
|
+
if options[:resource]
|
314
|
+
type, name = parse_args(command_line.args)
|
315
|
+
Puppet.info _("retrieving resource: %{resource} from %{target} at %{scheme}%{url_host}%{port}%{url_path}") % { resource: type, target: device.name, scheme: scheme, url_host: device_url.host, port: port, url_path: device_url.path }
|
316
|
+
resources = find_resources(type, name)
|
317
|
+
if options[:to_yaml]
|
318
|
+
data = resources.map do |resource|
|
319
|
+
resource.prune_parameters(:parameters_to_include => @extra_params).to_hiera_hash
|
320
|
+
end.inject(:merge!)
|
321
|
+
text = YAML.dump(type.downcase => data)
|
354
322
|
else
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
323
|
+
text = resources.map do |resource|
|
324
|
+
resource.prune_parameters(:parameters_to_include => @extra_params).to_manifest.force_encoding(Encoding.default_external)
|
325
|
+
end.join("\n")
|
326
|
+
end
|
327
|
+
(puts text)
|
328
|
+
0
|
329
|
+
elsif options[:facts]
|
330
|
+
Puppet.info _("retrieving facts from %{target} at %{scheme}%{url_host}%{port}%{url_path}") % { resource: type, target: device.name, scheme: scheme, url_host: device_url.host, port: port, url_path: device_url.path }
|
331
|
+
remote_facts = Puppet::Node::Facts.indirection.find(name, :environment => env)
|
332
|
+
# Give a proper name to the facts
|
333
|
+
remote_facts.name = remote_facts.values['clientcert']
|
334
|
+
renderer = Puppet::Network::FormatHandler.format(:console)
|
335
|
+
puts renderer.render(remote_facts)
|
336
|
+
0
|
337
|
+
elsif options[:apply]
|
338
|
+
# avoid reporting to server
|
339
|
+
Puppet::Transaction::Report.indirection.terminus_class = :yaml
|
340
|
+
Puppet::Resource::Catalog.indirection.cache_class = nil
|
341
|
+
|
342
|
+
require 'puppet/application/apply'
|
343
|
+
begin
|
344
|
+
Puppet[:node_terminus] = :plain
|
345
|
+
Puppet[:catalog_terminus] = :compiler
|
346
|
+
Puppet[:catalog_cache_terminus] = nil
|
347
|
+
Puppet[:facts_terminus] = :network_device
|
348
|
+
Puppet.override(:network_device => true) do
|
349
|
+
Puppet::Application::Apply.new(Puppet::Util::CommandLine.new('puppet', ["apply", options[:apply]])).run_command
|
362
350
|
end
|
363
351
|
end
|
364
|
-
|
365
|
-
Puppet.
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
Puppet[:ssldir] = ssldir
|
374
|
-
Puppet[:certname] = certname
|
352
|
+
else
|
353
|
+
Puppet.info _("starting applying configuration to %{target} at %{scheme}%{url_host}%{port}%{url_path}") % { target: device.name, scheme: scheme, url_host: device_url.host, port: port, url_path: device_url.path }
|
354
|
+
|
355
|
+
overrides = {}
|
356
|
+
overrides[:ssl_context] = ssl_context if ssl_context
|
357
|
+
Puppet.override(overrides) do
|
358
|
+
configurer = Puppet::Configurer.new
|
359
|
+
configurer.run(:network_device => true, :pluginsync => false)
|
360
|
+
end
|
375
361
|
end
|
362
|
+
rescue => detail
|
363
|
+
Puppet.log_exception(detail)
|
364
|
+
# If we rescued an error, then we return 1 as the exit code
|
365
|
+
1
|
366
|
+
ensure
|
367
|
+
Puppet[:libdir] = libdir
|
368
|
+
Puppet[:vardir] = vardir
|
369
|
+
Puppet[:confdir] = confdir
|
370
|
+
Puppet[:ssldir] = ssldir
|
371
|
+
Puppet[:certname] = certname
|
376
372
|
end
|
377
373
|
end
|
378
374
|
end
|