puppet 4.2.3 → 4.3.0
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.
- data/Gemfile +3 -0
- data/README.md +1 -1
- data/ext/debian/puppet.init +0 -1
- data/ext/debian/puppet.logrotate +14 -5
- data/ext/osx/puppet.plist +0 -2
- data/ext/redhat/client.init +13 -5
- data/ext/redhat/logrotate +15 -3
- data/ext/redhat/puppet.spec.erb +5 -1
- data/ext/redhat/server.init +1 -1
- data/ext/systemd/puppet.service +1 -0
- data/lib/puppet.rb +12 -0
- data/lib/puppet/agent.rb +4 -4
- data/lib/puppet/agent/locker.rb +11 -2
- data/lib/puppet/application/agent.rb +5 -1
- data/lib/puppet/application/apply.rb +4 -0
- data/lib/puppet/application/filebucket.rb +78 -4
- data/lib/puppet/application/lookup.rb +356 -0
- data/lib/puppet/application/master.rb +3 -0
- data/lib/puppet/configurer.rb +9 -5
- data/lib/puppet/context.rb +16 -1
- data/lib/puppet/context/trusted_information.rb +21 -1
- data/lib/puppet/daemon.rb +17 -13
- data/lib/puppet/data_binding.rb +4 -2
- data/lib/puppet/data_providers.rb +12 -13
- data/lib/puppet/data_providers/data_adapter.rb +7 -68
- data/lib/puppet/data_providers/data_function_support.rb +5 -26
- data/lib/puppet/data_providers/function_env_data_provider.rb +0 -10
- data/lib/puppet/data_providers/function_module_data_provider.rb +0 -22
- data/lib/puppet/data_providers/hiera_config.rb +106 -0
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +18 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +97 -0
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +23 -0
- data/lib/puppet/data_providers/hiera_support.rb +37 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +31 -0
- data/lib/puppet/data_providers/lookup_adapter.rb +200 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +32 -0
- data/lib/puppet/defaults.rb +12 -2
- data/lib/puppet/error.rb +4 -0
- data/lib/puppet/face/module/changes.rb +2 -1
- data/lib/puppet/feature/cfacter.rb +1 -0
- data/lib/puppet/file_bucket/dipper.rb +58 -2
- data/lib/puppet/functions.rb +2 -4
- data/lib/puppet/functions/assert_type.rb +48 -12
- data/lib/puppet/functions/defined.rb +79 -48
- data/lib/puppet/functions/each.rb +85 -27
- data/lib/puppet/functions/filter.rb +58 -23
- data/lib/puppet/functions/hiera.rb +76 -3
- data/lib/puppet/functions/hiera_array.rb +65 -3
- data/lib/puppet/functions/hiera_hash.rb +74 -2
- data/lib/puppet/functions/hiera_include.rb +75 -2
- data/lib/puppet/functions/lookup.rb +19 -17
- data/lib/puppet/functions/map.rb +56 -21
- data/lib/puppet/functions/match.rb +29 -12
- data/lib/puppet/functions/reduce.rb +95 -58
- data/lib/puppet/functions/versioncmp.rb +36 -0
- data/lib/puppet/functions/with.rb +15 -7
- data/lib/puppet/indirector/catalog/compiler.rb +3 -3
- data/lib/puppet/indirector/catalog/static_compiler.rb +46 -30
- data/lib/puppet/indirector/data_binding/none.rb +4 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +58 -1
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/request.rb +7 -8
- data/lib/puppet/indirector/resource_type/parser.rb +5 -3
- data/lib/puppet/info_service.rb +7 -0
- data/lib/puppet/info_service/class_information_service.rb +111 -0
- data/lib/puppet/module_tool/metadata.rb +32 -9
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
- data/lib/puppet/network/authconfig.rb +21 -1
- data/lib/puppet/network/authorization.rb +8 -1
- data/lib/puppet/network/http/api/master/v3.rb +7 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +59 -0
- data/lib/puppet/node/environment.rb +9 -2
- data/lib/puppet/parser.rb +3 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +39 -1
- data/lib/puppet/parser/compiler.rb +302 -12
- data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +38 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
- data/lib/puppet/parser/environment_compiler.rb +165 -0
- data/lib/puppet/parser/functions/assert_type.rb +46 -16
- data/lib/puppet/parser/functions/defined.rb +105 -68
- data/lib/puppet/parser/functions/each.rb +85 -27
- data/lib/puppet/parser/functions/filter.rb +59 -23
- data/lib/puppet/parser/functions/hiera.rb +83 -27
- data/lib/puppet/parser/functions/hiera_array.rb +71 -28
- data/lib/puppet/parser/functions/hiera_hash.rb +81 -30
- data/lib/puppet/parser/functions/hiera_include.rb +81 -40
- data/lib/puppet/parser/functions/map.rb +55 -20
- data/lib/puppet/parser/functions/match.rb +27 -12
- data/lib/puppet/parser/functions/reduce.rb +97 -60
- data/lib/puppet/parser/functions/with.rb +16 -8
- data/lib/puppet/parser/resource.rb +98 -19
- data/lib/puppet/plugins/configuration.rb +3 -2
- data/lib/puppet/plugins/data_providers.rb +12 -60
- data/lib/puppet/plugins/data_providers/data_provider.rb +283 -0
- data/lib/puppet/plugins/data_providers/registry.rb +84 -0
- data/lib/puppet/pops.rb +19 -17
- data/lib/puppet/pops/adapters.rb +12 -0
- data/lib/puppet/pops/binder/binder.rb +2 -2
- data/lib/puppet/pops/binder/bindings_checker.rb +1 -1
- data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
- data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
- data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
- data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
- data/lib/puppet/pops/binder/injector.rb +4 -4
- data/lib/puppet/pops/binder/key_factory.rb +3 -9
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
- data/lib/puppet/pops/evaluator/access_operator.rb +27 -60
- data/lib/puppet/pops/evaluator/closure.rb +8 -8
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +7 -1
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +1 -1
- data/lib/puppet/pops/lookup.rb +25 -47
- data/lib/puppet/pops/lookup/explainer.rb +402 -0
- data/lib/puppet/pops/lookup/invocation.rb +117 -0
- data/lib/puppet/pops/merge_strategy.rb +73 -5
- data/lib/puppet/pops/model/factory.rb +34 -0
- data/lib/puppet/pops/model/model_label_provider.rb +10 -1
- data/lib/puppet/pops/model/model_meta.rb +15 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +18 -0
- data/lib/puppet/pops/parser/code_merger.rb +13 -1
- data/lib/puppet/pops/parser/egrammar.ra +56 -3
- data/lib/puppet/pops/parser/eparser.rb +1549 -1352
- data/lib/puppet/pops/parser/lexer2.rb +31 -6
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +25 -13
- data/lib/puppet/pops/types/enumeration.rb +1 -2
- data/lib/puppet/pops/types/type_asserter.rb +16 -15
- data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
- data/lib/puppet/pops/types/type_calculator.rb +171 -1020
- data/lib/puppet/pops/types/type_factory.rb +87 -148
- data/lib/puppet/pops/types/type_mismatch_describer.rb +743 -0
- data/lib/puppet/pops/types/type_parser.rb +116 -127
- data/lib/puppet/pops/types/types.rb +1394 -255
- data/lib/puppet/pops/types/types_meta.rb +0 -234
- data/lib/puppet/pops/validation.rb +7 -2
- data/lib/puppet/pops/validation/checker4_0.rb +28 -0
- data/lib/puppet/provider/augeas/augeas.rb +50 -0
- data/lib/puppet/provider/group/directoryservice.rb +10 -0
- data/lib/puppet/provider/package/dnf.rb +41 -0
- data/lib/puppet/provider/package/gem.rb +7 -2
- data/lib/puppet/provider/package/rpm.rb +1 -0
- data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
- data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
- data/lib/puppet/provider/package/windows/package.rb +9 -1
- data/lib/puppet/provider/package/yum.rb +14 -9
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/debian.rb +21 -0
- data/lib/puppet/provider/service/init.rb +6 -0
- data/lib/puppet/provider/service/rcng.rb +51 -0
- data/lib/puppet/provider/service/redhat.rb +2 -1
- data/lib/puppet/provider/service/smf.rb +43 -2
- data/lib/puppet/provider/service/src.rb +27 -0
- data/lib/puppet/provider/service/systemd.rb +15 -3
- data/lib/puppet/provider/sshkey/parsed.rb +19 -9
- data/lib/puppet/reference/report.rb +9 -12
- data/lib/puppet/reports.rb +5 -1
- data/lib/puppet/resource.rb +50 -73
- data/lib/puppet/resource/capability_finder.rb +95 -0
- data/lib/puppet/resource/catalog.rb +47 -7
- data/lib/puppet/resource/status.rb +0 -2
- data/lib/puppet/resource/type.rb +238 -44
- data/lib/puppet/resource/type_collection.rb +60 -2
- data/lib/puppet/settings.rb +2 -2
- data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
- data/lib/puppet/ssl/oids.rb +9 -1
- data/lib/puppet/transaction.rb +4 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +71 -8
- data/lib/puppet/transaction/resource_harness.rb +9 -4
- data/lib/puppet/type.rb +74 -3
- data/lib/puppet/type/augeas.rb +8 -0
- data/lib/puppet/type/file/source.rb +14 -12
- data/lib/puppet/type/user.rb +4 -2
- data/lib/puppet/util/windows/security.rb +4 -1
- data/lib/puppet/util/windows/taskscheduler.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +3 -0
- data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +18 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +46 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +18 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/hiera.yaml +8 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/manifests/init.pp +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/manifests/init.pp +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/metadata.json +9 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
- data/spec/integration/data_binding_spec.rb +229 -0
- data/spec/integration/file_bucket/file_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +23 -19
- data/spec/integration/parser/resource_expressions_spec.rb +4 -4
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/type/package_spec.rb +2 -0
- data/spec/integration/util/windows/security_spec.rb +18 -0
- data/spec/lib/matchers/include_in_order.rb +2 -2
- data/spec/shared_behaviours/iterative_functions.rb +8 -8
- data/spec/spec_helper.rb +7 -0
- data/spec/unit/agent/locker_spec.rb +4 -4
- data/spec/unit/agent_spec.rb +0 -8
- data/spec/unit/application/agent_spec.rb +5 -0
- data/spec/unit/application/apply_spec.rb +8 -0
- data/spec/unit/application/filebucket_spec.rb +87 -1
- data/spec/unit/application/lookup_spec.rb +195 -0
- data/spec/unit/appmgmt_spec.rb +657 -0
- data/spec/unit/capability_spec.rb +414 -0
- data/spec/unit/configurer_spec.rb +7 -1
- data/spec/unit/context/trusted_information_spec.rb +24 -1
- data/spec/unit/daemon_spec.rb +18 -8
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +201 -0
- data/spec/unit/file_bucket/dipper_spec.rb +210 -1
- data/spec/unit/functions/assert_type_spec.rb +5 -7
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +2 -2
- data/spec/unit/functions/lookup_spec.rb +200 -9
- data/spec/unit/functions/regsubst_spec.rb +17 -8
- data/spec/unit/functions/scanf_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +2 -2
- data/spec/unit/functions/versioncmp_spec.rb +36 -0
- data/spec/unit/functions4_spec.rb +58 -72
- data/spec/unit/indirector/catalog/compiler_spec.rb +28 -8
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
- data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +52 -1
- data/spec/unit/indirector/request_spec.rb +8 -8
- data/spec/unit/info_service_spec.rb +236 -0
- data/spec/unit/module_tool/metadata_spec.rb +31 -2
- data/spec/unit/network/authconfig_spec.rb +62 -32
- data/spec/unit/network/authorization_spec.rb +30 -2
- data/spec/unit/network/http/connection_spec.rb +14 -19
- data/spec/unit/parser/compiler_spec.rb +86 -2
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +2 -20
- data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
- data/spec/unit/pops/binder/injector_spec.rb +3 -3
- data/spec/unit/pops/evaluator/access_ops_spec.rb +13 -11
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -11
- data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
- data/spec/unit/pops/label_provider_spec.rb +5 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +33 -7
- data/spec/unit/pops/parser/parse_application_spec.rb +40 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +47 -0
- data/spec/unit/pops/parser/parse_site_spec.rb +38 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/parser/parser_spec.rb +18 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +427 -444
- data/spec/unit/pops/types/type_factory_spec.rb +12 -12
- data/spec/unit/pops/types/type_parser_spec.rb +7 -12
- data/spec/unit/pops/validator/validator_spec.rb +25 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +50 -0
- data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +3 -0
- data/spec/unit/provider/package/dnf_spec.rb +92 -0
- data/spec/unit/provider/package/gem_spec.rb +7 -0
- data/spec/unit/provider/package/rpm_spec.rb +25 -2
- data/spec/unit/provider/package/windows/package_spec.rb +41 -0
- data/spec/unit/provider/package/yum_spec.rb +21 -13
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +10 -0
- data/spec/unit/provider/service/debian_spec.rb +27 -0
- data/spec/unit/provider/service/rcng_spec.rb +41 -0
- data/spec/unit/provider/service/redhat_spec.rb +8 -1
- data/spec/unit/provider/service/smf_spec.rb +30 -5
- data/spec/unit/provider/service/src_spec.rb +19 -4
- data/spec/unit/provider/service/systemd_spec.rb +78 -29
- data/spec/unit/provider/sshkey/parsed_spec.rb +23 -0
- data/spec/unit/reports_spec.rb +10 -0
- data/spec/unit/resource/capability_finder_spec.rb +56 -0
- data/spec/unit/resource/catalog_spec.rb +31 -8
- data/spec/unit/resource/type_collection_spec.rb +23 -2
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +22 -4
- data/spec/unit/settings_spec.rb +90 -1
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
- data/spec/unit/ssl/oids_spec.rb +8 -0
- data/spec/unit/transaction/additional_resource_generator_spec.rb +78 -5
- data/spec/unit/transaction/report_spec.rb +24 -1
- data/spec/unit/type/package_spec.rb +1 -0
- data/spec/unit/type/user_spec.rb +14 -7
- data/spec/unit/type_spec.rb +1 -1
- metadata +169 -5
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
- data/spec/integration/data_binding.rb +0 -104
@@ -1,234 +0,0 @@
|
|
1
|
-
require 'rgen/metamodel_builder'
|
2
|
-
|
3
|
-
# The Types model is a model of Puppet Language types.
|
4
|
-
#
|
5
|
-
# The exact relationship between types is not visible in this model wrt. the PDataType which is an abstraction
|
6
|
-
# of Scalar, Array[Data], and Hash[Scalar, Data] nested to any depth. This means it is not possible to
|
7
|
-
# infer the type by simply looking at the inheritance hierarchy. The {Puppet::Pops::Types::TypeCalculator} should
|
8
|
-
# be used to answer questions about types. The {Puppet::Pops::Types::TypeFactory} should be used to create an instance
|
9
|
-
# of a type whenever one is needed.
|
10
|
-
#
|
11
|
-
# The implementation of the Types model contains methods that are required for the type objects to behave as
|
12
|
-
# expected when comparing them and using them as keys in hashes. (No other logic is, or should be included directly in
|
13
|
-
# the model's classes).
|
14
|
-
#
|
15
|
-
# @api public
|
16
|
-
#
|
17
|
-
module Puppet::Pops::Types
|
18
|
-
extend RGen::MetamodelBuilder::ModuleExtension
|
19
|
-
|
20
|
-
class TypeModelObject < RGen::MetamodelBuilder::MMBase
|
21
|
-
abstract
|
22
|
-
end
|
23
|
-
|
24
|
-
# Base type for all types except {Puppet::Pops::Types::PType PType}, the type of types.
|
25
|
-
# @api public
|
26
|
-
#
|
27
|
-
class PAnyType < TypeModelObject
|
28
|
-
end
|
29
|
-
|
30
|
-
# A type that is assignable from the same types as its contained `type` except the
|
31
|
-
# types assignable from {Puppet::Pops::Types::PUndefType}
|
32
|
-
#
|
33
|
-
# @api public
|
34
|
-
#
|
35
|
-
class PNotUndefType < PAnyType
|
36
|
-
contains_one_uni 'type', PAnyType
|
37
|
-
end
|
38
|
-
|
39
|
-
# The type of types.
|
40
|
-
# @api public
|
41
|
-
#
|
42
|
-
class PType < PAnyType
|
43
|
-
contains_one_uni 'type', PAnyType
|
44
|
-
end
|
45
|
-
|
46
|
-
# @api public
|
47
|
-
#
|
48
|
-
class PUndefType < PAnyType
|
49
|
-
end
|
50
|
-
|
51
|
-
|
52
|
-
# A type private to the type system that describes "ignored type" - i.e. "I am what you are"
|
53
|
-
# @api private
|
54
|
-
#
|
55
|
-
class PUnitType < PAnyType
|
56
|
-
end
|
57
|
-
|
58
|
-
# @api public
|
59
|
-
#
|
60
|
-
class PDefaultType < PAnyType
|
61
|
-
end
|
62
|
-
|
63
|
-
# A flexible data type, being assignable to its subtypes as well as PArrayType and PHashType with element type assignable to PDataType.
|
64
|
-
#
|
65
|
-
# @api public
|
66
|
-
#
|
67
|
-
class PDataType < PAnyType
|
68
|
-
end
|
69
|
-
|
70
|
-
# A flexible type describing an any? of other types
|
71
|
-
# @api public
|
72
|
-
#
|
73
|
-
class PVariantType < PAnyType
|
74
|
-
contains_many_uni 'types', PAnyType, :lowerBound => 1
|
75
|
-
end
|
76
|
-
|
77
|
-
# Type that is PDataType compatible, but is not a PCollectionType.
|
78
|
-
# @api public
|
79
|
-
#
|
80
|
-
class PScalarType < PAnyType
|
81
|
-
end
|
82
|
-
|
83
|
-
# A string type describing the set of strings having one of the given values
|
84
|
-
# @api public
|
85
|
-
#
|
86
|
-
class PEnumType < PScalarType
|
87
|
-
has_many_attr 'values', String, :lowerBound => 1
|
88
|
-
end
|
89
|
-
|
90
|
-
# @api public
|
91
|
-
#
|
92
|
-
class PNumericType < PScalarType
|
93
|
-
end
|
94
|
-
|
95
|
-
# @api public
|
96
|
-
#
|
97
|
-
class PIntegerType < PNumericType
|
98
|
-
has_attr 'from', Integer, :lowerBound => 0
|
99
|
-
has_attr 'to', Integer, :lowerBound => 0
|
100
|
-
end
|
101
|
-
|
102
|
-
# @api public
|
103
|
-
#
|
104
|
-
class PFloatType < PNumericType
|
105
|
-
has_attr 'from', Float, :lowerBound => 0
|
106
|
-
has_attr 'to', Float, :lowerBound => 0
|
107
|
-
end
|
108
|
-
|
109
|
-
# @api public
|
110
|
-
#
|
111
|
-
class PStringType < PScalarType
|
112
|
-
has_many_attr 'values', String, :lowerBound => 0, :upperBound => -1, :unique => true
|
113
|
-
contains_one_uni 'size_type', PIntegerType
|
114
|
-
end
|
115
|
-
|
116
|
-
# @api public
|
117
|
-
#
|
118
|
-
class PRegexpType < PScalarType
|
119
|
-
has_attr 'pattern', String, :lowerBound => 1
|
120
|
-
has_attr 'regexp', Object, :derived => true
|
121
|
-
end
|
122
|
-
|
123
|
-
# Represents a subtype of String that narrows the string to those matching the patterns
|
124
|
-
# If specified without a pattern it is basically the same as the String type.
|
125
|
-
#
|
126
|
-
# @api public
|
127
|
-
#
|
128
|
-
class PPatternType < PScalarType
|
129
|
-
contains_many_uni 'patterns', PRegexpType
|
130
|
-
end
|
131
|
-
|
132
|
-
# @api public
|
133
|
-
#
|
134
|
-
class PBooleanType < PScalarType
|
135
|
-
end
|
136
|
-
|
137
|
-
# @api public
|
138
|
-
#
|
139
|
-
class PCollectionType < PAnyType
|
140
|
-
contains_one_uni 'element_type', PAnyType
|
141
|
-
contains_one_uni 'size_type', PIntegerType
|
142
|
-
end
|
143
|
-
|
144
|
-
# @api public
|
145
|
-
#
|
146
|
-
class PStructElement < TypeModelObject
|
147
|
-
# key_type must be either String[1] or Optional[String[1]] and the String[1] must
|
148
|
-
# have a values collection with exactly one element
|
149
|
-
contains_one_uni 'key_type', PAnyType, :lowerBound => 1
|
150
|
-
contains_one_uni 'value_type', PAnyType
|
151
|
-
end
|
152
|
-
|
153
|
-
# @api public
|
154
|
-
#
|
155
|
-
class PStructType < PAnyType
|
156
|
-
contains_many_uni 'elements', PStructElement, :lowerBound => 1
|
157
|
-
has_attr 'hashed_elements', Object, :derived => true
|
158
|
-
end
|
159
|
-
|
160
|
-
# @api public
|
161
|
-
#
|
162
|
-
class PTupleType < PAnyType
|
163
|
-
contains_many_uni 'types', PAnyType, :lowerBound => 1
|
164
|
-
# If set, describes min and max required of the given types - if max > size of
|
165
|
-
# types, the last type entry repeats
|
166
|
-
#
|
167
|
-
contains_one_uni 'size_type', PIntegerType, :lowerBound => 0
|
168
|
-
end
|
169
|
-
|
170
|
-
# @api public
|
171
|
-
#
|
172
|
-
class PCallableType < PAnyType
|
173
|
-
# Types of parameters as a Tuple with required/optional count, or an Integer with min (required), max count
|
174
|
-
contains_one_uni 'param_types', PAnyType, :lowerBound => 1
|
175
|
-
|
176
|
-
# Although being an abstract type reference, only Callable, or all Callables wrapped in
|
177
|
-
# Optional or Variant are supported
|
178
|
-
# If not set, the meaning is that block is not supported.
|
179
|
-
#
|
180
|
-
contains_one_uni 'block_type', PAnyType, :lowerBound => 0
|
181
|
-
end
|
182
|
-
|
183
|
-
# @api public
|
184
|
-
#
|
185
|
-
class PArrayType < PCollectionType
|
186
|
-
end
|
187
|
-
|
188
|
-
# @api public
|
189
|
-
#
|
190
|
-
class PHashType < PCollectionType
|
191
|
-
contains_one_uni 'key_type', PAnyType
|
192
|
-
end
|
193
|
-
|
194
|
-
RuntimeEnum = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
195
|
-
:name => 'RuntimeEnum',
|
196
|
-
:literals => [:'ruby', ])
|
197
|
-
|
198
|
-
# @api public
|
199
|
-
#
|
200
|
-
class PRuntimeType < PAnyType
|
201
|
-
has_attr 'runtime', RuntimeEnum, :lowerBound => 1
|
202
|
-
has_attr 'runtime_type_name', String
|
203
|
-
end
|
204
|
-
|
205
|
-
# Abstract representation of a type that can be placed in a Catalog.
|
206
|
-
# @api public
|
207
|
-
#
|
208
|
-
class PCatalogEntryType < PAnyType
|
209
|
-
end
|
210
|
-
|
211
|
-
# Represents a (host-) class in the Puppet Language.
|
212
|
-
# @api public
|
213
|
-
#
|
214
|
-
class PHostClassType < PCatalogEntryType
|
215
|
-
has_attr 'class_name', String
|
216
|
-
end
|
217
|
-
|
218
|
-
# Represents a Resource Type in the Puppet Language
|
219
|
-
# @api public
|
220
|
-
#
|
221
|
-
class PResourceType < PCatalogEntryType
|
222
|
-
has_attr 'type_name', String
|
223
|
-
has_attr 'title', String
|
224
|
-
end
|
225
|
-
|
226
|
-
# Represents a type that accept PUndefType instead of the type parameter
|
227
|
-
# required_type - is a short hand for Variant[T, Undef]
|
228
|
-
# @api public
|
229
|
-
#
|
230
|
-
class POptionalType < PAnyType
|
231
|
-
contains_one_uni 'optional_type', PAnyType
|
232
|
-
end
|
233
|
-
|
234
|
-
end
|
@@ -199,8 +199,13 @@ module Puppet::Pops::Validation
|
|
199
199
|
# TODO: this support is questionable, it requires knowledge that :detail is special
|
200
200
|
arguments[:detail] ||= ''
|
201
201
|
|
202
|
-
|
203
|
-
|
202
|
+
if semantic.is_a?(Puppet::Parser::Resource)
|
203
|
+
source_pos = semantic
|
204
|
+
file = semantic.file
|
205
|
+
else
|
206
|
+
source_pos = Puppet::Pops::Utils.find_closest_positioned(semantic)
|
207
|
+
file = source_pos ? source_pos.locator.file : nil
|
208
|
+
end
|
204
209
|
|
205
210
|
severity = @severity_producer.severity(issue)
|
206
211
|
@acceptor.accept(Diagnostic.new(severity, issue, file, source_pos, arguments, except))
|
@@ -195,6 +195,8 @@ class Puppet::Pops::Validation::Checker4_0
|
|
195
195
|
case parent1
|
196
196
|
when Model::AbstractResource
|
197
197
|
when Model::CollectExpression
|
198
|
+
when Model::CapabilityMapping
|
199
|
+
acceptor.accept(Issues::UNSUPPORTED_OPERATOR_IN_CONTEXT, parent1, :operator=>'* =>')
|
198
200
|
else
|
199
201
|
# protect against just testing a snippet that has no parent, error message will be a bit strange
|
200
202
|
# but it is not for a real program.
|
@@ -233,6 +235,32 @@ class Puppet::Pops::Validation::Checker4_0
|
|
233
235
|
end
|
234
236
|
end
|
235
237
|
|
238
|
+
def check_CapabilityMapping(o)
|
239
|
+
ok =
|
240
|
+
case o.component
|
241
|
+
when Puppet::Pops::Model::QualifiedName
|
242
|
+
name = o.component.value
|
243
|
+
acceptor.accept(Issues::ILLEGAL_CLASSREF, o.component, {:name=>name}) unless name =~ Puppet::Pops::Patterns::CLASSREF_EXT
|
244
|
+
true
|
245
|
+
when Puppet::Pops::Model::AccessExpression
|
246
|
+
keys = o.component.keys
|
247
|
+
expr = o.component.left_expr
|
248
|
+
if expr.is_a?(Puppet::Pops::Model::QualifiedReference) && keys.size == 1
|
249
|
+
key = keys[0]
|
250
|
+
key.is_a?(Puppet::Pops::Model::LiteralString) || key.is_a?(Puppet::Pops::Model::QualifiedName) || key.is_a?(Puppet::Pops::Model::QualifiedReference)
|
251
|
+
else
|
252
|
+
false
|
253
|
+
end
|
254
|
+
else
|
255
|
+
false
|
256
|
+
end
|
257
|
+
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o.component, :feature=>'capability mapping', :container => o) unless ok
|
258
|
+
|
259
|
+
if o.capability !~ Puppet::Pops::Patterns::CLASSREF_EXT
|
260
|
+
acceptor.accept(Issues::ILLEGAL_CLASSREF, o, {:name=>o.capability})
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
236
264
|
def check_EppExpression(o)
|
237
265
|
if o.eContainer.is_a?(Puppet::Pops::Model::LambdaExpression)
|
238
266
|
internal_check_no_capture(o.eContainer, o)
|
@@ -44,6 +44,7 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
44
44
|
"rename" => [ :path, :string ],
|
45
45
|
"insert" => [ :string, :string, :path ],
|
46
46
|
"get" => [ :path, :comparator, :string ],
|
47
|
+
"values" => [ :path, :glob ],
|
47
48
|
"defvar" => [ :string, :path ],
|
48
49
|
"defnode" => [ :string, :path, :string ],
|
49
50
|
"match" => [ :path, :glob ],
|
@@ -243,6 +244,54 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
243
244
|
!!return_value
|
244
245
|
end
|
245
246
|
|
247
|
+
# Used by the need_to_run? method to process values filters. Returns
|
248
|
+
# true if there is a matched value, false if otherwise
|
249
|
+
def process_values(cmd_array)
|
250
|
+
return_value = false
|
251
|
+
|
252
|
+
#validate and tear apart the command
|
253
|
+
fail("Invalid command: #{cmd_array.join(" ")}") if cmd_array.length < 3
|
254
|
+
cmd = cmd_array.shift
|
255
|
+
path = cmd_array.shift
|
256
|
+
|
257
|
+
# Need to break apart the clause
|
258
|
+
clause_array = parse_commands(cmd_array.shift)[0]
|
259
|
+
verb = clause_array.shift
|
260
|
+
|
261
|
+
#Get the match paths from augeas
|
262
|
+
result = @aug.match(path) || []
|
263
|
+
fail("Error trying to get path '#{path}'") if (result == -1)
|
264
|
+
|
265
|
+
#Get the values of the match paths from augeas
|
266
|
+
values = result.collect{|r| @aug.get(r)}
|
267
|
+
|
268
|
+
case verb
|
269
|
+
when "include"
|
270
|
+
arg = clause_array.shift
|
271
|
+
return_value = values.include?(arg)
|
272
|
+
when "not_include"
|
273
|
+
arg = clause_array.shift
|
274
|
+
return_value = !values.include?(arg)
|
275
|
+
when "=="
|
276
|
+
begin
|
277
|
+
arg = clause_array.shift
|
278
|
+
new_array = eval arg
|
279
|
+
return_value = (values == new_array)
|
280
|
+
rescue
|
281
|
+
fail("Invalid array in command: #{cmd_array.join(" ")}")
|
282
|
+
end
|
283
|
+
when "!="
|
284
|
+
begin
|
285
|
+
arg = clause_array.shift
|
286
|
+
new_array = eval arg
|
287
|
+
return_value = (values != new_array)
|
288
|
+
rescue
|
289
|
+
fail("Invalid array in command: #{cmd_array.join(" ")}")
|
290
|
+
end
|
291
|
+
end
|
292
|
+
!!return_value
|
293
|
+
end
|
294
|
+
|
246
295
|
# Used by the need_to_run? method to process match filters. Returns
|
247
296
|
# true if there is a match, false if otherwise
|
248
297
|
def process_match(cmd_array)
|
@@ -367,6 +416,7 @@ Puppet::Type.type(:augeas).provide(:augeas) do
|
|
367
416
|
begin
|
368
417
|
case command
|
369
418
|
when "get"; return_value = process_get(cmd_array)
|
419
|
+
when "values"; return_value = process_values(cmd_array)
|
370
420
|
when "match"; return_value = process_match(cmd_array)
|
371
421
|
end
|
372
422
|
rescue StandardError => e
|
@@ -9,4 +9,14 @@ Puppet::Type.type(:group).provide :directoryservice, :parent => Puppet::Provider
|
|
9
9
|
confine :operatingsystem => :darwin
|
10
10
|
defaultfor :operatingsystem => :darwin
|
11
11
|
has_feature :manages_members
|
12
|
+
|
13
|
+
def members_insync?(current, should)
|
14
|
+
return false unless current
|
15
|
+
if current == :absent
|
16
|
+
return should.empty?
|
17
|
+
else
|
18
|
+
return current.sort.uniq == should.sort.uniq
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
12
22
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
Puppet::Type.type(:package).provide :dnf, :parent => :yum do
|
2
|
+
desc "Support via `dnf`.
|
3
|
+
|
4
|
+
Using this provider's `uninstallable` feature will not remove dependent packages. To
|
5
|
+
remove dependent packages with this provider use the `purgeable` feature, but note this
|
6
|
+
feature is destructive and should be used with the utmost care.
|
7
|
+
|
8
|
+
This provider supports the `install_options` attribute, which allows command-line flags to be passed to dnf.
|
9
|
+
These options should be specified as a string (e.g. '--flag'), a hash (e.g. {'--flag' => 'value'}),
|
10
|
+
or an array where each element is either a string or a hash."
|
11
|
+
|
12
|
+
has_feature :install_options, :versionable, :virtual_packages
|
13
|
+
|
14
|
+
commands :cmd => "dnf", :rpm => "rpm"
|
15
|
+
|
16
|
+
# Note: this confine was borrowed from the Yum provider. The
|
17
|
+
# original purpose (from way back in 2007) was to make sure we
|
18
|
+
# never try to use RPM on a machine without it. We think this
|
19
|
+
# has probably become obsolete with the way `commands` work, so
|
20
|
+
# we should investigate removing it at some point.
|
21
|
+
if command('rpm')
|
22
|
+
confine :true => begin
|
23
|
+
rpm('--version')
|
24
|
+
rescue Puppet::ExecutionFailure
|
25
|
+
false
|
26
|
+
else
|
27
|
+
true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
defaultfor :operatingsystem => :fedora, :operatingsystemmajrelease => '22'
|
32
|
+
|
33
|
+
# The value to pass to DNF as its error output level.
|
34
|
+
# DNF differs from Yum slightly with regards to error outputting.
|
35
|
+
#
|
36
|
+
# @param None
|
37
|
+
# @return [String]
|
38
|
+
def self.error_level
|
39
|
+
'1'
|
40
|
+
end
|
41
|
+
end
|
@@ -111,8 +111,13 @@ Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package d
|
|
111
111
|
# we don't support puppet:// URLs (yet)
|
112
112
|
raise Puppet::Error.new("puppet:// URLs are not supported as gem sources")
|
113
113
|
else
|
114
|
-
#
|
115
|
-
|
114
|
+
# check whether it's an absolute file path to help Windows out
|
115
|
+
if Puppet::Util.absolute_path?(source)
|
116
|
+
command << source
|
117
|
+
else
|
118
|
+
# interpret it as a gem repository
|
119
|
+
command << "--source" << "#{source}" << resource[:name]
|
120
|
+
end
|
116
121
|
end
|
117
122
|
else
|
118
123
|
command << "--no-rdoc" << "--no-ri" << resource[:name]
|
@@ -281,6 +281,7 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr
|
|
281
281
|
self::NEVRA_FIELDS.zip(match.captures) { |f, v| hash[f] = v }
|
282
282
|
hash[:provider] = self.name
|
283
283
|
hash[:ensure] = "#{hash[:version]}-#{hash[:release]}"
|
284
|
+
hash[:ensure].prepend("#{hash[:epoch]}:") if hash[:epoch] != '0'
|
284
285
|
else
|
285
286
|
Puppet.debug("Failed to match rpm line #{line}")
|
286
287
|
end
|
@@ -8,7 +8,7 @@ class Puppet::Provider::Package::Windows
|
|
8
8
|
def self.from_registry(name, values)
|
9
9
|
if valid?(name, values)
|
10
10
|
ExePackage.new(
|
11
|
-
values
|
11
|
+
get_display_name(values),
|
12
12
|
values['DisplayVersion'],
|
13
13
|
values['UninstallString']
|
14
14
|
)
|
@@ -18,13 +18,15 @@ class Puppet::Provider::Package::Windows
|
|
18
18
|
# Is this a valid executable package we should manage?
|
19
19
|
def self.valid?(name, values)
|
20
20
|
# See http://community.spiceworks.com/how_to/show/2238
|
21
|
-
|
22
|
-
|
23
|
-
values['
|
24
|
-
|
25
|
-
values['
|
26
|
-
|
27
|
-
values['
|
21
|
+
displayName = get_display_name(values)
|
22
|
+
!!(displayName && displayName.length > 0 &&
|
23
|
+
values['UninstallString'] &&
|
24
|
+
values['UninstallString'].length > 0 &&
|
25
|
+
values['WindowsInstaller'] != 1 && # DWORD
|
26
|
+
name !~ /^KB[0-9]{6}/ &&
|
27
|
+
values['ParentKeyName'] == nil &&
|
28
|
+
values['Security Update'] == nil &&
|
29
|
+
values['Update Rollup'] == nil &&
|
28
30
|
values['Hotfix'] == nil)
|
29
31
|
end
|
30
32
|
|