puppet 4.2.3-x86-mingw32 → 4.3.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- 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/functions/map.rb
CHANGED
@@ -1,33 +1,68 @@
|
|
1
|
-
# Applies a
|
2
|
-
#
|
1
|
+
# Applies a [lambda](http://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html)
|
2
|
+
# to every value in a data structure and returns an array containing the results.
|
3
3
|
#
|
4
|
-
# This function takes two mandatory arguments
|
5
|
-
# (integer, Integer range, or String), and the second a parameterized block as produced by the puppet syntax:
|
4
|
+
# This function takes two mandatory arguments, in this order:
|
6
5
|
#
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# 1. An array or hash the function will iterate over.
|
7
|
+
# 2. A lambda, which the function calls for each element in the first argument. It can
|
8
|
+
# request one or two parameters.
|
9
9
|
#
|
10
|
-
#
|
11
|
-
# When the first argument is a hash the entry is an array with `[key, value]`.
|
10
|
+
# @example Using the `map` function
|
12
11
|
#
|
13
|
-
#
|
12
|
+
# `$transformed_data = $data.map |$parameter| { <PUPPET CODE BLOCK> }`
|
14
13
|
#
|
15
|
-
#
|
16
|
-
# $a.map |$x|{ $x[1] }
|
14
|
+
# or
|
17
15
|
#
|
18
|
-
#
|
19
|
-
# $a.map |$x| { $x[0] }
|
16
|
+
# `$transformed_data = map($data) |$parameter| { <PUPPET CODE BLOCK> }`
|
20
17
|
#
|
21
|
-
# When
|
22
|
-
#
|
18
|
+
# When the first argument (`$data` in the above example) is an array, Puppet passes each
|
19
|
+
# value in turn to the lambda.
|
23
20
|
#
|
24
|
-
# @example Using map with
|
21
|
+
# @example Using the `map` function with an array and a one-parameter lambda
|
25
22
|
#
|
26
|
-
#
|
27
|
-
#
|
23
|
+
# ~~~ puppet
|
24
|
+
# # For the array $data, return an array containing each value multiplied by 10
|
25
|
+
# $data = [1,2,3]
|
26
|
+
# $transformed_data = $data.map |$items| { $items * 10 }
|
27
|
+
# # $transformed_data contains [10,20,30]
|
28
|
+
# ~~~
|
28
29
|
#
|
29
|
-
#
|
30
|
-
#
|
30
|
+
# When the first argument is a hash, Puppet passes each key and value pair to the lambda
|
31
|
+
# as an array in the form `[key, value]`.
|
32
|
+
#
|
33
|
+
# @example Using the `map` function with a hash and a one-parameter lambda
|
34
|
+
#
|
35
|
+
# ~~~ puppet
|
36
|
+
# # For the hash $data, return an array containing the keys
|
37
|
+
# $data = {'a'=>1,'b'=>2,'c'=>3}
|
38
|
+
# $transformed_data = $data.map |$items| { $items[0] }
|
39
|
+
# # $transformed_data contains ['a','b','c']
|
40
|
+
# ~~~
|
41
|
+
#
|
42
|
+
# When the first argument is an array and the lambda has two parameters, Puppet passes the
|
43
|
+
# array's indexes (enumerated from 0) in the first parameter and its values in the second
|
44
|
+
# parameter.
|
45
|
+
#
|
46
|
+
# @example Using the `map` function with an array and a two-parameter lambda
|
47
|
+
#
|
48
|
+
# ~~~ puppet
|
49
|
+
# # For the array $data, return an array containing the indexes
|
50
|
+
# $data = [1,2,3]
|
51
|
+
# $transformed_data = $data.map |$index,$value| { $index }
|
52
|
+
# # $transformed_data contains [0,1,2]
|
53
|
+
# ~~~
|
54
|
+
#
|
55
|
+
# When the first argument is a hash, Puppet passes its keys to the first parameter and its
|
56
|
+
# values to the second parameter.
|
57
|
+
#
|
58
|
+
# @example Using the `map` function with a hash and a two-parameter lambda
|
59
|
+
#
|
60
|
+
# ~~~ puppet
|
61
|
+
# # For the hash $data, return an array containing each value
|
62
|
+
# $data = {'a'=>1,'b'=>2,'c'=>3}
|
63
|
+
# $transformed_data = $data.map |$key,$value| { $value }
|
64
|
+
# # $transformed_data contains [1,2,3]
|
65
|
+
# ~~~
|
31
66
|
#
|
32
67
|
# @since 4.0.0
|
33
68
|
#
|
@@ -57,7 +92,7 @@ Puppet::Functions.create_function(:map) do
|
|
57
92
|
end
|
58
93
|
|
59
94
|
def map_Hash_2(hash)
|
60
|
-
|
95
|
+
hash.map {|x, y| yield(x, y) }
|
61
96
|
end
|
62
97
|
|
63
98
|
def map_Enumerable_1(enumerable)
|
@@ -1,19 +1,36 @@
|
|
1
|
-
#
|
1
|
+
# Matches a regular expression against a string and returns an array containing the match
|
2
|
+
# and any matched capturing groups.
|
2
3
|
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
# * Regexp type
|
4
|
+
# The first argument is a string or array of strings. The second argument is either a
|
5
|
+
# regular expression, regular expression represented as a string, or Regex or Pattern
|
6
|
+
# data type that the function matches against the first argument.
|
7
7
|
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# with mapped match results
|
8
|
+
# The returned array contains the entire match at index 0, and each captured group at
|
9
|
+
# subsequent index values. If the value or expression being matched is an array, the
|
10
|
+
# function returns an array with mapped match results.
|
11
11
|
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
12
|
+
# If the function doesn't find a match, it returns 'undef'.
|
13
|
+
#
|
14
|
+
# @example Matching a regular expression in a string
|
15
|
+
#
|
16
|
+
# ~~~ ruby
|
17
|
+
# $matches = "abc123".match(/[a-z]+[1-9]+/)
|
18
|
+
# # $matches contains [abc123]
|
19
|
+
# ~~~
|
20
|
+
#
|
21
|
+
# @example Matching a regular expressions with grouping captures in a string
|
22
|
+
#
|
23
|
+
# ~~~ ruby
|
24
|
+
# $matches = "abc123".match(/([a-z]+)([1-9]+)/)
|
25
|
+
# # $matches contains [abc123, abc, 123]
|
26
|
+
# ~~~
|
27
|
+
#
|
28
|
+
# @example Matching a regular expression with grouping captures in an array of strings
|
29
|
+
#
|
30
|
+
# ~~~ ruby
|
31
|
+
# $matches = ["abc123","def456"].match(/([a-z]+)([1-9]+)/)
|
32
|
+
# # $matches contains [[abc123, abc, 123], [def456, def, 456]]
|
15
33
|
#
|
16
|
-
# See the documentation for "The Puppet Type System" for more information about types.
|
17
34
|
# @since 4.0.0
|
18
35
|
#
|
19
36
|
Puppet::Functions.create_function(:match) do
|
@@ -1,61 +1,98 @@
|
|
1
|
-
# Applies a
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
1
|
+
# Applies a [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html)
|
2
|
+
# to every value in a data structure from the first argument, carrying over the returned
|
3
|
+
# value of each iteration, and returns the result of the lambda's final iteration. This
|
4
|
+
# lets you create a new value or data structure by combining values from the first
|
5
|
+
# argument's data structure.
|
6
|
+
#
|
7
|
+
# This function takes two mandatory arguments, in this order:
|
8
|
+
#
|
9
|
+
# 1. An array or hash the function will iterate over.
|
10
|
+
# 2. A lambda, which the function calls for each element in the first argument. It takes
|
11
|
+
# two mandatory parameters:
|
12
|
+
# 1. A memo value that is overwritten after each iteration with the iteration's result.
|
13
|
+
# 2. A second value that is overwritten after each iteration with the next value in the
|
14
|
+
# function's first argument.
|
15
|
+
#
|
16
|
+
# @example Using the `reduce` function
|
17
|
+
#
|
18
|
+
# `$data.reduce |$memo, $value| { ... }`
|
19
|
+
#
|
20
|
+
# or
|
21
|
+
#
|
22
|
+
# `reduce($data) |$memo, $value| { ... }`
|
23
|
+
#
|
24
|
+
# You can also pass an optional "start memo" value as an argument, such as `start` below:
|
25
|
+
#
|
26
|
+
# `$data.reduce(start) |$memo, $value| { ... }`
|
27
|
+
#
|
28
|
+
# or
|
29
|
+
#
|
30
|
+
# `reduce($data, start) |$memo, $value| { ... }`
|
31
|
+
#
|
32
|
+
# When the first argument (`$data` in the above example) is an array, Puppet passes each
|
33
|
+
# of the data structure's values in turn to the lambda's parameters. When the first
|
34
|
+
# argument is a hash, Puppet converts each of the hash's values to an array in the form
|
35
|
+
# `[key, value]`.
|
36
|
+
#
|
37
|
+
# If you pass a start memo value, Puppet executes the lambda with the provided memo value
|
38
|
+
# and the data structure's first value. Otherwise, Puppet passes the structure's first two
|
39
|
+
# values to the lambda.
|
40
|
+
#
|
41
|
+
# Puppet calls the lambda for each of the data structure's remaining values. For each
|
42
|
+
# call, it passes the result of the previous call as the first parameter ($memo in the
|
43
|
+
# above examples) and the next value from the data structure as the second parameter
|
44
|
+
# ($value).
|
45
|
+
#
|
46
|
+
# If the structure has one value, Puppet returns the value and does not call the lambda.
|
47
|
+
#
|
48
|
+
# @example Using the `reduce` function
|
49
|
+
#
|
50
|
+
# ~~~ puppet
|
51
|
+
# # Reduce the array $data, returning the sum of all values in the array.
|
52
|
+
# $data = [1, 2, 3]
|
53
|
+
# $sum = $data.reduce |$memo, $value| { $memo + $value }
|
54
|
+
# # $sum contains 6
|
55
|
+
#
|
56
|
+
# # Reduce the array $data, returning the sum of a start memo value and all values in the
|
57
|
+
# # array.
|
58
|
+
# $data = [1, 2, 3]
|
59
|
+
# $sum = $data.reduce(4) |$memo, $value| { $memo + $value }
|
60
|
+
# # $sum contains 10
|
61
|
+
#
|
62
|
+
# # Reduce the hash $data, returning the sum of all values and concatenated string of all
|
63
|
+
# # keys.
|
64
|
+
# $data = {a => 1, b => 2, c => 3}
|
65
|
+
# $combine = $data.reduce |$memo, $value| {
|
66
|
+
# $string = "${memo[0]}${value[0]}"
|
67
|
+
# $number = $memo[1] + $value[1]
|
68
|
+
# [$string, $number]
|
69
|
+
# }
|
70
|
+
# # $combine contains [abc, 6]
|
71
|
+
# ~~~
|
72
|
+
#
|
73
|
+
# @example Using the `reduce` function with a start memo and two-parameter lambda
|
74
|
+
#
|
75
|
+
# ~~~ puppet
|
76
|
+
# # Reduce the array $data, returning the sum of all values in the array and starting
|
77
|
+
# # with $memo set to an arbitrary value instead of $data's first value.
|
78
|
+
# $data = [1, 2, 3]
|
79
|
+
# $sum = $data.reduce(4) |$memo, $value| { $memo + $value }
|
80
|
+
# # At the start of the lambda's first iteration, $memo contains 4 and $value contains 1.
|
81
|
+
# # After all iterations, $sum contains 10.
|
82
|
+
#
|
83
|
+
# # Reduce the hash $data, returning the sum of all values and concatenated string of
|
84
|
+
# # all keys, and starting with $memo set to an arbitrary array instead of $data's first
|
85
|
+
# # key-value pair.
|
86
|
+
# $data = {a => 1, b => 2, c => 3}
|
87
|
+
# $combine = $data.reduce( [d, 4] ) |$memo, $value| {
|
88
|
+
# $string = "${memo[0]}${value[0]}"
|
89
|
+
# $number = $memo[1] + $value[1]
|
90
|
+
# [$string, $number]
|
91
|
+
# }
|
92
|
+
# # At the start of the lambda's first iteration, $memo contains [d, 4] and $value
|
93
|
+
# # contains [a, 1].
|
94
|
+
# # $combine contains [dabc, 10]
|
95
|
+
# ~~~
|
59
96
|
#
|
60
97
|
# @since 4.0.0
|
61
98
|
#
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'puppet/util/package'
|
2
|
+
|
3
|
+
# Compares two version numbers.
|
4
|
+
#
|
5
|
+
# Prototype:
|
6
|
+
#
|
7
|
+
# \$result = versioncmp(a, b)
|
8
|
+
#
|
9
|
+
# Where a and b are arbitrary version strings.
|
10
|
+
#
|
11
|
+
# This function returns:
|
12
|
+
#
|
13
|
+
# * `1` if version a is greater than version b
|
14
|
+
# * `0` if the versions are equal
|
15
|
+
# * `-1` if version a is less than version b
|
16
|
+
#
|
17
|
+
# @example
|
18
|
+
#
|
19
|
+
# if versioncmp('2.6-1', '2.4.5') > 0 {
|
20
|
+
# notice('2.6-1 is > than 2.4.5')
|
21
|
+
# }
|
22
|
+
#
|
23
|
+
# This function uses the same version comparison algorithm used by Puppet's
|
24
|
+
# `package` type.
|
25
|
+
#
|
26
|
+
Puppet::Functions.create_function(:versioncmp) do
|
27
|
+
|
28
|
+
dispatch :versioncmp do
|
29
|
+
param 'String', :a
|
30
|
+
param 'String', :b
|
31
|
+
end
|
32
|
+
|
33
|
+
def versioncmp(a, b)
|
34
|
+
Puppet::Util::Package.versioncmp(a, b)
|
35
|
+
end
|
36
|
+
end
|
@@ -1,12 +1,20 @@
|
|
1
|
-
# Call a lambda
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# Call a [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html)
|
2
|
+
# with the given arguments and return the result. Since a lambda's scope is
|
3
|
+
# [local](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html#lambda-scope)
|
4
|
+
# to the lambda, you can use the `with` function to create private blocks of code within a
|
5
|
+
# class using variables whose values cannot be accessed outside of the lambda.
|
5
6
|
#
|
6
|
-
# @example Using with
|
7
|
+
# @example Using `with`
|
7
8
|
#
|
8
|
-
#
|
9
|
-
#
|
9
|
+
# ~~~ puppet
|
10
|
+
# # Concatenate three strings into a single string formatted as a list.
|
11
|
+
# $fruit = with("apples", "oranges", "bananas") |$x, $y, $z| {
|
12
|
+
# "${x}, ${y}, and ${z}"
|
13
|
+
# }
|
14
|
+
# $check_var = $x
|
15
|
+
# # $fruit contains "apples, oranges, and bananas"
|
16
|
+
# # $check_var is undefined, as the value of $x is local to the lambda.
|
17
|
+
# ~~~
|
10
18
|
#
|
11
19
|
# @since 4.0.0
|
12
20
|
#
|
@@ -47,7 +47,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
47
47
|
node = node_from_request(request)
|
48
48
|
node.trusted_data = Puppet.lookup(:trusted_information) { Puppet::Context::TrustedInformation.local(node) }.to_h
|
49
49
|
|
50
|
-
if catalog = compile(node)
|
50
|
+
if catalog = compile(node, request.options[:code_id])
|
51
51
|
return catalog
|
52
52
|
else
|
53
53
|
# This shouldn't actually happen; we should either return
|
@@ -82,7 +82,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
82
82
|
end
|
83
83
|
|
84
84
|
# Compile the actual catalog.
|
85
|
-
def compile(node)
|
85
|
+
def compile(node, code_id)
|
86
86
|
str = "Compiled catalog for #{node.name}"
|
87
87
|
str += " in environment #{node.environment}" if node.environment
|
88
88
|
config = nil
|
@@ -90,7 +90,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
90
90
|
benchmark(:notice, str) do
|
91
91
|
Puppet::Util::Profiler.profile(str, [:compiler, :compile, node.environment, node.name]) do
|
92
92
|
begin
|
93
|
-
config = Puppet::Parser::Compiler.compile(node)
|
93
|
+
config = Puppet::Parser::Compiler.compile(node, code_id)
|
94
94
|
rescue Puppet::Error => detail
|
95
95
|
Puppet.err(detail.to_s) if networked?
|
96
96
|
raise
|
@@ -41,15 +41,17 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Resource::Catalog::Com
|
|
41
41
|
raise "Did not get catalog back" unless catalog.is_a?(model)
|
42
42
|
|
43
43
|
catalog.resources.find_all { |res| res.type == "File" }.each do |resource|
|
44
|
+
next if resource[:ensure] == 'absent'
|
45
|
+
|
44
46
|
next unless source = resource[:source]
|
45
47
|
next unless source =~ /^puppet:/
|
46
48
|
|
47
49
|
file = resource.to_ral
|
48
50
|
|
49
51
|
if file.recurse?
|
50
|
-
add_children(request
|
52
|
+
add_children(request, catalog, resource, file)
|
51
53
|
else
|
52
|
-
find_and_replace_metadata(request
|
54
|
+
find_and_replace_metadata(request, resource, file)
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
@@ -65,10 +67,10 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Resource::Catalog::Com
|
|
65
67
|
# from the resource, inserts the metadata into the file resource, and uploads
|
66
68
|
# the file contents of the source to the file bucket.
|
67
69
|
#
|
68
|
-
# @param
|
70
|
+
# @param request [Puppet::Indirector::Request] The request for the catalog
|
69
71
|
# @param resource [Puppet::Resource] The resource to replace the metadata in
|
70
72
|
# @param file [Puppet::Type::File] The file RAL associated with the resource
|
71
|
-
def find_and_replace_metadata(
|
73
|
+
def find_and_replace_metadata(request, resource, file)
|
72
74
|
# We remove URL info from it, so it forces a local copy
|
73
75
|
# rather than routing through the network.
|
74
76
|
# Weird, but true.
|
@@ -77,7 +79,7 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Resource::Catalog::Com
|
|
77
79
|
|
78
80
|
raise "Could not get metadata for #{resource[:source]}" unless metadata = file.parameter(:source).metadata
|
79
81
|
|
80
|
-
replace_metadata(
|
82
|
+
replace_metadata(request, resource, metadata)
|
81
83
|
end
|
82
84
|
|
83
85
|
# Rewrite a given file resource with the metadata from a fileserver based file
|
@@ -85,13 +87,14 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Resource::Catalog::Com
|
|
85
87
|
# This performs the actual metadata rewrite for the given file resource and
|
86
88
|
# uploads the content of the source file to the filebucket.
|
87
89
|
#
|
88
|
-
# @param
|
90
|
+
# @param request [Puppet::Indirector::Request] The request for the catalog
|
89
91
|
# @param resource [Puppet::Resource] The resource to add the metadata to
|
90
92
|
# @param metadata [Puppet::FileServing::Metadata] The metadata of the given fileserver based file
|
91
|
-
def replace_metadata(
|
92
|
-
[:
|
93
|
-
resource[param] ||= metadata.send(param)
|
93
|
+
def replace_metadata(request, resource, metadata)
|
94
|
+
[:owner, :group].each do |param|
|
95
|
+
resource[param] ||= metadata.send(param).to_s
|
94
96
|
end
|
97
|
+
resource[:mode] ||= metadata.send(:mode).to_s(8)
|
95
98
|
|
96
99
|
resource[:ensure] = metadata.ftype
|
97
100
|
if metadata.ftype == "file"
|
@@ -101,21 +104,26 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Resource::Catalog::Com
|
|
101
104
|
end
|
102
105
|
end
|
103
106
|
|
104
|
-
store_content(resource) if resource[:ensure] == "file"
|
107
|
+
store_content(request, resource) if resource[:ensure] == "file"
|
105
108
|
old_source = resource.delete(:source)
|
106
|
-
Puppet.info "Metadata for #{resource} in catalog for '#{
|
109
|
+
Puppet.info "Metadata for #{resource} in catalog for '#{request.key}' added from '#{old_source}'"
|
107
110
|
end
|
108
111
|
|
109
112
|
# Generate children resources for a recursive file and add them to the catalog.
|
110
113
|
#
|
111
|
-
# @param
|
114
|
+
# @param request [Puppet::Indirector::Request] The request for the catalog
|
112
115
|
# @param catalog [Puppet::Resource::Catalog]
|
113
116
|
# @param resource [Puppet::Resource]
|
114
117
|
# @param file [Puppet::Type::File] The file RAL associated with the resource
|
115
|
-
def add_children(
|
116
|
-
|
117
|
-
|
118
|
-
|
118
|
+
def add_children(request, catalog, resource, file)
|
119
|
+
children = get_child_resources(request, catalog, resource, file)
|
120
|
+
# get_child_resources() returned early because source is not
|
121
|
+
# a directory, but we still need to replace the metadata of the
|
122
|
+
# resource, so we do it here before returning.
|
123
|
+
if children.nil?
|
124
|
+
find_and_replace_metadata(request, resource, file)
|
125
|
+
return
|
126
|
+
end
|
119
127
|
|
120
128
|
remove_existing_resources(children, catalog)
|
121
129
|
|
@@ -127,13 +135,13 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Resource::Catalog::Com
|
|
127
135
|
|
128
136
|
# Given a recursive file resource, recursively generate its children resources
|
129
137
|
#
|
130
|
-
# @param
|
138
|
+
# @param request [Puppet::Indirector::Request] The request for the catalog
|
131
139
|
# @param catalog [Puppet::Resource::Catalog]
|
132
140
|
# @param resource [Puppet::Resource]
|
133
141
|
# @param file [Puppet::Type::File] The file RAL associated with the resource
|
134
142
|
#
|
135
143
|
# @return [Array<Puppet::Resource>] The recursively generated File resources for the given resource
|
136
|
-
def get_child_resources(
|
144
|
+
def get_child_resources(request, catalog, resource, file)
|
137
145
|
sourceselect = file[:sourceselect]
|
138
146
|
children = {}
|
139
147
|
|
@@ -158,44 +166,52 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Resource::Catalog::Com
|
|
158
166
|
end
|
159
167
|
end
|
160
168
|
|
169
|
+
parent_meta = nil
|
161
170
|
total.each do |meta|
|
162
171
|
# This is the top-level parent directory
|
163
172
|
if meta.relative_path == "."
|
164
|
-
|
173
|
+
parent_meta = meta
|
165
174
|
next
|
166
175
|
end
|
167
|
-
children[meta.relative_path] ||=
|
176
|
+
child = children[meta.relative_path] ||=
|
177
|
+
Puppet::Resource.new(:file, File.join(file[:path], meta.relative_path))
|
168
178
|
|
169
179
|
# I think this is safe since it's a URL, not an actual file
|
170
|
-
|
180
|
+
child[:source] = source + "/" + meta.relative_path
|
171
181
|
resource.each do |param, value|
|
172
182
|
# These should never be passed to our children.
|
173
183
|
unless [:parent, :ensure, :recurse, :recurselimit, :target, :alias, :source].include? param
|
174
|
-
|
184
|
+
child[param] = value
|
175
185
|
end
|
176
186
|
end
|
177
|
-
replace_metadata(
|
187
|
+
replace_metadata(request, child, meta)
|
178
188
|
end
|
189
|
+
replace_metadata(request, resource, parent_meta)
|
179
190
|
|
180
191
|
children
|
181
192
|
end
|
182
193
|
|
183
|
-
# Remove any file resources in the catalog
|
184
|
-
# given file resources.
|
194
|
+
# Remove any recursed file resources already in the catalog
|
185
195
|
#
|
186
196
|
# @param children [Array<Puppet::Resource>]
|
187
197
|
# @param catalog [Puppet::Resource::Catalog]
|
188
198
|
def remove_existing_resources(children, catalog)
|
189
|
-
|
190
|
-
|
191
|
-
|
199
|
+
relative_paths = children.keys
|
200
|
+
relative_paths.each do |relative_path|
|
201
|
+
child = children[relative_path]
|
202
|
+
if catalog.resource(child.ref)
|
203
|
+
Puppet.debug("Resource #{child.ref} already managed, removing from recursed children")
|
204
|
+
children.delete(relative_path)
|
205
|
+
end
|
206
|
+
end
|
192
207
|
end
|
193
208
|
|
194
209
|
# Retrieve the source of a file resource using a fileserver based source and
|
195
210
|
# upload it to the filebucket.
|
196
211
|
#
|
212
|
+
# @param request [Puppet::Indirector::Request] The request for the catalog
|
197
213
|
# @param resource [Puppet::Resource]
|
198
|
-
def store_content(resource)
|
214
|
+
def store_content(request, resource)
|
199
215
|
@summer ||= Puppet::Util::Checksums
|
200
216
|
|
201
217
|
type = @summer.sumtype(resource[:content])
|
@@ -205,7 +221,7 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Resource::Catalog::Com
|
|
205
221
|
Puppet.info "Content for '#{resource[:source]}' already exists"
|
206
222
|
else
|
207
223
|
Puppet.info "Storing content for source '#{resource[:source]}'"
|
208
|
-
content = Puppet::FileServing::Content.indirection.find(resource[:source])
|
224
|
+
content = Puppet::FileServing::Content.indirection.find(resource[:source], {:environment => request.environment})
|
209
225
|
file = Puppet::FileBucket::File.new(content.content)
|
210
226
|
Puppet::FileBucket::File.indirection.save(file)
|
211
227
|
end
|