puppet 6.24.0-x64-mingw32 → 7.0.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +16 -2
- data/CONTRIBUTING.md +5 -5
- data/Gemfile +1 -3
- data/Gemfile.lock +35 -47
- data/README.md +5 -5
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/osx/puppet.plist +0 -2
- data/ext/project_data.yaml +1 -15
- 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 +14 -23
- data/lib/puppet/application.rb +178 -108
- data/lib/puppet/application/agent.rb +4 -12
- data/lib/puppet/application/apply.rb +2 -4
- data/lib/puppet/application/device.rb +100 -106
- data/lib/puppet/application/filebucket.rb +13 -10
- data/lib/puppet/application/resource.rb +3 -17
- data/lib/puppet/application/script.rb +0 -2
- data/lib/puppet/application/ssl.rb +1 -13
- data/lib/puppet/application_support.rb +0 -7
- data/lib/puppet/configurer.rb +30 -45
- data/lib/puppet/configurer/downloader.rb +1 -2
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +100 -192
- data/lib/puppet/environments.rb +60 -84
- data/lib/puppet/face/facts.rb +5 -103
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/help/action.erb +0 -1
- data/lib/puppet/face/help/face.erb +0 -1
- data/lib/puppet/face/node/clean.rb +0 -11
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/fileset.rb +2 -14
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/file_system/file_impl.rb +1 -1
- data/lib/puppet/file_system/memory_file.rb +1 -8
- data/lib/puppet/file_system/windows.rb +2 -4
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/empty.rb +0 -8
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +5 -13
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +4 -12
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/strftime.rb +0 -1
- data/lib/puppet/functions/tree_each.rb +9 -7
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/unwrap.rb +2 -17
- data/lib/puppet/functions/upcase.rb +2 -2
- 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 -15
- 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 +10 -25
- 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 -138
- data/lib/puppet/http/service/file_server.rb +19 -29
- 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/compiler.rb +0 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- 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 -10
- 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/resource/ral.rb +1 -6
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/interface/documentation.rb +0 -1
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/installer.rb +2 -52
- data/lib/puppet/module_tool/errors/shared.rb +2 -34
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/formats.rb +0 -67
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +3 -1
- data/lib/puppet/parser/ast/leaf.rb +2 -3
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
- data/lib/puppet/parser/resource.rb +0 -69
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
- data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- 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/exec/posix.rb +4 -16
- data/lib/puppet/provider/group/groupadd.rb +8 -13
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +2 -34
- data/lib/puppet/provider/package/aptitude.rb +0 -6
- data/lib/puppet/provider/package/dnfmodule.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +0 -10
- data/lib/puppet/provider/package/gem.rb +23 -3
- data/lib/puppet/provider/package/nim.rb +6 -11
- data/lib/puppet/provider/package/pip.rb +3 -16
- 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/parsedfile.rb +0 -3
- data/lib/puppet/provider/service/debian.rb +0 -2
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/service/systemd.rb +4 -14
- data/lib/puppet/provider/service/windows.rb +0 -38
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +10 -33
- data/lib/puppet/provider/user/useradd.rb +8 -62
- data/lib/puppet/reference/configuration.rb +8 -7
- 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 +80 -96
- data/lib/puppet/settings/environment_conf.rb +0 -1
- 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/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/report.rb +2 -4
- data/lib/puppet/type.rb +0 -76
- data/lib/puppet/type/exec.rb +3 -16
- data/lib/puppet/type/file.rb +6 -26
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/mode.rb +0 -6
- data/lib/puppet/type/file/selcontext.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/service.rb +38 -18
- data/lib/puppet/type/tidy.rb +3 -22
- data/lib/puppet/type/user.rb +20 -38
- data/lib/puppet/util/autoload.rb +8 -1
- data/lib/puppet/util/execution.rb +0 -11
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -53
- data/lib/puppet/util/posix.rb +5 -54
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/run_mode.rb +9 -1
- data/lib/puppet/util/selinux.rb +4 -30
- data/lib/puppet/util/symbolic_file_mode.rb +17 -29
- data/lib/puppet/util/windows.rb +3 -8
- data/lib/puppet/util/windows/adsi.rb +0 -46
- 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/principal.rb +2 -9
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/sid.rb +2 -6
- 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 +722 -1527
- data/man/man5/puppet.conf.5 +266 -354
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +9 -9
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +8 -51
- 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 +5 -5
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +5 -5
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +1 -5
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
- data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
- data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
- data/spec/fixtures/ssl/ca.pem +35 -57
- data/spec/fixtures/ssl/crl.pem +18 -28
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +24 -33
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +58 -108
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
- data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
- data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
- data/spec/fixtures/ssl/intermediate.pem +36 -57
- data/spec/fixtures/ssl/pluto-key.pem +57 -107
- data/spec/fixtures/ssl/pluto.pem +30 -52
- data/spec/fixtures/ssl/request-key.pem +57 -107
- data/spec/fixtures/ssl/request.pem +26 -47
- data/spec/fixtures/ssl/revoked-key.pem +57 -107
- data/spec/fixtures/ssl/revoked.pem +30 -52
- data/spec/fixtures/ssl/signed-key.pem +57 -107
- data/spec/fixtures/ssl/signed.pem +30 -52
- data/spec/fixtures/ssl/tampered-cert.pem +30 -52
- data/spec/fixtures/ssl/tampered-csr.pem +26 -47
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
- data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
- data/spec/fixtures/ssl/unknown-ca.pem +33 -55
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
- data/spec/integration/application/agent_spec.rb +27 -171
- data/spec/integration/application/apply_spec.rb +1 -20
- data/spec/integration/application/filebucket_spec.rb +16 -27
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/module_spec.rb +0 -21
- data/spec/integration/application/plugin_spec.rb +24 -2
- data/spec/integration/defaults_spec.rb +14 -3
- data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
- data/spec/integration/http/client_spec.rb +0 -12
- data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
- data/spec/integration/indirector/facts/facter_spec.rb +36 -90
- data/spec/integration/network/http_pool_spec.rb +3 -21
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/resource/type_collection_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +9 -4
- data/spec/integration/type/exec_spec.rb +45 -70
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/adsi_spec.rb +1 -21
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/principal_spec.rb +0 -21
- data/spec/integration/util/windows/registry_spec.rb +10 -6
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/lib/matchers/include.rb +27 -0
- data/spec/lib/matchers/include_spec.rb +32 -0
- data/spec/lib/puppet/test_ca.rb +2 -7
- data/spec/lib/puppet_spec/puppetserver.rb +1 -1
- data/spec/lib/puppet_spec/settings.rb +1 -1
- data/spec/spec_helper.rb +7 -12
- data/spec/unit/agent_spec.rb +6 -10
- data/spec/unit/application/agent_spec.rb +3 -7
- data/spec/unit/application/facts_spec.rb +12 -456
- data/spec/unit/application/filebucket_spec.rb +43 -39
- data/spec/unit/application/ssl_spec.rb +2 -25
- data/spec/unit/application_spec.rb +9 -51
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +6 -8
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +12 -32
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +2 -8
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +68 -54
- data/spec/unit/environments_spec.rb +68 -259
- data/spec/unit/face/node_spec.rb +11 -0
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/fileset_spec.rb +0 -60
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
- data/spec/unit/file_system_spec.rb +0 -15
- data/spec/unit/forge/module_release_spec.rb +7 -2
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- 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/empty_spec.rb +0 -10
- data/spec/unit/functions/unwrap_spec.rb +0 -8
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +0 -12
- 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 -30
- 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 -185
- 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/catalog/compiler_spec.rb +10 -14
- data/spec/unit/indirector/face_spec.rb +1 -0
- data/spec/unit/indirector/facts/facter_spec.rb +3 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/indirection_spec.rb +12 -8
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/request_spec.rb +0 -264
- data/spec/unit/indirector/resource/ral_spec.rb +75 -40
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -78
- data/spec/unit/network/authconfig_spec.rb +2 -129
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +4 -45
- data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -1
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +33 -21
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/compiler_spec.rb +19 -3
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
- data/spec/unit/parser/resource_spec.rb +8 -14
- data/spec/unit/parser/templatewrapper_spec.rb +5 -16
- 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/p_sem_ver_type_spec.rb +0 -18
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/property_spec.rb +0 -1
- data/spec/unit/provider/group/groupadd_spec.rb +2 -5
- data/spec/unit/provider/nameservice_spec.rb +64 -122
- data/spec/unit/provider/package/apt_spec.rb +23 -28
- data/spec/unit/provider/package/aptitude_spec.rb +1 -1
- data/spec/unit/provider/package/base_spec.rb +5 -6
- data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
- 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/nim_spec.rb +0 -42
- data/spec/unit/provider/package/pacman_spec.rb +12 -18
- data/spec/unit/provider/package/pip_spec.rb +11 -43
- data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
- data/spec/unit/provider/parsedfile_spec.rb +0 -10
- data/spec/unit/provider/service/init_spec.rb +0 -1
- data/spec/unit/provider/service/openwrt_spec.rb +1 -3
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/systemd_spec.rb +8 -53
- data/spec/unit/provider/service/windows_spec.rb +0 -203
- data/spec/unit/provider/user/aix_spec.rb +0 -5
- data/spec/unit/provider/user/directoryservice_spec.rb +35 -67
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +3 -71
- data/spec/unit/provider_spec.rb +8 -18
- data/spec/unit/resource/catalog_spec.rb +1 -1
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +10 -67
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +79 -110
- data/spec/unit/ssl/base_spec.rb +37 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
- data/spec/unit/ssl/state_machine_spec.rb +5 -20
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
- data/spec/unit/transaction/event_manager_spec.rb +11 -14
- data/spec/unit/transaction/report_spec.rb +0 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +55 -96
- data/spec/unit/type/exec_spec.rb +29 -76
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +2 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/selinux_spec.rb +5 -3
- data/spec/unit/type/file/source_spec.rb +4 -5
- data/spec/unit/type/file_spec.rb +18 -6
- data/spec/unit/type/group_spec.rb +6 -13
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +189 -60
- data/spec/unit/type/tidy_spec.rb +8 -24
- data/spec/unit/type/user_spec.rb +0 -45
- data/spec/unit/type_spec.rb +22 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +1 -5
- data/spec/unit/util/backups_spec.rb +2 -3
- data/spec/unit/util/execution_spec.rb +11 -44
- data/spec/unit/util/inifile_spec.rb +14 -6
- data/spec/unit/util/log_spec.rb +7 -8
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +15 -363
- data/spec/unit/util/run_mode_spec.rb +21 -121
- data/spec/unit/util/selinux_spec.rb +68 -163
- data/spec/unit/util/storage_spec.rb +1 -3
- data/spec/unit/util/suidmanager_spec.rb +41 -44
- data/spec/unit/util/windows/sid_spec.rb +0 -41
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +6 -31
- data/tasks/generate_cert_fixtures.rake +3 -12
- metadata +45 -253
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/ffi/posix.rb +0 -10
- data/lib/puppet/ffi/posix/constants.rb +0 -14
- data/lib/puppet/ffi/posix/functions.rb +0 -24
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -184
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/settings/alias_setting.rb +0 -37
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/fact_dif.rb +0 -81
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -309
- data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
- data/spec/fixtures/ssl/oid-key.pem +0 -117
- data/spec/fixtures/ssl/oid.pem +0 -69
- data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
- data/spec/integration/application/resource_spec.rb +0 -64
- data/spec/integration/application/ssl_spec.rb +0 -20
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
- data/spec/unit/application/man_spec.rb +0 -52
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -78
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -148
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -645
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
data/lib/puppet/http/service.rb
CHANGED
@@ -1,24 +1,17 @@
|
|
1
|
+
# Represents an abstract Puppet web service.
|
1
2
|
#
|
2
|
-
# @
|
3
|
-
#
|
4
|
-
# Represents a puppet web service
|
5
|
-
#
|
3
|
+
# @abstract Subclass and implement methods for the service's REST APIs.
|
4
|
+
# @api public
|
6
5
|
class Puppet::HTTP::Service
|
7
|
-
# @api private
|
8
6
|
# @return [URI] the url associated with this service
|
9
7
|
attr_reader :url
|
10
8
|
|
11
|
-
# @api private
|
12
9
|
# @return [Array<Symbol>] available services
|
13
10
|
SERVICE_NAMES = [:ca, :fileserver, :puppet, :puppetserver, :report].freeze
|
14
11
|
|
15
|
-
# @api private
|
16
12
|
# @return [Array<Symbol>] format types that are unsupported
|
17
13
|
EXCLUDED_FORMATS = [:yaml, :b64_zlib_yaml, :dot].freeze
|
18
14
|
|
19
|
-
#
|
20
|
-
# @api private
|
21
|
-
#
|
22
15
|
# Create a new web service, which contains the URL used to connect to the
|
23
16
|
# service. The four services implemented are `:ca`, `:fileserver`, `:puppet`,
|
24
17
|
# and `:report`.
|
@@ -35,6 +28,7 @@ class Puppet::HTTP::Service
|
|
35
28
|
#
|
36
29
|
# @return [Puppet::HTTP::Service] an instance of the service type requested
|
37
30
|
#
|
31
|
+
# @api private
|
38
32
|
def self.create_service(client, session, name, server = nil, port = nil)
|
39
33
|
case name
|
40
34
|
when :ca
|
@@ -52,57 +46,49 @@ class Puppet::HTTP::Service
|
|
52
46
|
end
|
53
47
|
end
|
54
48
|
|
55
|
-
#
|
56
|
-
# @api private
|
57
|
-
#
|
58
49
|
# Check if the service named is included in the list of available services.
|
59
50
|
#
|
60
51
|
# @param [Symbol] name
|
61
52
|
#
|
62
53
|
# @return [Boolean]
|
63
54
|
#
|
55
|
+
# @api private
|
64
56
|
def self.valid_name?(name)
|
65
57
|
SERVICE_NAMES.include?(name)
|
66
58
|
end
|
67
59
|
|
68
|
-
#
|
69
|
-
# @api private
|
70
|
-
#
|
71
|
-
# Create a new service
|
60
|
+
# Create a new service. Services should be created by calling `Puppet::HTTP::Session#route_to`.
|
72
61
|
#
|
73
62
|
# @param [Puppet::HTTP::Client] client
|
74
63
|
# @param [Puppet::HTTP::Session] session
|
75
64
|
# @param [URI] url The url to connect to
|
76
65
|
#
|
66
|
+
# @api private
|
77
67
|
def initialize(client, session, url)
|
78
68
|
@client = client
|
79
69
|
@session = session
|
80
70
|
@url = url
|
81
71
|
end
|
82
72
|
|
83
|
-
#
|
84
|
-
# @api private
|
85
|
-
#
|
86
73
|
# Return the url with the given path encoded and appended
|
87
74
|
#
|
88
75
|
# @param [String] path the string to append to the base url
|
89
76
|
#
|
90
77
|
# @return [URI] the URI object containing the encoded path
|
91
78
|
#
|
79
|
+
# @api public
|
92
80
|
def with_base_url(path)
|
93
81
|
u = @url.dup
|
94
82
|
u.path += Puppet::Util.uri_encode(path)
|
95
83
|
u
|
96
84
|
end
|
97
85
|
|
86
|
+
# Open a connection using the given ssl context.
|
98
87
|
#
|
99
|
-
# @
|
100
|
-
#
|
101
|
-
# Open a connection using the given ssl context
|
102
|
-
#
|
103
|
-
# @param [Puppet::SSL::SSLContext] ssl_context (nil) optional ssl context to
|
104
|
-
# connect with
|
88
|
+
# @param [Puppet::SSL::SSLContext] ssl_context An optional ssl context to connect with
|
89
|
+
# @return [void]
|
105
90
|
#
|
91
|
+
# @api public
|
106
92
|
def connect(ssl_context: nil)
|
107
93
|
@client.connect(@url, options: {ssl_context: ssl_context})
|
108
94
|
end
|
@@ -1,26 +1,21 @@
|
|
1
|
+
# The CA service is used to handle certificate related REST requests.
|
1
2
|
#
|
2
|
-
# @api
|
3
|
-
#
|
4
|
-
# The Ca service is used to handle certificate requests
|
5
|
-
#
|
3
|
+
# @api public
|
6
4
|
class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
|
7
|
-
# @api private
|
8
5
|
# @return [Hash] default headers for the ca service
|
9
6
|
HEADERS = { 'Accept' => 'text/plain' }.freeze
|
10
7
|
|
11
|
-
# @api private
|
12
8
|
# @return [String] default API for the ca service
|
13
9
|
API = '/puppet-ca/v1'.freeze
|
14
10
|
|
15
|
-
#
|
16
|
-
# @api private
|
11
|
+
# Use `Puppet::HTTP::Session.route_to(:ca)` to create or get an instance of this class.
|
17
12
|
#
|
18
13
|
# @param [Puppet::HTTP::Client] client
|
19
14
|
# @param [Puppet::HTTP::Session] session
|
20
|
-
# @param [String] server (Puppet[:ca_server]) If an explicit server is given,
|
15
|
+
# @param [String] server (`Puppet[:ca_server]`) If an explicit server is given,
|
21
16
|
# create a service using that server. If server is nil, the default value
|
22
17
|
# is used to create the service.
|
23
|
-
# @param [Integer] port (Puppet[:ca_port]) If an explicit port is given, create
|
18
|
+
# @param [Integer] port (`Puppet[:ca_port]`) If an explicit port is given, create
|
24
19
|
# a service using that port. If port is nil, the default value is used to
|
25
20
|
# create the service.
|
26
21
|
#
|
@@ -29,10 +24,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
|
|
29
24
|
super(client, session, url)
|
30
25
|
end
|
31
26
|
|
32
|
-
#
|
33
|
-
# @api private
|
34
|
-
#
|
35
|
-
# Submit a GET request to retrieve the named certificate from the server
|
27
|
+
# Submit a GET request to retrieve the named certificate from the server.
|
36
28
|
#
|
37
29
|
# @param [String] name name of the certificate to request
|
38
30
|
# @param [Puppet::SSL::SSLContext] ssl_context
|
@@ -40,6 +32,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
|
|
40
32
|
# @return [Array<Puppet::HTTP::Response, String>] An array containing the
|
41
33
|
# request response and the stringified body of the request response
|
42
34
|
#
|
35
|
+
# @api public
|
43
36
|
def get_certificate(name, ssl_context: nil)
|
44
37
|
response = @client.get(
|
45
38
|
with_base_url("/certificate/#{name}"),
|
@@ -52,11 +45,8 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
|
|
52
45
|
[response, response.body.to_s]
|
53
46
|
end
|
54
47
|
|
55
|
-
#
|
56
|
-
# @api private
|
57
|
-
#
|
58
48
|
# Submit a GET request to retrieve the certificate revocation list from the
|
59
|
-
# server
|
49
|
+
# server.
|
60
50
|
#
|
61
51
|
# @param [Time] if_modified_since If not nil, only download the CRL if it has
|
62
52
|
# been modified since the specified time.
|
@@ -65,6 +55,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
|
|
65
55
|
# @return [Array<Puppet::HTTP::Response, String>] An array containing the
|
66
56
|
# request response and the stringified body of the request response
|
67
57
|
#
|
58
|
+
# @api public
|
68
59
|
def get_certificate_revocation_list(if_modified_since: nil, ssl_context: nil)
|
69
60
|
headers = add_puppet_headers(HEADERS)
|
70
61
|
headers['If-Modified-Since'] = if_modified_since.httpdate if if_modified_since
|
@@ -80,10 +71,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
|
|
80
71
|
[response, response.body.to_s]
|
81
72
|
end
|
82
73
|
|
83
|
-
#
|
84
|
-
# @api private
|
85
|
-
#
|
86
|
-
# Submit a PUT request to send a certificate request to the server
|
74
|
+
# Submit a PUT request to send a certificate request to the server.
|
87
75
|
#
|
88
76
|
# @param [String] name The name of the certificate request being sent
|
89
77
|
# @param [OpenSSL::X509::Request] csr Certificate request to send to the
|
@@ -92,6 +80,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
|
|
92
80
|
#
|
93
81
|
# @return [Puppet::HTTP::Response] The request response
|
94
82
|
#
|
83
|
+
# @api public
|
95
84
|
def put_certificate_request(name, csr, ssl_context: nil)
|
96
85
|
headers = add_puppet_headers(HEADERS)
|
97
86
|
headers['Content-Type'] = 'text/plain'
|
@@ -1,23 +1,19 @@
|
|
1
|
-
#
|
2
|
-
# @api private
|
3
|
-
#
|
4
1
|
# The Compiler service is used to submit and retrieve data from the
|
5
2
|
# puppetserver.
|
6
3
|
#
|
4
|
+
# @api public
|
7
5
|
class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
8
|
-
# @api private
|
9
6
|
# @return [String] Default API for the Compiler service
|
10
7
|
API = '/puppet/v3'.freeze
|
11
8
|
|
12
|
-
#
|
13
|
-
# @api private
|
9
|
+
# Use `Puppet::HTTP::Session.route_to(:puppet)` to create or get an instance of this class.
|
14
10
|
#
|
15
11
|
# @param [Puppet::HTTP::Client] client
|
16
12
|
# @param [Puppet::HTTP::Session] session
|
17
|
-
# @param [String] server (Puppet[:
|
13
|
+
# @param [String] server (`Puppet[:server]`) If an explicit server is given,
|
18
14
|
# create a service using that server. If server is nil, the default value
|
19
15
|
# is used to create the service.
|
20
|
-
# @param [Integer] port (Puppet[:
|
16
|
+
# @param [Integer] port (`Puppet[:masterport]`) If an explicit port is given, create
|
21
17
|
# a service using that port. If port is nil, the default value is used to
|
22
18
|
# create the service.
|
23
19
|
#
|
@@ -26,10 +22,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
26
22
|
super(client, session, url)
|
27
23
|
end
|
28
24
|
|
29
|
-
#
|
30
|
-
# @api private
|
31
|
-
#
|
32
|
-
# Submit a GET request to retrieve a node from the server
|
25
|
+
# Submit a GET request to retrieve a node from the server.
|
33
26
|
#
|
34
27
|
# @param [String] name The name of the node being requested
|
35
28
|
# @param [String] environment The name of the environment we are operating in
|
@@ -41,6 +34,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
41
34
|
# @return [Array<Puppet::HTTP::Response, Puppet::Node>] An array containing
|
42
35
|
# the request response and the deserialized requested node
|
43
36
|
#
|
37
|
+
# @api public
|
44
38
|
def get_node(name, environment:, configured_environment: nil, transaction_uuid: nil)
|
45
39
|
headers = add_puppet_headers('Accept' => get_mime_types(Puppet::Node).join(', '))
|
46
40
|
|
@@ -59,10 +53,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
59
53
|
[response, deserialize(response, Puppet::Node)]
|
60
54
|
end
|
61
55
|
|
62
|
-
#
|
63
|
-
# @api private
|
64
|
-
#
|
65
|
-
# Submit a POST request to submit a catalog to the server
|
56
|
+
# Submit a POST request to submit a catalog to the server.
|
66
57
|
#
|
67
58
|
# @param [String] name The name of the catalog to be submitted
|
68
59
|
# @param [Puppet::Node::Facts] facts Facts for this catalog
|
@@ -77,14 +68,13 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
77
68
|
# @param [Boolean] static_catalog Indicates if the file metadata(s) are inlined
|
78
69
|
# in the catalog. This informs the agent if it needs to make a second request
|
79
70
|
# to retrieve metadata in addition to the initial catalog request.
|
80
|
-
# @param [Array<String>] checksum_type An array of accepted checksum
|
81
|
-
# Currently defaults to `["md5", "sha256", "sha384", "sha512", "sha224"]`,
|
82
|
-
# or `["sha256", "sha384", "sha512", "sha224"]` if fips is enabled.
|
71
|
+
# @param [Array<String>] checksum_type An array of accepted checksum types.
|
83
72
|
#
|
84
73
|
# @return [Array<Puppet::HTTP::Response, Puppet::Resource::Catalog>] An array
|
85
74
|
# containing the request response and the deserialized catalog returned by
|
86
75
|
# the server
|
87
76
|
#
|
77
|
+
# @api public
|
88
78
|
def post_catalog(name, facts:, environment:, configured_environment: nil, transaction_uuid: nil, job_uuid: nil, static_catalog: true, checksum_type: Puppet[:supported_checksum_types])
|
89
79
|
if Puppet[:preferred_serialization_format] == "pson"
|
90
80
|
formatter = Puppet::Network::FormatHandler.format_for(:pson)
|
@@ -129,79 +119,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
129
119
|
[response, deserialize(response, Puppet::Resource::Catalog)]
|
130
120
|
end
|
131
121
|
|
132
|
-
#
|
133
|
-
# @api private
|
134
|
-
#
|
135
|
-
# Submit a POST request to request a catalog to the server using v4 endpoint
|
136
|
-
#
|
137
|
-
# @param [String] certname The name of the node for which to compile the catalog.
|
138
|
-
# @param [Hash] persistent A hash containing two required keys, facts and catalog,
|
139
|
-
# which when set to true will cause the facts and reports to be stored in
|
140
|
-
# PuppetDB, or discarded if set to false.
|
141
|
-
# @param [String] environment The name of the environment for which to compile the catalog.
|
142
|
-
# @param [Hash] facts A hash with a required values key, containing a hash of all the
|
143
|
-
# facts for the node. If not provided, Puppet will attempt to fetch facts for the node
|
144
|
-
# from PuppetDB.
|
145
|
-
# @param [Hash] trusted_facts A hash with a required values key containing a hash of
|
146
|
-
# the trusted facts for a node
|
147
|
-
# @param [String] transaction_uuid The id for tracking the catalog compilation and
|
148
|
-
# report submission.
|
149
|
-
# @param [String] job_id The id of the orchestrator job that triggered this run.
|
150
|
-
# @param [Hash] options A hash of options beyond direct input to catalogs. Options:
|
151
|
-
# - prefer_requested_environment Whether to always override a node's classified
|
152
|
-
# environment with the one supplied in the request. If this is true and no environment
|
153
|
-
# is supplied, fall back to the classified environment, or finally, 'production'.
|
154
|
-
# - capture_logs Whether to return the errors and warnings that occurred during
|
155
|
-
# compilation alongside the catalog in the response body.
|
156
|
-
# - log_level The logging level to use during the compile when capture_logs is true.
|
157
|
-
# Options are 'err', 'warning', 'info', and 'debug'.
|
158
|
-
#
|
159
|
-
# @return [Array<Puppet::HTTP::Response, Puppet::Resource::Catalog, Array<String>>] An array
|
160
|
-
# containing the request response, the deserialized catalog returned by
|
161
|
-
# the server and array containing logs (log array will be empty if capture_logs is false)
|
162
|
-
#
|
163
|
-
def post_catalog4(certname, persistence:, environment:, facts: nil, trusted_facts: nil, transaction_uuid: nil, job_id: nil, options: nil)
|
164
|
-
unless persistence.is_a?(Hash) && (missing = [:facts, :catalog] - persistence.keys.map(&:to_sym)).empty?
|
165
|
-
raise ArgumentError.new("The 'persistence' hash is missing the keys: #{missing.join(', ')}")
|
166
|
-
end
|
167
|
-
raise ArgumentError.new("Facts must be a Hash not a #{facts.class}") unless facts.nil? || facts.is_a?(Hash)
|
168
|
-
body = {
|
169
|
-
certname: certname,
|
170
|
-
persistence: persistence,
|
171
|
-
environment: environment,
|
172
|
-
transaction_uuid: transaction_uuid,
|
173
|
-
job_id: job_id,
|
174
|
-
options: options
|
175
|
-
}
|
176
|
-
body[:facts] = { values: facts } unless facts.nil?
|
177
|
-
body[:trusted_facts] = { values: trusted_facts } unless trusted_facts.nil?
|
178
|
-
headers = add_puppet_headers(
|
179
|
-
'Accept' => get_mime_types(Puppet::Resource::Catalog).join(', '),
|
180
|
-
'Content-Type' => 'application/json'
|
181
|
-
)
|
182
|
-
|
183
|
-
url = URI::HTTPS.build(host: @url.host, port: @url.port, path: Puppet::Util.uri_encode("/puppet/v4/catalog"))
|
184
|
-
response = @client.post(
|
185
|
-
url,
|
186
|
-
body.to_json,
|
187
|
-
headers: headers
|
188
|
-
)
|
189
|
-
process_response(response)
|
190
|
-
begin
|
191
|
-
response_body = JSON.parse(response.body)
|
192
|
-
catalog = Puppet::Resource::Catalog.from_data_hash(response_body['catalog'])
|
193
|
-
rescue => err
|
194
|
-
raise Puppet::HTTP::SerializationError.new("Failed to deserialize catalog from puppetserver response: #{err.message}", err)
|
195
|
-
end
|
196
|
-
|
197
|
-
logs = response_body['logs'] || []
|
198
|
-
[response, catalog, logs]
|
199
|
-
end
|
200
|
-
|
201
|
-
#
|
202
|
-
# @api private
|
203
|
-
#
|
204
|
-
# Submit a GET request to retrieve the facts for the named node
|
122
|
+
# Submit a GET request to retrieve the facts for the named node.
|
205
123
|
#
|
206
124
|
# @param [String] name Name of the node to retrieve facts for
|
207
125
|
# @param [String] environment Name of the environment we are operating in
|
@@ -210,6 +128,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
210
128
|
# containing the request response and the deserialized facts for the
|
211
129
|
# specified node
|
212
130
|
#
|
131
|
+
# @api public
|
213
132
|
def get_facts(name, environment:)
|
214
133
|
headers = add_puppet_headers('Accept' => get_mime_types(Puppet::Node::Facts).join(', '))
|
215
134
|
|
@@ -224,10 +143,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
224
143
|
[response, deserialize(response, Puppet::Node::Facts)]
|
225
144
|
end
|
226
145
|
|
227
|
-
#
|
228
|
-
# @api private
|
229
|
-
#
|
230
|
-
# Submits a PUT request to submit facts for the node to the server
|
146
|
+
# Submits a PUT request to submit facts for the node to the server.
|
231
147
|
#
|
232
148
|
# @param [String] name Name of the node we are submitting facts for
|
233
149
|
# @param [String] environment Name of the environment we are operating in
|
@@ -235,6 +151,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
235
151
|
#
|
236
152
|
# @return [Puppet::HTTP::Response] The request response
|
237
153
|
#
|
154
|
+
# @api public
|
238
155
|
def put_facts(name, environment:, facts:)
|
239
156
|
formatter = Puppet::Network::FormatHandler.format_for(Puppet[:preferred_serialization_format])
|
240
157
|
|
@@ -255,39 +172,9 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
255
172
|
response
|
256
173
|
end
|
257
174
|
|
175
|
+
# Submit a GET request to retrieve a file stored with filebucket.
|
258
176
|
#
|
259
|
-
# @
|
260
|
-
#
|
261
|
-
# Submit a GET request to find the status of a compiler
|
262
|
-
#
|
263
|
-
# @param [String] name The name of the node that a status being requested for
|
264
|
-
#
|
265
|
-
# @return [Array<Puppet::HTTP::Response, Puppet::Status>] An array containing
|
266
|
-
# the request response and the deserialized status returned from the server
|
267
|
-
#
|
268
|
-
def get_status(name)
|
269
|
-
headers = add_puppet_headers('Accept' => get_mime_types(Puppet::Status).join(', '))
|
270
|
-
|
271
|
-
response = @client.get(
|
272
|
-
with_base_url("/status/#{name}"),
|
273
|
-
headers: headers,
|
274
|
-
params: {
|
275
|
-
# environment is required, but meaningless, default to production
|
276
|
-
environment: 'production'
|
277
|
-
},
|
278
|
-
)
|
279
|
-
|
280
|
-
process_response(response)
|
281
|
-
|
282
|
-
[response, deserialize(response, Puppet::Status)]
|
283
|
-
end
|
284
|
-
|
285
|
-
#
|
286
|
-
# @api private
|
287
|
-
#
|
288
|
-
# Submit a GET request to retrieve a file stored with filebucket
|
289
|
-
#
|
290
|
-
# @param [String] path The request path, formatted by Puppet::FileBucket::Dipper
|
177
|
+
# @param [String] path The request path, formatted by `Puppet::FileBucket::Dipper`
|
291
178
|
# @param [String] environment Name of the environment we are operating in.
|
292
179
|
# This should not impact filebucket at all, but is included to be consistent
|
293
180
|
# with legacy code.
|
@@ -302,6 +189,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
302
189
|
# containing the request response and the deserialized file returned from
|
303
190
|
# the server.
|
304
191
|
#
|
192
|
+
# @api public
|
305
193
|
def get_filebucket_file(path, environment:, bucket_path: nil, diff_with: nil, list_all: nil, fromdate: nil, todate: nil)
|
306
194
|
headers = add_puppet_headers('Accept' => 'application/octet-stream')
|
307
195
|
|
@@ -323,12 +211,9 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
323
211
|
[response, deserialize(response, Puppet::FileBucket::File)]
|
324
212
|
end
|
325
213
|
|
214
|
+
# Submit a PUT request to store a file with filebucket.
|
326
215
|
#
|
327
|
-
# @
|
328
|
-
#
|
329
|
-
# Submit a PUT request to store a file with filebucket
|
330
|
-
#
|
331
|
-
# @param [String] path The request path, formatted by Puppet::FileBucket::Dipper
|
216
|
+
# @param [String] path The request path, formatted by `Puppet::FileBucket::Dipper`
|
332
217
|
# @param [String] body The contents of the file to be backed
|
333
218
|
# @param [String] environment Name of the environment we are operating in.
|
334
219
|
# This should not impact filebucket at all, but is included to be consistent
|
@@ -336,6 +221,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
336
221
|
#
|
337
222
|
# @return [Puppet::HTTP::Response] The response request
|
338
223
|
#
|
224
|
+
# @api public
|
339
225
|
def put_filebucket_file(path, body:, environment:)
|
340
226
|
headers = add_puppet_headers({
|
341
227
|
'Accept' => 'application/octet-stream',
|
@@ -356,12 +242,9 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
356
242
|
response
|
357
243
|
end
|
358
244
|
|
245
|
+
# Submit a HEAD request to check the status of a file stored with filebucket.
|
359
246
|
#
|
360
|
-
# @
|
361
|
-
#
|
362
|
-
# Submit a HEAD request to check the status of a file stored with filebucket
|
363
|
-
#
|
364
|
-
# @param [String] path The request path, formatted by Puppet::FileBucket::Dipper
|
247
|
+
# @param [String] path The request path, formatted by `Puppet::FileBucket::Dipper`
|
365
248
|
# @param [String] environment Name of the environment we are operating in.
|
366
249
|
# This should not impact filebucket at all, but is included to be consistent
|
367
250
|
# with legacy code.
|
@@ -369,6 +252,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
369
252
|
#
|
370
253
|
# @return [Puppet::HTTP::Response] The request response
|
371
254
|
#
|
255
|
+
# @api public
|
372
256
|
def head_filebucket_file(path, environment:, bucket_path: nil)
|
373
257
|
headers = add_puppet_headers('Accept' => 'application/octet-stream')
|
374
258
|
|