puppet 6.17.0-x86-mingw32 → 7.1.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -16
- data/Gemfile +3 -4
- data/Gemfile.lock +32 -30
- data/README.md +2 -3
- data/Rakefile +4 -12
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +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/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/agent.rb +8 -3
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +46 -19
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +116 -162
- data/lib/puppet/environments.rb +72 -62
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +66 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +10 -2
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/posix.rb +10 -0
- data/lib/puppet/ffi/posix/constants.rb +14 -0
- data/lib/puppet/ffi/posix/functions.rb +24 -0
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +23 -13
- data/lib/puppet/http/client.rb +165 -115
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +10 -23
- data/lib/puppet/http/resolver/server_list.rb +23 -45
- data/lib/puppet/http/resolver/settings.rb +7 -10
- data/lib/puppet/http/resolver/srv.rb +11 -15
- data/lib/puppet/http/response.rb +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 +15 -27
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -70
- data/lib/puppet/http/service/file_server.rb +19 -28
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +16 -24
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +27 -6
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/http.rb +1 -0
- 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/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +1 -102
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +93 -14
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/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.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +0 -69
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +28 -52
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/dpkg.rb +1 -11
- data/lib/puppet/provider/package/gem.rb +27 -5
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +6 -4
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +1 -0
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/aix.rb +3 -3
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- 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 +5 -120
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +84 -35
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_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 +11 -6
- data/lib/puppet/transaction.rb +3 -9
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +10 -8
- data/lib/puppet/trusted_external.rb +2 -2
- data/lib/puppet/type.rb +4 -79
- data/lib/puppet/type/file.rb +7 -9
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/source.rb +29 -9
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/service.rb +4 -0
- data/lib/puppet/type/user.rb +19 -4
- data/lib/puppet/util.rb +26 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/execution.rb +2 -13
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/posix.rb +53 -4
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +14 -2
- data/lib/puppet/util/windows.rb +3 -7
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +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/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +219 -0
- 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 +656 -1351
- data/man/man5/puppet.conf.5 +72 -97
- data/man/man8/puppet-agent.8 +6 -3
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +55 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-module.8 +1 -58
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +70 -61
- data/spec/integration/application/apply_spec.rb +150 -150
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +78 -29
- data/spec/integration/application/help_spec.rb +44 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +76 -4
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +32 -3
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +3 -21
- data/spec/integration/node/environment_spec.rb +1 -1
- 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/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +2 -2
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/integration/util/windows/user_spec.rb +7 -0
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +9 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/agent_spec.rb +3 -4
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +74 -8
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +17 -4
- data/spec/unit/application_spec.rb +43 -4
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +14 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +96 -44
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +26 -32
- data/spec/unit/environments_spec.rb +173 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +16 -4
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +7 -9
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +34 -15
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -65
- data/spec/unit/http/service/file_server_spec.rb +5 -6
- data/spec/unit/http/service/puppetserver_spec.rb +112 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -3
- data/spec/unit/http/session_spec.rb +24 -35
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/facter_spec.rb +97 -0
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +2 -266
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +51 -22
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +76 -21
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +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/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dpkg_spec.rb +22 -55
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +402 -166
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +28 -1
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +0 -12
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +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 +586 -239
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +2 -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 +1 -2
- data/spec/unit/type/file_spec.rb +12 -6
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +35 -2
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +357 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -127
- data/spec/unit/util/storage_spec.rb +3 -1
- 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 +84 -261
- 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/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -295
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -79
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/man_spec.rb +0 -31
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
@@ -72,22 +72,6 @@ class Puppet::Parser::Compiler
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def add_resource(scope, resource)
|
75
|
-
type = resource.resource_type
|
76
|
-
if type.is_a?(Puppet::Resource::Type) && type.application?
|
77
|
-
@applications << resource
|
78
|
-
assert_app_in_site(scope, resource)
|
79
|
-
return
|
80
|
-
end
|
81
|
-
|
82
|
-
if @current_app
|
83
|
-
# We are in the process of pulling application components out that
|
84
|
-
# apply to this node
|
85
|
-
Puppet.notice "Check #{resource}"
|
86
|
-
return unless @current_components.any? do |comp|
|
87
|
-
comp.type == resource.type && comp.title == resource.title
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
75
|
@resources << resource
|
92
76
|
|
93
77
|
# Note that this will fail if the resource is not unique.
|
@@ -110,22 +94,6 @@ class Puppet::Parser::Compiler
|
|
110
94
|
end
|
111
95
|
end
|
112
96
|
|
113
|
-
def assert_app_in_site(scope, resource)
|
114
|
-
if resource.type == 'App'
|
115
|
-
if scope.resource
|
116
|
-
# directly contained in a Site
|
117
|
-
return if scope.resource.type == 'Site'
|
118
|
-
# contained in something that may be contained in Site
|
119
|
-
upstream = @catalog.upstream_from_vertex(scope.resource)
|
120
|
-
if upstream
|
121
|
-
return if upstream.keys.map(&:type).include?('Site')
|
122
|
-
end
|
123
|
-
end
|
124
|
-
#TRANSLATORS "Site" is a puppet keyword and should not be translated
|
125
|
-
raise ArgumentError, _("Application instances like '%{resource}' can only be contained within a Site") % { resource: resource }
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
97
|
# Store the fact that we've evaluated a class
|
130
98
|
def add_class(name)
|
131
99
|
@catalog.add_class(name) unless name == ""
|
@@ -160,22 +128,13 @@ class Puppet::Parser::Compiler
|
|
160
128
|
|
161
129
|
Puppet::Util::Profiler.profile(_("Compile: Created settings scope"), [:compiler, :create_settings_scope]) { create_settings_scope }
|
162
130
|
|
163
|
-
Puppet::Util::Profiler.profile(_("Compile: Evaluated capability mappings"), [:compiler, :evaluate_capability_mappings]) { evaluate_capability_mappings }
|
164
|
-
|
165
131
|
#TRANSLATORS "main" is a function name and should not be translated
|
166
132
|
Puppet::Util::Profiler.profile(_("Compile: Evaluated main"), [:compiler, :evaluate_main]) { evaluate_main }
|
167
133
|
|
168
|
-
Puppet::Util::Profiler.profile(_("Compile: Evaluated site"), [:compiler, :evaluate_site]) { evaluate_site }
|
169
|
-
|
170
134
|
Puppet::Util::Profiler.profile(_("Compile: Evaluated AST node"), [:compiler, :evaluate_ast_node]) { evaluate_ast_node }
|
171
135
|
|
172
136
|
Puppet::Util::Profiler.profile(_("Compile: Evaluated node classes"), [:compiler, :evaluate_node_classes]) { evaluate_node_classes }
|
173
137
|
|
174
|
-
Puppet::Util::Profiler.profile(_("Compile: Evaluated application instances"), [:compiler, :evaluate_applications]) { evaluate_applications }
|
175
|
-
|
176
|
-
# New capability mappings may have been defined when the site was evaluated
|
177
|
-
Puppet::Util::Profiler.profile(_("Compile: Evaluated site capability mappings"), [:compiler, :evaluate_capability_mappings]) { evaluate_capability_mappings }
|
178
|
-
|
179
138
|
Puppet::Util::Profiler.profile(_("Compile: Evaluated generators"), [:compiler, :evaluate_generators]) { evaluate_generators }
|
180
139
|
|
181
140
|
Puppet::Util::Profiler.profile(_("Compile: Validate Catalog pre-finish"), [:compiler, :validate_pre_finish]) do
|
@@ -184,8 +143,6 @@ class Puppet::Parser::Compiler
|
|
184
143
|
|
185
144
|
Puppet::Util::Profiler.profile(_("Compile: Finished catalog"), [:compiler, :finish_catalog]) { finish }
|
186
145
|
|
187
|
-
Puppet::Util::Profiler.profile(_("Compile: Prune"), [:compiler, :prune_catalog]) { prune_catalog }
|
188
|
-
|
189
146
|
fail_on_unevaluated
|
190
147
|
|
191
148
|
Puppet::Util::Profiler.profile(_("Compile: Validate Catalog final"), [:compiler, :validate_final]) do
|
@@ -243,112 +200,6 @@ class Puppet::Parser::Compiler
|
|
243
200
|
evaluate_classes(classes_without_params, @node_scope || topscope)
|
244
201
|
end
|
245
202
|
|
246
|
-
# Evaluates the site - the top container for an environment catalog
|
247
|
-
# The site contain behaves analogous to a node - for the environment catalog, node expressions are ignored
|
248
|
-
# as the result is cross node. The site expression serves as a container for everything that is across
|
249
|
-
# all nodes.
|
250
|
-
#
|
251
|
-
# @api private
|
252
|
-
#
|
253
|
-
def evaluate_site
|
254
|
-
# Has a site been defined? If not, do nothing but issue a warning.
|
255
|
-
#
|
256
|
-
site = environment.known_resource_types.find_site()
|
257
|
-
unless site
|
258
|
-
on_empty_site()
|
259
|
-
return
|
260
|
-
end
|
261
|
-
|
262
|
-
# Create a resource to model this site and add it to catalog
|
263
|
-
resource = site.ensure_in_catalog(topscope)
|
264
|
-
|
265
|
-
# The site sets node scope to be able to shadow what is in top scope
|
266
|
-
@node_scope = topscope.class_scope(site)
|
267
|
-
|
268
|
-
# Evaluates the logic contain in the site expression
|
269
|
-
resource.evaluate
|
270
|
-
end
|
271
|
-
|
272
|
-
# @api private
|
273
|
-
def on_empty_site
|
274
|
-
# do nothing
|
275
|
-
end
|
276
|
-
|
277
|
-
# Prunes the catalog by dropping all resources are contained under the Site (if a site expression is used).
|
278
|
-
# As a consequence all edges to/from dropped resources are also dropped.
|
279
|
-
# Once the pruning is performed, this compiler returns the pruned list when calling the #resources method.
|
280
|
-
# The pruning does not alter the order of resources in the resources list.
|
281
|
-
#
|
282
|
-
# @api private
|
283
|
-
def prune_catalog
|
284
|
-
prune_node_catalog
|
285
|
-
end
|
286
|
-
|
287
|
-
def prune_node_catalog
|
288
|
-
# Everything under Site[site] should be pruned as that is for the environment catalog, not a node
|
289
|
-
#
|
290
|
-
the_site_resource = @catalog.resource('Site', 'site')
|
291
|
-
|
292
|
-
if the_site_resource
|
293
|
-
# Get downstream vertexes returns a hash where the keys are the resources and values nesting level
|
294
|
-
to_be_removed = @catalog.downstream_from_vertex(the_site_resource).keys
|
295
|
-
|
296
|
-
# Drop the Site[site] resource if it has no content
|
297
|
-
if to_be_removed.empty?
|
298
|
-
to_be_removed << the_site_resource
|
299
|
-
end
|
300
|
-
else
|
301
|
-
to_be_removed = []
|
302
|
-
end
|
303
|
-
|
304
|
-
# keep_from_site is populated with any App resources.
|
305
|
-
application_resources = @resources.select {|r| r.type == 'App' }
|
306
|
-
# keep all applications plus what is directly referenced from applications
|
307
|
-
keep_from_site = application_resources
|
308
|
-
keep_from_site += application_resources.map {|app| @catalog.direct_dependents_of(app) }.flatten
|
309
|
-
|
310
|
-
to_be_removed -= keep_from_site
|
311
|
-
@catalog.remove_resource(*to_be_removed)
|
312
|
-
# set the pruned result
|
313
|
-
@resources = @catalog.resources
|
314
|
-
end
|
315
|
-
|
316
|
-
# @api private
|
317
|
-
def evaluate_applications
|
318
|
-
@applications.each do |app|
|
319
|
-
components = []
|
320
|
-
mapping = app.parameters[:nodes] ? app.parameters[:nodes].value : {}
|
321
|
-
raise Puppet::Error, _("Invalid node mapping in %{app}: Mapping must be a hash") % { app: app.ref } unless mapping.is_a?(Hash)
|
322
|
-
all_mapped = Set.new
|
323
|
-
mapping.each do |k,v|
|
324
|
-
raise Puppet::Error, _("Invalid node mapping in %{app}: Key %{k} is not a Node") % { app: app.ref, k: k } unless k.is_a?(Puppet::Resource) && k.type == 'Node'
|
325
|
-
v = [v] unless v.is_a?(Array)
|
326
|
-
v.each do |res|
|
327
|
-
raise Puppet::Error, _("Invalid node mapping in %{app}: Value %{res} is not a resource") % { app: app.ref, res: res } unless res.is_a?(Puppet::Resource)
|
328
|
-
raise Puppet::Error, _("Application %{app} maps component %{res} to multiple nodes") % { app: app.ref, res: res } if all_mapped.add?(res.ref).nil?
|
329
|
-
components << res if k.title == node.name
|
330
|
-
end
|
331
|
-
end
|
332
|
-
begin
|
333
|
-
@current_app = app
|
334
|
-
@current_components = components
|
335
|
-
unless @current_components.empty?
|
336
|
-
Puppet.notice "EVAL APP #{app} #{components.inspect}"
|
337
|
-
# Add the app itself since components mapped to the current node
|
338
|
-
# will have a containment edge for it
|
339
|
-
# @todo lutter 2015-01-28: the node mapping winds up in the
|
340
|
-
# catalog, but probably shouldn't
|
341
|
-
@catalog.add_resource(@current_app)
|
342
|
-
@current_app.evaluate
|
343
|
-
end
|
344
|
-
ensure
|
345
|
-
@current_app = nil
|
346
|
-
@current_components = nil
|
347
|
-
end
|
348
|
-
end
|
349
|
-
end
|
350
|
-
|
351
|
-
|
352
203
|
# If ast nodes are enabled, then see if we can find and evaluate one.
|
353
204
|
#
|
354
205
|
# @api private
|
@@ -391,12 +242,6 @@ class Puppet::Parser::Compiler
|
|
391
242
|
classes = classes.keys
|
392
243
|
end
|
393
244
|
|
394
|
-
unless @current_components.nil?
|
395
|
-
classes = classes.select do |title|
|
396
|
-
@current_components.any? { |comp| comp.class? && comp.title == title }
|
397
|
-
end
|
398
|
-
end
|
399
|
-
|
400
245
|
hostclasses = classes.collect do |name|
|
401
246
|
environment.known_resource_types.find_hostclass(name) or raise Puppet::Error, _("Could not find class %{name} for %{node}") % { name: name, node: node.name }
|
402
247
|
end
|
@@ -427,16 +272,6 @@ class Puppet::Parser::Compiler
|
|
427
272
|
|
428
273
|
def initialize(node, code_id: nil)
|
429
274
|
@node = sanitize_node(node)
|
430
|
-
# Array of resources representing all application instances we've found
|
431
|
-
@applications = []
|
432
|
-
# We use @current_app and @current_components to signal to the
|
433
|
-
# evaluator that we are in the middle of evaluating an
|
434
|
-
# application. They are set in evaluate_applications to the application
|
435
|
-
# instance, resp. to an array of the components of that application
|
436
|
-
# that is mapped to the current node. They are only non-nil when we are
|
437
|
-
# in the middle of executing evaluate_applications
|
438
|
-
@current_app = nil
|
439
|
-
@current_components = nil
|
440
275
|
@code_id = code_id
|
441
276
|
initvars
|
442
277
|
add_catalog_validators
|
@@ -481,39 +316,6 @@ class Puppet::Parser::Compiler
|
|
481
316
|
[already_included, newly_included]
|
482
317
|
end
|
483
318
|
|
484
|
-
def evaluate_capability_mappings
|
485
|
-
krt = environment.known_resource_types
|
486
|
-
krt.capability_mappings.each_value do |capability_mapping|
|
487
|
-
args = capability_mapping.arguments
|
488
|
-
component_ref = args['component']
|
489
|
-
kind = args['kind']
|
490
|
-
|
491
|
-
# That component_ref is either a QREF or a Class['literal'|QREF] is asserted during validation so no
|
492
|
-
# need to check that here
|
493
|
-
if component_ref.is_a?(Puppet::Pops::Model::QualifiedReference)
|
494
|
-
component_name = component_ref.cased_value
|
495
|
-
component_type = 'type'
|
496
|
-
component = krt.find_definition(component_name)
|
497
|
-
else
|
498
|
-
component_name = component_ref.keys[0].value
|
499
|
-
component_type = 'class'
|
500
|
-
component = krt.find_hostclass(component_name)
|
501
|
-
end
|
502
|
-
if component.nil?
|
503
|
-
raise Puppet::ParseError, _("Capability mapping error: %{kind} clause references nonexistent %{component_type} %{component_name}") %
|
504
|
-
{ kind: kind, component_type: component_type, component_name: component_name }
|
505
|
-
end
|
506
|
-
|
507
|
-
blueprint = args['blueprint']
|
508
|
-
if kind == 'produces'
|
509
|
-
component.add_produces(blueprint)
|
510
|
-
else
|
511
|
-
component.add_consumes(blueprint)
|
512
|
-
end
|
513
|
-
end
|
514
|
-
krt.capability_mappings.clear # No longer needed
|
515
|
-
end
|
516
|
-
|
517
319
|
# Evaluate our collections and return true if anything returned an object.
|
518
320
|
# The 'true' is used to continue a loop, so it's important.
|
519
321
|
def evaluate_collections
|
@@ -1,6 +1,5 @@
|
|
1
1
|
class Puppet::Parser::Compiler
|
2
|
-
# Validator that asserts
|
3
|
-
# to capability resources.
|
2
|
+
# Validator that asserts relationship metaparameters refer to valid resources
|
4
3
|
class CatalogValidator::RelationshipValidator < CatalogValidator
|
5
4
|
def validate
|
6
5
|
catalog.resources.each do |resource|
|
@@ -16,48 +15,24 @@ class Puppet::Parser::Compiler
|
|
16
15
|
|
17
16
|
private
|
18
17
|
|
19
|
-
# A hash lookup is 6x avg times faster than find among 3 values.
|
20
|
-
CAPABILITY_ACCEPTED_METAPARAMS = {:require => true, :consume => true, :export => true}.freeze
|
21
|
-
|
22
18
|
def validate_relationship(param)
|
23
|
-
#
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
19
|
+
# the referenced resource must exist
|
20
|
+
refs = param.value.is_a?(Array) ? param.value.flatten : [param.value]
|
21
|
+
refs.each do |r|
|
22
|
+
next if r.nil? || r == :undef
|
23
|
+
res = r.to_s
|
24
|
+
begin
|
25
|
+
found = catalog.resource(res)
|
26
|
+
rescue ArgumentError => e
|
27
|
+
# Raise again but with file and line information
|
28
|
+
raise CatalogValidationError.new(e.message, param.file, param.line)
|
29
29
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
refs.each do |r|
|
34
|
-
next if r.nil? || r == :undef
|
35
|
-
res = r.to_s
|
36
|
-
begin
|
37
|
-
found = catalog.resource(res)
|
38
|
-
rescue ArgumentError => e
|
39
|
-
# Raise again but with file and line information
|
40
|
-
raise CatalogValidationError.new(e.message, param.file, param.line)
|
41
|
-
end
|
42
|
-
unless found
|
43
|
-
msg = _("Could not find resource '%{res}' in parameter '%{param}'") % { res: res, param: param.name.to_s }
|
44
|
-
raise CatalogValidationError.new(msg, param.file, param.line)
|
45
|
-
end
|
30
|
+
unless found
|
31
|
+
msg = _("Could not find resource '%{res}' in parameter '%{param}'") % { res: res, param: param.name.to_s }
|
32
|
+
raise CatalogValidationError.new(msg, param.file, param.line)
|
46
33
|
end
|
47
34
|
end
|
48
35
|
end
|
49
|
-
|
50
|
-
def has_capability?(value)
|
51
|
-
case value
|
52
|
-
when Array
|
53
|
-
value.find { |v| has_capability?(v) }
|
54
|
-
when Puppet::Resource
|
55
|
-
rt = value.resource_type
|
56
|
-
!rt.nil? && rt.is_capability?
|
57
|
-
else
|
58
|
-
false
|
59
|
-
end
|
60
|
-
end
|
61
36
|
end
|
62
37
|
end
|
63
38
|
|
@@ -77,6 +77,26 @@ module Puppet::Parser::Functions
|
|
77
77
|
# @api private
|
78
78
|
class AnonymousModuleAdapter < Puppet::Pops::Adaptable::Adapter
|
79
79
|
attr_accessor :module
|
80
|
+
|
81
|
+
def self.create_adapter(env)
|
82
|
+
adapter = super(env)
|
83
|
+
adapter.module = Module.new do
|
84
|
+
@metadata = {}
|
85
|
+
|
86
|
+
def self.all_function_info
|
87
|
+
@metadata
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.get_function_info(name)
|
91
|
+
@metadata[name]
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.add_function_info(name, info)
|
95
|
+
@metadata[name] = info
|
96
|
+
end
|
97
|
+
end
|
98
|
+
adapter
|
99
|
+
end
|
80
100
|
end
|
81
101
|
|
82
102
|
@environment_module_lock = Puppet::Concurrent::Lock.new
|
@@ -87,23 +107,7 @@ module Puppet::Parser::Functions
|
|
87
107
|
# @api private
|
88
108
|
def self.environment_module(env)
|
89
109
|
@environment_module_lock.synchronize do
|
90
|
-
AnonymousModuleAdapter.adapt(env)
|
91
|
-
a.module ||= Module.new do
|
92
|
-
@metadata = {}
|
93
|
-
|
94
|
-
def self.all_function_info
|
95
|
-
@metadata
|
96
|
-
end
|
97
|
-
|
98
|
-
def self.get_function_info(name)
|
99
|
-
@metadata[name]
|
100
|
-
end
|
101
|
-
|
102
|
-
def self.add_function_info(name, info)
|
103
|
-
@metadata[name] = info
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end.module
|
110
|
+
AnonymousModuleAdapter.adapt(env).module
|
107
111
|
end
|
108
112
|
end
|
109
113
|
|
@@ -1,5 +1,9 @@
|
|
1
1
|
Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc => <<-'ENDHEREDOC') do |args|
|
2
2
|
Converts a hash into a set of resources and adds them to the catalog.
|
3
|
+
|
4
|
+
**Note**: Use this function selectively. It's generally better to write resources in
|
5
|
+
[Puppet](https://puppet.com/docs/puppet/latest/lang_resources.html), as
|
6
|
+
resources created with `create_resource` are difficult to read and troubleshoot.
|
3
7
|
|
4
8
|
This function takes two mandatory arguments: a resource type, and a hash describing
|
5
9
|
a set of resources. The hash should be in the form `{title => {parameters} }`:
|
@@ -33,7 +37,7 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
|
|
33
37
|
as native resources.
|
34
38
|
|
35
39
|
Virtual and Exported resources may be created by prefixing the type name
|
36
|
-
with @ or @@ respectively.
|
40
|
+
with @ or @@ respectively. For example, the $myusers hash may be exported
|
37
41
|
in the following manner:
|
38
42
|
|
39
43
|
create_resources("@@user", $myusers)
|
@@ -42,9 +46,9 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
|
|
42
46
|
|
43
47
|
create_resources("@user", $myusers)
|
44
48
|
|
45
|
-
Note that `create_resources`
|
46
|
-
data binding and
|
47
|
-
final value of a parameter (just as when setting a parameter to `undef` in a
|
49
|
+
Note that `create_resources` filters out parameter values that are `undef` so that normal
|
50
|
+
data binding and Puppet default value expressions are considered (in that order) for the
|
51
|
+
final value of a parameter (just as when setting a parameter to `undef` in a Puppet language
|
48
52
|
resource declaration).
|
49
53
|
ENDHEREDOC
|
50
54
|
if Puppet[:tasks]
|
@@ -63,9 +67,9 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
|
|
63
67
|
defaults ||= {}
|
64
68
|
type_name = type.sub(/^@{1,2}/, '').downcase
|
65
69
|
|
66
|
-
# Get file/line information from the
|
67
|
-
# If relayed via other
|
68
|
-
# will be in the original
|
70
|
+
# Get file/line information from the Puppet stack (where call comes from in Puppet source)
|
71
|
+
# If relayed via other Puppet functions in ruby that do not nest their calls, the source position
|
72
|
+
# will be in the original Puppet source.
|
69
73
|
#
|
70
74
|
file, line = Puppet::Pops::PuppetStack.top_of_stack
|
71
75
|
|
@@ -150,15 +150,6 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
|
-
def is_unevaluated_consumer?
|
154
|
-
# We don't declare a new variable here just to test. Saves memory
|
155
|
-
instance_variable_defined?(:@unevaluated_consumer)
|
156
|
-
end
|
157
|
-
|
158
|
-
def mark_unevaluated_consumer
|
159
|
-
@unevaluated_consumer = true
|
160
|
-
end
|
161
|
-
|
162
153
|
# Merge an override resource in. This will throw exceptions if
|
163
154
|
# any overrides aren't allowed.
|
164
155
|
def merge(resource)
|
@@ -260,66 +251,6 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
260
251
|
super || ((scope_resource = scope.resource) && !scope_resource.equal?(self) && scope_resource.raw_tagged?(tag_array))
|
261
252
|
end
|
262
253
|
|
263
|
-
# Fills resource params from a capability
|
264
|
-
#
|
265
|
-
# This backs 'consumes => Sql[one]'
|
266
|
-
# @api private
|
267
|
-
def add_parameters_from_consume
|
268
|
-
return if self[:consume].nil?
|
269
|
-
|
270
|
-
map = {}
|
271
|
-
[ self[:consume] ].flatten.map do |ref|
|
272
|
-
# Assert that the ref really is a resource reference
|
273
|
-
raise Puppet::Error, _("Invalid consume in %{value0}: %{ref} is not a resource") % { value0: self.ref, ref: ref } unless ref.is_a?(Puppet::Resource)
|
274
|
-
|
275
|
-
# Resolve references
|
276
|
-
t = ref.type
|
277
|
-
t = Puppet::Pops::Evaluator::Runtime3ResourceSupport.find_resource_type(scope, t) unless t == 'class' || t == 'node'
|
278
|
-
cap = catalog.resource(t, ref.title)
|
279
|
-
if cap.nil?
|
280
|
-
raise Puppet::Error, _("Resource %{ref} could not be found; it might not have been produced yet") % { ref: ref }
|
281
|
-
end
|
282
|
-
|
283
|
-
# Ensure that the found resource is a capability resource
|
284
|
-
raise Puppet::Error, _("Invalid consume in %{ref}: %{cap} is not a capability resource") % { ref: ref, cap: cap } unless cap.resource_type.is_capability?
|
285
|
-
cap
|
286
|
-
end.each do |cns|
|
287
|
-
# Establish mappings
|
288
|
-
blueprint = resource_type.consumes.find do |bp|
|
289
|
-
bp[:capability] == cns.type
|
290
|
-
end
|
291
|
-
# @todo lutter 2015-08-03: catch this earlier, can we do this during
|
292
|
-
# static analysis ?
|
293
|
-
raise _("Resource %{res} tries to consume %{cns} but no 'consumes' mapping exists for %{resource_type} and %{cns_type}") % { res: self, cns: cns, resource_type: self.resource_type, cns_type: cns.type } unless blueprint
|
294
|
-
|
295
|
-
# setup scope that has, for each attr of cns, a binding to cns[attr]
|
296
|
-
scope.with_global_scope do |global_scope|
|
297
|
-
cns_scope = global_scope.newscope(:source => self, :resource => self)
|
298
|
-
cns.to_hash.each { |name, value| cns_scope[name.to_s] = value }
|
299
|
-
|
300
|
-
# evaluate mappings in that scope
|
301
|
-
resource_type.arguments.keys.each do |name|
|
302
|
-
expr = blueprint[:mappings][name]
|
303
|
-
if expr
|
304
|
-
# Explicit mapping
|
305
|
-
value = expr.safeevaluate(cns_scope)
|
306
|
-
else
|
307
|
-
value = cns[name]
|
308
|
-
end
|
309
|
-
unless value.nil?
|
310
|
-
# @todo lutter 2015-07-01: this should be caught by the checker
|
311
|
-
# much earlier. We consume several capres, at least two of which
|
312
|
-
# want to map to the same parameter (PUP-5080)
|
313
|
-
raise _("Attempt to reassign attribute '%{name}' in '%{resource}' caused by multiple consumed mappings to the same attribute") % { name: name, resource: self } if map[name]
|
314
|
-
map[name] = value
|
315
|
-
end
|
316
|
-
end
|
317
|
-
end
|
318
|
-
end
|
319
|
-
|
320
|
-
map.each { |name, value| self[name] = value if self[name].nil? }
|
321
|
-
end
|
322
|
-
|
323
254
|
def offset
|
324
255
|
nil
|
325
256
|
end
|