puppet 8.5.1 → 8.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +6 -2
- data/Gemfile.lock +55 -48
- data/Rakefile +45 -22
- data/examples/hiera/README.md +68 -57
- data/examples/hiera/data/common.yaml +12 -0
- data/examples/hiera/data/dc1.yaml +6 -0
- data/examples/hiera/hiera.yaml +15 -0
- data/examples/hiera/modules/ntp/data/common.yaml +4 -0
- data/examples/hiera/modules/ntp/hiera.yaml +9 -0
- data/examples/hiera/modules/ntp/manifests/config.pp +16 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
- data/examples/hiera/modules/users/manifests/common.pp +7 -2
- data/examples/hiera/modules/users/manifests/dc1.pp +7 -2
- data/examples/hiera/site.pp +1 -1
- data/ext/project_data.yaml +0 -45
- data/ext/windows/service/daemon.rb +49 -55
- data/lib/hiera/scope.rb +3 -3
- data/lib/hiera_puppet.rb +1 -1
- data/lib/puppet/agent/disabler.rb +1 -1
- data/lib/puppet/application/agent.rb +2 -2
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +6 -6
- data/lib/puppet/application/device.rb +99 -100
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/face_base.rb +7 -7
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/lookup.rb +5 -5
- data/lib/puppet/application/resource.rb +10 -3
- data/lib/puppet/application/ssl.rb +3 -3
- data/lib/puppet/application.rb +16 -18
- data/lib/puppet/coercion.rb +1 -1
- data/lib/puppet/configurer/downloader.rb +9 -4
- data/lib/puppet/configurer/fact_handler.rb +12 -13
- data/lib/puppet/configurer.rb +16 -18
- data/lib/puppet/confine/feature.rb +1 -1
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine_collection.rb +1 -1
- data/lib/puppet/confiner.rb +2 -2
- data/lib/puppet/daemon.rb +4 -3
- data/lib/puppet/datatypes.rb +5 -6
- data/lib/puppet/defaults.rb +14 -8
- data/lib/puppet/environments.rb +3 -7
- data/lib/puppet/error.rb +3 -3
- data/lib/puppet/external/dot.rb +42 -34
- data/lib/puppet/face/catalog/select.rb +1 -1
- data/lib/puppet/face/epp.rb +7 -9
- data/lib/puppet/face/help.rb +12 -12
- data/lib/puppet/face/module/changes.rb +1 -3
- data/lib/puppet/face/module/list.rb +37 -37
- data/lib/puppet/face/node/clean.rb +1 -1
- data/lib/puppet/face/parser.rb +6 -8
- data/lib/puppet/face/report.rb +5 -7
- data/lib/puppet/facter_impl.rb +1 -1
- data/lib/puppet/feature/base.rb +9 -11
- data/lib/puppet/feature/pe_license.rb +1 -1
- data/lib/puppet/feature/ssh.rb +1 -1
- data/lib/puppet/feature/telnet.rb +3 -5
- data/lib/puppet/feature/zlib.rb +1 -1
- data/lib/puppet/ffi/windows/constants.rb +1 -1
- data/lib/puppet/ffi/windows/functions.rb +2 -2
- data/lib/puppet/ffi/windows/structs.rb +3 -3
- data/lib/puppet/file_bucket/dipper.rb +4 -4
- data/lib/puppet/file_bucket/file.rb +4 -4
- data/lib/puppet/file_serving/base.rb +5 -5
- data/lib/puppet/file_serving/configuration/parser.rb +9 -9
- data/lib/puppet/file_serving/configuration.rb +3 -3
- data/lib/puppet/file_serving/fileset.rb +13 -13
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +13 -9
- data/lib/puppet/file_serving/mount/file.rb +6 -6
- data/lib/puppet/file_serving/mount/locales.rb +2 -4
- data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -4
- data/lib/puppet/file_serving/mount/plugins.rb +2 -4
- data/lib/puppet/file_serving/mount.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/path_pattern.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +17 -16
- data/lib/puppet/file_system/windows.rb +26 -18
- data/lib/puppet/forge/cache.rb +2 -2
- data/lib/puppet/forge/errors.rb +1 -1
- data/lib/puppet/forge/repository.rb +2 -2
- data/lib/puppet/forge.rb +13 -19
- data/lib/puppet/functions/abs.rb +2 -2
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/compare.rb +2 -2
- data/lib/puppet/functions/contain.rb +1 -1
- data/lib/puppet/functions/defined.rb +2 -2
- data/lib/puppet/functions/dig.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +11 -13
- data/lib/puppet/functions/get.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +3 -5
- data/lib/puppet/functions/import.rb +1 -1
- data/lib/puppet/functions/json_data.rb +4 -6
- data/lib/puppet/functions/max.rb +2 -2
- data/lib/puppet/functions/min.rb +2 -2
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -10
- data/lib/puppet/functions/regsubst.rb +2 -2
- data/lib/puppet/functions/require.rb +1 -1
- data/lib/puppet/functions/yaml_data.rb +11 -13
- data/lib/puppet/functions.rb +32 -37
- data/lib/puppet/generate/type.rb +2 -2
- data/lib/puppet/gettext/config.rb +9 -9
- data/lib/puppet/graph/rb_tree_map.rb +31 -23
- data/lib/puppet/graph/relationship_graph.rb +12 -12
- data/lib/puppet/graph/simple_graph.rb +8 -10
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/dns.rb +4 -4
- data/lib/puppet/http/external_client.rb +1 -1
- data/lib/puppet/http/factory.rb +1 -1
- data/lib/puppet/http/proxy.rb +15 -15
- data/lib/puppet/http/redirector.rb +6 -2
- data/lib/puppet/http/resolver.rb +2 -2
- data/lib/puppet/http/retry_after_handler.rb +2 -2
- data/lib/puppet/http/service/ca.rb +1 -1
- data/lib/puppet/http/service/compiler.rb +4 -4
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/report.rb +2 -2
- data/lib/puppet/http/service.rb +9 -13
- data/lib/puppet/http/session.rb +1 -1
- data/lib/puppet/http/site.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +44 -45
- data/lib/puppet/indirector/catalog/rest.rb +7 -5
- data/lib/puppet/indirector/catalog/store_configs.rb +1 -1
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +7 -9
- data/lib/puppet/indirector/fact_search.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/facts/json.rb +1 -1
- data/lib/puppet/indirector/facts/store_configs.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +17 -17
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -3
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +27 -29
- data/lib/puppet/indirector/json.rb +4 -4
- data/lib/puppet/indirector/memory.rb +2 -2
- data/lib/puppet/indirector/msgpack.rb +5 -5
- data/lib/puppet/indirector/node/store_configs.rb +1 -1
- data/lib/puppet/indirector/none.rb +1 -1
- data/lib/puppet/indirector/report/json.rb +1 -1
- data/lib/puppet/indirector/report/yaml.rb +1 -1
- data/lib/puppet/indirector/request.rb +4 -4
- data/lib/puppet/indirector/resource/ral.rb +2 -4
- data/lib/puppet/indirector/resource/store_configs.rb +1 -1
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +3 -3
- data/lib/puppet/info_service/class_information_service.rb +5 -8
- data/lib/puppet/info_service/task_information_service.rb +6 -7
- data/lib/puppet/interface/action.rb +5 -5
- data/lib/puppet/interface/action_manager.rb +5 -5
- data/lib/puppet/interface/documentation.rb +5 -5
- data/lib/puppet/interface/face_collection.rb +7 -7
- data/lib/puppet/interface/option.rb +2 -2
- data/lib/puppet/interface/option_manager.rb +6 -6
- data/lib/puppet/interface.rb +4 -4
- data/lib/puppet/metatype/manager.rb +2 -2
- data/lib/puppet/module/plan.rb +10 -10
- data/lib/puppet/module/task.rb +8 -8
- data/lib/puppet/module.rb +39 -41
- data/lib/puppet/module_tool/applications/application.rb +10 -8
- data/lib/puppet/module_tool/applications/installer.rb +53 -50
- data/lib/puppet/module_tool/applications/unpacker.rb +6 -8
- data/lib/puppet/module_tool/applications/upgrader.rb +37 -34
- data/lib/puppet/module_tool/checksums.rb +2 -2
- data/lib/puppet/module_tool/dependency.rb +1 -1
- data/lib/puppet/module_tool/errors/base.rb +1 -1
- data/lib/puppet/module_tool/install_directory.rb +1 -1
- data/lib/puppet/module_tool/local_tarball.rb +3 -5
- data/lib/puppet/module_tool/metadata.rb +12 -8
- data/lib/puppet/module_tool/shared_behaviors.rb +27 -12
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/network/client_request.rb +5 -3
- data/lib/puppet/network/format.rb +2 -2
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +24 -44
- data/lib/puppet/network/http/api/server/v3.rb +1 -1
- data/lib/puppet/network/http/connection.rb +1 -1
- data/lib/puppet/network/http/handler.rb +8 -12
- data/lib/puppet/network/http/request.rb +1 -1
- data/lib/puppet/network/http/route.rb +9 -9
- data/lib/puppet/node/environment.rb +21 -23
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/node.rb +5 -5
- data/lib/puppet/pal/json_catalog_encoder.rb +1 -1
- data/lib/puppet/pal/pal_impl.rb +48 -50
- data/lib/puppet/pal/plan_signature.rb +1 -1
- data/lib/puppet/pal/task_signature.rb +1 -1
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/value.rb +2 -2
- data/lib/puppet/parameter/value_collection.rb +7 -7
- data/lib/puppet/parameter.rb +8 -9
- data/lib/puppet/parser/ast/block_expression.rb +2 -2
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +3 -4
- data/lib/puppet/parser/ast/resource.rb +4 -4
- data/lib/puppet/parser/ast/resourceparam.rb +4 -4
- data/lib/puppet/parser/ast.rb +14 -15
- data/lib/puppet/parser/compiler.rb +26 -28
- data/lib/puppet/parser/functions/create_resources.rb +3 -3
- data/lib/puppet/parser/functions/fail.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +2 -2
- data/lib/puppet/parser/functions/tag.rb +1 -1
- data/lib/puppet/parser/functions.rb +2 -2
- data/lib/puppet/parser/relationship.rb +3 -1
- data/lib/puppet/parser/resource/param.rb +2 -2
- data/lib/puppet/parser/resource.rb +23 -23
- data/lib/puppet/parser/scope.rb +10 -10
- data/lib/puppet/parser/script_compiler.rb +1 -1
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +10 -12
- data/lib/puppet/parser.rb +1 -1
- data/lib/puppet/pops/adaptable.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +8 -8
- data/lib/puppet/pops/evaluator/callable_signature.rb +4 -4
- data/lib/puppet/pops/evaluator/collector_transformer.rb +4 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +7 -7
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +6 -6
- data/lib/puppet/pops/evaluator/compare_operator.rb +10 -10
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +56 -60
- data/lib/puppet/pops/evaluator/relationship_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/functions/function.rb +14 -16
- data/lib/puppet/pops/issue_reporter.rb +2 -2
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/dependency_loader.rb +3 -3
- data/lib/puppet/pops/loader/loader.rb +4 -4
- data/lib/puppet/pops/loader/loader_paths.rb +3 -3
- data/lib/puppet/pops/loader/module_loaders.rb +11 -11
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +5 -1
- data/lib/puppet/pops/loader/static_loader.rb +5 -5
- data/lib/puppet/pops/loaders.rb +3 -3
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
- data/lib/puppet/pops/lookup/explainer.rb +2 -2
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +15 -11
- data/lib/puppet/pops/lookup/interpolation.rb +3 -3
- data/lib/puppet/pops/lookup/key_recorder.rb +1 -1
- data/lib/puppet/pops/lookup/location_resolver.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +7 -7
- data/lib/puppet/pops/lookup/module_data_provider.rb +9 -9
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +6 -6
- data/lib/puppet/pops/migration/migration_checker.rb +1 -1
- data/lib/puppet/pops/model/ast_transformer.rb +9 -11
- data/lib/puppet/pops/model/factory.rb +4 -5
- data/lib/puppet/pops/parser/epp_parser.rb +2 -2
- data/lib/puppet/pops/parser/epp_support.rb +1 -1
- data/lib/puppet/pops/parser/evaluating_parser.rb +2 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +4 -4
- data/lib/puppet/pops/parser/interpolation_support.rb +3 -3
- data/lib/puppet/pops/parser/lexer2.rb +20 -12
- data/lib/puppet/pops/parser/lexer_support.rb +1 -1
- data/lib/puppet/pops/parser/locator.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +12 -14
- data/lib/puppet/pops/parser/pn_parser.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +8 -8
- data/lib/puppet/pops/patterns.rb +12 -12
- data/lib/puppet/pops/pcore.rb +1 -1
- data/lib/puppet/pops/pn.rb +2 -2
- data/lib/puppet/pops/puppet_stack.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_reader.rb +2 -2
- data/lib/puppet/pops/serialization/abstract_writer.rb +3 -3
- data/lib/puppet/pops/time/timestamp.rb +1 -1
- data/lib/puppet/pops/types/class_loader.rb +4 -6
- data/lib/puppet/pops/types/iterable.rb +1 -1
- data/lib/puppet/pops/types/p_binary_type.rb +1 -1
- data/lib/puppet/pops/types/p_init_type.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +5 -5
- data/lib/puppet/pops/types/p_object_type_extension.rb +4 -6
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +10 -10
- data/lib/puppet/pops/types/p_uri_type.rb +4 -4
- data/lib/puppet/pops/types/recursion_guard.rb +4 -4
- data/lib/puppet/pops/types/ruby_generator.rb +2 -2
- data/lib/puppet/pops/types/string_converter.rb +12 -8
- data/lib/puppet/pops/types/tree_iterators.rb +4 -6
- data/lib/puppet/pops/types/type_calculator.rb +10 -10
- data/lib/puppet/pops/types/type_factory.rb +7 -3
- data/lib/puppet/pops/types/type_formatter.rb +22 -24
- data/lib/puppet/pops/types/type_mismatch_describer.rb +24 -24
- data/lib/puppet/pops/types/types.rb +28 -24
- data/lib/puppet/pops/utils.rb +38 -42
- data/lib/puppet/pops/validation/checker4_0.rb +10 -10
- data/lib/puppet/pops/validation/tasks_checker.rb +1 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property/ensure.rb +12 -14
- data/lib/puppet/property/keyvalue.rb +4 -4
- data/lib/puppet/property/list.rb +4 -4
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/property.rb +31 -33
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/exec.rb +2 -2
- data/lib/puppet/provider/file/posix.rb +19 -17
- data/lib/puppet/provider/file/windows.rb +13 -19
- data/lib/puppet/provider/group/directoryservice.rb +3 -2
- data/lib/puppet/provider/group/groupadd.rb +32 -11
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/nameservice/directoryservice.rb +29 -29
- data/lib/puppet/provider/nameservice/objectadd.rb +2 -4
- data/lib/puppet/provider/nameservice/pw.rb +1 -2
- data/lib/puppet/provider/nameservice.rb +8 -8
- data/lib/puppet/provider/package/aix.rb +19 -19
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +18 -18
- data/lib/puppet/provider/package/aptitude.rb +1 -3
- data/lib/puppet/provider/package/aptrpm.rb +9 -9
- data/lib/puppet/provider/package/blastwave.rb +10 -14
- data/lib/puppet/provider/package/dnfmodule.rb +3 -3
- data/lib/puppet/provider/package/dpkg.rb +11 -13
- data/lib/puppet/provider/package/fink.rb +14 -14
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +12 -14
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/nim.rb +10 -10
- data/lib/puppet/provider/package/openbsd.rb +22 -22
- data/lib/puppet/provider/package/opkg.rb +6 -6
- data/lib/puppet/provider/package/pacman.rb +35 -29
- data/lib/puppet/provider/package/pip.rb +25 -24
- data/lib/puppet/provider/package/pkg.rb +15 -15
- data/lib/puppet/provider/package/pkgdmg.rb +10 -10
- data/lib/puppet/provider/package/pkgin.rb +2 -2
- data/lib/puppet/provider/package/pkgng.rb +5 -5
- data/lib/puppet/provider/package/pkgutil.rb +17 -21
- data/lib/puppet/provider/package/portage.rb +59 -61
- data/lib/puppet/provider/package/ports.rb +12 -11
- data/lib/puppet/provider/package/portupgrade.rb +35 -35
- data/lib/puppet/provider/package/puppetserver_gem.rb +10 -9
- data/lib/puppet/provider/package/rpm.rb +26 -26
- data/lib/puppet/provider/package/rug.rb +7 -9
- data/lib/puppet/provider/package/sun.rb +4 -4
- data/lib/puppet/provider/package/up2date.rb +5 -7
- data/lib/puppet/provider/package/urpmi.rb +6 -6
- data/lib/puppet/provider/package/windows/exe_package.rb +7 -7
- data/lib/puppet/provider/package/windows/msi_package.rb +3 -3
- data/lib/puppet/provider/package/windows/package.rb +2 -2
- data/lib/puppet/provider/package/windows.rb +3 -5
- data/lib/puppet/provider/package/xbps.rb +127 -0
- data/lib/puppet/provider/package/yum.rb +33 -37
- data/lib/puppet/provider/package/zypper.rb +12 -14
- data/lib/puppet/provider/package.rb +1 -1
- data/lib/puppet/provider/package_targetable.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +9 -9
- data/lib/puppet/provider/service/base.rb +16 -21
- data/lib/puppet/provider/service/bsd.rb +4 -4
- data/lib/puppet/provider/service/daemontools.rb +31 -31
- data/lib/puppet/provider/service/debian.rb +6 -6
- data/lib/puppet/provider/service/freebsd.rb +36 -36
- data/lib/puppet/provider/service/gentoo.rb +6 -6
- data/lib/puppet/provider/service/init.rb +19 -19
- data/lib/puppet/provider/service/launchd.rb +22 -22
- data/lib/puppet/provider/service/openbsd.rb +10 -10
- data/lib/puppet/provider/service/openrc.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +3 -3
- data/lib/puppet/provider/service/rcng.rb +3 -3
- data/lib/puppet/provider/service/redhat.rb +4 -4
- data/lib/puppet/provider/service/runit.rb +6 -6
- data/lib/puppet/provider/service/service.rb +5 -7
- data/lib/puppet/provider/service/smf.rb +28 -27
- data/lib/puppet/provider/service/src.rb +7 -7
- data/lib/puppet/provider/service/systemd.rb +31 -37
- data/lib/puppet/provider/service/upstart.rb +17 -17
- data/lib/puppet/provider/service/windows.rb +7 -7
- data/lib/puppet/provider/user/aix.rb +4 -2
- data/lib/puppet/provider/user/directoryservice.rb +34 -36
- data/lib/puppet/provider/user/hpux.rb +10 -14
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +16 -18
- data/lib/puppet/provider/user/useradd.rb +7 -7
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider.rb +8 -8
- data/lib/puppet/reference/indirection.rb +3 -0
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/providers.rb +3 -3
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/relationship.rb +4 -5
- data/lib/puppet/reports/http.rb +1 -1
- data/lib/puppet/reports/log.rb +2 -2
- data/lib/puppet/reports/store.rb +4 -4
- data/lib/puppet/reports.rb +2 -2
- data/lib/puppet/resource/catalog.rb +16 -16
- data/lib/puppet/resource/status.rb +3 -3
- data/lib/puppet/resource/type.rb +8 -8
- data/lib/puppet/resource/type_collection.rb +1 -1
- data/lib/puppet/resource.rb +41 -41
- data/lib/puppet/scheduler/scheduler.rb +1 -1
- data/lib/puppet/scheduler/splay_job.rb +9 -0
- data/lib/puppet/settings/alias_setting.rb +3 -5
- data/lib/puppet/settings/base_setting.rb +11 -11
- data/lib/puppet/settings/boolean_setting.rb +2 -2
- data/lib/puppet/settings/config_file.rb +5 -4
- data/lib/puppet/settings/duration_setting.rb +2 -2
- data/lib/puppet/settings/environment_conf.rb +3 -3
- data/lib/puppet/settings/file_or_directory_setting.rb +2 -2
- data/lib/puppet/settings/file_setting.rb +11 -11
- data/lib/puppet/settings/ini_file.rb +3 -3
- data/lib/puppet/settings/port_setting.rb +1 -1
- data/lib/puppet/settings/priority_setting.rb +2 -2
- data/lib/puppet/settings/ttl_setting.rb +2 -2
- data/lib/puppet/settings/value_translator.rb +8 -8
- data/lib/puppet/settings.rb +65 -70
- data/lib/puppet/ssl/base.rb +2 -4
- data/lib/puppet/ssl/certificate_request.rb +18 -22
- data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
- data/lib/puppet/ssl/oids.rb +2 -2
- data/lib/puppet/ssl/openssl_loader.rb +4 -4
- data/lib/puppet/syntax_checkers/base64.rb +3 -3
- data/lib/puppet/syntax_checkers/epp.rb +3 -3
- data/lib/puppet/syntax_checkers/json.rb +3 -3
- data/lib/puppet/syntax_checkers/pp.rb +3 -3
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +2 -2
- data/lib/puppet/transaction/event_manager.rb +5 -5
- data/lib/puppet/transaction/persistence.rb +12 -14
- data/lib/puppet/transaction/report.rb +4 -4
- data/lib/puppet/transaction/resource_harness.rb +2 -2
- data/lib/puppet/transaction.rb +14 -18
- data/lib/puppet/type/component.rb +3 -3
- data/lib/puppet/type/exec.rb +51 -45
- data/lib/puppet/type/file/checksum_value.rb +1 -1
- data/lib/puppet/type/file/content.rb +6 -6
- data/lib/puppet/type/file/ctime.rb +2 -2
- data/lib/puppet/type/file/data_sync.rb +3 -3
- data/lib/puppet/type/file/ensure.rb +16 -15
- data/lib/puppet/type/file/mode.rb +9 -9
- data/lib/puppet/type/file/mtime.rb +2 -2
- data/lib/puppet/type/file/selcontext.rb +14 -14
- data/lib/puppet/type/file/source.rb +19 -21
- data/lib/puppet/type/file/target.rb +11 -11
- data/lib/puppet/type/file.rb +21 -21
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/group.rb +3 -3
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +4 -4
- data/lib/puppet/type/resources.rb +6 -6
- data/lib/puppet/type/schedule.rb +9 -9
- data/lib/puppet/type/service.rb +6 -8
- data/lib/puppet/type/tidy.rb +22 -24
- data/lib/puppet/type/user.rb +13 -13
- data/lib/puppet/type.rb +76 -88
- data/lib/puppet/util/at_fork/solaris.rb +33 -37
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/backups.rb +9 -9
- data/lib/puppet/util/character_encoding.rb +7 -6
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +8 -8
- data/lib/puppet/util/colors.rb +1 -1
- data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -1
- data/lib/puppet/util/command_line/trollop.rb +60 -46
- data/lib/puppet/util/command_line.rb +2 -2
- data/lib/puppet/util/constant_inflector.rb +2 -2
- data/lib/puppet/util/diff.rb +19 -21
- data/lib/puppet/util/docs.rb +2 -2
- data/lib/puppet/util/errors.rb +9 -9
- data/lib/puppet/util/execution.rb +32 -9
- data/lib/puppet/util/feature.rb +1 -1
- data/lib/puppet/util/fileparsing.rb +12 -16
- data/lib/puppet/util/filetype.rb +36 -40
- data/lib/puppet/util/inifile.rb +6 -12
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/ldap/manager.rb +10 -12
- data/lib/puppet/util/lockfile.rb +6 -8
- data/lib/puppet/util/log/destination.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +4 -4
- data/lib/puppet/util/log.rb +12 -9
- data/lib/puppet/util/logging.rb +11 -11
- data/lib/puppet/util/metric.rb +3 -3
- data/lib/puppet/util/monkey_patches.rb +5 -7
- data/lib/puppet/util/network_device/config.rb +3 -3
- data/lib/puppet/util/package/version/debian.rb +27 -28
- data/lib/puppet/util/package/version/pip.rb +5 -5
- data/lib/puppet/util/package/version/range/eq.rb +1 -1
- data/lib/puppet/util/package/version/rpm.rb +1 -1
- data/lib/puppet/util/package.rb +2 -2
- data/lib/puppet/util/pidlock.rb +2 -2
- data/lib/puppet/util/platform.rb +1 -1
- data/lib/puppet/util/plist.rb +8 -10
- data/lib/puppet/util/posix.rb +17 -17
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/provider_features.rb +3 -3
- data/lib/puppet/util/rdoc/code_objects.rb +3 -3
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +63 -64
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +23 -23
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +12 -12
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +1 -1
- data/lib/puppet/util/reference.rb +13 -9
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +18 -19
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/selinux.rb +7 -7
- data/lib/puppet/util/storage.rb +10 -12
- data/lib/puppet/util/suidmanager.rb +18 -19
- data/lib/puppet/util/symbolic_file_mode.rb +71 -75
- data/lib/puppet/util/tag_set.rb +2 -2
- data/lib/puppet/util/tagging.rb +8 -10
- data/lib/puppet/util/terminal.rb +4 -4
- data/lib/puppet/util/user_attr.rb +7 -7
- data/lib/puppet/util/watcher.rb +3 -5
- data/lib/puppet/util/windows/access_control_list.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +42 -42
- data/lib/puppet/util/windows/com.rb +2 -2
- data/lib/puppet/util/windows/daemon.rb +64 -68
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +18 -25
- data/lib/puppet/util/windows/monkey_patches/process.rb +1 -1
- data/lib/puppet/util/windows/principal.rb +8 -8
- data/lib/puppet/util/windows/process.rb +16 -28
- data/lib/puppet/util/windows/registry.rb +16 -15
- data/lib/puppet/util/windows/root_certs.rb +2 -2
- data/lib/puppet/util/windows/security.rb +31 -31
- data/lib/puppet/util/windows/service.rb +11 -11
- data/lib/puppet/util/windows/sid.rb +8 -8
- data/lib/puppet/util/windows/user.rb +18 -20
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/util.rb +55 -46
- data/lib/puppet/version.rb +2 -2
- data/lib/puppet/x509/pem_store.rb +1 -1
- data/lib/puppet.rb +3 -3
- data/locales/puppet.pot +604 -600
- data/man/man5/puppet.conf.5 +10 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +5 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- metadata +13 -23
- data/examples/hiera/etc/hiera.yaml +0 -15
- data/examples/hiera/etc/hieradb/common.yaml +0 -3
- data/examples/hiera/etc/hieradb/dc1.yaml +0 -6
- data/examples/hiera/etc/hieradb/development.yaml +0 -2
- data/examples/hiera/etc/puppet.conf +0 -3
- data/examples/hiera/modules/data/manifests/common.pp +0 -4
- data/examples/hiera/modules/ntp/manifests/data.pp +0 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.erb +0 -3
- data/examples/hiera/modules/users/manifests/development.pp +0 -4
- data/tasks/benchmark.rake +0 -180
- data/tasks/cfpropertylist.rake +0 -15
- data/tasks/ci.rake +0 -24
- data/tasks/generate_ast_model.rake +0 -90
- data/tasks/generate_cert_fixtures.rake +0 -199
- data/tasks/manpages.rake +0 -67
- data/tasks/memwalk.rake +0 -195
- data/tasks/parallel.rake +0 -410
- data/tasks/parser.rake +0 -22
- data/tasks/yard.rake +0 -59
data/lib/puppet/module/task.rb
CHANGED
@@ -49,13 +49,13 @@ class Puppet::Module
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
FORBIDDEN_EXTENSIONS = %w
|
52
|
+
FORBIDDEN_EXTENSIONS = %w[.conf .md]
|
53
53
|
MOUNTS = %w[files lib scripts tasks]
|
54
54
|
|
55
55
|
def self.is_task_name?(name)
|
56
56
|
return true if name =~ /^[a-z][a-z0-9_]*$/
|
57
57
|
|
58
|
-
|
58
|
+
false
|
59
59
|
end
|
60
60
|
|
61
61
|
def self.is_tasks_file?(path)
|
@@ -65,12 +65,12 @@ class Puppet::Module
|
|
65
65
|
# Determine whether a file has a legal name for either a task's executable or metadata file.
|
66
66
|
def self.is_tasks_filename?(path)
|
67
67
|
name_less_extension = File.basename(path, '.*')
|
68
|
-
return false
|
68
|
+
return false unless is_task_name?(name_less_extension)
|
69
69
|
|
70
70
|
FORBIDDEN_EXTENSIONS.each do |ext|
|
71
71
|
return false if path.end_with?(ext)
|
72
72
|
end
|
73
|
-
|
73
|
+
true
|
74
74
|
end
|
75
75
|
|
76
76
|
def self.get_file_details(path, mod)
|
@@ -130,7 +130,7 @@ class Puppet::Module
|
|
130
130
|
|
131
131
|
unless File.exist?(path)
|
132
132
|
msg = _("Could not find %{path} on disk" % { path: path })
|
133
|
-
raise InvalidFile
|
133
|
+
raise InvalidFile, msg
|
134
134
|
end
|
135
135
|
|
136
136
|
last_char = file[-1] == '/'
|
@@ -226,7 +226,7 @@ class Puppet::Module
|
|
226
226
|
|
227
227
|
# file paths must be relative to the modules task directory
|
228
228
|
def initialize(pup_module, task_name, module_executables, metadata_file = nil)
|
229
|
-
|
229
|
+
unless Puppet::Module::Task.is_task_name?(task_name)
|
230
230
|
raise InvalidName, _("Task names must start with a lowercase letter and be composed of only lowercase letters, numbers, and underscores")
|
231
231
|
end
|
232
232
|
|
@@ -264,7 +264,7 @@ class Puppet::Module
|
|
264
264
|
end
|
265
265
|
|
266
266
|
def ==(other)
|
267
|
-
|
267
|
+
name == other.name &&
|
268
268
|
self.module == other.module
|
269
269
|
end
|
270
270
|
|
@@ -281,7 +281,7 @@ class Puppet::Module
|
|
281
281
|
|
282
282
|
# Abstracted here so we can add support for subdirectories later
|
283
283
|
def self.task_name_from_path(path)
|
284
|
-
|
284
|
+
File.basename(path, '.*')
|
285
285
|
end
|
286
286
|
private_class_method :task_name_from_path
|
287
287
|
end
|
data/lib/puppet/module.rb
CHANGED
@@ -46,21 +46,21 @@ class Puppet::Module
|
|
46
46
|
fullpath = File.join(path, name)
|
47
47
|
return false unless Puppet::FileSystem.directory?(fullpath)
|
48
48
|
|
49
|
-
|
49
|
+
is_module_directory_name?(name)
|
50
50
|
end
|
51
51
|
|
52
52
|
def self.is_module_directory_name?(name)
|
53
53
|
# it must match an installed module name according to forge validator
|
54
54
|
return true if name =~ /^[a-z][a-z0-9_]*$/
|
55
55
|
|
56
|
-
|
56
|
+
false
|
57
57
|
end
|
58
58
|
|
59
59
|
def self.is_module_namespaced_name?(name)
|
60
60
|
# it must match the full module name according to forge validator
|
61
|
-
return true if name =~ /^[a-zA-Z0-9]
|
61
|
+
return true if name =~ /^[a-zA-Z0-9]+-[a-z][a-z0-9_]*$/
|
62
62
|
|
63
|
-
|
63
|
+
false
|
64
64
|
end
|
65
65
|
|
66
66
|
# @api private
|
@@ -96,16 +96,14 @@ class Puppet::Module
|
|
96
96
|
|
97
97
|
# @deprecated The puppetversion module metadata field is no longer used.
|
98
98
|
def validate_puppet_version
|
99
|
-
|
99
|
+
nil
|
100
100
|
end
|
101
101
|
|
102
102
|
def has_metadata?
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
false
|
108
|
-
end
|
103
|
+
load_metadata
|
104
|
+
@metadata.is_a?(Hash) && !@metadata.empty?
|
105
|
+
rescue Puppet::Module::MissingMetadata
|
106
|
+
false
|
109
107
|
end
|
110
108
|
|
111
109
|
FILETYPES.each do |type, location|
|
@@ -118,7 +116,7 @@ class Puppet::Module
|
|
118
116
|
return false
|
119
117
|
end
|
120
118
|
|
121
|
-
|
119
|
+
true
|
122
120
|
end
|
123
121
|
|
124
122
|
# A method for returning a given file of a given type.
|
@@ -137,7 +135,7 @@ class Puppet::Module
|
|
137
135
|
|
138
136
|
return nil unless Puppet::FileSystem.exist?(full_path)
|
139
137
|
|
140
|
-
|
138
|
+
full_path
|
141
139
|
end
|
142
140
|
|
143
141
|
# Return the base directory for the given type
|
@@ -173,9 +171,9 @@ class Puppet::Module
|
|
173
171
|
end
|
174
172
|
|
175
173
|
if Puppet::FileSystem.exist?(full_path)
|
176
|
-
|
174
|
+
full_path
|
177
175
|
else
|
178
|
-
|
176
|
+
nil
|
179
177
|
end
|
180
178
|
end
|
181
179
|
|
@@ -206,9 +204,9 @@ class Puppet::Module
|
|
206
204
|
end
|
207
205
|
|
208
206
|
if Puppet::FileSystem.exist?(full_path)
|
209
|
-
|
207
|
+
full_path
|
210
208
|
else
|
211
|
-
|
209
|
+
nil
|
212
210
|
end
|
213
211
|
end
|
214
212
|
|
@@ -252,11 +250,11 @@ class Puppet::Module
|
|
252
250
|
|
253
251
|
[:source, :author, :version, :license, :dependencies].each do |attr|
|
254
252
|
value = data[attr.to_s]
|
255
|
-
raise MissingMetadata, "No #{attr} module metadata provided for #{
|
253
|
+
raise MissingMetadata, "No #{attr} module metadata provided for #{name}" if value.nil?
|
256
254
|
|
257
255
|
if attr == :dependencies
|
258
256
|
unless value.is_a?(Array)
|
259
|
-
raise MissingMetadata, "The value for the key dependencies in the file metadata.json of the module #{
|
257
|
+
raise MissingMetadata, "The value for the key dependencies in the file metadata.json of the module #{name} must be an array, not: '#{value}'"
|
260
258
|
end
|
261
259
|
|
262
260
|
value.each do |dep|
|
@@ -338,7 +336,7 @@ class Puppet::Module
|
|
338
336
|
# @return true if the module has a directory for the locale, false
|
339
337
|
# false otherwise
|
340
338
|
def has_translations?(locale)
|
341
|
-
|
339
|
+
Puppet::FileSystem.exist?(File.join(locale_directory, locale))
|
342
340
|
end
|
343
341
|
|
344
342
|
def has_external_facts?
|
@@ -368,7 +366,7 @@ class Puppet::Module
|
|
368
366
|
end
|
369
367
|
|
370
368
|
def required_by
|
371
|
-
environment.module_requirements[
|
369
|
+
environment.module_requirements[forge_name] || {}
|
372
370
|
end
|
373
371
|
|
374
372
|
# Identify and mark unmet dependencies. A dependency will be marked unmet
|
@@ -415,8 +413,8 @@ class Puppet::Module
|
|
415
413
|
:name => name,
|
416
414
|
:version_constraint => version_string.gsub(/^(?=\d)/, "v"),
|
417
415
|
:parent => {
|
418
|
-
:name =>
|
419
|
-
:version =>
|
416
|
+
:name => forge_name,
|
417
|
+
:version => version.gsub(/^(?=\d)/, "v")
|
420
418
|
},
|
421
419
|
:mod_details => {
|
422
420
|
:installed_version => dep_mod.nil? ? nil : dep_mod.version
|
@@ -429,32 +427,32 @@ class Puppet::Module
|
|
429
427
|
next
|
430
428
|
end
|
431
429
|
|
432
|
-
|
433
|
-
begin
|
434
|
-
required_version_semver_range = self.class.parse_range(version_string)
|
435
|
-
actual_version_semver = SemanticPuppet::Version.parse(dep_mod.version)
|
436
|
-
rescue ArgumentError
|
437
|
-
error_details[:reason] = :non_semantic_version
|
438
|
-
unmet_dependencies << error_details
|
439
|
-
next
|
440
|
-
end
|
430
|
+
next unless version_string
|
441
431
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
432
|
+
begin
|
433
|
+
required_version_semver_range = self.class.parse_range(version_string)
|
434
|
+
actual_version_semver = SemanticPuppet::Version.parse(dep_mod.version)
|
435
|
+
rescue ArgumentError
|
436
|
+
error_details[:reason] = :non_semantic_version
|
437
|
+
unmet_dependencies << error_details
|
438
|
+
next
|
447
439
|
end
|
440
|
+
|
441
|
+
next if required_version_semver_range.include? actual_version_semver
|
442
|
+
|
443
|
+
error_details[:reason] = :version_mismatch
|
444
|
+
unmet_dependencies << error_details
|
445
|
+
next
|
448
446
|
end
|
449
447
|
|
450
448
|
unmet_dependencies
|
451
449
|
end
|
452
450
|
|
453
451
|
def ==(other)
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
452
|
+
name == other.name &&
|
453
|
+
version == other.version &&
|
454
|
+
path == other.path &&
|
455
|
+
environment == other.environment
|
458
456
|
end
|
459
457
|
|
460
458
|
private
|
@@ -28,7 +28,11 @@ module Puppet::ModuleTool
|
|
28
28
|
when Net::HTTPOK, Net::HTTPCreated
|
29
29
|
Puppet.notice success
|
30
30
|
else
|
31
|
-
errors =
|
31
|
+
errors = begin
|
32
|
+
Puppet::Util::Json.load(response.body)['error']
|
33
|
+
rescue
|
34
|
+
"HTTP #{response.code}, #{response.body}"
|
35
|
+
end
|
32
36
|
Puppet.warning "#{failure} (#{errors})"
|
33
37
|
end
|
34
38
|
end
|
@@ -50,11 +54,9 @@ module Puppet::ModuleTool
|
|
50
54
|
|
51
55
|
if File.file?(metadata_path)
|
52
56
|
File.open(metadata_path) do |f|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
raise ArgumentError, _("Could not parse JSON %{metadata_path}") % { metadata_path: metadata_path }, ex.backtrace
|
57
|
-
end
|
57
|
+
@metadata.update(Puppet::Util::Json.load(f))
|
58
|
+
rescue Puppet::Util::Json::ParseError => ex
|
59
|
+
raise ArgumentError, _("Could not parse JSON %{metadata_path}") % { metadata_path: metadata_path }, ex.backtrace
|
58
60
|
end
|
59
61
|
end
|
60
62
|
|
@@ -62,7 +64,7 @@ module Puppet::ModuleTool
|
|
62
64
|
Puppet.warning _("A Modulefile was found in the root directory of the module. This file will be ignored and can safely be removed.")
|
63
65
|
end
|
64
66
|
|
65
|
-
|
67
|
+
@metadata
|
66
68
|
end
|
67
69
|
|
68
70
|
def load_metadata!
|
@@ -82,7 +84,7 @@ module Puppet::ModuleTool
|
|
82
84
|
raise ArgumentError, _("Invalid version format: %{version} (Semantic Versions are acceptable: http://semver.org)") % { version: version }
|
83
85
|
end
|
84
86
|
|
85
|
-
|
87
|
+
{
|
86
88
|
:module_name => module_name,
|
87
89
|
:author => author,
|
88
90
|
:dir_name => shortname,
|
@@ -72,7 +72,11 @@ module Puppet::ModuleTool
|
|
72
72
|
results[:version] = installed_module.version
|
73
73
|
return results
|
74
74
|
else
|
75
|
-
changes =
|
75
|
+
changes = begin
|
76
|
+
Checksummer.run(installed_modules[name].mod.path)
|
77
|
+
rescue
|
78
|
+
[]
|
79
|
+
end
|
76
80
|
raise AlreadyInstalledError,
|
77
81
|
:module_name => name,
|
78
82
|
:installed_version => installed_modules[name].version,
|
@@ -107,22 +111,22 @@ module Puppet::ModuleTool
|
|
107
111
|
|
108
112
|
version = release.version
|
109
113
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
114
|
+
next if forced?
|
115
|
+
|
116
|
+
# Since upgrading already installed modules can be troublesome,
|
117
|
+
# we'll place constraints on the graph for each installed module,
|
118
|
+
# locking it to upgrades within the same major version.
|
119
|
+
installed_range = ">=#{version} #{version.major}.x"
|
120
|
+
graph.add_constraint('installed', mod, installed_range) do |node|
|
121
|
+
Puppet::Module.parse_range(installed_range).include? node.version
|
122
|
+
end
|
118
123
|
|
119
|
-
|
120
|
-
|
124
|
+
release.mod.dependencies.each do |dep|
|
125
|
+
dep_name = dep['name'].tr('/', '-')
|
121
126
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
end
|
127
|
+
range = dep['version_requirement']
|
128
|
+
graph.add_constraint("#{mod} constraint", dep_name, range) do |node|
|
129
|
+
Puppet::Module.parse_range(range).include? node.version
|
126
130
|
end
|
127
131
|
end
|
128
132
|
end
|
@@ -194,28 +198,27 @@ module Puppet::ModuleTool
|
|
194
198
|
# Check for module name conflicts.
|
195
199
|
releases.each do |rel|
|
196
200
|
installed_module = installed_modules_source.by_name[rel.name.split('-').last]
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
end
|
206
|
-
|
207
|
-
raise InstallConflictError,
|
208
|
-
:requested_module => name,
|
209
|
-
:requested_version => options[:version] || 'latest',
|
210
|
-
:dependency => dependency,
|
211
|
-
:directory => installed_module.path,
|
212
|
-
:metadata => installed_module.metadata
|
201
|
+
next unless installed_module
|
202
|
+
next if installed_module.has_metadata? && installed_module.forge_name.tr('/', '-') == rel.name
|
203
|
+
|
204
|
+
if rel.name != name
|
205
|
+
dependency = {
|
206
|
+
:name => rel.name,
|
207
|
+
:version => rel.version
|
208
|
+
}
|
213
209
|
end
|
210
|
+
|
211
|
+
raise InstallConflictError,
|
212
|
+
:requested_module => name,
|
213
|
+
:requested_version => options[:version] || 'latest',
|
214
|
+
:dependency => dependency,
|
215
|
+
:directory => installed_module.path,
|
216
|
+
:metadata => installed_module.metadata
|
214
217
|
end
|
215
218
|
end
|
216
219
|
|
217
220
|
Puppet.info _("Preparing to install ...")
|
218
|
-
releases.each
|
221
|
+
releases.each(&:prepare)
|
219
222
|
|
220
223
|
Puppet.notice _('Installing -- do not interrupt ...')
|
221
224
|
releases.each do |release|
|
@@ -287,7 +290,7 @@ module Puppet::ModuleTool
|
|
287
290
|
|
288
291
|
previous = installed_modules[release.name]
|
289
292
|
previous = previous.version if previous
|
290
|
-
|
293
|
+
{
|
291
294
|
:release => release,
|
292
295
|
:name => release.name,
|
293
296
|
:path => release.install_dir.to_s,
|
@@ -368,24 +371,24 @@ module Puppet::ModuleTool
|
|
368
371
|
metadata = nil
|
369
372
|
end
|
370
373
|
|
371
|
-
|
372
|
-
dependency_info = {
|
373
|
-
:name => release[:module],
|
374
|
-
:version => release[:version][:vstring]
|
375
|
-
}
|
376
|
-
dependency = is_dependency ? dependency_info : nil
|
377
|
-
all_versions = @versions["#{@module_name}"].sort_by { |h| h[:semver] }
|
378
|
-
versions = all_versions.select { |x| x[:semver].special == '' }
|
379
|
-
versions = all_versions if versions.empty?
|
380
|
-
latest_version = versions.last[:vstring]
|
374
|
+
next unless release[:module] =~ /-#{mod.name}$/
|
381
375
|
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
376
|
+
dependency_info = {
|
377
|
+
:name => release[:module],
|
378
|
+
:version => release[:version][:vstring]
|
379
|
+
}
|
380
|
+
dependency = is_dependency ? dependency_info : nil
|
381
|
+
all_versions = @versions[@module_name.to_s].sort_by { |h| h[:semver] }
|
382
|
+
versions = all_versions.select { |x| x[:semver].special == '' }
|
383
|
+
versions = all_versions if versions.empty?
|
384
|
+
latest_version = versions.last[:vstring]
|
385
|
+
|
386
|
+
raise InstallConflictError,
|
387
|
+
:requested_module => @module_name,
|
388
|
+
:requested_version => @version || "latest: v#{latest_version}",
|
389
|
+
:dependency => dependency,
|
390
|
+
:directory => mod.path,
|
391
|
+
:metadata => metadata
|
389
392
|
end
|
390
393
|
|
391
394
|
deps = release[:dependencies]
|
@@ -9,7 +9,7 @@ module Puppet::ModuleTool
|
|
9
9
|
module Applications
|
10
10
|
class Unpacker < Application
|
11
11
|
def self.unpack(filename, target)
|
12
|
-
app =
|
12
|
+
app = new(filename, :target_dir => target)
|
13
13
|
app.unpack
|
14
14
|
app.sanity_check
|
15
15
|
app.move_into(target)
|
@@ -38,7 +38,7 @@ module Puppet::ModuleTool
|
|
38
38
|
|
39
39
|
# Return the Pathname object representing the directory where the
|
40
40
|
# module release archive was unpacked the to.
|
41
|
-
|
41
|
+
module_dir
|
42
42
|
end
|
43
43
|
|
44
44
|
# @api private
|
@@ -54,11 +54,9 @@ module Puppet::ModuleTool
|
|
54
54
|
|
55
55
|
# @api private
|
56
56
|
def unpack
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
raise RuntimeError, _("Could not extract contents of module archive: %{message}") % { message: e.message }
|
61
|
-
end
|
57
|
+
Puppet::ModuleTool::Tar.instance.unpack(@filename.to_s, tmpdir, [@module_path.stat.uid, @module_path.stat.gid].join(':'))
|
58
|
+
rescue Puppet::ExecutionFailure => e
|
59
|
+
raise RuntimeError, _("Could not extract contents of module archive: %{message}") % { message: e.message }
|
62
60
|
end
|
63
61
|
|
64
62
|
# @api private
|
@@ -66,7 +64,7 @@ module Puppet::ModuleTool
|
|
66
64
|
return @root_dir if @root_dir
|
67
65
|
|
68
66
|
# Grab the first directory containing a metadata.json file
|
69
|
-
metadata_file = Dir["#{tmpdir}/**/metadata.json"].
|
67
|
+
metadata_file = Dir["#{tmpdir}/**/metadata.json"].min_by(&:length)
|
70
68
|
|
71
69
|
if metadata_file
|
72
70
|
@root_dir = Pathname.new(metadata_file).dirname
|
@@ -76,7 +76,11 @@ module Puppet::ModuleTool
|
|
76
76
|
vstring = mod.version ? "v#{mod.version}" : '???'
|
77
77
|
Puppet.notice _("Found '%{name}' (%{version}) in %{dir} ...") % { name: name, version: colorize(:cyan, vstring), dir: dir }
|
78
78
|
unless @ignore_changes
|
79
|
-
changes =
|
79
|
+
changes = begin
|
80
|
+
Checksummer.run(mod.path)
|
81
|
+
rescue
|
82
|
+
[]
|
83
|
+
end
|
80
84
|
if mod.has_metadata? && !changes.empty?
|
81
85
|
raise LocalChangesError,
|
82
86
|
:action => :upgrade,
|
@@ -117,22 +121,22 @@ module Puppet::ModuleTool
|
|
117
121
|
|
118
122
|
version = release.version
|
119
123
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
124
|
+
next if forced?
|
125
|
+
|
126
|
+
# Since upgrading already installed modules can be troublesome,
|
127
|
+
# we'll place constraints on the graph for each installed
|
128
|
+
# module, locking it to upgrades within the same major version.
|
129
|
+
installed_range = ">=#{version} #{version.major}.x"
|
130
|
+
graph.add_constraint('installed', installed_module, installed_range) do |node|
|
131
|
+
Puppet::Module.parse_range(installed_range).include? node.version
|
132
|
+
end
|
128
133
|
|
129
|
-
|
130
|
-
|
134
|
+
release.mod.dependencies.each do |dep|
|
135
|
+
dep_name = dep['name'].tr('/', '-')
|
131
136
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
end
|
137
|
+
range = dep['version_requirement']
|
138
|
+
graph.add_constraint("#{installed_module} constraint", dep_name, range) do |node|
|
139
|
+
Puppet::Module.parse_range(range).include? node.version
|
136
140
|
end
|
137
141
|
end
|
138
142
|
end
|
@@ -146,30 +150,29 @@ module Puppet::ModuleTool
|
|
146
150
|
|
147
151
|
releases.each do |rel|
|
148
152
|
mod = installed_modules_source.by_name[rel.name.split('-').last]
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
end
|
158
|
-
|
159
|
-
raise InstallConflictError,
|
160
|
-
:requested_module => name,
|
161
|
-
:requested_version => options[:version] || 'latest',
|
162
|
-
:dependency => dependency,
|
163
|
-
:directory => mod.path,
|
164
|
-
:metadata => mod.metadata
|
153
|
+
next unless mod
|
154
|
+
next if mod.has_metadata? && mod.forge_name.tr('/', '-') == rel.name
|
155
|
+
|
156
|
+
if rel.name != name
|
157
|
+
dependency = {
|
158
|
+
:name => rel.name,
|
159
|
+
:version => rel.version
|
160
|
+
}
|
165
161
|
end
|
162
|
+
|
163
|
+
raise InstallConflictError,
|
164
|
+
:requested_module => name,
|
165
|
+
:requested_version => options[:version] || 'latest',
|
166
|
+
:dependency => dependency,
|
167
|
+
:directory => mod.path,
|
168
|
+
:metadata => mod.metadata
|
166
169
|
end
|
167
170
|
|
168
171
|
child = releases.find { |x| x.name == name }
|
169
172
|
|
170
173
|
unless forced?
|
171
174
|
if child.version == results[:installed_version]
|
172
|
-
versions = graph.dependencies[name].map
|
175
|
+
versions = graph.dependencies[name].map(&:version)
|
173
176
|
newer_versions = versions.select { |v| v > results[:installed_version] }
|
174
177
|
|
175
178
|
raise VersionAlreadyInstalledError,
|
@@ -187,7 +190,7 @@ module Puppet::ModuleTool
|
|
187
190
|
end
|
188
191
|
|
189
192
|
Puppet.info _("Preparing to upgrade ...")
|
190
|
-
releases.each
|
193
|
+
releases.each(&:prepare)
|
191
194
|
|
192
195
|
Puppet.notice _('Upgrading -- do not interrupt ...')
|
193
196
|
releases.each do |release|
|
@@ -268,7 +271,7 @@ module Puppet::ModuleTool
|
|
268
271
|
end
|
269
272
|
end
|
270
273
|
|
271
|
-
|
274
|
+
{
|
272
275
|
:release => release,
|
273
276
|
:name => release.name,
|
274
277
|
:path => release.install_dir,
|
@@ -19,7 +19,7 @@ module Puppet::ModuleTool
|
|
19
19
|
|
20
20
|
# Return checksum for the +Pathname+.
|
21
21
|
def checksum(pathname)
|
22
|
-
|
22
|
+
Digest::MD5.hexdigest(Puppet::FileSystem.binread(pathname))
|
23
23
|
end
|
24
24
|
|
25
25
|
# Return checksums for object's +Pathname+, generate if it's needed.
|
@@ -36,7 +36,7 @@ module Puppet::ModuleTool
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
|
-
|
39
|
+
@data
|
40
40
|
end
|
41
41
|
|
42
42
|
alias :to_data_hash :data
|
@@ -36,7 +36,7 @@ module Puppet
|
|
36
36
|
}
|
37
37
|
|
38
38
|
def converted_to_friendly_error(module_name, version, orig_error)
|
39
|
-
return orig_error
|
39
|
+
return orig_error unless ERROR_MAPPINGS.include?(orig_error.class)
|
40
40
|
|
41
41
|
ERROR_MAPPINGS[orig_error.class].new(orig_error,
|
42
42
|
:requested_module => module_name,
|
@@ -84,11 +84,9 @@ module Puppet::ModuleTool
|
|
84
84
|
# rubocop:enable Naming/MemoizedInstanceVariableName
|
85
85
|
|
86
86
|
def unpack(file, destination)
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
raise RuntimeError, _("Could not extract contents of module archive: %{message}") % { message: e.message }
|
91
|
-
end
|
87
|
+
Puppet::ModuleTool::Applications::Unpacker.unpack(file, destination)
|
88
|
+
rescue Puppet::ExecutionFailure => e
|
89
|
+
raise RuntimeError, _("Could not extract contents of module archive: %{message}") % { message: e.message }
|
92
90
|
end
|
93
91
|
end
|
94
92
|
end
|