puppet 4.2.3-x64-mingw32 → 4.3.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- 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
data/lib/puppet/settings.rb
CHANGED
@@ -828,9 +828,9 @@ class Puppet::Settings
|
|
828
828
|
|
829
829
|
# Allow later inspection to determine if the setting was set by user
|
830
830
|
# config, rather than a default setting.
|
831
|
-
def set_by_config?(param)
|
831
|
+
def set_by_config?(param, environment = nil, run_mode = preferred_run_mode)
|
832
832
|
param = param.to_sym
|
833
|
-
configsearchpath.any? do |source|
|
833
|
+
configsearchpath(environment, run_mode).any? do |source|
|
834
834
|
if vals = searchpath_values(source)
|
835
835
|
vals.lookup(param)
|
836
836
|
end
|
@@ -140,7 +140,7 @@ module Puppet
|
|
140
140
|
if value = ca.print(host)
|
141
141
|
puts value
|
142
142
|
else
|
143
|
-
|
143
|
+
raise ArgumentError, "Could not find certificate for #{host}"
|
144
144
|
end
|
145
145
|
end
|
146
146
|
end
|
@@ -151,7 +151,7 @@ module Puppet
|
|
151
151
|
if cert = (Puppet::SSL::Certificate.indirection.find(host) || Puppet::SSL::CertificateRequest.indirection.find(host))
|
152
152
|
puts "#{host} #{cert.digest(@digest)}"
|
153
153
|
else
|
154
|
-
|
154
|
+
raise ArgumentError, "Could not find certificate for #{host}"
|
155
155
|
end
|
156
156
|
end
|
157
157
|
end
|
data/lib/puppet/ssl/oids.rb
CHANGED
@@ -48,7 +48,15 @@ module Puppet::SSL::Oids
|
|
48
48
|
["1.3.6.1.4.1.34380.1.1.15", 'pp_department', 'Puppet Node Department Name'],
|
49
49
|
["1.3.6.1.4.1.34380.1.1.16", 'pp_cluster', 'Puppet Node Cluster Name'],
|
50
50
|
["1.3.6.1.4.1.34380.1.1.17", 'pp_provisioner', 'Puppet Node Provisioner Name'],
|
51
|
-
|
51
|
+
["1.3.6.1.4.1.34380.1.1.18", 'pp_region', 'Puppet Node Region Name'],
|
52
|
+
["1.3.6.1.4.1.34380.1.1.19", 'pp_datacenter', 'Puppet Node Datacenter Name'],
|
53
|
+
["1.3.6.1.4.1.34380.1.1.20", 'pp_zone', 'Puppet Node Zone Name'],
|
54
|
+
["1.3.6.1.4.1.34380.1.1.21", 'pp_network', 'Puppet Node Network Name'],
|
55
|
+
["1.3.6.1.4.1.34380.1.1.22", 'pp_securitypolicy', 'Puppet Node Security Policy Name'],
|
56
|
+
["1.3.6.1.4.1.34380.1.1.23", 'pp_cloudplatform', 'Puppet Node Cloud Platform Name'],
|
57
|
+
["1.3.6.1.4.1.34380.1.1.24", 'pp_apptier', 'Puppet Node Application Tier'],
|
58
|
+
["1.3.6.1.4.1.34380.1.1.25", 'pp_hostname', 'Puppet Node Hostname'],
|
59
|
+
|
52
60
|
["1.3.6.1.4.1.34380.1.2", 'ppPrivCertExt', 'Puppet Private Certificate Extension'],
|
53
61
|
]
|
54
62
|
|
data/lib/puppet/transaction.rb
CHANGED
@@ -79,7 +79,7 @@ class Puppet::Transaction
|
|
79
79
|
# necessary events.
|
80
80
|
def evaluate(&block)
|
81
81
|
block ||= method(:eval_resource)
|
82
|
-
generator = AdditionalResourceGenerator.new(@catalog,
|
82
|
+
generator = AdditionalResourceGenerator.new(@catalog, nil, @prioritizer)
|
83
83
|
@catalog.vertices.each { |resource| generator.generate_additional_resources(resource) }
|
84
84
|
|
85
85
|
perform_pre_run_checks
|
@@ -135,6 +135,9 @@ class Puppet::Transaction
|
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
138
|
+
# Generate the relationship graph, set up our generator to use it
|
139
|
+
# for eval_generate, then kick off our traversal.
|
140
|
+
generator.relationship_graph = relationship_graph
|
138
141
|
relationship_graph.traverse(:while => continue_while,
|
139
142
|
:pre_process => pre_process,
|
140
143
|
:overly_deferred_resource_handler => overly_deferred_resource_handler,
|
@@ -5,6 +5,8 @@
|
|
5
5
|
#
|
6
6
|
# @api private
|
7
7
|
class Puppet::Transaction::AdditionalResourceGenerator
|
8
|
+
attr_writer :relationship_graph
|
9
|
+
|
8
10
|
def initialize(catalog, relationship_graph, prioritizer)
|
9
11
|
@catalog = catalog
|
10
12
|
@relationship_graph = relationship_graph
|
@@ -22,11 +24,19 @@ class Puppet::Transaction::AdditionalResourceGenerator
|
|
22
24
|
generated = [generated] unless generated.is_a?(Array)
|
23
25
|
generated.collect do |res|
|
24
26
|
@catalog.resource(res.ref) || res
|
25
|
-
end.
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
end.reverse_each do |res|
|
28
|
+
# This is reversed becuase PUP-1963 changed how generated
|
29
|
+
# resources were added to the catalog. It exists for backwards
|
30
|
+
# compatibility only, and can probably be removed in Puppet 5
|
31
|
+
#
|
32
|
+
# Previously, resources were given sequential priorities in the
|
33
|
+
# relationship graph. Post-1963, resources are added to the
|
34
|
+
# catalog one by one adjacent to the parent resource. This
|
35
|
+
# causes an implicit reversal of their application order from
|
36
|
+
# the old code. The reverse makes it all work like it did.
|
37
|
+
add_resource(res, resource)
|
38
|
+
|
39
|
+
add_generated_directed_dependency(resource, res)
|
30
40
|
generate_additional_resources(res)
|
31
41
|
end
|
32
42
|
end
|
@@ -102,16 +112,69 @@ class Puppet::Transaction::AdditionalResourceGenerator
|
|
102
112
|
end
|
103
113
|
end
|
104
114
|
|
105
|
-
def add_resource(res, parent_resource, priority)
|
115
|
+
def add_resource(res, parent_resource, priority=nil)
|
106
116
|
if @catalog.resource(res.ref).nil?
|
107
117
|
res.tag(*parent_resource.tags)
|
108
|
-
|
109
|
-
|
118
|
+
if parent_resource.depthfirst?
|
119
|
+
@catalog.add_resource_before(parent_resource, res)
|
120
|
+
else
|
121
|
+
@catalog.add_resource_after(parent_resource, res)
|
122
|
+
end
|
110
123
|
@catalog.add_edge(@catalog.container_of(parent_resource), res)
|
124
|
+
if @relationship_graph && priority
|
125
|
+
# If we have a relationship_graph we should add the resource
|
126
|
+
# to it (this is an eval_generate). If we don't, then the
|
127
|
+
# relationship_graph has not yet been created and we can skip
|
128
|
+
# adding it.
|
129
|
+
@relationship_graph.add_vertex(res, priority)
|
130
|
+
end
|
111
131
|
res.finish
|
112
132
|
end
|
113
133
|
end
|
114
134
|
|
135
|
+
# add correct edge for depth- or breadth- first traversal of
|
136
|
+
# generated resource. Skip generating the edge if there is already
|
137
|
+
# some sort of edge between the two resources.
|
138
|
+
def add_generated_directed_dependency(parent, child, label=nil)
|
139
|
+
if parent.depthfirst?
|
140
|
+
source = child
|
141
|
+
target = parent.to_resource
|
142
|
+
else
|
143
|
+
source = parent
|
144
|
+
target = child.to_resource
|
145
|
+
end
|
146
|
+
|
147
|
+
# For each potential relationship metaparam, check if parent or
|
148
|
+
# child references the other. If there are none, we should add our
|
149
|
+
# edge.
|
150
|
+
edge_exists = Puppet::Type.relationship_params.any? { |param|
|
151
|
+
param_sym = param.name.to_sym
|
152
|
+
|
153
|
+
if parent[param_sym]
|
154
|
+
parent_contains = parent[param_sym].any? { |res|
|
155
|
+
res.ref == child.ref
|
156
|
+
}
|
157
|
+
else
|
158
|
+
parent_contains = false
|
159
|
+
end
|
160
|
+
|
161
|
+
if child[param_sym]
|
162
|
+
child_contains = child[param_sym].any? { |res|
|
163
|
+
res.ref == parent.ref
|
164
|
+
}
|
165
|
+
else
|
166
|
+
child_contains = false
|
167
|
+
end
|
168
|
+
|
169
|
+
parent_contains || child_contains
|
170
|
+
}
|
171
|
+
|
172
|
+
if not edge_exists
|
173
|
+
source[:before] ||= []
|
174
|
+
source[:before] << target
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
115
178
|
# Copy an important relationships from the parent to the newly-generated
|
116
179
|
# child resource.
|
117
180
|
def add_conditional_directed_dependency(parent, child, label=nil)
|
@@ -99,10 +99,15 @@ class Puppet::Transaction::ResourceHarness
|
|
99
99
|
def allow_changes?(resource)
|
100
100
|
if resource.purging? and resource.deleting? and deps = relationship_graph.dependents(resource) \
|
101
101
|
and ! deps.empty? and deps.detect { |d| ! d.deleting? }
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
102
|
+
real_deps = deps.reject { |r| r.class.name == :whit }
|
103
|
+
if real_deps.empty?
|
104
|
+
true
|
105
|
+
else
|
106
|
+
deplabel = real_deps.collect { |r| r.ref }.join(",")
|
107
|
+
plurality = real_deps.length > 1 ? "":"s"
|
108
|
+
resource.warning "#{deplabel} still depend#{plurality} on me -- not purging"
|
109
|
+
false
|
110
|
+
end
|
106
111
|
else
|
107
112
|
true
|
108
113
|
end
|
data/lib/puppet/type.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
require 'puppet'
|
2
3
|
require 'puppet/util/log'
|
3
4
|
require 'puppet/util/metric'
|
@@ -106,6 +107,24 @@ class Type
|
|
106
107
|
attr_reader :properties
|
107
108
|
end
|
108
109
|
|
110
|
+
# Allow declaring that a type is actually a capability
|
111
|
+
class << self
|
112
|
+
attr_accessor :is_capability
|
113
|
+
|
114
|
+
def is_capability?
|
115
|
+
is_capability
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
# Returns whether this type represents an application instance; since
|
120
|
+
# only defined types, i.e., instances of Puppet::Resource::Type can
|
121
|
+
# represent application instances, this implementation always returns
|
122
|
+
# +false+. Having this method though makes code checking whether a
|
123
|
+
# resource is an application instance simpler
|
124
|
+
def self.application?
|
125
|
+
false
|
126
|
+
end
|
127
|
+
|
109
128
|
# Returns all the attribute names of the type in the appropriate order.
|
110
129
|
# The {key_attributes} come first, then the {provider}, then the {properties}, and finally
|
111
130
|
# the {parameters} and {metaparams},
|
@@ -639,7 +658,7 @@ class Type
|
|
639
658
|
def []=(name,value)
|
640
659
|
name = name.intern
|
641
660
|
|
642
|
-
fail("
|
661
|
+
fail("no parameter named '#{name}'") unless self.class.validattr?(name)
|
643
662
|
|
644
663
|
if name == :name && nv = name_var
|
645
664
|
name = nv
|
@@ -1628,6 +1647,57 @@ class Type
|
|
1628
1647
|
}
|
1629
1648
|
end
|
1630
1649
|
|
1650
|
+
newmetaparam(:export, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :NONE}) do
|
1651
|
+
desc <<EOS
|
1652
|
+
Export a capability resource.
|
1653
|
+
|
1654
|
+
The value of this parameter must be a reference to a capability resource,
|
1655
|
+
or an array of such references. Each capability resource referenced here
|
1656
|
+
will be instantiated in the node catalog and exported to consumers of this
|
1657
|
+
resource. The title of the capability resource will be the title given in
|
1658
|
+
the reference, and all other attributes of the resource will be filled
|
1659
|
+
according to the corresponding produces statement.
|
1660
|
+
|
1661
|
+
It is an error if this metaparameter references resources whose type is not
|
1662
|
+
a capability type, or of there is no produces clause for the type of the
|
1663
|
+
current resource and the capability resource mentioned in this parameter.
|
1664
|
+
|
1665
|
+
For example:
|
1666
|
+
|
1667
|
+
define web(..) { .. }
|
1668
|
+
Web produces Http { .. }
|
1669
|
+
web { server:
|
1670
|
+
export => Http[main_server]
|
1671
|
+
}
|
1672
|
+
EOS
|
1673
|
+
end
|
1674
|
+
|
1675
|
+
newmetaparam(:consume, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :NONE}) do
|
1676
|
+
desc <<EOS
|
1677
|
+
Consume a capability resource.
|
1678
|
+
|
1679
|
+
The value of this parameter must be a reference to a capability resource,
|
1680
|
+
or an array of such references. Each capability resource referenced here
|
1681
|
+
must have been exported by another resource in the same environment.
|
1682
|
+
|
1683
|
+
The referenced capability resource(s) will be looked up, added to the
|
1684
|
+
current node catalog, and processed following the underlying consumes
|
1685
|
+
clause.
|
1686
|
+
|
1687
|
+
It is an error if this metaparameter references resources whose type is not
|
1688
|
+
a capability type, or of there is no consumes clause for the type of the
|
1689
|
+
current resource and the capability resource mentioned in this parameter.
|
1690
|
+
|
1691
|
+
For example:
|
1692
|
+
|
1693
|
+
define web(..) { .. }
|
1694
|
+
Web consumes Sql { .. }
|
1695
|
+
web { server:
|
1696
|
+
consume => Sql[my_db]
|
1697
|
+
}
|
1698
|
+
EOS
|
1699
|
+
end
|
1700
|
+
|
1631
1701
|
###############################
|
1632
1702
|
# All of the provider plumbing for the resource types.
|
1633
1703
|
require 'puppet/provider'
|
@@ -1795,7 +1865,7 @@ class Type
|
|
1795
1865
|
def self.providify
|
1796
1866
|
return if @paramhash.has_key? :provider
|
1797
1867
|
|
1798
|
-
newparam(:provider) do
|
1868
|
+
param = newparam(:provider) do
|
1799
1869
|
# We're using a hacky way to get the name of our type, since there doesn't
|
1800
1870
|
# seem to be a correct way to introspect this at the time this code is run.
|
1801
1871
|
# We expect that the class in which this code is executed will be something
|
@@ -1855,7 +1925,8 @@ class Type
|
|
1855
1925
|
provider
|
1856
1926
|
end
|
1857
1927
|
end
|
1858
|
-
end
|
1928
|
+
end
|
1929
|
+
param.parenttype = self
|
1859
1930
|
end
|
1860
1931
|
|
1861
1932
|
# @todo this needs a better explanation
|
data/lib/puppet/type/augeas.rb
CHANGED
@@ -73,9 +73,17 @@ Puppet::Type.newtype(:augeas) do
|
|
73
73
|
|
74
74
|
newparam (:onlyif) do
|
75
75
|
desc "Optional augeas command and comparisons to control the execution of this type.
|
76
|
+
|
77
|
+
Note: `values` is not an actual augeas API command. It calls `match` to retrieve an array of paths
|
78
|
+
in <MATCH_PATH> and then `get` to retrieve the values from each of the returned paths.
|
79
|
+
|
76
80
|
Supported onlyif syntax:
|
77
81
|
|
78
82
|
* `get <AUGEAS_PATH> <COMPARATOR> <STRING>`
|
83
|
+
* `values <MATCH_PATH> include <STRING>`
|
84
|
+
* `values <MATCH_PATH> not_include <STRING>`
|
85
|
+
* `values <MATCH_PATH> == <AN_ARRAY>`
|
86
|
+
* `values <MATCH_PATH> != <AN_ARRAY>`
|
79
87
|
* `match <MATCH_PATH> size <COMPARATOR> <INT>`
|
80
88
|
* `match <MATCH_PATH> include <STRING>`
|
81
89
|
* `match <MATCH_PATH> not_include <STRING>`
|
@@ -12,22 +12,24 @@ module Puppet
|
|
12
12
|
|
13
13
|
attr_accessor :source, :local
|
14
14
|
desc <<-'EOT'
|
15
|
-
A source file, which will be copied into place on the local system.
|
16
|
-
|
17
|
-
|
18
|
-
Windows mapped drives). This attribute is mutually exclusive with
|
19
|
-
`content` and `target`.
|
15
|
+
A source file, which will be copied into place on the local system. This
|
16
|
+
attribute is mutually exclusive with `content` and `target`. Allowed
|
17
|
+
values are:
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
* `puppet:` URIs, which point to files in modules or Puppet file server
|
20
|
+
mount points.
|
21
|
+
* Fully qualified paths to locally available files (including files on NFS
|
22
|
+
shares or Windows mapped drives).
|
23
|
+
* `file:` URIs, which behave the same as local file paths.
|
24
24
|
|
25
|
-
`puppet
|
25
|
+
The normal form of a `puppet:` URI is:
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
`puppet:///modules/<MODULE NAME>/<FILE PATH>`
|
28
|
+
|
29
|
+
This will fetch a file from a module on the Puppet master (or from a
|
30
|
+
local module when using Puppet apply). Given a `modulepath` of
|
29
31
|
`/etc/puppetlabs/code/modules`, the example above would resolve to
|
30
|
-
`/etc/puppetlabs/code/modules
|
32
|
+
`/etc/puppetlabs/code/modules/<MODULE NAME>/files/<FILE PATH>`.
|
31
33
|
|
32
34
|
Unlike `content`, the `source` attribute can be used to recursively copy
|
33
35
|
directories if the `recurse` attribute is set to `true` or `remote`. If
|
data/lib/puppet/type/user.rb
CHANGED
@@ -170,8 +170,10 @@ module Puppet
|
|
170
170
|
|
171
171
|
newproperty(:comment) do
|
172
172
|
desc "A description of the user. Generally the user's full name."
|
173
|
-
|
174
|
-
|
173
|
+
if RUBY_VERSION < "2.1.0"
|
174
|
+
munge do |v|
|
175
|
+
v.respond_to?(:force_encoding) ? v.force_encoding(Encoding::ASCII_8BIT) : v
|
176
|
+
end
|
175
177
|
end
|
176
178
|
end
|
177
179
|
|
@@ -352,7 +352,10 @@ module Puppet::Util::Windows::Security
|
|
352
352
|
dacl.allow(well_known_nobody_sid, nobody_allow)
|
353
353
|
|
354
354
|
# TODO: system should be first?
|
355
|
-
|
355
|
+
flags = !isdir ? 0 :
|
356
|
+
Puppet::Util::Windows::AccessControlEntry::CONTAINER_INHERIT_ACE |
|
357
|
+
Puppet::Util::Windows::AccessControlEntry::OBJECT_INHERIT_ACE
|
358
|
+
dacl.allow(well_known_system_sid, system_allow, flags)
|
356
359
|
|
357
360
|
# add inherit-only aces for child dirs and files that are created within the dir
|
358
361
|
inherit_only = Puppet::Util::Windows::AccessControlEntry::INHERIT_ONLY_ACE
|
@@ -809,7 +809,7 @@ module Win32
|
|
809
809
|
# Returns whether or not the scheduled task exists.
|
810
810
|
def exists?(job_name)
|
811
811
|
bool = false
|
812
|
-
Dir.foreach('
|
812
|
+
Dir.foreach("#{ENV['SystemRoot']}/Tasks"){ |file|
|
813
813
|
if File.basename(file, '.job') == job_name
|
814
814
|
bool = true
|
815
815
|
break
|
data/lib/puppet/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
environment_data_provider = 'hiera'
|