puppet 3.5.1-x86-mingw32 → 3.6.0.rc1-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/CONTRIBUTING.md +5 -0
- data/Gemfile +17 -9
- data/README.md +1 -0
- data/conf/fileserver.conf +4 -3
- data/ext/README.environment +8 -0
- data/ext/build_defaults.yaml +1 -1
- data/ext/debian/control +2 -2
- data/ext/debian/puppet-common.dirs +4 -0
- data/ext/debian/rules +4 -0
- data/ext/emacs/puppet-mode-init.el +1 -1
- data/ext/emacs/puppet-mode.el +36 -17
- data/ext/redhat/client.init +3 -3
- data/ext/redhat/puppet.spec.erb +9 -0
- data/ext/systemd/puppet.service +3 -4
- data/ext/systemd/puppetmaster.service +1 -3
- data/install.rb +1 -1
- data/lib/puppet.rb +2 -1
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application.rb +17 -17
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/configurer.rb +4 -1
- data/lib/puppet/configurer/downloader.rb +13 -12
- data/lib/puppet/configurer/plugin_handler.rb +3 -3
- data/lib/puppet/context.rb +6 -1
- data/lib/puppet/defaults.rb +82 -12
- data/lib/puppet/environments.rb +169 -13
- data/lib/puppet/external/nagios/grammar.ry +2 -0
- data/lib/puppet/external/nagios/parser.rb +28 -19
- data/lib/puppet/face/config.rb +19 -6
- data/lib/puppet/face/module/generate.rb +209 -7
- data/lib/puppet/face/module/install.rb +17 -16
- data/lib/puppet/face/module/list.rb +83 -82
- data/lib/puppet/face/module/search.rb +1 -1
- data/lib/puppet/face/module/upgrade.rb +10 -9
- data/lib/puppet/face/parser.rb +3 -2
- data/lib/puppet/face/plugin.rb +8 -4
- data/lib/puppet/file_bucket/dipper.rb +6 -3
- data/lib/puppet/file_bucket/file.rb +4 -2
- data/lib/puppet/file_serving/metadata.rb +1 -1
- data/lib/puppet/file_system/memory_file.rb +27 -1
- data/lib/puppet/file_system/memory_impl.rb +15 -1
- data/lib/puppet/forge.rb +148 -52
- data/lib/puppet/forge/cache.rb +5 -1
- data/lib/puppet/forge/errors.rb +10 -0
- data/lib/puppet/forge/repository.rb +61 -26
- data/lib/puppet/functions.rb +548 -0
- data/lib/puppet/functions/assert_type.rb +42 -0
- data/lib/puppet/functions/import.rb +7 -0
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +3 -2
- data/lib/puppet/indirector/rest.rb +18 -0
- data/lib/puppet/loaders.rb +20 -0
- data/lib/puppet/module.rb +2 -2
- data/lib/puppet/module_tool.rb +40 -14
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/application.rb +35 -26
- data/lib/puppet/module_tool/applications/builder.rb +16 -6
- data/lib/puppet/module_tool/applications/checksummer.rb +25 -19
- data/lib/puppet/module_tool/applications/installer.rb +196 -35
- data/lib/puppet/module_tool/applications/searcher.rb +1 -0
- data/lib/puppet/module_tool/applications/uninstaller.rb +7 -1
- data/lib/puppet/module_tool/applications/unpacker.rb +57 -31
- data/lib/puppet/module_tool/applications/upgrader.rb +221 -65
- data/lib/puppet/module_tool/checksums.rb +5 -8
- data/lib/puppet/module_tool/errors/installer.rb +12 -44
- data/lib/puppet/module_tool/errors/shared.rb +84 -11
- data/lib/puppet/module_tool/errors/upgrader.rb +16 -45
- data/lib/puppet/module_tool/install_directory.rb +7 -6
- data/lib/puppet/module_tool/installed_modules.rb +92 -0
- data/lib/puppet/module_tool/local_tarball.rb +91 -0
- data/lib/puppet/module_tool/metadata.rb +119 -115
- data/lib/puppet/module_tool/modulefile.rb +9 -9
- data/lib/puppet/module_tool/shared_behaviors.rb +19 -7
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +79 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +18 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +1 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +7 -0
- data/lib/puppet/module_tool/tar.rb +3 -7
- data/lib/puppet/module_tool/tar/gnu.rb +21 -9
- data/lib/puppet/module_tool/tar/mini.rb +2 -8
- data/lib/puppet/network/http/api/v1.rb +1 -1
- data/lib/puppet/network/http/api/v2/authorization.rb +4 -2
- data/lib/puppet/network/http/issues.rb +1 -0
- data/lib/puppet/network/http_pool.rb +15 -6
- data/lib/puppet/node/environment.rb +91 -20
- data/lib/puppet/parser/ast/pops_bridge.rb +44 -3
- data/lib/puppet/parser/collector.rb +1 -1
- data/lib/puppet/parser/compiler.rb +50 -7
- data/lib/puppet/parser/functions.rb +6 -0
- data/lib/puppet/parser/functions/generate.rb +1 -1
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/pops.rb +22 -1
- data/lib/puppet/pops/adapters.rb +8 -1
- data/lib/puppet/pops/binder/bindings_composer.rb +1 -1
- data/lib/puppet/pops/binder/bindings_factory.rb +1 -1
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +1 -1
- data/lib/puppet/pops/binder/producers.rb +2 -2
- data/lib/puppet/pops/evaluator/access_operator.rb +65 -25
- data/lib/puppet/pops/evaluator/callable_signature.rb +101 -0
- data/lib/puppet/pops/evaluator/closure.rb +57 -2
- data/lib/puppet/pops/evaluator/compare_operator.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +9 -11
- data/lib/puppet/pops/evaluator/runtime3_support.rb +72 -21
- data/lib/puppet/pops/functions/dispatch.rb +71 -0
- data/lib/puppet/pops/functions/dispatcher.rb +237 -0
- data/lib/puppet/pops/functions/function.rb +77 -0
- data/lib/puppet/pops/issues.rb +12 -0
- data/lib/puppet/pops/loader/base_loader.rb +102 -0
- data/lib/puppet/pops/loader/dependency_loader.rb +60 -0
- data/lib/puppet/pops/loader/gem_support.rb +49 -0
- data/lib/puppet/pops/loader/loader.rb +180 -0
- data/lib/puppet/pops/loader/loader_paths.rb +137 -0
- data/lib/puppet/pops/loader/module_loaders.rb +242 -0
- data/lib/puppet/pops/loader/null_loader.rb +44 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +34 -0
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +109 -0
- data/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
- data/lib/puppet/pops/loader/static_loader.rb +69 -0
- data/lib/puppet/pops/loader/uri_helper.rb +22 -0
- data/lib/puppet/pops/loaders.rb +240 -0
- data/lib/puppet/pops/model/factory.rb +13 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +12 -4
- data/lib/puppet/pops/parser/egrammar.ra +31 -18
- data/lib/puppet/pops/parser/eparser.rb +1137 -1106
- data/lib/puppet/pops/parser/lexer2.rb +17 -16
- data/lib/puppet/pops/semantic_error.rb +17 -0
- data/lib/puppet/pops/types/type_calculator.rb +150 -15
- data/lib/puppet/pops/types/type_factory.rb +69 -0
- data/lib/puppet/pops/types/type_parser.rb +9 -0
- data/lib/puppet/pops/types/types.rb +65 -4
- data/lib/puppet/pops/validation/checker4_0.rb +1 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +2 -2
- data/lib/puppet/provider/cron/crontab.rb +13 -2
- data/lib/puppet/provider/package.rb +24 -0
- data/lib/puppet/provider/package/apt.rb +6 -1
- data/lib/puppet/provider/package/gem.rb +8 -2
- data/lib/puppet/provider/package/msi.rb +0 -15
- data/lib/puppet/provider/package/openbsd.rb +0 -24
- data/lib/puppet/provider/package/rpm.rb +3 -29
- data/lib/puppet/provider/package/windows.rb +0 -15
- data/lib/puppet/provider/package/yum.rb +101 -24
- data/lib/puppet/provider/package/yumhelper.py +31 -1
- data/lib/puppet/provider/package/zypper.rb +10 -28
- data/lib/puppet/provider/service/debian.rb +1 -1
- data/lib/puppet/provider/service/init.rb +3 -0
- data/lib/puppet/provider/service/openbsd.rb +318 -0
- data/lib/puppet/provider/service/redhat.rb +6 -3
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +115 -42
- data/lib/puppet/resource.rb +13 -9
- data/lib/puppet/resource/catalog.rb +12 -6
- data/lib/puppet/resource/type_collection.rb +3 -3
- data/lib/puppet/settings.rb +57 -36
- data/lib/puppet/settings/config_file.rb +5 -0
- data/lib/puppet/settings/environment_conf.rb +147 -0
- data/lib/puppet/settings/ttl_setting.rb +48 -0
- data/lib/puppet/ssl/certificate_authority.rb +2 -3
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +1 -1
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/validator/default_validator.rb +2 -2
- data/lib/puppet/status.rb +1 -1
- data/lib/puppet/test/test_helper.rb +1 -0
- data/lib/puppet/type/augeas.rb +13 -1
- data/lib/puppet/type/cron.rb +32 -18
- data/lib/puppet/type/file.rb +4 -2
- data/lib/puppet/type/file/checksum.rb +15 -5
- data/lib/puppet/type/file/content.rb +3 -1
- data/lib/puppet/type/file/source.rb +5 -5
- data/lib/puppet/type/package.rb +12 -17
- data/lib/puppet/type/resources.rb +3 -1
- data/lib/puppet/type/scheduled_task.rb +4 -5
- data/lib/puppet/type/service.rb +12 -2
- data/lib/puppet/type/user.rb +106 -0
- data/lib/puppet/type/yumrepo.rb +9 -1
- data/lib/puppet/util/checksums.rb +60 -1
- data/lib/puppet/util/diff.rb +3 -1
- data/lib/puppet/util/execution.rb +20 -16
- data/lib/puppet/util/feature.rb +3 -0
- data/lib/puppet/util/logging.rb +19 -12
- data/lib/puppet/util/rubygems.rb +10 -0
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/windows/security.rb +5 -3
- data/lib/puppet/vendor/load_semantic.rb +1 -0
- data/lib/puppet/vendor/require_vendored.rb +2 -0
- data/lib/puppet/vendor/semantic/Gemfile +20 -0
- data/lib/puppet/vendor/semantic/Rakefile +69 -0
- data/lib/puppet/vendor/semantic/lib/semantic.rb +7 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency.rb +181 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/graph.rb +60 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/graph_node.rb +117 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +46 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/source.rb +25 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/unsatisfiable_graph.rb +31 -0
- data/lib/puppet/vendor/semantic/lib/semantic/version.rb +168 -0
- data/lib/puppet/vendor/semantic/lib/semantic/version_range.rb +424 -0
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +24 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +141 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +162 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +143 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +5 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +44 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +383 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +307 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +608 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/java.tgz +0 -0
- data/spec/fixtures/stdlib.tgz +0 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/usee/lib/puppet/functions/usee/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/user/lib/puppet/functions/user/caller.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/user/metadata.json +9 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +19 -0
- data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +3 -0
- data/spec/fixtures/unit/provider/naginator/define_empty_param +6 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +7 -0
- data/spec/fixtures/unit/type/user/authorized_keys +5 -0
- data/spec/integration/application/apply_spec.rb +1 -2
- data/spec/integration/configurer_spec.rb +2 -2
- data/spec/integration/faces/plugin_spec.rb +62 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +1 -1
- data/spec/integration/indirector/catalog/queue_spec.rb +1 -1
- data/spec/integration/node/environment_spec.rb +2 -2
- data/spec/integration/parser/future_compiler_spec.rb +96 -142
- data/spec/integration/parser/ruby_manifest_spec.rb +0 -5
- data/spec/integration/provider/cron/crontab_spec.rb +35 -0
- data/spec/integration/type/file_spec.rb +74 -72
- data/spec/integration/util/windows/security_spec.rb +17 -0
- data/spec/lib/matchers/resource.rb +45 -13
- data/spec/lib/puppet_spec/files.rb +18 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +56 -0
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +133 -0
- data/spec/shared_contexts/checksums.rb +55 -0
- data/spec/unit/application/apply_spec.rb +10 -7
- data/spec/unit/application/doc_spec.rb +17 -10
- data/spec/unit/application/indirection_base_spec.rb +18 -10
- data/spec/unit/application/inspect_spec.rb +22 -20
- data/spec/unit/configurer/downloader_spec.rb +7 -6
- data/spec/unit/configurer/plugin_handler_spec.rb +5 -8
- data/spec/unit/configurer_spec.rb +1 -1
- data/spec/unit/context_spec.rb +23 -0
- data/spec/unit/environments_spec.rb +274 -16
- data/spec/unit/face/config_spec.rb +111 -11
- data/spec/unit/face/module/install_spec.rb +14 -85
- data/spec/unit/face/module/list_spec.rb +108 -62
- data/spec/unit/face/module/search_spec.rb +1 -1
- data/spec/unit/face/module/uninstall_spec.rb +21 -42
- data/spec/unit/face/parser_spec.rb +5 -2
- data/spec/unit/file_bucket/dipper_spec.rb +92 -86
- data/spec/unit/file_bucket/file_spec.rb +23 -75
- data/spec/unit/file_serving/metadata_spec.rb +74 -74
- data/spec/unit/forge/module_release_spec.rb +131 -0
- data/spec/unit/forge/repository_spec.rb +21 -20
- data/spec/unit/forge_spec.rb +99 -23
- data/spec/unit/functions/assert_type_spec.rb +59 -0
- data/spec/unit/functions4_spec.rb +671 -0
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +2 -2
- data/spec/unit/indirector/facts/facter_spec.rb +9 -3
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +156 -155
- data/spec/unit/indirector/rest_spec.rb +8 -0
- data/spec/unit/interface/face_collection_spec.rb +35 -23
- data/spec/unit/module_spec.rb +20 -8
- data/spec/unit/module_tool/applications/builder_spec.rb +40 -12
- data/spec/unit/module_tool/applications/checksummer_spec.rb +86 -105
- data/spec/unit/module_tool/applications/installer_spec.rb +293 -261
- data/spec/unit/module_tool/applications/searcher_spec.rb +1 -1
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +90 -154
- data/spec/unit/module_tool/applications/unpacker_spec.rb +12 -12
- data/spec/unit/module_tool/applications/upgrader_spec.rb +286 -18
- data/spec/unit/module_tool/metadata_spec.rb +223 -14
- data/spec/unit/module_tool/tar/gnu_spec.rb +12 -9
- data/spec/unit/module_tool/tar/mini_spec.rb +1 -1
- data/spec/unit/module_tool/tar_spec.rb +4 -18
- data/spec/unit/module_tool_spec.rb +123 -27
- data/spec/unit/network/formats_spec.rb +2 -2
- data/spec/unit/network/http_pool_spec.rb +21 -0
- data/spec/unit/network/rights_spec.rb +10 -8
- data/spec/unit/node/environment_spec.rb +27 -2
- data/spec/unit/parser/collector_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +1 -1
- data/spec/unit/parser/functions/generate_spec.rb +4 -0
- data/spec/unit/pops/evaluator/access_ops_spec.rb +50 -11
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +25 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +44 -0
- data/spec/unit/pops/loaders/loader_paths_spec.rb +66 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +105 -0
- data/spec/unit/pops/loaders/module_loaders_spec.rb +119 -0
- data/spec/unit/pops/loaders/static_loader_spec.rb +46 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +145 -10
- data/spec/unit/pops/types/type_factory_spec.rb +101 -0
- data/spec/unit/pops/types/type_parser_spec.rb +22 -0
- data/spec/unit/property/list_spec.rb +9 -1
- data/spec/unit/provider/augeas/augeas_spec.rb +58 -11
- data/spec/unit/provider/cron/crontab_spec.rb +1 -0
- data/spec/unit/provider/cron/parsed_spec.rb +15 -0
- data/spec/unit/provider/naginator_spec.rb +14 -0
- data/spec/unit/provider/package/apt_spec.rb +78 -64
- data/spec/unit/provider/package/gem_spec.rb +15 -0
- data/spec/unit/provider/package/rpm_spec.rb +6 -6
- data/spec/unit/provider/package/windows_spec.rb +1 -1
- data/spec/unit/provider/package/yum_spec.rb +199 -104
- data/spec/unit/provider/package/zypper_spec.rb +41 -15
- data/spec/unit/provider/service/openbsd_spec.rb +129 -22
- data/spec/unit/provider/service/redhat_spec.rb +18 -4
- data/spec/unit/provider/service/systemd_spec.rb +5 -9
- data/spec/unit/provider/service/upstart_spec.rb +1 -1
- data/spec/unit/provider/user/directoryservice_spec.rb +10 -0
- data/spec/unit/provider/yumrepo/inifile_spec.rb +171 -15
- data/spec/unit/resource/catalog_spec.rb +20 -104
- data/spec/unit/resource/type_collection_spec.rb +10 -9
- data/spec/unit/settings/config_file_spec.rb +29 -6
- data/spec/unit/settings/environment_conf_spec.rb +51 -0
- data/spec/unit/settings_spec.rb +97 -12
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -0
- data/spec/unit/type/augeas_spec.rb +1 -1
- data/spec/unit/type/cron_spec.rb +6 -7
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/content_spec.rb +277 -207
- data/spec/unit/type/file_spec.rb +9 -7
- data/spec/unit/type/user_spec.rb +106 -18
- data/spec/unit/type/yumrepo_spec.rb +8 -0
- data/spec/unit/util/checksums_spec.rb +12 -5
- data/spec/unit/util/diff_spec.rb +8 -0
- data/spec/unit/util/execution_spec.rb +4 -4
- data/spec/unit/util/feature_spec.rb +2 -0
- data/spec/unit/util/logging_spec.rb +14 -4
- data/spec/unit/util/rdoc/parser_spec.rb +5 -4
- data/spec/unit/util/rubygems_spec.rb +14 -0
- data/tasks/parallel.rake +2 -2
- metadata +154 -21
- checksums.yaml +0 -7
- data/lib/puppet/module_tool/applications/generator.rb +0 -142
- data/lib/puppet/module_tool/skeleton.rb +0 -37
- data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +0 -11
- data/lib/puppet/module_tool/skeleton/templates/generator/README.erb +0 -16
- data/lib/puppet/module_tool/tar/solaris.rb +0 -5
- data/spec/fixtures/unit/provider/service/systemd/list_units_services +0 -17
- data/spec/unit/module_tool/tar/solaris_spec.rb +0 -22
@@ -9,25 +9,35 @@ Puppet::Type.type(:file).newparam(:checksum) do
|
|
9
9
|
|
10
10
|
The default checksum type is md5."
|
11
11
|
|
12
|
-
newvalues "md5", "md5lite", "mtime", "ctime", "none"
|
12
|
+
newvalues "md5", "md5lite", "sha256", "sha256lite", "mtime", "ctime", "none"
|
13
13
|
|
14
|
-
defaultto
|
14
|
+
defaultto do
|
15
|
+
Puppet[:digest_algorithm].to_sym
|
16
|
+
end
|
15
17
|
|
16
18
|
def sum(content)
|
17
|
-
type =
|
19
|
+
type = digest_algorithm()
|
18
20
|
"{#{type}}" + send(type, content)
|
19
21
|
end
|
20
22
|
|
21
23
|
def sum_file(path)
|
22
|
-
type =
|
24
|
+
type = digest_algorithm()
|
23
25
|
method = type.to_s + "_file"
|
24
26
|
"{#{type}}" + send(method, path).to_s
|
25
27
|
end
|
26
28
|
|
27
29
|
def sum_stream(&block)
|
28
|
-
type =
|
30
|
+
type = digest_algorithm()
|
29
31
|
method = type.to_s + "_stream"
|
30
32
|
checksum = send(method, &block)
|
31
33
|
"{#{type}}#{checksum}"
|
32
34
|
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
# Return the appropriate digest algorithm with fallbacks in case puppet defaults have not
|
39
|
+
# been initialized.
|
40
|
+
def digest_algorithm
|
41
|
+
value || Puppet[:digest_algorithm].to_sym
|
42
|
+
end
|
33
43
|
end
|
@@ -206,7 +206,9 @@ module Puppet
|
|
206
206
|
end
|
207
207
|
|
208
208
|
def get_from_source(source_or_content, &block)
|
209
|
-
|
209
|
+
source = source_or_content.uri
|
210
|
+
|
211
|
+
request = Puppet::Indirector::Request.new(:file_content, :find, source.to_s, nil, :environment => resource.catalog.environment)
|
210
212
|
|
211
213
|
request.do_request(:fileserver) do |req|
|
212
214
|
connection = Puppet::Network::HttpPool.http_instance(req.server, req.port)
|
@@ -207,17 +207,17 @@ module Puppet
|
|
207
207
|
def port
|
208
208
|
(uri and uri.port) or Puppet.settings[:masterport]
|
209
209
|
end
|
210
|
-
private
|
211
|
-
|
212
|
-
def scheme
|
213
|
-
(uri and uri.scheme)
|
214
|
-
end
|
215
210
|
|
216
211
|
def uri
|
217
212
|
@uri ||= URI.parse(URI.escape(metadata.source))
|
218
213
|
end
|
219
214
|
|
220
215
|
private
|
216
|
+
|
217
|
+
def scheme
|
218
|
+
(uri and uri.scheme)
|
219
|
+
end
|
220
|
+
|
221
221
|
def found?
|
222
222
|
! (metadata.nil? or metadata.ftype.nil?)
|
223
223
|
end
|
data/lib/puppet/type/package.rb
CHANGED
@@ -239,30 +239,25 @@ module Puppet
|
|
239
239
|
end
|
240
240
|
|
241
241
|
newproperty(:package_settings, :required_features=>:package_settings) do
|
242
|
-
desc "
|
243
|
-
specific. In general, these are certain properties which alter contents
|
244
|
-
of a package being installed. An example of package settings are the
|
245
|
-
FreeBSD ports options.
|
242
|
+
desc "Settings that can change the contents or configuration of a package.
|
246
243
|
|
247
|
-
The
|
248
|
-
|
249
|
-
|
244
|
+
The formatting and effects of package_settings are provider-specific; any
|
245
|
+
provider that implements them must explain how to use them in its
|
246
|
+
documentation. (Our general expectation is that if a package is
|
247
|
+
installed but its settings are out of sync, the provider should
|
248
|
+
re-install that package with the desired settings.)
|
250
249
|
|
251
|
-
|
252
|
-
|
253
|
-
|
250
|
+
An example of how package_settings could be used is FreeBSD's port build
|
251
|
+
options --- a future version of the provider could accept a hash of options,
|
252
|
+
and would reinstall the port if the installed version lacked the correct
|
253
|
+
settings.
|
254
254
|
|
255
255
|
package { 'www/apache22':
|
256
256
|
package_settings => { 'SUEXEC' => false }
|
257
257
|
}
|
258
258
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
Despite the package_settings are provider specific, the typical
|
263
|
-
behavior, when you change package's package_settings in your manifest,
|
264
|
-
is to reinstall package with new settings.
|
265
|
-
"
|
259
|
+
Again, check the documentation of your platform's package provider to see
|
260
|
+
the actual usage."
|
266
261
|
|
267
262
|
validate do |value|
|
268
263
|
if provider.respond_to?(:package_settings_validate)
|
@@ -21,7 +21,9 @@ Puppet::Type.newtype(:resources) do
|
|
21
21
|
newparam(:purge, :boolean => true, :parent => Puppet::Parameter::Boolean) do
|
22
22
|
desc "Purge unmanaged resources. This will delete any resource
|
23
23
|
that is not specified in your configuration
|
24
|
-
and is not required by any specified resources.
|
24
|
+
and is not required by any specified resources.
|
25
|
+
Purging ssh_authorized_keys this way is deprecated; see the
|
26
|
+
purge_ssh_keys parameter of the user type for a better alternative."
|
25
27
|
|
26
28
|
defaultto :false
|
27
29
|
|
@@ -98,9 +98,8 @@ Puppet::Type.newtype(:scheduled_task) do
|
|
98
98
|
first become active. Several time formats will work, but we
|
99
99
|
suggest 24-hour time formatted as HH:MM.
|
100
100
|
* `start_date` --- The date when the trigger should first become active.
|
101
|
-
Defaults to
|
102
|
-
|
103
|
-
YYYY-MM-DD.
|
101
|
+
Defaults to the current date. You should format dates as YYYY-MM-DD,
|
102
|
+
although other date formats may work. (Under the hood, this uses `Date.parse`.)
|
104
103
|
* For daily triggers:
|
105
104
|
* `every` --- How often the task should run, as a number of days. Defaults
|
106
105
|
to 1. ("2" means every other day, "3" means every three days, etc.)
|
@@ -132,7 +131,7 @@ Puppet::Type.newtype(:scheduled_task) do
|
|
132
131
|
# May, July, September, and November, starting after August 31st, 2011.
|
133
132
|
trigger => {
|
134
133
|
schedule => monthly,
|
135
|
-
start_date => '2011-08-31', # Defaults to
|
134
|
+
start_date => '2011-08-31', # Defaults to current date
|
136
135
|
start_time => '08:00', # Must be specified
|
137
136
|
months => [1,3,5,7,9,11], # Defaults to all
|
138
137
|
on => [1, 15, last], # Must be specified
|
@@ -142,7 +141,7 @@ Puppet::Type.newtype(:scheduled_task) do
|
|
142
141
|
# starting after August 31st, 2011.
|
143
142
|
trigger => {
|
144
143
|
schedule => monthly,
|
145
|
-
start_date => '2011-08-31', # Defaults to
|
144
|
+
start_date => '2011-08-31', # Defaults to current date
|
146
145
|
start_time => '08:00', # Must be specified
|
147
146
|
months => [1,3,5], # Defaults to all
|
148
147
|
which_occurrence => first, # Must be specified
|
data/lib/puppet/type/service.rb
CHANGED
@@ -17,7 +17,10 @@ module Puppet
|
|
17
17
|
Puppet 2.7 and newer expect init scripts to have a working status command.
|
18
18
|
If this isn't the case for any of your services' init scripts, you will
|
19
19
|
need to set `hasstatus` to false and possibly specify a custom status
|
20
|
-
command in the `status` attribute.
|
20
|
+
command in the `status` attribute. As a last resort, Puppet will attempt to
|
21
|
+
search the process table by calling whatever command is listed in the `ps`
|
22
|
+
fact. The default search pattern is the name of the service, but you can
|
23
|
+
specify it with the `pattern` attribute.
|
21
24
|
|
22
25
|
**Refresh:** `service` resources can respond to refresh events (via
|
23
26
|
`notify`, `subscribe`, or the `~>` arrow). If a `service` receives an
|
@@ -37,6 +40,8 @@ module Puppet
|
|
37
40
|
|
38
41
|
feature :controllable, "The provider uses a control variable."
|
39
42
|
|
43
|
+
feature :flaggable, "The provider can pass flags to the service."
|
44
|
+
|
40
45
|
newproperty(:enable, :required_features => :enableable) do
|
41
46
|
desc "Whether a service should be enabled to start at boot.
|
42
47
|
This property behaves quite differently depending on the platform;
|
@@ -97,6 +102,10 @@ module Puppet
|
|
97
102
|
end
|
98
103
|
end
|
99
104
|
|
105
|
+
newproperty(:flags, :required_features => :flaggable) do
|
106
|
+
desc "Specify a string of flags to pass to the startup script."
|
107
|
+
end
|
108
|
+
|
100
109
|
newparam(:binary) do
|
101
110
|
desc "The path to the daemon. This is only used for
|
102
111
|
systems that do not support init scripts. This binary will be
|
@@ -158,7 +167,8 @@ module Puppet
|
|
158
167
|
command.
|
159
168
|
|
160
169
|
Defaults to the name of the service. The pattern can be a simple string
|
161
|
-
or any legal Ruby pattern
|
170
|
+
or any legal Ruby pattern, including regular expressions (which should
|
171
|
+
be quoted without enclosing slashes)."
|
162
172
|
|
163
173
|
defaultto { @resource[:binary] || @resource[:name] }
|
164
174
|
end
|
data/lib/puppet/type/user.rb
CHANGED
@@ -571,5 +571,111 @@ module Puppet
|
|
571
571
|
being managed by some other NSS"
|
572
572
|
defaultto false
|
573
573
|
end
|
574
|
+
|
575
|
+
def eval_generate
|
576
|
+
return [] if self[:purge_ssh_keys].empty?
|
577
|
+
find_unmanaged_keys
|
578
|
+
end
|
579
|
+
|
580
|
+
newparam(:purge_ssh_keys) do
|
581
|
+
desc "Purge ssh keys authorized for the user
|
582
|
+
if they are not managed via ssh_authorized_keys. When true,
|
583
|
+
looks for keys in .ssh/authorized_keys in the user's home
|
584
|
+
directory. Possible values are true, false, or an array of
|
585
|
+
paths to file to search for authorized keys. If a path starts
|
586
|
+
with ~ or %h, this token is replaced with the user's home directory."
|
587
|
+
|
588
|
+
defaultto :false
|
589
|
+
|
590
|
+
# Use Symbols instead of booleans until PUP-1967 is resolved.
|
591
|
+
newvalues(:true, :false)
|
592
|
+
|
593
|
+
validate do |value|
|
594
|
+
if [ :true, :false ].include? value.to_s.intern
|
595
|
+
return
|
596
|
+
end
|
597
|
+
value = [ value ] if value.is_a?(String)
|
598
|
+
if value.is_a?(Array)
|
599
|
+
value.each do |entry|
|
600
|
+
|
601
|
+
raise ArgumentError, "Each entry for purge_ssh_keys must be a string, not a #{entry.class}" unless entry.is_a?(String)
|
602
|
+
|
603
|
+
valid_home = Puppet::Util.absolute_path?(entry) || entry =~ %r{^~/|^%h/}
|
604
|
+
raise ArgumentError, "Paths to keyfiles must be absolute, not #{entry}" unless valid_home
|
605
|
+
end
|
606
|
+
return
|
607
|
+
end
|
608
|
+
raise ArgumentError, "purge_ssh_keys must be true, false, or an array of file names, not #{value.inspect}"
|
609
|
+
end
|
610
|
+
|
611
|
+
munge do |value|
|
612
|
+
# Resolve string, boolean and symbol forms of true and false to a
|
613
|
+
# single representation.
|
614
|
+
test_sym = value.to_s.intern
|
615
|
+
value = test_sym if [:true, :false].include? test_sym
|
616
|
+
|
617
|
+
return [] if value == :false
|
618
|
+
home = resource[:home]
|
619
|
+
if value == :true and not home
|
620
|
+
raise ArgumentError, "purge_ssh_keys can only be true for users with a defined home directory"
|
621
|
+
end
|
622
|
+
|
623
|
+
return [ "#{home}/.ssh/authorized_keys" ] if value == :true
|
624
|
+
# value is an array - munge each value
|
625
|
+
[ value ].flatten.map do |entry|
|
626
|
+
if entry =~ /^~|^%h/ and not home
|
627
|
+
raise ArgumentError, "purge_ssh_keys value '#{value}' meta character ~ or %h only allowed for users with a defined home directory"
|
628
|
+
end
|
629
|
+
entry.gsub!(/^~\//, "#{home}/")
|
630
|
+
entry.gsub!(/^%h\//, "#{home}/")
|
631
|
+
entry
|
632
|
+
end
|
633
|
+
end
|
634
|
+
end
|
635
|
+
|
636
|
+
# Generate ssh_authorized_keys resources for purging. The key files are
|
637
|
+
# taken from the purge_ssh_keys parameter. The generated resources inherit
|
638
|
+
# all metaparameters from the parent user resource.
|
639
|
+
#
|
640
|
+
# @return [Array<Puppet::Type::Ssh_authorized_key] a list of resources
|
641
|
+
# representing the found keys
|
642
|
+
# @see eval_generate
|
643
|
+
# @api private
|
644
|
+
def find_unmanaged_keys
|
645
|
+
self[:purge_ssh_keys].
|
646
|
+
select { |f| File.readable?(f) }.
|
647
|
+
map { |f| unknown_keys_in_file(f) }.
|
648
|
+
flatten.each do |res|
|
649
|
+
res[:ensure] = :absent
|
650
|
+
@parameters.each do |name, param|
|
651
|
+
res[name] = param.value if param.metaparam?
|
652
|
+
end
|
653
|
+
end
|
654
|
+
end
|
655
|
+
|
656
|
+
# Parse an ssh authorized keys file superficially, extract the comments
|
657
|
+
# on the keys. These are considered names of possible ssh_authorized_keys
|
658
|
+
# resources. Keys that are managed by the present catalog are ignored.
|
659
|
+
#
|
660
|
+
# @see eval_generate
|
661
|
+
# @api private
|
662
|
+
# @return [Array<Puppet::Type::Ssh_authorized_key] a list of resources
|
663
|
+
# representing the found keys
|
664
|
+
def unknown_keys_in_file(keyfile)
|
665
|
+
names = []
|
666
|
+
File.new(keyfile).each do |line|
|
667
|
+
next if line.strip.empty?
|
668
|
+
next if line =~ /^\s*#/
|
669
|
+
names << line.strip.split.last
|
670
|
+
end
|
671
|
+
|
672
|
+
names.map { |keyname|
|
673
|
+
Puppet::Type.type(:ssh_authorized_key).new(
|
674
|
+
:name => keyname,
|
675
|
+
:target => keyfile)
|
676
|
+
}.reject { |res|
|
677
|
+
catalog.resource_refs.include? res.ref
|
678
|
+
}
|
679
|
+
end
|
574
680
|
end
|
575
681
|
end
|
data/lib/puppet/type/yumrepo.rb
CHANGED
@@ -211,7 +211,8 @@ Puppet::Type.newtype(:yumrepo) do
|
|
211
211
|
|
212
212
|
newvalues(/.*/, :absent)
|
213
213
|
validate do |value|
|
214
|
-
|
214
|
+
next if value.to_s == 'absent'
|
215
|
+
unless (1..99).include?(value.to_i)
|
215
216
|
fail("Must be within range 1-99")
|
216
217
|
end
|
217
218
|
end
|
@@ -301,4 +302,11 @@ Puppet::Type.newtype(:yumrepo) do
|
|
301
302
|
end
|
302
303
|
end
|
303
304
|
|
305
|
+
newproperty(:skip_if_unavailable) do
|
306
|
+
desc "Should yum skip this repository if unable to reach it.
|
307
|
+
#{YUM_BOOLEAN_DOC}
|
308
|
+
#{ABSENT_DOC}"
|
309
|
+
|
310
|
+
newvalues(YUM_BOOLEAN, :absent)
|
311
|
+
end
|
304
312
|
end
|
@@ -4,6 +4,18 @@ require 'digest/sha1'
|
|
4
4
|
# A stand-alone module for calculating checksums
|
5
5
|
# in a generic way.
|
6
6
|
module Puppet::Util::Checksums
|
7
|
+
# @deprecated
|
8
|
+
# In Puppet 4 we should switch this to `module_function` to make these methods
|
9
|
+
# private when this class is included.
|
10
|
+
extend self
|
11
|
+
|
12
|
+
# It's not a good idea to use some of these in some contexts: for example, I
|
13
|
+
# wouldn't try bucketing a file using the :none checksum type.
|
14
|
+
def known_checksum_types
|
15
|
+
[:sha256, :sha256lite, :md5, :md5lite, :sha1, :sha1lite,
|
16
|
+
:mtime, :ctime, :none]
|
17
|
+
end
|
18
|
+
|
7
19
|
class FakeChecksum
|
8
20
|
def <<(*args)
|
9
21
|
self
|
@@ -12,7 +24,8 @@ module Puppet::Util::Checksums
|
|
12
24
|
|
13
25
|
# Is the provided string a checksum?
|
14
26
|
def checksum?(string)
|
15
|
-
|
27
|
+
# 'sha256lite'.length == 10
|
28
|
+
string =~ /^\{(\w{3,10})\}\S+/
|
16
29
|
end
|
17
30
|
|
18
31
|
# Strip the checksum type from an existing checksum
|
@@ -25,6 +38,41 @@ module Puppet::Util::Checksums
|
|
25
38
|
checksum =~ /^\{(\w+)\}/ ? $1 : nil
|
26
39
|
end
|
27
40
|
|
41
|
+
# Calculate a checksum using Digest::SHA256.
|
42
|
+
def sha256(content)
|
43
|
+
require 'digest/sha2'
|
44
|
+
Digest::SHA256.hexdigest(content)
|
45
|
+
end
|
46
|
+
|
47
|
+
def sha256lite(content)
|
48
|
+
sha256(content[0..511])
|
49
|
+
end
|
50
|
+
|
51
|
+
def sha256_file(filename, lite = false)
|
52
|
+
require 'digest/sha2'
|
53
|
+
|
54
|
+
digest = Digest::SHA256.new
|
55
|
+
checksum_file(digest, filename, lite)
|
56
|
+
end
|
57
|
+
|
58
|
+
def sha256lite_file(filename)
|
59
|
+
sha256_file(filename, true)
|
60
|
+
end
|
61
|
+
|
62
|
+
def sha256_stream(&block)
|
63
|
+
require 'digest/sha2'
|
64
|
+
digest = Digest::SHA256.new
|
65
|
+
yield digest
|
66
|
+
digest.hexdigest
|
67
|
+
end
|
68
|
+
|
69
|
+
def sha256_hex_length
|
70
|
+
64
|
71
|
+
end
|
72
|
+
|
73
|
+
alias :sha256lite_stream :sha256_stream
|
74
|
+
alias :sha256lite_hex_length :sha256_hex_length
|
75
|
+
|
28
76
|
# Calculate a checksum using Digest::MD5.
|
29
77
|
def md5(content)
|
30
78
|
Digest::MD5.hexdigest(content)
|
@@ -52,7 +100,12 @@ module Puppet::Util::Checksums
|
|
52
100
|
digest.hexdigest
|
53
101
|
end
|
54
102
|
|
103
|
+
def md5_hex_length
|
104
|
+
32
|
105
|
+
end
|
106
|
+
|
55
107
|
alias :md5lite_stream :md5_stream
|
108
|
+
alias :md5lite_hex_length :md5_hex_length
|
56
109
|
|
57
110
|
# Return the :mtime timestamp of a file.
|
58
111
|
def mtime_file(filename)
|
@@ -98,7 +151,12 @@ module Puppet::Util::Checksums
|
|
98
151
|
digest.hexdigest
|
99
152
|
end
|
100
153
|
|
154
|
+
def sha1_hex_length
|
155
|
+
40
|
156
|
+
end
|
157
|
+
|
101
158
|
alias :sha1lite_stream :sha1_stream
|
159
|
+
alias :sha1lite_hex_length :sha1_hex_length
|
102
160
|
|
103
161
|
# Return the :ctime of a file.
|
104
162
|
def ctime_file(filename)
|
@@ -140,4 +198,5 @@ module Puppet::Util::Checksums
|
|
140
198
|
|
141
199
|
digest.hexdigest
|
142
200
|
end
|
201
|
+
|
143
202
|
end
|
data/lib/puppet/util/diff.rb
CHANGED
@@ -10,7 +10,9 @@ module Puppet::Util::Diff
|
|
10
10
|
|
11
11
|
command = [diff_cmd]
|
12
12
|
if args = Puppet[:diff_args] and args != ""
|
13
|
-
|
13
|
+
args.split(' ').each do|arg|
|
14
|
+
command << arg
|
15
|
+
end
|
14
16
|
end
|
15
17
|
command << old << new
|
16
18
|
Puppet::Util::Execution.execute(command, :failonfail => false, :combine => false)
|