puppet 4.4.0 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONTRIBUTING.md +5 -5
- data/Gemfile +2 -2
- data/LICENSE +2 -2
- data/README.md +5 -0
- data/conf/puppet.conf +1 -1
- data/ext/project_data.yaml +2 -0
- data/ext/redhat/puppet.spec.erb +0 -9
- data/ext/upload_facts.rb +1 -1
- data/lib/hiera_puppet.rb +6 -14
- data/lib/puppet/application/agent.rb +3 -4
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/ca.rb +1 -0
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +2 -2
- data/lib/puppet/application/lookup.rb +8 -20
- data/lib/puppet/application/master.rb +1 -1
- data/lib/puppet/application/resource.rb +1 -5
- data/lib/puppet/data_providers/hiera_config.rb +2 -4
- data/lib/puppet/data_providers/hiera_interpolate.rb +12 -105
- data/lib/puppet/data_providers/json_data_provider_factory.rb +1 -8
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -8
- data/lib/puppet/defaults.rb +104 -25
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +2 -2
- data/lib/puppet/file_system/windows.rb +1 -15
- data/lib/puppet/functions/assert_type.rb +1 -1
- data/lib/puppet/functions/dig.rb +39 -0
- data/lib/puppet/functions/hiera_include.rb +2 -2
- data/lib/puppet/functions/inline_epp.rb +1 -1
- data/lib/puppet/functions/lest.rb +53 -0
- data/lib/puppet/functions/lookup.rb +40 -30
- data/lib/puppet/functions/new.rb +502 -0
- data/lib/puppet/functions/regsubst.rb +11 -10
- data/lib/puppet/functions/then.rb +74 -0
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/with.rb +1 -1
- data/lib/puppet/functions.rb +69 -0
- data/lib/puppet/indirector/catalog/compiler.rb +4 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/resource_type/parser.rb +5 -0
- data/lib/puppet/indirector/rest.rb +5 -1
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +19 -2
- data/lib/puppet/module.rb +3 -3
- data/lib/puppet/module_tool/applications/application.rb +1 -1
- data/lib/puppet/module_tool/applications/builder.rb +2 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +6 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +19 -4
- data/lib/puppet/module_tool/skeleton/templates/generator/{tests → examples}/init.pp.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -1
- data/lib/puppet/network/auth_config_parser.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +0 -2
- data/lib/puppet/network/http/api/master/v3/environment.rb +6 -2
- data/lib/puppet/network/http/rack/rest.rb +10 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +20 -3
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +24 -2
- data/lib/puppet/parser/e4_parser_adapter.rb +13 -12
- data/lib/puppet/parser/environment_compiler.rb +2 -2
- data/lib/puppet/parser/functions/hiera_include.rb +2 -2
- data/lib/puppet/parser/functions/inline_epp.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +0 -3
- data/lib/puppet/parser/resource.rb +14 -5
- data/lib/puppet/parser/scope.rb +18 -15
- data/lib/puppet/plugins/data_providers/data_provider.rb +19 -8
- data/lib/puppet/pops/adapters.rb +5 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +77 -15
- data/lib/puppet/pops/evaluator/closure.rb +10 -5
- data/lib/puppet/pops/evaluator/compare_operator.rb +34 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +75 -22
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +7 -6
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +13 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +14 -4
- data/lib/puppet/pops/functions/dispatcher.rb +1 -1
- data/lib/puppet/pops/issues.rb +18 -2
- data/lib/puppet/pops/loader/base_loader.rb +48 -7
- data/lib/puppet/pops/loader/dependency_loader.rb +27 -2
- data/lib/puppet/pops/loader/loader.rb +12 -0
- data/lib/puppet/pops/loader/predefined_loader.rb +29 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +57 -0
- data/lib/puppet/pops/loader/static_loader.rb +92 -5
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +25 -3
- data/lib/puppet/pops/loaders.rb +84 -14
- data/lib/puppet/pops/lookup/explainer.rb +38 -1
- data/lib/puppet/pops/lookup/interpolation.rb +115 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +86 -0
- data/lib/puppet/pops/merge_strategy.rb +0 -10
- data/lib/puppet/pops/model/ast_transformer.rb +8 -1
- data/lib/puppet/pops/model/factory.rb +31 -8
- data/lib/puppet/pops/model/model.rb +8 -0
- data/lib/puppet/pops/model/model_label_provider.rb +1 -0
- data/lib/puppet/pops/model/model_meta.rb +7 -1
- data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
- data/lib/puppet/pops/parser/egrammar.ra +24 -7
- data/lib/puppet/pops/parser/eparser.rb +863 -798
- data/lib/puppet/pops/parser/evaluating_parser.rb +4 -0
- data/lib/puppet/pops/parser/locator.rb +8 -4
- data/lib/puppet/pops/pcore.rb +30 -0
- data/lib/puppet/pops/types/class_loader.rb +2 -4
- data/lib/puppet/pops/types/implementation_registry.rb +146 -0
- data/lib/puppet/pops/types/iterable.rb +4 -4
- data/lib/puppet/pops/types/p_object_type.rb +846 -0
- data/lib/puppet/pops/types/p_runtime_type.rb +102 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +164 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +113 -0
- data/lib/puppet/pops/types/puppet_object.rb +21 -0
- data/lib/puppet/pops/types/recursion_guard.rb +10 -0
- data/lib/puppet/pops/types/ruby_generator.rb +258 -0
- data/lib/puppet/pops/types/string_converter.rb +922 -0
- data/lib/puppet/pops/types/type_asserter.rb +2 -2
- data/lib/puppet/pops/types/type_calculator.rb +30 -6
- data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
- data/lib/puppet/pops/types/type_factory.rb +49 -16
- data/lib/puppet/pops/types/type_formatter.rb +341 -106
- data/lib/puppet/pops/types/type_mismatch_describer.rb +132 -41
- data/lib/puppet/pops/types/type_parser.rb +205 -197
- data/lib/puppet/pops/types/types.rb +722 -202
- data/lib/puppet/pops/validation/checker4_0.rb +66 -4
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/visitor.rb +3 -1
- data/lib/puppet/pops.rb +6 -0
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +64 -20
- data/lib/puppet/provider/package/pip3.rb +2 -0
- data/lib/puppet/provider/package/puppet_gem.rb +0 -0
- data/lib/puppet/provider/package/rpm.rb +112 -0
- data/lib/puppet/provider/package/yum.rb +7 -68
- data/lib/puppet/provider/service/daemontools.rb +3 -3
- data/lib/puppet/provider/service/init.rb +4 -2
- data/lib/puppet/provider/service/runit.rb +3 -3
- data/lib/puppet/provider/service/smf.rb +6 -3
- data/lib/puppet/provider/service/systemd.rb +59 -73
- data/lib/puppet/provider/user/user_role_add.rb +3 -1
- data/lib/puppet/reference/providers.rb +2 -3
- data/lib/puppet/resource/catalog.rb +34 -30
- data/lib/puppet/resource/type_collection.rb +23 -8
- data/lib/puppet/resource.rb +54 -37
- data/lib/puppet/settings/base_setting.rb +9 -3
- data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
- data/lib/puppet/settings.rb +5 -3
- data/lib/puppet/ssl/oids.rb +24 -2
- data/lib/puppet/test/test_helper.rb +0 -1
- data/lib/puppet/transaction.rb +0 -24
- data/lib/puppet/type/exec.rb +17 -17
- data/lib/puppet/type/file/content.rb +8 -8
- data/lib/puppet/type/file/ensure.rb +4 -4
- data/lib/puppet/type/file/source.rb +4 -4
- data/lib/puppet/type/file/target.rb +2 -2
- data/lib/puppet/type/file.rb +15 -5
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/mount.rb +18 -1
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/schedule.rb +5 -5
- data/lib/puppet/type/service.rb +15 -0
- data/lib/puppet/type/sshkey.rb +5 -3
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/tidy.rb +3 -3
- data/lib/puppet/type/zone.rb +5 -5
- data/lib/puppet/type.rb +13 -7
- data/lib/puppet/util/feature.rb +1 -1
- data/lib/puppet/util/monkey_patches.rb +18 -5
- data/lib/puppet/util/network_device/cisco/device.rb +16 -6
- data/lib/puppet/util/network_device/cisco/interface.rb +5 -6
- data/lib/puppet/util/plist.rb +3 -3
- data/lib/puppet/util/windows/file.rb +40 -10
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +13 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +5 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +2 -2
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +2 -1
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +2 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/data/empty_key.json +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/data/empty_key.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -0
- data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
- data/spec/fixtures/unit/provider/service/smf/svcs.out +4 -3
- data/spec/integration/agent/logging_spec.rb +0 -0
- data/spec/integration/application/apply_spec.rb +0 -0
- data/spec/integration/application/doc_spec.rb +0 -0
- data/spec/integration/configurer_spec.rb +0 -0
- data/spec/integration/data_binding_spec.rb +0 -34
- data/spec/integration/defaults_spec.rb +0 -0
- data/spec/integration/faces/ca_spec.rb +0 -0
- data/spec/integration/faces/documentation_spec.rb +0 -0
- data/spec/integration/file_serving/fileset_spec.rb +0 -0
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -0
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -0
- data/spec/integration/indirector/node/ldap_spec.rb +0 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +27 -27
- data/spec/integration/network/formats_spec.rb +0 -0
- data/spec/integration/node/environment_spec.rb +0 -0
- data/spec/integration/node/facts_spec.rb +0 -0
- data/spec/integration/node_spec.rb +0 -0
- data/spec/integration/parser/catalog_spec.rb +14 -2
- data/spec/integration/parser/collection_spec.rb +0 -0
- data/spec/integration/parser/compiler_spec.rb +94 -3
- data/spec/integration/parser/functions/require_spec.rb +0 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +19 -1
- data/spec/integration/parser/resource_expressions_spec.rb +1 -1
- data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
- data/spec/integration/provider/mount_spec.rb +0 -0
- data/spec/integration/provider/service/init_spec.rb +0 -0
- data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
- data/spec/integration/reference/providers_spec.rb +0 -0
- data/spec/integration/reports_spec.rb +0 -0
- data/spec/integration/resource/catalog_spec.rb +0 -0
- data/spec/integration/resource/type_collection_spec.rb +8 -0
- data/spec/integration/ssl/certificate_authority_spec.rb +0 -0
- data/spec/integration/ssl/certificate_request_spec.rb +0 -0
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -0
- data/spec/integration/ssl/host_spec.rb +0 -0
- data/spec/integration/transaction/report_spec.rb +0 -0
- data/spec/integration/transaction_spec.rb +0 -0
- data/spec/integration/type/exec_spec.rb +0 -0
- data/spec/integration/type/file_spec.rb +0 -0
- data/spec/integration/type/package_spec.rb +0 -0
- data/spec/integration/type/tidy_spec.rb +0 -0
- data/spec/integration/type_spec.rb +0 -0
- data/spec/integration/util/autoload_spec.rb +0 -0
- data/spec/integration/util/rdoc/parser_spec.rb +0 -0
- data/spec/integration/util/settings_spec.rb +26 -0
- data/spec/integration/util/windows/registry_spec.rb +0 -0
- data/spec/integration/util/windows/security_spec.rb +0 -0
- data/spec/integration/util/windows/user_spec.rb +0 -0
- data/spec/integration/util_spec.rb +0 -0
- data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -0
- data/spec/lib/puppet/face/basetest.rb +0 -0
- data/spec/lib/puppet/face/huzzah.rb +0 -0
- data/spec/lib/puppet_spec/compiler.rb +11 -4
- data/spec/lib/puppet_spec/files.rb +0 -0
- data/spec/lib/puppet_spec/fixtures.rb +0 -0
- data/spec/lib/puppet_spec/verbose.rb +0 -0
- data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
- data/spec/shared_behaviours/file_server_terminus.rb +0 -0
- data/spec/shared_behaviours/file_serving.rb +0 -0
- data/spec/shared_behaviours/memory_terminus.rb +0 -0
- data/spec/shared_behaviours/path_parameters.rb +0 -0
- data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
- data/spec/shared_contexts/types_setup.rb +4 -0
- data/spec/spec_helper.rb +0 -0
- data/spec/unit/agent/locker_spec.rb +0 -0
- data/spec/unit/agent_spec.rb +0 -0
- data/spec/unit/application/agent_spec.rb +0 -0
- data/spec/unit/application/apply_spec.rb +0 -0
- data/spec/unit/application/cert_spec.rb +0 -0
- data/spec/unit/application/certificate_spec.rb +0 -0
- data/spec/unit/application/config_spec.rb +0 -0
- data/spec/unit/application/describe_spec.rb +0 -0
- data/spec/unit/application/device_spec.rb +0 -0
- data/spec/unit/application/doc_spec.rb +0 -0
- data/spec/unit/application/face_base_spec.rb +0 -0
- data/spec/unit/application/facts_spec.rb +0 -0
- data/spec/unit/application/filebucket_spec.rb +0 -0
- data/spec/unit/application/indirection_base_spec.rb +0 -0
- data/spec/unit/application/inspect_spec.rb +19 -8
- data/spec/unit/application/lookup_spec.rb +92 -10
- data/spec/unit/application/master_spec.rb +0 -0
- data/spec/unit/application/resource_spec.rb +0 -0
- data/spec/unit/application_spec.rb +0 -0
- data/spec/unit/appmgmt_spec.rb +44 -35
- data/spec/unit/capability_spec.rb +33 -53
- data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
- data/spec/unit/configurer/downloader_spec.rb +0 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -0
- data/spec/unit/configurer_spec.rb +0 -0
- data/spec/unit/confine/exists_spec.rb +0 -0
- data/spec/unit/confine/false_spec.rb +0 -0
- data/spec/unit/confine/feature_spec.rb +0 -0
- data/spec/unit/confine/true_spec.rb +0 -0
- data/spec/unit/confine/variable_spec.rb +0 -0
- data/spec/unit/confine_collection_spec.rb +0 -0
- data/spec/unit/confine_spec.rb +0 -0
- data/spec/unit/confiner_spec.rb +0 -0
- data/spec/unit/daemon_spec.rb +0 -0
- data/spec/unit/data_providers/function_data_provider_spec.rb +19 -1
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +2 -2
- data/spec/unit/defaults_spec.rb +18 -0
- data/spec/unit/external/pson_spec.rb +0 -0
- data/spec/unit/face/catalog_spec.rb +0 -0
- data/spec/unit/face/certificate_spec.rb +0 -0
- data/spec/unit/face/config_spec.rb +0 -0
- data/spec/unit/face/facts_spec.rb +0 -0
- data/spec/unit/face/file_spec.rb +0 -0
- data/spec/unit/face/help_spec.rb +0 -0
- data/spec/unit/face/node_spec.rb +0 -0
- data/spec/unit/face/plugin_spec.rb +0 -0
- data/spec/unit/face_spec.rb +0 -0
- data/spec/unit/file_bucket/dipper_spec.rb +0 -0
- data/spec/unit/file_bucket/file_spec.rb +0 -0
- data/spec/unit/file_serving/base_spec.rb +0 -0
- data/spec/unit/file_serving/configuration/parser_spec.rb +0 -0
- data/spec/unit/file_serving/configuration_spec.rb +0 -0
- data/spec/unit/file_serving/content_spec.rb +0 -0
- data/spec/unit/file_serving/fileset_spec.rb +0 -0
- data/spec/unit/file_serving/metadata_spec.rb +0 -0
- data/spec/unit/file_serving/mount/file_spec.rb +0 -0
- data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
- data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
- data/spec/unit/file_serving/mount_spec.rb +0 -0
- data/spec/unit/file_serving/terminus_helper_spec.rb +0 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +0 -0
- data/spec/unit/file_system/uniquefile_spec.rb +20 -0
- data/spec/unit/file_system_spec.rb +61 -0
- data/spec/unit/functions/assert_type_spec.rb +8 -0
- data/spec/unit/functions/defined_spec.rb +0 -0
- data/spec/unit/functions/dig_spec.rb +58 -0
- data/spec/unit/functions/hiera_spec.rb +0 -0
- data/spec/unit/functions/lest_spec.rb +34 -0
- data/spec/unit/functions/lookup_spec.rb +109 -3
- data/spec/unit/functions/new_spec.rb +543 -0
- data/spec/unit/functions/regsubst_spec.rb +8 -0
- data/spec/unit/functions/split_spec.rb +0 -0
- data/spec/unit/functions/then_spec.rb +40 -0
- data/spec/unit/functions/versioncmp_spec.rb +0 -0
- data/spec/unit/functions4_spec.rb +78 -10
- data/spec/unit/graph/relationship_graph_spec.rb +0 -0
- data/spec/unit/graph/simple_graph_spec.rb +0 -0
- data/spec/unit/hiera_puppet_spec.rb +49 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +7 -0
- data/spec/unit/indirector/catalog/json_spec.rb +0 -0
- data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -0
- data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
- data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate/file_spec.rb +0 -0
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
- data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
- data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
- data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
- data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
- data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
- data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
- data/spec/unit/indirector/code_spec.rb +0 -0
- data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
- data/spec/unit/indirector/envelope_spec.rb +0 -0
- data/spec/unit/indirector/exec_spec.rb +0 -0
- data/spec/unit/indirector/face_spec.rb +0 -0
- data/spec/unit/indirector/facts/facter_spec.rb +0 -0
- data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
- data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -0
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
- data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
- data/spec/unit/indirector/file_content/file_spec.rb +0 -0
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
- data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
- data/spec/unit/indirector/file_server_spec.rb +0 -0
- data/spec/unit/indirector/indirection_spec.rb +0 -0
- data/spec/unit/indirector/json_spec.rb +0 -0
- data/spec/unit/indirector/key/ca_spec.rb +0 -0
- data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
- data/spec/unit/indirector/key/file_spec.rb +0 -0
- data/spec/unit/indirector/ldap_spec.rb +0 -0
- data/spec/unit/indirector/memory_spec.rb +0 -0
- data/spec/unit/indirector/msgpack_spec.rb +11 -1
- data/spec/unit/indirector/node/exec_spec.rb +0 -0
- data/spec/unit/indirector/node/ldap_spec.rb +0 -0
- data/spec/unit/indirector/node/memory_spec.rb +0 -0
- data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
- data/spec/unit/indirector/node/plain_spec.rb +0 -0
- data/spec/unit/indirector/node/rest_spec.rb +0 -0
- data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/node/yaml_spec.rb +0 -0
- data/spec/unit/indirector/plain_spec.rb +0 -0
- data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
- data/spec/unit/indirector/report/processor_spec.rb +0 -0
- data/spec/unit/indirector/report/rest_spec.rb +0 -0
- data/spec/unit/indirector/report/yaml_spec.rb +0 -0
- data/spec/unit/indirector/request_spec.rb +0 -0
- data/spec/unit/indirector/resource/ral_spec.rb +0 -0
- data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/resource_type/parser_spec.rb +5 -0
- data/spec/unit/indirector/resource_type/rest_spec.rb +0 -0
- data/spec/unit/indirector/rest_spec.rb +12 -0
- data/spec/unit/indirector/ssl_file_spec.rb +0 -0
- data/spec/unit/indirector/status/rest_spec.rb +0 -0
- data/spec/unit/indirector/store_configs_spec.rb +0 -0
- data/spec/unit/indirector/terminus_spec.rb +0 -0
- data/spec/unit/indirector/yaml_spec.rb +0 -0
- data/spec/unit/indirector_spec.rb +0 -0
- data/spec/unit/interface/action_builder_spec.rb +0 -0
- data/spec/unit/interface/action_manager_spec.rb +0 -0
- data/spec/unit/interface/action_spec.rb +0 -0
- data/spec/unit/interface/documentation_spec.rb +0 -0
- data/spec/unit/interface/face_collection_spec.rb +0 -0
- data/spec/unit/interface/option_builder_spec.rb +0 -0
- data/spec/unit/interface/option_spec.rb +0 -0
- data/spec/unit/interface_spec.rb +0 -0
- data/spec/unit/man_spec.rb +0 -0
- data/spec/unit/module_spec.rb +30 -6
- data/spec/unit/module_tool/applications/builder_spec.rb +23 -3
- data/spec/unit/module_tool_spec.rb +0 -0
- data/spec/unit/network/auth_config_parser_spec.rb +16 -0
- data/spec/unit/network/authconfig_spec.rb +0 -0
- data/spec/unit/network/authstore_spec.rb +0 -0
- data/spec/unit/network/format_handler_spec.rb +0 -0
- data/spec/unit/network/format_spec.rb +0 -0
- data/spec/unit/network/formats_spec.rb +0 -0
- data/spec/unit/network/http/api/indirected_routes_spec.rb +21 -13
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +60 -0
- data/spec/unit/network/http/api/master/v3_spec.rb +0 -0
- data/spec/unit/network/http/compression_spec.rb +0 -0
- data/spec/unit/network/http/connection_spec.rb +0 -0
- data/spec/unit/network/http/factory_spec.rb +0 -0
- data/spec/unit/network/http/handler_spec.rb +0 -0
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
- data/spec/unit/network/http/pool_spec.rb +0 -0
- data/spec/unit/network/http/rack/rest_spec.rb +7 -0
- data/spec/unit/network/http/rack_spec.rb +0 -0
- data/spec/unit/network/http/session_spec.rb +0 -0
- data/spec/unit/network/http/site_spec.rb +0 -0
- data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
- data/spec/unit/network/http/webrick_spec.rb +0 -0
- data/spec/unit/network/http_pool_spec.rb +0 -0
- data/spec/unit/network/http_spec.rb +0 -0
- data/spec/unit/network/resolver_spec.rb +0 -0
- data/spec/unit/network/rights_spec.rb +0 -0
- data/spec/unit/network/server_spec.rb +0 -0
- data/spec/unit/node/environment_spec.rb +10 -0
- data/spec/unit/node/facts_spec.rb +0 -0
- data/spec/unit/node_spec.rb +0 -0
- data/spec/unit/other/selinux_spec.rb +0 -0
- data/spec/unit/parameter/path_spec.rb +0 -0
- data/spec/unit/parameter/value_collection_spec.rb +0 -0
- data/spec/unit/parameter/value_spec.rb +0 -0
- data/spec/unit/parameter_spec.rb +0 -0
- data/spec/unit/parser/ast/leaf_spec.rb +0 -0
- data/spec/unit/parser/compiler_spec.rb +20 -1
- data/spec/unit/parser/files_spec.rb +0 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -2
- data/spec/unit/parser/functions/defined_spec.rb +0 -0
- data/spec/unit/parser/functions/digest_spec.rb +0 -0
- data/spec/unit/parser/functions/fail_spec.rb +0 -0
- data/spec/unit/parser/functions/file_spec.rb +0 -0
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -0
- data/spec/unit/parser/functions/generate_spec.rb +0 -0
- data/spec/unit/parser/functions/hiera_spec.rb +0 -0
- data/spec/unit/parser/functions/include_spec.rb +0 -0
- data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
- data/spec/unit/parser/functions/realize_spec.rb +0 -0
- data/spec/unit/parser/functions/regsubst_spec.rb +0 -0
- data/spec/unit/parser/functions/require_spec.rb +0 -0
- data/spec/unit/parser/functions/scanf_spec.rb +0 -0
- data/spec/unit/parser/functions/shared.rb +1 -1
- data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
- data/spec/unit/parser/functions/split_spec.rb +0 -0
- data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
- data/spec/unit/parser/functions/tag_spec.rb +0 -0
- data/spec/unit/parser/functions/template_spec.rb +0 -0
- data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
- data/spec/unit/parser/functions_spec.rb +0 -0
- data/spec/unit/parser/relationship_spec.rb +0 -0
- data/spec/unit/parser/resource/param_spec.rb +0 -0
- data/spec/unit/parser/resource_spec.rb +8 -1
- data/spec/unit/parser/scope_spec.rb +45 -0
- data/spec/unit/parser/templatewrapper_spec.rb +0 -0
- data/spec/unit/parser/type_loader_spec.rb +0 -0
- data/spec/unit/pops/evaluator/access_ops_spec.rb +14 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +13 -5
- data/spec/unit/pops/loaders/loaders_spec.rb +8 -8
- data/spec/unit/pops/loaders/static_loader_spec.rb +92 -1
- data/spec/unit/pops/lookup/interpolation_spec.rb +313 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +2 -9
- data/spec/unit/pops/parser/parse_application_spec.rb +3 -8
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +19 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +3 -10
- data/spec/unit/pops/parser/parse_site_spec.rb +19 -10
- data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -4
- data/spec/unit/pops/types/enumeration_spec.rb +13 -12
- data/spec/unit/pops/types/iterable_spec.rb +2 -2
- data/spec/unit/pops/types/p_object_type_spec.rb +1060 -0
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +285 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +19 -17
- data/spec/unit/pops/types/ruby_generator_spec.rb +261 -0
- data/spec/unit/pops/types/string_converter_spec.rb +904 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +3 -3
- data/spec/unit/pops/types/type_calculator_spec.rb +462 -412
- data/spec/unit/pops/types/type_factory_spec.rb +129 -88
- data/spec/unit/pops/types/type_formatter_spec.rb +80 -8
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +27 -2
- data/spec/unit/pops/types/type_parser_spec.rb +55 -16
- data/spec/unit/pops/types/types_spec.rb +320 -0
- data/spec/unit/pops/validator/validator_spec.rb +84 -10
- data/spec/unit/property/ensure_spec.rb +0 -0
- data/spec/unit/property/keyvalue_spec.rb +0 -0
- data/spec/unit/property/list_spec.rb +0 -0
- data/spec/unit/property/ordered_list_spec.rb +0 -0
- data/spec/unit/property_spec.rb +0 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +0 -0
- data/spec/unit/provider/cisco_spec.rb +0 -0
- data/spec/unit/provider/command_spec.rb +0 -0
- data/spec/unit/provider/cron/crontab_spec.rb +0 -0
- data/spec/unit/provider/exec/posix_spec.rb +0 -0
- data/spec/unit/provider/exec/shell_spec.rb +0 -0
- data/spec/unit/provider/exec/windows_spec.rb +0 -0
- data/spec/unit/provider/exec_spec.rb +0 -0
- data/spec/unit/provider/file/posix_spec.rb +0 -0
- data/spec/unit/provider/file/windows_spec.rb +0 -0
- data/spec/unit/provider/group/groupadd_spec.rb +0 -0
- data/spec/unit/provider/group/ldap_spec.rb +0 -0
- data/spec/unit/provider/group/pw_spec.rb +0 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +0 -0
- data/spec/unit/provider/host/parsed_spec.rb +0 -0
- data/spec/unit/provider/interface/cisco_spec.rb +0 -0
- data/spec/unit/provider/ldap_spec.rb +0 -0
- data/spec/unit/provider/macauthorization_spec.rb +0 -0
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
- data/spec/unit/provider/mount/parsed_spec.rb +0 -0
- data/spec/unit/provider/mount_spec.rb +0 -0
- data/spec/unit/provider/naginator_spec.rb +0 -0
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -0
- data/spec/unit/provider/nameservice_spec.rb +0 -0
- data/spec/unit/provider/network_device_spec.rb +0 -0
- data/spec/unit/provider/package/aix_spec.rb +0 -0
- data/spec/unit/provider/package/appdmg_spec.rb +0 -0
- data/spec/unit/provider/package/apt_spec.rb +0 -0
- data/spec/unit/provider/package/aptitude_spec.rb +0 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +0 -0
- data/spec/unit/provider/package/dpkg_spec.rb +0 -0
- data/spec/unit/provider/package/freebsd_spec.rb +0 -0
- data/spec/unit/provider/package/gem_spec.rb +0 -0
- data/spec/unit/provider/package/hpux_spec.rb +0 -0
- data/spec/unit/provider/package/macports_spec.rb +0 -0
- data/spec/unit/provider/package/nim_spec.rb +0 -0
- data/spec/unit/provider/package/openbsd_spec.rb +0 -0
- data/spec/unit/provider/package/opkg_spec.rb +0 -0
- data/spec/unit/provider/package/pacman_spec.rb +0 -0
- data/spec/unit/provider/package/pip3_spec.rb +9 -262
- data/spec/unit/provider/package/pip_spec.rb +85 -22
- data/spec/unit/provider/package/pkg_spec.rb +0 -0
- data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
- data/spec/unit/provider/package/rpm_spec.rb +160 -3
- data/spec/unit/provider/package/sun_spec.rb +0 -0
- data/spec/unit/provider/package/windows/package_spec.rb +0 -0
- data/spec/unit/provider/package/windows_spec.rb +0 -0
- data/spec/unit/provider/package/yum_spec.rb +23 -134
- data/spec/unit/provider/package/zypper_spec.rb +0 -0
- data/spec/unit/provider/parsedfile_spec.rb +0 -0
- data/spec/unit/provider/selboolean_spec.rb +0 -0
- data/spec/unit/provider/selmodule_spec.rb +0 -0
- data/spec/unit/provider/service/base_spec.rb +0 -0
- data/spec/unit/provider/service/bsd_spec.rb +0 -0
- data/spec/unit/provider/service/daemontools_spec.rb +0 -0
- data/spec/unit/provider/service/debian_spec.rb +0 -0
- data/spec/unit/provider/service/freebsd_spec.rb +0 -0
- data/spec/unit/provider/service/gentoo_spec.rb +0 -0
- data/spec/unit/provider/service/init_spec.rb +0 -0
- data/spec/unit/provider/service/launchd_spec.rb +0 -0
- data/spec/unit/provider/service/openbsd_spec.rb +0 -0
- data/spec/unit/provider/service/openrc_spec.rb +0 -0
- data/spec/unit/provider/service/openwrt_spec.rb +0 -0
- data/spec/unit/provider/service/rcng_spec.rb +0 -0
- data/spec/unit/provider/service/redhat_spec.rb +0 -0
- data/spec/unit/provider/service/runit_spec.rb +0 -0
- data/spec/unit/provider/service/smf_spec.rb +14 -2
- data/spec/unit/provider/service/src_spec.rb +0 -0
- data/spec/unit/provider/service/systemd_spec.rb +34 -42
- data/spec/unit/provider/service/upstart_spec.rb +0 -0
- data/spec/unit/provider/service/windows_spec.rb +0 -0
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +0 -0
- data/spec/unit/provider/user/hpux_spec.rb +0 -0
- data/spec/unit/provider/user/ldap_spec.rb +0 -0
- data/spec/unit/provider/user/openbsd_spec.rb +0 -0
- data/spec/unit/provider/user/pw_spec.rb +0 -0
- data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
- data/spec/unit/provider/user/useradd_spec.rb +0 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +0 -0
- data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
- data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
- data/spec/unit/provider/zone/solaris_spec.rb +0 -0
- data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
- data/spec/unit/provider_spec.rb +0 -0
- data/spec/unit/puppet_spec.rb +0 -0
- data/spec/unit/relationship_spec.rb +0 -0
- data/spec/unit/reports/http_spec.rb +0 -0
- data/spec/unit/reports/store_spec.rb +0 -0
- data/spec/unit/reports_spec.rb +0 -0
- data/spec/unit/resource/capability_finder_spec.rb +10 -2
- data/spec/unit/resource/catalog_spec.rb +27 -0
- data/spec/unit/resource/status_spec.rb +0 -0
- data/spec/unit/resource/type_collection_helper_spec.rb +0 -0
- data/spec/unit/resource/type_collection_spec.rb +0 -0
- data/spec/unit/resource/type_spec.rb +0 -0
- data/spec/unit/resource_spec.rb +0 -0
- data/spec/unit/settings/directory_setting_spec.rb +0 -0
- data/spec/unit/settings/duration_setting_spec.rb +0 -0
- data/spec/unit/settings/file_setting_spec.rb +6 -0
- data/spec/unit/settings/path_setting_spec.rb +0 -0
- data/spec/unit/settings/priority_setting_spec.rb +0 -0
- data/spec/unit/settings_spec.rb +1 -1
- data/spec/unit/ssl/base_spec.rb +0 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +0 -0
- data/spec/unit/ssl/certificate_factory_spec.rb +0 -0
- data/spec/unit/ssl/certificate_request_spec.rb +0 -0
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -0
- data/spec/unit/ssl/certificate_spec.rb +0 -0
- data/spec/unit/ssl/configuration_spec.rb +0 -0
- data/spec/unit/ssl/host_spec.rb +0 -0
- data/spec/unit/ssl/inventory_spec.rb +0 -0
- data/spec/unit/ssl/key_spec.rb +0 -0
- data/spec/unit/status_spec.rb +0 -0
- data/spec/unit/transaction/additional_resource_generator_spec.rb +80 -65
- data/spec/unit/transaction/event_manager_spec.rb +0 -0
- data/spec/unit/transaction/event_spec.rb +0 -0
- data/spec/unit/transaction/report_spec.rb +0 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -0
- data/spec/unit/transaction_spec.rb +0 -0
- data/spec/unit/type/augeas_spec.rb +0 -0
- data/spec/unit/type/component_spec.rb +0 -0
- data/spec/unit/type/computer_spec.rb +0 -0
- data/spec/unit/type/cron_spec.rb +0 -0
- data/spec/unit/type/exec_spec.rb +0 -0
- data/spec/unit/type/file/checksum_spec.rb +0 -0
- data/spec/unit/type/file/checksum_value_spec.rb +0 -0
- data/spec/unit/type/file/content_spec.rb +0 -0
- data/spec/unit/type/file/ctime_spec.rb +0 -0
- data/spec/unit/type/file/ensure_spec.rb +0 -0
- data/spec/unit/type/file/group_spec.rb +0 -0
- data/spec/unit/type/file/mode_spec.rb +0 -0
- data/spec/unit/type/file/mtime_spec.rb +0 -0
- data/spec/unit/type/file/owner_spec.rb +0 -0
- data/spec/unit/type/file/selinux_spec.rb +0 -0
- data/spec/unit/type/file/source_spec.rb +0 -0
- data/spec/unit/type/file/type_spec.rb +0 -0
- data/spec/unit/type/file_spec.rb +0 -0
- data/spec/unit/type/filebucket_spec.rb +0 -0
- data/spec/unit/type/group_spec.rb +0 -0
- data/spec/unit/type/host_spec.rb +0 -0
- data/spec/unit/type/interface_spec.rb +0 -0
- data/spec/unit/type/k5login_spec.rb +0 -0
- data/spec/unit/type/macauthorization_spec.rb +0 -0
- data/spec/unit/type/mailalias_spec.rb +0 -0
- data/spec/unit/type/maillist_spec.rb +0 -0
- data/spec/unit/type/mcx_spec.rb +0 -0
- data/spec/unit/type/mount_spec.rb +51 -10
- data/spec/unit/type/nagios_spec.rb +0 -0
- data/spec/unit/type/noop_metaparam_spec.rb +0 -0
- data/spec/unit/type/package/package_settings_spec.rb +0 -0
- data/spec/unit/type/package_spec.rb +0 -0
- data/spec/unit/type/resources_spec.rb +0 -0
- data/spec/unit/type/schedule_spec.rb +0 -0
- data/spec/unit/type/selboolean_spec.rb +0 -0
- data/spec/unit/type/selmodule_spec.rb +0 -0
- data/spec/unit/type/service_spec.rb +16 -0
- data/spec/unit/type/ssh_authorized_key_spec.rb +0 -0
- data/spec/unit/type/sshkey_spec.rb +0 -0
- data/spec/unit/type/stage_spec.rb +0 -0
- data/spec/unit/type/tidy_spec.rb +0 -0
- data/spec/unit/type/user_spec.rb +0 -0
- data/spec/unit/type/vlan_spec.rb +0 -0
- data/spec/unit/type/whit_spec.rb +0 -0
- data/spec/unit/type/yumrepo_spec.rb +0 -0
- data/spec/unit/type/zfs_spec.rb +0 -0
- data/spec/unit/type/zone_spec.rb +0 -0
- data/spec/unit/type/zpool_spec.rb +0 -0
- data/spec/unit/type_spec.rb +14 -0
- data/spec/unit/util/autoload_spec.rb +0 -0
- data/spec/unit/util/backups_spec.rb +0 -0
- data/spec/unit/util/checksums_spec.rb +0 -0
- data/spec/unit/util/colors_spec.rb +0 -0
- data/spec/unit/util/command_line_spec.rb +0 -0
- data/spec/unit/util/constant_inflector_spec.rb +0 -0
- data/spec/unit/util/diff_spec.rb +0 -0
- data/spec/unit/util/errors_spec.rb +0 -0
- data/spec/unit/util/execution_spec.rb +0 -0
- data/spec/unit/util/execution_stub_spec.rb +0 -0
- data/spec/unit/util/feature_spec.rb +1 -1
- data/spec/unit/util/filetype_spec.rb +0 -0
- data/spec/unit/util/ldap/connection_spec.rb +0 -0
- data/spec/unit/util/ldap/generator_spec.rb +0 -0
- data/spec/unit/util/ldap/manager_spec.rb +0 -0
- data/spec/unit/util/log/destinations_spec.rb +0 -0
- data/spec/unit/util/log_spec.rb +0 -0
- data/spec/unit/util/logging_spec.rb +0 -0
- data/spec/unit/util/metric_spec.rb +0 -0
- data/spec/unit/util/monkey_patches_spec.rb +79 -3
- data/spec/unit/util/nagios_maker_spec.rb +0 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
- data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
- data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
- data/spec/unit/util/network_device/config_spec.rb +0 -0
- data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
- data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
- data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -0
- data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -0
- data/spec/unit/util/package_spec.rb +0 -0
- data/spec/unit/util/posix_spec.rb +0 -0
- data/spec/unit/util/rdoc_spec.rb +0 -0
- data/spec/unit/util/resource_template_spec.rb +0 -0
- data/spec/unit/util/retry_action_spec.rb +0 -0
- data/spec/unit/util/run_mode_spec.rb +0 -0
- data/spec/unit/util/selinux_spec.rb +0 -0
- data/spec/unit/util/storage_spec.rb +0 -0
- data/spec/unit/util/suidmanager_spec.rb +0 -0
- data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
- data/spec/unit/util/tagging_spec.rb +0 -0
- data/spec/unit/util/user_attr_spec.rb +0 -0
- data/spec/unit/util/warnings_spec.rb +0 -0
- data/spec/unit/util/windows/adsi_spec.rb +0 -0
- data/spec/unit/util/windows/file_spec.rb +34 -0
- data/spec/unit/util/windows/root_certs_spec.rb +0 -0
- data/spec/unit/util/windows/sid_spec.rb +0 -0
- data/spec/unit/util_spec.rb +0 -0
- data/spec/watchr.rb +0 -0
- metadata +3402 -3337
- checksums.yaml +0 -7
- data/ext/puppet-nm-dispatcher +0 -13
- data/lib/puppet/pops/types/types_meta.rb +0 -0
- data/spec/integration/provider/package_spec.rb +0 -35
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +0 -57
data/lib/puppet/functions.rb
CHANGED
|
@@ -290,6 +290,45 @@ module Puppet::Functions
|
|
|
290
290
|
dispatch(meth_name, &block)
|
|
291
291
|
end
|
|
292
292
|
end
|
|
293
|
+
|
|
294
|
+
# Allows types local to the function to be defined to ease the use of complex types
|
|
295
|
+
# in a 4.x function. Within the given block, calls to `type` can be made with a string
|
|
296
|
+
# 'AliasType = ExistingType` can be made to define aliases. The defined aliases are
|
|
297
|
+
# available for further aliases, and in all dispatchers.
|
|
298
|
+
#
|
|
299
|
+
# @since 4.5.0
|
|
300
|
+
# @api public
|
|
301
|
+
#
|
|
302
|
+
def self.local_types(&block)
|
|
303
|
+
if loader.nil?
|
|
304
|
+
raise ArgumentError, "No loader present. Call create_loaded_function(:myname, loader,...), instead of 'create_function' if running tests"
|
|
305
|
+
end
|
|
306
|
+
aliases = LocalTypeAliasesBuilder.new(loader, name)
|
|
307
|
+
aliases.instance_eval(&block)
|
|
308
|
+
# Add the loaded types to the builder
|
|
309
|
+
aliases.local_types.each do |type_alias_expr|
|
|
310
|
+
# Bind the type alias to the local_loader using the alias
|
|
311
|
+
t = Puppet::Pops::Loader::TypeDefinitionInstantiator.create_from_model(type_alias_expr, aliases.loader)
|
|
312
|
+
|
|
313
|
+
# Also define a method for convenient access to the defined type alias.
|
|
314
|
+
# Since initial capital letter in Ruby means a Constant these names use a prefix of
|
|
315
|
+
# `type`. As an example, the type 'MyType' is accessed by calling `type_MyType`.
|
|
316
|
+
define_method("type_#{t.name}") { t }
|
|
317
|
+
end
|
|
318
|
+
# Store the loader in the class
|
|
319
|
+
@loader = aliases.loader
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
# Creates a new function instance in the given closure scope (visibility to variables), and a loader
|
|
323
|
+
# (visibility to other definitions). The created function will either use the `given_loader` or
|
|
324
|
+
# (if it has local type aliases) a loader that was constructed from the loader used when loading
|
|
325
|
+
# the function's class.
|
|
326
|
+
#
|
|
327
|
+
# TODO: It would be of value to get rid of the second parameter here, but that would break API.
|
|
328
|
+
#
|
|
329
|
+
def self.new(closure_scope, given_loader)
|
|
330
|
+
super(closure_scope, @loader || given_loader)
|
|
331
|
+
end
|
|
293
332
|
end
|
|
294
333
|
|
|
295
334
|
# Base class for all functions implemented in the puppet language
|
|
@@ -497,6 +536,36 @@ module Puppet::Functions
|
|
|
497
536
|
end
|
|
498
537
|
end
|
|
499
538
|
|
|
539
|
+
# The LocalTypeAliasBuilder is used by the 'local_types' method to collect the individual
|
|
540
|
+
# type aliases given by the function's author.
|
|
541
|
+
#
|
|
542
|
+
class LocalTypeAliasesBuilder
|
|
543
|
+
attr_reader :local_types, :parser, :loader
|
|
544
|
+
|
|
545
|
+
def initialize(loader, name)
|
|
546
|
+
@loader = Puppet::Pops::Loader::PredefinedLoader.new(loader, :"local_function_#{name}")
|
|
547
|
+
@local_types = []
|
|
548
|
+
# get the shared parser used by puppet's compiler
|
|
549
|
+
@parser = Puppet::Pops::Parser::EvaluatingParser.singleton()
|
|
550
|
+
end
|
|
551
|
+
|
|
552
|
+
# Defines a local type alias, the given string should be a Puppet Language type alias expression
|
|
553
|
+
# in string form without the leading 'type' keyword.
|
|
554
|
+
# Calls to local_type must be made before the first parameter definition or an error will
|
|
555
|
+
# be raised.
|
|
556
|
+
#
|
|
557
|
+
# @param assignment_string [String] a string on the form 'AliasType = ExistingType'
|
|
558
|
+
# @api public
|
|
559
|
+
#
|
|
560
|
+
def type(assignment_string)
|
|
561
|
+
result = parser.parse_string("type #{assignment_string}", nil) # no file source :-(
|
|
562
|
+
unless result.body.kind_of?(Puppet::Pops::Model::TypeAlias)
|
|
563
|
+
raise ArgumentError, "Expected a type alias assignment on the form 'AliasType = T', got '#{assignment_string}'"
|
|
564
|
+
end
|
|
565
|
+
@local_types << result.body
|
|
566
|
+
end
|
|
567
|
+
end
|
|
568
|
+
|
|
500
569
|
private
|
|
501
570
|
|
|
502
571
|
# @note WARNING: This style of creating functions is not public. It is a system
|
|
@@ -254,7 +254,8 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
|
254
254
|
raise Puppet::Error, "Unable to find a common checksum type between agent '#{options[:checksum_type]}' and master '#{known_checksum_types}'." unless checksum_type
|
|
255
255
|
end
|
|
256
256
|
|
|
257
|
-
str = "Compiled %s for
|
|
257
|
+
str = "Compiled %s for " % [checksum_type ? 'static catalog' : 'catalog']
|
|
258
|
+
str += node.name
|
|
258
259
|
str += " in environment #{node.environment}" if node.environment
|
|
259
260
|
config = nil
|
|
260
261
|
|
|
@@ -266,6 +267,8 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
|
266
267
|
rescue Puppet::Error => detail
|
|
267
268
|
Puppet.err(detail.to_s) if networked?
|
|
268
269
|
raise
|
|
270
|
+
ensure
|
|
271
|
+
Puppet::Type.clear_misses unless Puppet[:always_retry_plugins]
|
|
269
272
|
end
|
|
270
273
|
|
|
271
274
|
if checksum_type && config.is_a?(model)
|
|
@@ -100,4 +100,9 @@ class Puppet::Indirector::ResourceType::Parser < Puppet::Indirector::Code
|
|
|
100
100
|
environment.check_for_reparse
|
|
101
101
|
environment.known_resource_types
|
|
102
102
|
end
|
|
103
|
+
|
|
104
|
+
def allow_remote_requests?
|
|
105
|
+
Puppet.deprecation_warning("The resource_type endpoint is deprecated in favor of the environment_classes endpoint. See https://docs.puppet.com/puppetserver/latest/puppet-api/v3/environment_classes.html")
|
|
106
|
+
super
|
|
107
|
+
end
|
|
103
108
|
end
|
|
@@ -43,8 +43,12 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
|
|
|
43
43
|
|
|
44
44
|
# Provide appropriate headers.
|
|
45
45
|
def headers
|
|
46
|
+
# yaml is not allowed on the network
|
|
47
|
+
network_formats = model.supported_formats.reject do |format|
|
|
48
|
+
[:yaml, :b64_zlib_yaml].include?(format)
|
|
49
|
+
end
|
|
46
50
|
common_headers = {
|
|
47
|
-
"Accept" =>
|
|
51
|
+
"Accept" => network_formats.join(", "),
|
|
48
52
|
Puppet::Network::HTTP::HEADER_PUPPET_VERSION => Puppet.version
|
|
49
53
|
}
|
|
50
54
|
|
|
@@ -66,18 +66,18 @@ class Puppet::Indirector::Terminus
|
|
|
66
66
|
# Yay, class/instance confusion.
|
|
67
67
|
subclass.terminus_type = self.name
|
|
68
68
|
|
|
69
|
-
#
|
|
69
|
+
# This subclass is specifically associated with an indirection.
|
|
70
70
|
raise("Invalid name #{longname}") unless names.length > 0
|
|
71
|
-
|
|
71
|
+
processed_name = names.pop.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_#{i.downcase}" }
|
|
72
72
|
|
|
73
|
-
if
|
|
73
|
+
if processed_name.empty?
|
|
74
74
|
raise Puppet::DevError, "Could not discern indirection model from class constant"
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
# This will throw an exception if the indirection instance cannot be found.
|
|
78
78
|
# Do this last, because it also registers the terminus type with the indirection,
|
|
79
79
|
# which needs the above information.
|
|
80
|
-
subclass.indirection =
|
|
80
|
+
subclass.indirection = processed_name.intern
|
|
81
81
|
|
|
82
82
|
# And add this instance to the instance hash.
|
|
83
83
|
Puppet::Indirector::Terminus.register_terminus_class(subclass)
|
data/lib/puppet/loaders.rb
CHANGED
|
@@ -10,11 +10,13 @@ module Puppet
|
|
|
10
10
|
require 'puppet/pops/loader/dependency_loader'
|
|
11
11
|
require 'puppet/pops/loader/null_loader'
|
|
12
12
|
require 'puppet/pops/loader/static_loader'
|
|
13
|
+
require 'puppet/pops/loader/runtime3_type_loader'
|
|
13
14
|
require 'puppet/pops/loader/ruby_function_instantiator'
|
|
14
15
|
require 'puppet/pops/loader/puppet_function_instantiator'
|
|
15
16
|
require 'puppet/pops/loader/type_definition_instantiator'
|
|
16
17
|
require 'puppet/pops/loader/loader_paths'
|
|
17
18
|
require 'puppet/pops/loader/simple_environment_loader'
|
|
19
|
+
require 'puppet/pops/loader/predefined_loader'
|
|
18
20
|
end
|
|
19
21
|
end
|
|
20
22
|
|
|
@@ -20,6 +20,16 @@ module Manager
|
|
|
20
20
|
}
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
# Clears any types that were used but absent when types were last loaded.
|
|
24
|
+
# @note Used after each catalog compile when always_retry_plugins is false
|
|
25
|
+
# @api private
|
|
26
|
+
#
|
|
27
|
+
def clear_misses
|
|
28
|
+
unless @types.nil?
|
|
29
|
+
@types.delete_if {|_, v| v.nil? }
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
23
33
|
# Iterates over all already loaded Type subclasses.
|
|
24
34
|
# @yield [t] a block receiving each type
|
|
25
35
|
# @yieldparam t [Puppet::Type] each defined type
|
|
@@ -116,6 +126,10 @@ module Manager
|
|
|
116
126
|
klass.providerloader.loadall Puppet.lookup(:current_environment)
|
|
117
127
|
klass.providify unless klass.providers.empty?
|
|
118
128
|
|
|
129
|
+
loc = block_given? ? block.source_location : nil
|
|
130
|
+
uri = loc.nil? ? nil : URI("#{Puppet::Util.path_to_uri(loc[0])}?line=#{loc[1]}")
|
|
131
|
+
Puppet::Pops::Loaders.register_runtime3_type(name, uri)
|
|
132
|
+
|
|
119
133
|
klass
|
|
120
134
|
end
|
|
121
135
|
|
|
@@ -146,16 +160,19 @@ module Manager
|
|
|
146
160
|
# We are overwhelmingly symbols here, which usually match, so it is worth
|
|
147
161
|
# having this special-case to return quickly. Like, 25K symbols vs. 300
|
|
148
162
|
# strings in this method. --daniel 2012-07-17
|
|
149
|
-
return @types[name] if @types
|
|
163
|
+
return @types[name] if @types.include? name
|
|
150
164
|
|
|
151
165
|
# Try mangling the name, if it is a string.
|
|
152
166
|
if name.is_a? String
|
|
153
167
|
name = name.downcase.intern
|
|
154
|
-
return @types[name] if @types
|
|
168
|
+
return @types[name] if @types.include? name
|
|
155
169
|
end
|
|
156
170
|
# Try loading the type.
|
|
157
171
|
if typeloader.load(name, Puppet.lookup(:current_environment))
|
|
158
172
|
Puppet.warning "Loaded puppet/type/#{name} but no class was created" unless @types.include? name
|
|
173
|
+
elsif !Puppet[:always_retry_plugins]
|
|
174
|
+
# PUP-5482 - Only look for a type once if plugin retry is disabled
|
|
175
|
+
@types[name] = nil
|
|
159
176
|
end
|
|
160
177
|
|
|
161
178
|
# ...and I guess that is that, eh.
|
data/lib/puppet/module.rb
CHANGED
|
@@ -48,7 +48,7 @@ class Puppet::Module
|
|
|
48
48
|
|
|
49
49
|
def self.is_module_namespaced_name?(name)
|
|
50
50
|
# it must match the full module name according to forge validator
|
|
51
|
-
return true if name =~ /^[a-zA-Z0-9]+[-][a-z][a-z0-9_]*$/
|
|
51
|
+
return true if name =~ /^[a-zA-Z0-9]+[-][a-z][a-z0-9_]*$/
|
|
52
52
|
return false
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -90,7 +90,7 @@ class Puppet::Module
|
|
|
90
90
|
return false unless Puppet::FileSystem.exist?(metadata_file)
|
|
91
91
|
|
|
92
92
|
begin
|
|
93
|
-
metadata = JSON.parse(File.read(metadata_file))
|
|
93
|
+
metadata = JSON.parse(File.read(metadata_file, :encoding => 'utf-8'))
|
|
94
94
|
rescue JSON::JSONError => e
|
|
95
95
|
Puppet.debug("#{name} has an invalid and unparsable metadata.json file. The parse error: #{e.message}")
|
|
96
96
|
return false
|
|
@@ -145,7 +145,7 @@ class Puppet::Module
|
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
def load_metadata
|
|
148
|
-
@metadata = data = JSON.parse(File.read(metadata_file))
|
|
148
|
+
@metadata = data = JSON.parse(File.read(metadata_file, :encoding => 'utf-8'))
|
|
149
149
|
@forge_name = data['name'].gsub('-', '/') if data['name']
|
|
150
150
|
|
|
151
151
|
[:source, :author, :version, :license, :dependencies].each do |attr|
|
|
@@ -41,7 +41,7 @@ module Puppet::ModuleTool
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
if require_metadata && !Puppet::ModuleTool.is_module_root?(@path)
|
|
44
|
-
raise ArgumentError, "Unable to find metadata.json in module root at #{@path} See https://docs.
|
|
44
|
+
raise ArgumentError, "Unable to find metadata.json in module root at #{@path} See https://docs.puppet.com/puppet/latest/reference/modules_publishing.html for required file format."
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
metadata_path = File.join(@path, 'metadata.json')
|
|
@@ -65,9 +65,9 @@ module Puppet::ModuleTool
|
|
|
65
65
|
gitignore = File.join(@path, '.gitignore')
|
|
66
66
|
|
|
67
67
|
if File.file? pmtignore
|
|
68
|
-
@ignored_files = PathSpec.new
|
|
68
|
+
@ignored_files = PathSpec.new Puppet::FileSystem.read(pmtignore, :encoding => 'utf-8')
|
|
69
69
|
elsif File.file? gitignore
|
|
70
|
-
@ignored_files = PathSpec.new
|
|
70
|
+
@ignored_files = PathSpec.new Puppet::FileSystem.read(gitignore, :encoding => 'utf-8')
|
|
71
71
|
else
|
|
72
72
|
@ignored_files = PathSpec.new
|
|
73
73
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
puppetversion = ENV.key?('PUPPET_VERSION') ?
|
|
3
|
+
puppetversion = ENV.key?('PUPPET_VERSION') ? ENV['PUPPET_VERSION'] : ['>= 3.3']
|
|
4
4
|
gem 'metadata-json-lint'
|
|
5
5
|
gem 'puppet', puppetversion
|
|
6
6
|
gem 'puppetlabs_spec_helper', '>= 1.0.0'
|
|
@@ -9,6 +9,10 @@ gem 'facter', '>= 1.7.0'
|
|
|
9
9
|
gem 'rspec-puppet'
|
|
10
10
|
|
|
11
11
|
# rspec must be v2 for ruby 1.8.7
|
|
12
|
-
if RUBY_VERSION >= '1.8.7'
|
|
12
|
+
if RUBY_VERSION >= '1.8.7' && RUBY_VERSION < '1.9'
|
|
13
13
|
gem 'rspec', '~> 2.0'
|
|
14
|
+
gem 'rake', '~> 10.0'
|
|
15
|
+
else
|
|
16
|
+
# rubocop requires ruby >= 1.9
|
|
17
|
+
gem 'rubocop'
|
|
14
18
|
end
|
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
require 'puppetlabs_spec_helper/rake_tasks'
|
|
2
2
|
require 'puppet-lint/tasks/puppet-lint'
|
|
3
|
+
require 'metadata-json-lint/rake_task'
|
|
4
|
+
|
|
5
|
+
if RUBY_VERSION >= '1.9'
|
|
6
|
+
require 'rubocop/rake_task'
|
|
7
|
+
RuboCop::RakeTask.new
|
|
8
|
+
end
|
|
9
|
+
|
|
3
10
|
PuppetLint.configuration.send('disable_80chars')
|
|
4
|
-
PuppetLint.configuration.
|
|
11
|
+
PuppetLint.configuration.relative = true
|
|
12
|
+
PuppetLint.configuration.ignore_paths = ['spec/**/*.pp', 'pkg/**/*.pp']
|
|
5
13
|
|
|
6
|
-
desc
|
|
14
|
+
desc 'Validate manifests, templates, and ruby files'
|
|
7
15
|
task :validate do
|
|
8
16
|
Dir['manifests/**/*.pp'].each do |manifest|
|
|
9
17
|
sh "puppet parser validate --noop #{manifest}"
|
|
10
18
|
end
|
|
11
|
-
Dir['spec/**/*.rb','lib/**/*.rb'].each do |ruby_file|
|
|
12
|
-
sh "ruby -c #{ruby_file}" unless ruby_file =~ /
|
|
19
|
+
Dir['spec/**/*.rb', 'lib/**/*.rb'].each do |ruby_file|
|
|
20
|
+
sh "ruby -c #{ruby_file}" unless ruby_file =~ %r{spec/fixtures}
|
|
13
21
|
end
|
|
14
22
|
Dir['templates/**/*.erb'].each do |template|
|
|
15
23
|
sh "erb -P -x -T '-' #{template} | ruby -c"
|
|
16
24
|
end
|
|
17
25
|
end
|
|
26
|
+
|
|
27
|
+
desc 'Run metadata_lint, lint, validate, and spec tests.'
|
|
28
|
+
task :test do
|
|
29
|
+
[:metadata_lint, :lint, :validate, :spec].each do |test|
|
|
30
|
+
Rake::Task[test].invoke
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
# environment (to compare the resulting system state to the desired state).
|
|
8
8
|
#
|
|
9
9
|
# Learn more about module testing here:
|
|
10
|
-
# https://docs.
|
|
10
|
+
# https://docs.puppet.com/guides/tests_smoke.html
|
|
11
11
|
#
|
|
12
12
|
include ::<%= metadata.name %>
|
|
@@ -5,14 +5,18 @@ class Puppet::Network::HTTP::API::Master::V3::Environment
|
|
|
5
5
|
def call(request, response)
|
|
6
6
|
env_name = request.routing_path.split('/').last
|
|
7
7
|
env = Puppet.lookup(:environments).get(env_name)
|
|
8
|
+
code_id = request.params[:code_id]
|
|
8
9
|
|
|
9
10
|
if env.nil?
|
|
10
11
|
raise Puppet::Network::HTTP::Error::HTTPNotFoundError.new("#{env_name} is not a known environment", Puppet::Network::HTTP::Issues::RESOURCE_NOT_FOUND)
|
|
11
12
|
end
|
|
12
13
|
|
|
13
|
-
catalog = Puppet::Parser::EnvironmentCompiler.compile(env).to_resource
|
|
14
|
+
catalog = Puppet::Parser::EnvironmentCompiler.compile(env, code_id).to_resource
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
# This reads code_id off the catalog rather than using the one from the
|
|
17
|
+
# request. There shouldn't really be a case where the two differ, but if
|
|
18
|
+
# they do, the one from the catalog itself is authoritative.
|
|
19
|
+
env_graph = {:environment => env.name, :applications => {}, :code_id => catalog.code_id}
|
|
16
20
|
applications = catalog.resources.select do |res|
|
|
17
21
|
type = res.resource_type
|
|
18
22
|
type.is_a?(Puppet::Resource::Type) && type.application?
|
|
@@ -2,6 +2,7 @@ require 'openssl'
|
|
|
2
2
|
require 'cgi'
|
|
3
3
|
require 'puppet/network/http/handler'
|
|
4
4
|
require 'puppet/util/ssl'
|
|
5
|
+
require 'uri'
|
|
5
6
|
|
|
6
7
|
class Puppet::Network::HTTP::RackREST
|
|
7
8
|
include Puppet::Network::HTTP::Handler
|
|
@@ -79,7 +80,15 @@ class Puppet::Network::HTTP::RackREST
|
|
|
79
80
|
|
|
80
81
|
# what path was requested? (this is, without any query parameters)
|
|
81
82
|
def path(request)
|
|
82
|
-
|
|
83
|
+
# The value that Passenger provides for 'path' is escaped
|
|
84
|
+
# (URL percent-encoded), see
|
|
85
|
+
# https://github.com/phusion/passenger/blob/release-5.0.26/src/apache2_module/Hooks.cpp#L885
|
|
86
|
+
# for the implementation as hooked up to an Apache web server. Code
|
|
87
|
+
# in the indirector / HTTP layer which consumes this path, however, assumes
|
|
88
|
+
# that it has already been unescaped, so it is unescaped here.
|
|
89
|
+
if request.path
|
|
90
|
+
URI.unescape(request.path)
|
|
91
|
+
end
|
|
83
92
|
end
|
|
84
93
|
|
|
85
94
|
# return the request body
|
|
@@ -102,6 +102,10 @@ class Puppet::Parser::AST::PopsBridge
|
|
|
102
102
|
# The 3x logic calling this will not know what to do with the result, it is compacted away at the end
|
|
103
103
|
instantiate_TypeAlias(d, modname)
|
|
104
104
|
next
|
|
105
|
+
when Puppet::Pops::Model::TypeMapping
|
|
106
|
+
# The 3x logic calling this will not know what to do with the result, it is compacted away at the end
|
|
107
|
+
instantiate_TypeMapping(d, modname)
|
|
108
|
+
next
|
|
105
109
|
when Puppet::Pops::Model::Application
|
|
106
110
|
instantiate_ApplicationDefinition(d, modname)
|
|
107
111
|
else
|
|
@@ -189,7 +193,9 @@ class Puppet::Parser::AST::PopsBridge
|
|
|
189
193
|
end
|
|
190
194
|
|
|
191
195
|
def instantiate_ResourceTypeDefinition(o, modname)
|
|
192
|
-
Puppet::Resource::Type.new(:definition, o.name, @context.merge(args_from_definition(o, modname)))
|
|
196
|
+
instance = Puppet::Resource::Type.new(:definition, o.name, @context.merge(args_from_definition(o, modname)))
|
|
197
|
+
Puppet::Pops::Loaders.register_runtime3_type(instance.name, Puppet::Pops::Adapters::SourcePosAdapter.adapt(o).to_uri)
|
|
198
|
+
instance
|
|
193
199
|
end
|
|
194
200
|
|
|
195
201
|
def instantiate_CapabilityMapping(o, modname)
|
|
@@ -262,12 +268,23 @@ class Puppet::Parser::AST::PopsBridge
|
|
|
262
268
|
loader = Puppet::Pops::Loaders.find_loader(modname)
|
|
263
269
|
|
|
264
270
|
# Bind the type alias to the loader using the alias
|
|
265
|
-
|
|
266
|
-
loader.set_entry(typed_name, t, Puppet::Pops::Adapters::SourcePosAdapter.adapt(type_alias).to_uri)
|
|
271
|
+
Puppet::Pops::Loader::TypeDefinitionInstantiator.create_from_model(type_alias, loader)
|
|
267
272
|
|
|
268
273
|
nil # do not want the type alias to inadvertently leak into 3x
|
|
269
274
|
end
|
|
270
275
|
|
|
276
|
+
# Adds the TypeMapping to the ImplementationRegistry
|
|
277
|
+
# This is for 4x evaluator/loader
|
|
278
|
+
#
|
|
279
|
+
def instantiate_TypeMapping(type_mapping, modname)
|
|
280
|
+
loader = Puppet::Pops::Loaders.find_loader(modname)
|
|
281
|
+
tf = Puppet::Pops::Types::TypeParser.new
|
|
282
|
+
lhs = tf.interpret(type_mapping.type_expr, loader)
|
|
283
|
+
rhs = tf.interpret_any(type_mapping.mapping_expr, loader)
|
|
284
|
+
Puppet::Pops::Loaders.implementation_registry.register_type_mapping(lhs, rhs, loader)
|
|
285
|
+
nil
|
|
286
|
+
end
|
|
287
|
+
|
|
271
288
|
def code()
|
|
272
289
|
Expression.new(:value => @value)
|
|
273
290
|
end
|
|
@@ -15,9 +15,31 @@ class Puppet::Parser::Compiler
|
|
|
15
15
|
|
|
16
16
|
private
|
|
17
17
|
|
|
18
|
+
# A hash lookup is 6x avg times faster than find among 3 values.
|
|
19
|
+
CAPABILITY_ACCEPTED_METAPARAMS = {:require => true, :consume => true, :export => true}.freeze
|
|
20
|
+
|
|
18
21
|
def validate_relationship(param)
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
# when relationship is to a capability
|
|
23
|
+
if has_capability?(param.value)
|
|
24
|
+
unless CAPABILITY_ACCEPTED_METAPARAMS[param.name]
|
|
25
|
+
raise CatalogValidationError.new(
|
|
26
|
+
"'#{param.name}' is not a valid relationship to a capability",
|
|
27
|
+
param.file, param.line)
|
|
28
|
+
end
|
|
29
|
+
elsif Puppet[:strict] != :off
|
|
30
|
+
# all other relationships requires the referenced resource to exist when mode is strict
|
|
31
|
+
refs = param.value.is_a?(Array) ? param.value.flatten : [param.value]
|
|
32
|
+
refs.each do |r|
|
|
33
|
+
next if r.nil?
|
|
34
|
+
unless catalog.resource(r.to_s)
|
|
35
|
+
msg = "Could not find resource '#{r.to_s}' in parameter '#{param.name.to_s}'"
|
|
36
|
+
if Puppet[:strict] == :error
|
|
37
|
+
raise CatalogValidationError.new(msg, param.file, param.line)
|
|
38
|
+
else
|
|
39
|
+
Puppet.warn_once(:undefined_resources, r.to_s, msg, param.file, param.line)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
21
43
|
end
|
|
22
44
|
end
|
|
23
45
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
require 'puppet/pops'
|
|
2
2
|
|
|
3
|
-
module Puppet
|
|
3
|
+
module Puppet
|
|
4
|
+
module Parser
|
|
4
5
|
# Adapts an egrammar/eparser to respond to the public API of the classic parser
|
|
5
6
|
# and makes use of the new evaluator.
|
|
6
7
|
#
|
|
7
|
-
class
|
|
8
|
+
class E4ParserAdapter
|
|
8
9
|
|
|
9
10
|
def initialize
|
|
10
11
|
@file = ''
|
|
11
12
|
@string = ''
|
|
12
13
|
@use = :unspecified
|
|
13
|
-
@@evaluating_parser ||= Puppet::Pops::Parser::EvaluatingParser.new()
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def file=(file)
|
|
@@ -20,15 +20,15 @@ class Puppet::Parser::E4ParserAdapter
|
|
|
20
20
|
|
|
21
21
|
def parse(string = nil)
|
|
22
22
|
self.string= string if string
|
|
23
|
-
|
|
23
|
+
parser = Pops::Parser::EvaluatingParser.singleton
|
|
24
24
|
parse_result =
|
|
25
25
|
if @use == :string
|
|
26
26
|
# Parse with a source_file to set in created AST objects (it was either given, or it may be unknown
|
|
27
27
|
# if caller did not set a file and the present a string.
|
|
28
28
|
#
|
|
29
|
-
|
|
29
|
+
parser.parse_string(@string, @file || "unknown-source-location")
|
|
30
30
|
else
|
|
31
|
-
|
|
31
|
+
parser.parse_file(@file)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
# the parse_result may be
|
|
@@ -38,19 +38,18 @@ class Puppet::Parser::E4ParserAdapter
|
|
|
38
38
|
#
|
|
39
39
|
model = parse_result.nil? ? nil : parse_result.current
|
|
40
40
|
args = {}
|
|
41
|
-
|
|
41
|
+
Pops::Model::AstTransformer.new(@file).merge_location(args, model)
|
|
42
42
|
|
|
43
43
|
ast_code =
|
|
44
|
-
if model.is_a?
|
|
45
|
-
|
|
44
|
+
if model.is_a? Pops::Model::Program
|
|
45
|
+
AST::PopsBridge::Program.new(model, args)
|
|
46
46
|
else
|
|
47
47
|
args[:value] = model
|
|
48
|
-
|
|
48
|
+
AST::PopsBridge::Expression.new(args)
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
# Create the "main" class for the content - this content will get merged with all other "main" content
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
AST::Hostclass.new('', :code => ast_code)
|
|
54
53
|
end
|
|
55
54
|
|
|
56
55
|
def string=(string)
|
|
@@ -58,3 +57,5 @@ class Puppet::Parser::E4ParserAdapter
|
|
|
58
57
|
@use = :string
|
|
59
58
|
end
|
|
60
59
|
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
require 'puppet/parser/compiler'
|
|
2
2
|
|
|
3
3
|
class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
|
|
4
|
-
def self.compile(env)
|
|
4
|
+
def self.compile(env, code_id=nil)
|
|
5
5
|
begin
|
|
6
6
|
env.check_for_reparse
|
|
7
7
|
|
|
8
8
|
node = Puppet::Node.new(env)
|
|
9
9
|
node.environment = env
|
|
10
|
-
new(node).compile
|
|
10
|
+
new(node, :code_id => code_id).compile
|
|
11
11
|
rescue => detail
|
|
12
12
|
message = "#{detail} in environment #{env.name}"
|
|
13
13
|
Puppet.log_exception(detail, message)
|
|
@@ -6,7 +6,7 @@ module Puppet::Parser::Functions
|
|
|
6
6
|
:arity => -2,
|
|
7
7
|
:doc => <<-DOC
|
|
8
8
|
Assigns classes to a node using an
|
|
9
|
-
[array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.
|
|
9
|
+
[array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.html#array-merge)
|
|
10
10
|
that retrieves the value for a user-specified key from Hiera's data.
|
|
11
11
|
|
|
12
12
|
The `hiera_include` function requires:
|
|
@@ -31,7 +31,7 @@ top of the hierarchy. This lets you temporarily modify the hierarchy for a singl
|
|
|
31
31
|
searching the rest of the hierarchy.
|
|
32
32
|
|
|
33
33
|
The function uses an
|
|
34
|
-
[array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.
|
|
34
|
+
[array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.html#array-merge)
|
|
35
35
|
to retrieve the `classes` array, so every node gets every class from the hierarchy.
|
|
36
36
|
|
|
37
37
|
**Example**: Using `hiera_include`
|
|
@@ -29,7 +29,7 @@ parameter tag without default values. Puppet produces an error if the
|
|
|
29
29
|
`inline_epp` function fails to pass any required parameter.
|
|
30
30
|
|
|
31
31
|
An inline EPP template should be written as a single-quoted string or
|
|
32
|
-
[heredoc](puppet/latest/reference/lang_data_string.html#heredocs).
|
|
32
|
+
[heredoc](/puppet/latest/reference/lang_data_string.html#heredocs).
|
|
33
33
|
A double-quoted string is subject to expression interpolation before the string
|
|
34
34
|
is parsed as an EPP template.
|
|
35
35
|
|
|
@@ -101,9 +101,6 @@ but can adjust the merge with additional options. The available options are:
|
|
|
101
101
|
disables this feature.
|
|
102
102
|
* `'sort_merged_arrays'` (boolean) --- Whether to sort all arrays that are
|
|
103
103
|
merged together. Defaults to `false`.
|
|
104
|
-
* `'unpack_arrays'` (string or undef) --- A delimiter string; Puppet will
|
|
105
|
-
join merged arrays with this delimiter, then split them again. Defaults to
|
|
106
|
-
`undef`, which disables this feature.
|
|
107
104
|
* `'merge_hash_arrays'` (boolean) --- Whether to merge hashes within arrays.
|
|
108
105
|
Defaults to `false`.
|
|
109
106
|
|
|
@@ -182,11 +182,20 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
|
182
182
|
alias []= set_parameter
|
|
183
183
|
|
|
184
184
|
def to_hash
|
|
185
|
-
@parameters.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
185
|
+
@parameters.reduce({}) do |result, (_, param)|
|
|
186
|
+
value = param.value
|
|
187
|
+
value = (value == :undef) ? nil : value
|
|
188
|
+
|
|
189
|
+
unless value.nil?
|
|
190
|
+
case param.name
|
|
191
|
+
when :before, :subscribe, :notify, :require
|
|
192
|
+
value = value.flatten if value.is_a?(Array)
|
|
193
|
+
result[param.name] = value
|
|
194
|
+
else
|
|
195
|
+
result[param.name] = value
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
result
|
|
190
199
|
end
|
|
191
200
|
end
|
|
192
201
|
|