puppet 5.3.3 → 5.3.4
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 +1 -1
- data/Gemfile +3 -0
- data/ext/puppet-test +3 -2
- data/lib/hiera/puppet_function.rb +5 -2
- data/lib/hiera_puppet.rb +3 -3
- data/lib/puppet.rb +2 -5
- data/lib/puppet/agent.rb +22 -2
- data/lib/puppet/agent/locker.rb +6 -5
- data/lib/puppet/application.rb +18 -1
- data/lib/puppet/application/agent.rb +9 -2
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/config.rb +1 -0
- data/lib/puppet/application/device.rb +1 -2
- data/lib/puppet/application/filebucket.rb +22 -5
- data/lib/puppet/application/help.rb +1 -0
- data/lib/puppet/application/lookup.rb +1 -3
- data/lib/puppet/application_support.rb +6 -1
- data/lib/puppet/bindings.rb +2 -1
- data/lib/puppet/configurer.rb +9 -4
- data/lib/puppet/configurer/downloader_factory.rb +10 -0
- data/lib/puppet/configurer/plugin_handler.rb +11 -4
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/defaults.rb +99 -27
- data/lib/puppet/environments.rb +2 -0
- data/lib/puppet/error.rb +5 -15
- data/lib/puppet/external/pson/common.rb +2 -2
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +14 -1
- data/lib/puppet/face/epp.rb +4 -2
- data/lib/puppet/face/help.rb +12 -14
- data/lib/puppet/face/man.rb +1 -0
- data/lib/puppet/face/module/build.rb +1 -1
- data/lib/puppet/face/module/list.rb +6 -17
- data/lib/puppet/face/module/uninstall.rb +14 -3
- data/lib/puppet/face/node.rb +1 -0
- data/lib/puppet/face/status.rb +1 -0
- data/lib/puppet/file_serving/base.rb +2 -1
- data/lib/puppet/file_serving/configuration.rb +3 -0
- data/lib/puppet/file_serving/configuration/parser.rb +23 -9
- data/lib/puppet/file_serving/mount/locales.rb +35 -0
- data/lib/puppet/forge.rb +2 -1
- data/lib/puppet/forge/errors.rb +24 -22
- data/lib/puppet/functions/binary_file.rb +1 -0
- data/lib/puppet/functions/each.rb +10 -4
- data/lib/puppet/functions/eyaml_lookup_key.rb +4 -2
- data/lib/puppet/functions/lookup.rb +2 -2
- data/lib/puppet/functions/map.rb +12 -2
- data/lib/puppet/functions/slice.rb +2 -3
- data/lib/puppet/functions/unique.rb +1 -1
- data/lib/puppet/functions/yaml_data.rb +1 -1
- data/lib/puppet/gettext/config.rb +144 -41
- data/lib/puppet/gettext/module_translations.rb +42 -0
- data/lib/puppet/graph/relationship_graph.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +3 -3
- data/lib/puppet/indirector/catalog/compiler.rb +40 -25
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/network_device.rb +2 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +4 -1
- data/lib/puppet/indirector/indirection.rb +17 -9
- data/lib/puppet/indirector/ldap.rb +2 -2
- data/lib/puppet/indirector/node/write_only_yaml.rb +3 -1
- data/lib/puppet/indirector/rest.rb +8 -5
- data/lib/puppet/indirector/ssl_file.rb +2 -2
- data/lib/puppet/indirector/terminus.rb +3 -3
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/interface/action.rb +41 -24
- data/lib/puppet/interface/action_builder.rb +14 -5
- data/lib/puppet/interface/action_manager.rb +1 -1
- data/lib/puppet/interface/documentation.rb +21 -10
- data/lib/puppet/interface/face_collection.rb +4 -2
- data/lib/puppet/interface/option.rb +36 -15
- data/lib/puppet/interface/option_builder.rb +23 -9
- data/lib/puppet/interface/option_manager.rb +8 -3
- data/lib/puppet/metatype/manager.rb +7 -3
- data/lib/puppet/module.rb +18 -21
- data/lib/puppet/module_tool/errors/installer.rb +18 -20
- data/lib/puppet/module_tool/errors/shared.rb +20 -15
- data/lib/puppet/module_tool/errors/uninstaller.rb +1 -0
- data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
- data/lib/puppet/module_tool/tar/mini.rb +57 -4
- data/lib/puppet/network/auth_config_parser.rb +18 -13
- data/lib/puppet/network/authstore.rb +2 -2
- data/lib/puppet/network/client_request.rb +1 -1
- data/lib/puppet/network/format.rb +3 -3
- data/lib/puppet/network/http/api/indirection_type.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +5 -2
- data/lib/puppet/network/http/error.rb +7 -7
- data/lib/puppet/network/http/factory.rb +9 -0
- data/lib/puppet/network/http/rack.rb +2 -2
- data/lib/puppet/network/http/webrick.rb +2 -4
- data/lib/puppet/node.rb +25 -6
- data/lib/puppet/node/environment.rb +14 -0
- data/lib/puppet/node/facts.rb +9 -0
- data/lib/puppet/parameter.rb +3 -3
- data/lib/puppet/parameter/value_collection.rb +9 -9
- data/lib/puppet/parser/ast/leaf.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +2 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/compiler.rb +6 -5
- data/lib/puppet/parser/functions.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +2 -4
- data/lib/puppet/parser/functions/inline_template.rb +1 -2
- data/lib/puppet/parser/functions/sprintf.rb +17 -3
- data/lib/puppet/parser/functions/template.rb +6 -2
- data/lib/puppet/parser/resource.rb +30 -31
- data/lib/puppet/parser/scope.rb +20 -11
- data/lib/puppet/parser/templatewrapper.rb +4 -3
- data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -1
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +21 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +2 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -1
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/functions/dispatch.rb +1 -1
- data/lib/puppet/pops/functions/function.rb +8 -2
- data/lib/puppet/pops/issue_reporter.rb +7 -2
- data/lib/puppet/pops/issues.rb +10 -4
- data/lib/puppet/pops/label_provider.rb +1 -1
- data/lib/puppet/pops/loader/module_loaders.rb +5 -2
- data/lib/puppet/pops/loader/static_loader.rb +1 -1
- data/lib/puppet/pops/loaders.rb +7 -3
- data/lib/puppet/pops/lookup/explainer.rb +2 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +2 -2
- data/lib/puppet/pops/lookup/lookup_adapter.rb +4 -4
- data/lib/puppet/pops/merge_strategy.rb +6 -3
- data/lib/puppet/pops/migration/migration_checker.rb +8 -8
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +4 -2
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_writer.rb +2 -1
- data/lib/puppet/pops/types/iterable.rb +2 -0
- data/lib/puppet/pops/types/p_object_type.rb +36 -15
- data/lib/puppet/pops/types/type_calculator.rb +2 -1
- data/lib/puppet/pops/types/type_factory.rb +3 -1
- data/lib/puppet/pops/types/type_mismatch_describer.rb +19 -6
- data/lib/puppet/pops/types/type_parser.rb +7 -7
- data/lib/puppet/pops/types/types.rb +10 -4
- data/lib/puppet/pops/validation.rb +14 -12
- data/lib/puppet/property.rb +14 -6
- data/lib/puppet/property/ensure.rb +2 -2
- data/lib/puppet/provider.rb +4 -4
- data/lib/puppet/provider/group/aix.rb +4 -2
- data/lib/puppet/provider/ldap.rb +2 -2
- data/lib/puppet/provider/naginator.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +7 -4
- data/lib/puppet/provider/nameservice/directoryservice.rb +4 -3
- data/lib/puppet/provider/package/aix.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +7 -8
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +9 -6
- data/lib/puppet/provider/package/pkgutil.rb +3 -3
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +4 -4
- data/lib/puppet/provider/selmodule/semodule.rb +5 -3
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -1
- data/lib/puppet/provider/service/smf.rb +2 -0
- data/lib/puppet/provider/service/systemd.rb +1 -0
- data/lib/puppet/provider/service/upstart.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +13 -6
- data/lib/puppet/provider/user/openbsd.rb +2 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -1
- data/lib/puppet/provider/zone/solaris.rb +2 -2
- data/lib/puppet/reference/configuration.rb +4 -2
- data/lib/puppet/relationship.rb +2 -1
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource.rb +7 -5
- data/lib/puppet/resource/capability_finder.rb +14 -11
- data/lib/puppet/resource/catalog.rb +33 -18
- data/lib/puppet/resource/type.rb +5 -5
- data/lib/puppet/settings.rb +19 -13
- data/lib/puppet/settings/base_setting.rb +23 -8
- data/lib/puppet/settings/config_file.rb +14 -4
- data/lib/puppet/settings/environment_conf.rb +19 -9
- data/lib/puppet/ssl/base.rb +9 -4
- data/lib/puppet/ssl/oids.rb +8 -2
- data/lib/puppet/syntax_checkers/base64.rb +5 -6
- data/lib/puppet/transaction.rb +7 -3
- data/lib/puppet/transaction/persistence.rb +16 -1
- data/lib/puppet/transaction/report.rb +6 -0
- data/lib/puppet/type.rb +27 -35
- data/lib/puppet/type/file.rb +2 -1
- data/lib/puppet/type/file/data_sync.rb +2 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/group.rb +1 -1
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/schedule.rb +26 -14
- data/lib/puppet/type/user.rb +9 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +27 -21
- data/lib/puppet/util/at_fork/solaris.rb +6 -4
- data/lib/puppet/util/command_line.rb +5 -0
- data/lib/puppet/util/command_line/trollop.rb +6 -5
- data/lib/puppet/util/errors.rb +61 -8
- data/lib/puppet/util/fileparsing.rb +3 -5
- data/lib/puppet/util/http_proxy.rb +14 -6
- data/lib/puppet/util/instance_loader.rb +1 -3
- data/lib/puppet/util/ldap/manager.rb +6 -3
- data/lib/puppet/util/log.rb +19 -24
- data/lib/puppet/util/logging.rb +21 -28
- data/lib/puppet/util/methodhelper.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +21 -13
- data/lib/puppet/util/plist.rb +3 -1
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/util/reference.rb +2 -3
- data/lib/puppet/util/selinux.rb +1 -1
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/windows/eventlog.rb +10 -5
- data/lib/puppet/util/windows/file.rb +61 -9
- data/lib/puppet/util/windows/process.rb +1 -1
- data/lib/puppet/util/windows/taskscheduler.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +5 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/en/puppet.po +19 -0
- data/locales/ja/puppet.po +2739 -809
- data/locales/puppet.pot +2367 -734
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +2 -0
- data/spec/integration/agent/logging_spec.rb +2 -0
- data/spec/integration/faces/plugin_spec.rb +1 -0
- data/spec/integration/network/authconfig_spec.rb +2 -2
- data/spec/integration/parser/collection_spec.rb +2 -2
- data/spec/integration/parser/scope_spec.rb +16 -3
- data/spec/integration/provider/cron/crontab_spec.rb +1 -0
- data/spec/integration/transaction/report_spec.rb +5 -0
- data/spec/lib/matchers/json.rb +14 -13
- data/spec/unit/agent_spec.rb +33 -0
- data/spec/unit/application/config_spec.rb +4 -0
- data/spec/unit/application/lookup_spec.rb +30 -0
- data/spec/unit/application_spec.rb +18 -0
- data/spec/unit/configurer/downloader_factory_spec.rb +33 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +71 -16
- data/spec/unit/environments_spec.rb +15 -0
- data/spec/unit/face/config_spec.rb +8 -9
- data/spec/unit/face/epp_face_spec.rb +2 -2
- data/spec/unit/face/plugin_spec.rb +50 -4
- data/spec/unit/file_serving/configuration/parser_spec.rb +2 -2
- data/spec/unit/file_serving/mount/locales_spec.rb +73 -0
- data/spec/unit/functions/break_spec.rb +108 -50
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/hiera_spec.rb +0 -1
- data/spec/unit/functions/lookup_spec.rb +85 -19
- data/spec/unit/functions/next_spec.rb +1 -1
- data/spec/unit/functions/return_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +125 -0
- data/spec/unit/gettext/module_loading_spec.rb +53 -0
- data/spec/unit/indirector/json_spec.rb +0 -11
- data/spec/unit/indirector/node/exec_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface_spec.rb +12 -0
- data/spec/unit/module_spec.rb +0 -28
- data/spec/unit/module_tool/tar/mini_spec.rb +34 -5
- data/spec/unit/network/http/factory_spec.rb +22 -0
- data/spec/unit/network/http/webrick_spec.rb +30 -29
- data/spec/unit/node/environment_spec.rb +16 -0
- data/spec/unit/node_spec.rb +102 -16
- data/spec/unit/parser/environment_compiler_spec.rb +1 -1
- data/spec/unit/parser/functions/sprintf_spec.rb +26 -0
- data/spec/unit/parser/resource/param_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +9 -9
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_containers_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +40 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +9 -0
- data/spec/unit/provider/selmodule_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +1 -1
- data/spec/unit/provider/service/smf_spec.rb +2 -0
- data/spec/unit/provider/service/systemd_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +12 -2
- data/spec/unit/settings/config_file_spec.rb +1 -1
- data/spec/unit/transaction/persistence_spec.rb +42 -0
- data/spec/unit/transaction/report_spec.rb +19 -4
- data/spec/unit/transaction_spec.rb +27 -0
- data/spec/unit/type/schedule_spec.rb +14 -0
- data/spec/unit/type_spec.rb +3 -3
- data/spec/unit/util/errors_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +37 -0
- data/spec/unit/util/log_spec.rb +3 -3
- data/spec/unit/util/logging_spec.rb +7 -7
- data/spec/unit/util/monkey_patches_spec.rb +6 -2
- metadata +3433 -3416
- checksums.yaml +0 -7
- data/spec/unit/gettext_config_spec.rb +0 -57
@@ -14,9 +14,11 @@ module Puppet::ModuleTool::Errors
|
|
14
14
|
def multiline
|
15
15
|
message = []
|
16
16
|
message << _("Could not install module '%{module_name}' (%{version})") % { module_name: @module_name, version: @requested_version }
|
17
|
-
message << _(" Module '%{module_name}' (%{
|
17
|
+
message << _(" Module '%{module_name}' (%{installed_version}) is already installed") % { module_name: @module_name, installed_version: @installed_version }
|
18
18
|
message << _(" Installed module has had changes made locally") unless @local_changes.empty?
|
19
|
+
#TRANSLATORS `puppet module upgrade` is a command line and should not be translated
|
19
20
|
message << _(" Use `puppet module upgrade` to install a different version")
|
21
|
+
#TRANSLATORS `puppet module install --force` is a command line and should not be translated
|
20
22
|
message << _(" Use `puppet module install --force` to re-install only this module")
|
21
23
|
message.join("\n")
|
22
24
|
end
|
@@ -33,10 +35,8 @@ module Puppet::ModuleTool::Errors
|
|
33
35
|
def multiline
|
34
36
|
message = []
|
35
37
|
message << _("Could not install '%{requested_package}'") % { requested_package: @requested_package }
|
36
|
-
|
37
38
|
message << _(" No releases are available from %{source}") % { source: @source }
|
38
39
|
message << _(" Does '%{requested_package}' have at least one published release?") % { requested_package: @requested_package }
|
39
|
-
|
40
40
|
message.join("\n")
|
41
41
|
end
|
42
42
|
end
|
@@ -50,12 +50,12 @@ module Puppet::ModuleTool::Errors
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def multiline
|
53
|
-
|
54
|
-
Could not install module '%{module_name}' (%{version})
|
55
|
-
Path '%{
|
56
|
-
|
57
|
-
mkdir -p '%{
|
58
|
-
|
53
|
+
message = []
|
54
|
+
message << _("Could not install module '%{module_name}' (%{version})") % { module_name: @requested_module, version: @requested_version }
|
55
|
+
message << _(" Path '%{directory}' exists but is not a directory.") % { directory: @directory }
|
56
|
+
#TRANSLATORS "mkdir -p '%{directory}'" is a command line example and should not be translated
|
57
|
+
message << _(" A potential solution is to rename the path and then \"mkdir -p '%{directory}'\"") % { directory: @directory }
|
58
|
+
message.join("\n")
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -68,12 +68,11 @@ Could not install module '%{module_name}' (%{version})
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def multiline
|
71
|
-
|
72
|
-
Could not install module '%{module_name}' (%{version})
|
73
|
-
Permission is denied when trying to create directory '%{
|
74
|
-
A potential solution is to check the ownership and permissions of
|
75
|
-
|
76
|
-
MSG
|
71
|
+
message = []
|
72
|
+
message << _("Could not install module '%{module_name}' (%{version})") % { module_name: @requested_module, version: @requested_version }
|
73
|
+
message << _(" Permission is denied when trying to create directory '%{directory}'.") % { directory: @directory }
|
74
|
+
message << _(' A potential solution is to check the ownership and permissions of parent directories.')
|
75
|
+
message.join("\n")
|
77
76
|
end
|
78
77
|
end
|
79
78
|
|
@@ -85,11 +84,10 @@ Could not install module '%{module_name}' (%{version})
|
|
85
84
|
end
|
86
85
|
|
87
86
|
def multiline
|
88
|
-
|
89
|
-
Could not install package with an invalid path.
|
90
|
-
Package attempted to install file into
|
91
|
-
|
92
|
-
MSG
|
87
|
+
message = []
|
88
|
+
message << _('Could not install package with an invalid path.')
|
89
|
+
message << _(' Package attempted to install file into %{path} under %{directory}.') % { path: @entry_path.inspect, directory: @directory.inspect }
|
90
|
+
message.join("\n")
|
93
91
|
end
|
94
92
|
end
|
95
93
|
end
|
@@ -15,8 +15,8 @@ module Puppet::ModuleTool::Errors
|
|
15
15
|
message = []
|
16
16
|
message << _("Could not %{action} module '%{module_name}' (%{version})") % { action: @action, module_name: @requested_name, version: vstring }
|
17
17
|
message << _(" No version of '%{module_name}' can satisfy all dependencies") % { module_name: @requested_name }
|
18
|
+
#TRANSLATORS `puppet module %{action} --ignore-dependencies` is a command line and should not be translated
|
18
19
|
message << _(" Use `puppet module %{action} --ignore-dependencies` to %{action} only this module") % { action: @action }
|
19
|
-
|
20
20
|
message.join("\n")
|
21
21
|
end
|
22
22
|
end
|
@@ -39,14 +39,12 @@ module Puppet::ModuleTool::Errors
|
|
39
39
|
def multiline
|
40
40
|
message = []
|
41
41
|
message << _("Could not %{action} '%{module_name}' (%{version})") % { action: @action, module_name: @module_name, version: vstring }
|
42
|
-
|
43
42
|
if @requested_version == :latest
|
44
43
|
message << _(" No releases are available from %{source}") % { source: @source }
|
45
44
|
message << _(" Does '%{module_name}' have at least one published release?") % { module_name: @module_name }
|
46
45
|
else
|
47
|
-
message << _(" No releases matching '%{
|
46
|
+
message << _(" No releases matching '%{requested_version}' are available from %{source}") % { requested_version: @requested_version, source: @source }
|
48
47
|
end
|
49
|
-
|
50
48
|
message.join("\n")
|
51
49
|
end
|
52
50
|
end
|
@@ -66,21 +64,22 @@ module Puppet::ModuleTool::Errors
|
|
66
64
|
message << _("Could not install module '%{module_name}' (%{version})") % { module_name: @requested_module, version: @requested_version }
|
67
65
|
|
68
66
|
if @dependency
|
69
|
-
message << _(" Dependency '%{name}' (%{version}) would overwrite %{
|
67
|
+
message << _(" Dependency '%{name}' (%{version}) would overwrite %{directory}") % { name: @dependency[:name], version: v(@dependency[:version]), directory: @directory }
|
70
68
|
else
|
71
|
-
message << _(" Installation would overwrite %{
|
69
|
+
message << _(" Installation would overwrite %{directory}") % { directory: @directory }
|
72
70
|
end
|
73
71
|
|
74
72
|
if @metadata
|
75
|
-
message << _(" Currently, '%{
|
73
|
+
message << _(" Currently, '%{current_name}' (%{current_version}) is installed to that directory") % { current_name: @metadata["name"], current_version: v(@metadata["version"]) }
|
76
74
|
end
|
77
75
|
|
78
76
|
if @dependency
|
77
|
+
#TRANSLATORS `puppet module install --ignore-dependencies` is a command line and should not be translated
|
79
78
|
message << _(" Use `puppet module install --ignore-dependencies` to install only this module")
|
80
79
|
else
|
80
|
+
#TRANSLATORS `puppet module install --force` is a command line and should not be translated
|
81
81
|
message << _(" Use `puppet module install --force` to install this module anyway")
|
82
82
|
end
|
83
|
-
|
84
83
|
message.join("\n")
|
85
84
|
end
|
86
85
|
end
|
@@ -97,17 +96,18 @@ module Puppet::ModuleTool::Errors
|
|
97
96
|
end
|
98
97
|
|
99
98
|
def multiline
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
99
|
+
dependency_list = []
|
100
|
+
dependency_list << _("You specified '%{name}' (%{version})") % { name: @source.first[:name], version: v(@requested_version) }
|
101
|
+
dependency_list += @source[1..-1].map do |m|
|
102
|
+
#TRANSLATORS This message repeats as separate lines as a list under the heading "You specified '%{name}' (%{version})\n"
|
103
|
+
_("This depends on '%{name}' (%{version})") % { name: m[:name], version: v(m[:version]) }
|
104
|
+
end
|
105
105
|
message = []
|
106
106
|
message << _("Could not install module '%{module_name}' (%{version})") % { module_name: @requested_module, version: v(@requested_version) }
|
107
107
|
message << _(" No version of '%{module_name}' will satisfy dependencies") % { module_name: @module_name }
|
108
|
-
message <<
|
108
|
+
message << dependency_list.map {|s| " #{s}".join(",\n")}
|
109
|
+
#TRANSLATORS `puppet module install --force` is a command line and should not be translated
|
109
110
|
message << _(" Use `puppet module install --force` to install this module anyway")
|
110
|
-
|
111
111
|
message.join("\n")
|
112
112
|
end
|
113
113
|
end
|
@@ -125,8 +125,10 @@ module Puppet::ModuleTool::Errors
|
|
125
125
|
message << _("Could not %{action} module '%{module_name}'") % { action: @action, module_name: @module_name }
|
126
126
|
message << _(" Module '%{module_name}' is not installed") % { module_name: @module_name }
|
127
127
|
message += @suggestions.map do |suggestion|
|
128
|
+
#TRANSLATORS `puppet module %{action} %{suggestion}` is a command line and should not be translated
|
128
129
|
_(" You may have meant `puppet module %{action} %{suggestion}`") % { action: @action, suggestion: suggestion }
|
129
130
|
end
|
131
|
+
#TRANSLATORS `puppet module install` is a command line and should not be translated
|
130
132
|
message << _(" Use `puppet module install` to install this module") if @action == :upgrade
|
131
133
|
message.join("\n")
|
132
134
|
end
|
@@ -146,8 +148,10 @@ module Puppet::ModuleTool::Errors
|
|
146
148
|
message << _("Could not %{action} module '%{module_name}'") % { action: @action, module_name: @module_name }
|
147
149
|
message << _(" Module '%{module_name}' appears multiple places in the module path") % { module_name: @module_name }
|
148
150
|
message += @modules.map do |mod|
|
151
|
+
#TRANSLATORS This is repeats as separate lines as a list under "Module '%{module_name}' appears multiple places in the module path"
|
149
152
|
_(" '%{module_name}' (%{version}) was found in %{path}") % { module_name: @module_name, version: v(mod.version), path: mod.modulepath }
|
150
153
|
end
|
154
|
+
#TRANSLATORS `--modulepath` is command line option and should not be translated
|
151
155
|
message << _(" Use the `--modulepath` option to limit the search to specific directories")
|
152
156
|
message.join("\n")
|
153
157
|
end
|
@@ -166,6 +170,7 @@ module Puppet::ModuleTool::Errors
|
|
166
170
|
message = []
|
167
171
|
message << _("Could not %{action} module '%{module_name}' (%{version})") % { action: @action, module_name: @module_name, version: vstring }
|
168
172
|
message << _(" Installed module has had changes made locally")
|
173
|
+
#TRANSLATORS `puppet module %{action} --ignore-changes` is a command line and should not be translated
|
169
174
|
message << _(" Use `puppet module %{action} --ignore-changes` to %{action} this module anyway") % { action: @action }
|
170
175
|
message.join("\n")
|
171
176
|
end
|
@@ -42,6 +42,7 @@ module Puppet::ModuleTool::Errors
|
|
42
42
|
message += @required_by.map do |mod|
|
43
43
|
_(" '%{module_name}' (%{version}) requires '%{module_dep}' (%{dep_version})") % { module_name: mod['name'], version: v(mod['version']), module_dep: @module_name, dep_version: v(mod['version_requirement']) }
|
44
44
|
end
|
45
|
+
#TRANSLATORS `puppet module uninstall --force` is a command line option that should not be translated
|
45
46
|
message << _(" Use `puppet module uninstall --force` to uninstall this module anyway")
|
46
47
|
message.join("\n")
|
47
48
|
end
|
@@ -36,6 +36,7 @@ module Puppet::ModuleTool::Errors
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
|
+
#TRANSLATORS `puppet module upgrade --force` is a command line option that should not be translated
|
39
40
|
message << _(" Use `puppet module upgrade --force` to upgrade only this module")
|
40
41
|
message.join("\n")
|
41
42
|
end
|
@@ -56,7 +57,6 @@ module Puppet::ModuleTool::Errors
|
|
56
57
|
message = []
|
57
58
|
message << _("Could not %{action} module '%{module_name}' (%{version})") % { action: @action, module_name: @module_name, version: vstring }
|
58
59
|
message << _(" Downgrading is not allowed.")
|
59
|
-
|
60
60
|
message.join("\n")
|
61
61
|
end
|
62
62
|
end
|
@@ -3,24 +3,77 @@ class Puppet::ModuleTool::Tar::Mini
|
|
3
3
|
Zlib::GzipReader.open(sourcefile) do |reader|
|
4
4
|
Archive::Tar::Minitar.unpack(reader, destdir, find_valid_files(reader)) do |action, name, stats|
|
5
5
|
case action
|
6
|
-
when :
|
7
|
-
File.chmod(0644, "#{destdir}/#{name}")
|
8
|
-
when :dir, :file_start
|
6
|
+
when :dir
|
9
7
|
validate_entry(destdir, name)
|
8
|
+
set_dir_mode!(stats)
|
9
|
+
Puppet.debug("Extracting: #{destdir}/#{name}")
|
10
|
+
when :file_start
|
11
|
+
# Octal string of the old file mode.
|
12
|
+
validate_entry(destdir, name)
|
13
|
+
set_file_mode!(stats)
|
10
14
|
Puppet.debug("Extracting: #{destdir}/#{name}")
|
11
15
|
end
|
16
|
+
set_default_user_and_group!(stats)
|
17
|
+
stats
|
12
18
|
end
|
13
19
|
end
|
14
20
|
end
|
15
21
|
|
16
22
|
def pack(sourcedir, destfile)
|
17
23
|
Zlib::GzipWriter.open(destfile) do |writer|
|
18
|
-
Archive::Tar::Minitar.pack(sourcedir, writer)
|
24
|
+
Archive::Tar::Minitar.pack(sourcedir, writer) do |step, name, stats|
|
25
|
+
# TODO smcclellan 2017-10-31 Set permissions here when this yield block
|
26
|
+
# executes before the header is written. As it stands, the `stats`
|
27
|
+
# argument isn't mutable in a way that will effect the desired mode for
|
28
|
+
# the file.
|
29
|
+
end
|
19
30
|
end
|
20
31
|
end
|
21
32
|
|
22
33
|
private
|
23
34
|
|
35
|
+
EXECUTABLE = 0755
|
36
|
+
NOT_EXECUTABLE = 0644
|
37
|
+
USER_EXECUTE = 0100
|
38
|
+
|
39
|
+
def set_dir_mode!(stats)
|
40
|
+
if stats.key?(:mode)
|
41
|
+
# This is only the case for `pack`, so this code will not run.
|
42
|
+
stats[:mode] = EXECUTABLE
|
43
|
+
elsif stats.key?(:entry)
|
44
|
+
old_mode = stats[:entry].instance_variable_get(:@mode)
|
45
|
+
if old_mode.is_a?(Fixnum)
|
46
|
+
stats[:entry].instance_variable_set(:@mode, EXECUTABLE)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Sets a file mode to 0755 if the file is executable by the user.
|
52
|
+
# Sets a file mode to 0644 if the file mode is set (non-Windows).
|
53
|
+
def sanitized_mode(old_mode)
|
54
|
+
old_mode & USER_EXECUTE != 0 ? EXECUTABLE : NOT_EXECUTABLE
|
55
|
+
end
|
56
|
+
|
57
|
+
def set_file_mode!(stats)
|
58
|
+
if stats.key?(:mode)
|
59
|
+
# This is only the case for `pack`, so this code will not run.
|
60
|
+
stats[:mode] = sanitized_mode(stats[:mode])
|
61
|
+
elsif stats.key?(:entry)
|
62
|
+
old_mode = stats[:entry].instance_variable_get(:@mode)
|
63
|
+
# If the user can execute the file, set 0755, otherwise 0644.
|
64
|
+
if old_mode.is_a?(Fixnum)
|
65
|
+
new_mode = sanitized_mode(old_mode)
|
66
|
+
stats[:entry].instance_variable_set(:@mode, new_mode)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# Sets UID and GID to 0 for standardization.
|
72
|
+
def set_default_user_and_group!(stats)
|
73
|
+
stats[:uid] = 0
|
74
|
+
stats[:gid] = 0
|
75
|
+
end
|
76
|
+
|
24
77
|
# Find all the valid files in tarfile.
|
25
78
|
#
|
26
79
|
# This check was mainly added to ignore 'x' and 'g' flags from the PAX
|
@@ -29,11 +29,14 @@ class AuthConfigParser
|
|
29
29
|
when /^\s*(allow(?:_ip)?|deny(?:_ip)?|method|environment|auth(?:enticated)?)\s+(.+?)(\s*#.*)?$/
|
30
30
|
if right.nil?
|
31
31
|
#TRANSLATORS "path" is a configuration file entry and should not be translated
|
32
|
-
raise Puppet::ConfigurationError, _("Missing or invalid 'path' before right directive at
|
32
|
+
raise Puppet::ConfigurationError, _("Missing or invalid 'path' before right directive at %{error_location}") %
|
33
|
+
{ error_location: Puppet::Util::Errors.error_location(@file, count) }
|
33
34
|
end
|
34
35
|
parse_right_directive(right, $1, $2, count)
|
35
36
|
else
|
36
|
-
|
37
|
+
error_location_str = Puppet::Util::Errors.error_location(nil, count)
|
38
|
+
raise Puppet::ConfigurationError, _("Invalid entry at %{error_location}: %{file_text}") %
|
39
|
+
{ error_location: error_location_str, file_text: line }
|
37
40
|
end
|
38
41
|
count += 1
|
39
42
|
}
|
@@ -51,22 +54,23 @@ class AuthConfigParser
|
|
51
54
|
value.strip!
|
52
55
|
case var
|
53
56
|
when "allow"
|
54
|
-
modify_right(right, :allow, value, _("allowing %
|
57
|
+
modify_right(right, :allow, value, _("allowing %{value} access"), count)
|
55
58
|
when "deny"
|
56
|
-
modify_right(right, :deny, value, _("denying %
|
59
|
+
modify_right(right, :deny, value, _("denying %{value} access"), count)
|
57
60
|
when "allow_ip"
|
58
|
-
modify_right(right, :allow_ip, value, _("allowing IP %
|
61
|
+
modify_right(right, :allow_ip, value, _("allowing IP %{value} access"), count)
|
59
62
|
when "deny_ip"
|
60
|
-
modify_right(right, :deny_ip, value, _("denying IP %
|
63
|
+
modify_right(right, :deny_ip, value, _("denying IP %{value} access"), count)
|
61
64
|
when "method"
|
62
|
-
modify_right(right, :restrict_method, value, _("allowing 'method' %
|
65
|
+
modify_right(right, :restrict_method, value, _("allowing 'method' %{value}"), count)
|
63
66
|
when "environment"
|
64
|
-
modify_right(right, :restrict_environment, value, _("adding environment %
|
67
|
+
modify_right(right, :restrict_environment, value, _("adding environment %{value}"), count)
|
65
68
|
when /auth(?:enticated)?/
|
66
|
-
modify_right(right, :restrict_authenticated, value, _("adding authentication %
|
69
|
+
modify_right(right, :restrict_authenticated, value, _("adding authentication %{value}"), count)
|
67
70
|
else
|
68
|
-
|
69
|
-
|
71
|
+
error_location_str = Puppet::Util::Errors.error_location(nil, count)
|
72
|
+
raise Puppet::ConfigurationError, _("Invalid argument '%{var}' at %{error_location}") %
|
73
|
+
{ var: var, error_location: error_location_str }
|
70
74
|
end
|
71
75
|
end
|
72
76
|
|
@@ -74,10 +78,11 @@ class AuthConfigParser
|
|
74
78
|
value.split(/\s*,\s*/).each do |val|
|
75
79
|
begin
|
76
80
|
val.strip!
|
77
|
-
right.info msg % val
|
81
|
+
right.info msg % { value: val }
|
78
82
|
right.send(method, val)
|
79
83
|
rescue Puppet::AuthStoreError => detail
|
80
|
-
|
84
|
+
error_location_str = Puppet::Util::Errors.error_location(@file, count)
|
85
|
+
raise Puppet::ConfigurationError, "#{detail} #{error_location_str}", detail.backtrace
|
81
86
|
end
|
82
87
|
end
|
83
88
|
end
|
@@ -19,7 +19,7 @@ module Puppet
|
|
19
19
|
# This is probably unnecessary, and can cause some weirdnesses in
|
20
20
|
# cases where we're operating over localhost but don't have a real
|
21
21
|
# IP defined.
|
22
|
-
raise Puppet::DevError, "Name and IP must be passed to 'allowed?'" unless name and ip
|
22
|
+
raise Puppet::DevError, _("Name and IP must be passed to 'allowed?'") unless name and ip
|
23
23
|
# else, we're networked and such
|
24
24
|
else
|
25
25
|
# we're local
|
@@ -186,7 +186,7 @@ module Puppet
|
|
186
186
|
# Set the declaration type. Either :allow or :deny.
|
187
187
|
def type=(type)
|
188
188
|
type = type.intern
|
189
|
-
raise ArgumentError, "Invalid declaration type
|
189
|
+
raise ArgumentError, _("Invalid declaration type %{type}") % { type: type } unless VALID_TYPES.include?(type)
|
190
190
|
@type = type
|
191
191
|
end
|
192
192
|
|
@@ -12,7 +12,7 @@ module Puppet::Network # :nodoc:
|
|
12
12
|
# are responsible for setting the values correctly, but this common
|
13
13
|
# format makes it possible to check rights.
|
14
14
|
def call
|
15
|
-
raise ArgumentError, "Request is not set up; cannot build call" unless handler and method
|
15
|
+
raise ArgumentError, _("Request is not set up; cannot build call") unless handler and method
|
16
16
|
|
17
17
|
[handler, method].join(".")
|
18
18
|
end
|
@@ -40,7 +40,7 @@ class Puppet::Network::Format
|
|
40
40
|
init_attribute(method, value)
|
41
41
|
end
|
42
42
|
|
43
|
-
raise ArgumentError, "Unsupported option(s)
|
43
|
+
raise ArgumentError, _("Unsupported option(s) %{options_list}") % { options_list: @options.keys } unless @options.empty?
|
44
44
|
|
45
45
|
@options = nil
|
46
46
|
|
@@ -69,8 +69,8 @@ class Puppet::Network::Format
|
|
69
69
|
def render_multiple(instances)
|
70
70
|
# This method implicitly assumes that all instances are of the same type.
|
71
71
|
return instances[0].class.send(render_multiple_method, instances) if instances[0].class.respond_to?(render_multiple_method)
|
72
|
-
raise NotImplementedError, _("%{klass} does not respond to %{method}; can not render multiple instances to %{mime}")
|
73
|
-
|
72
|
+
raise NotImplementedError, _("%{klass} does not respond to %{method}; can not render multiple instances to %{mime}") %
|
73
|
+
{ klass: instances[0].class, method: render_multiple_method, mime: mime }
|
74
74
|
end
|
75
75
|
|
76
76
|
def required_methods_present?(klass)
|
@@ -36,12 +36,15 @@ class Puppet::Network::HTTP::API::Master::V3::Environment
|
|
36
36
|
|
37
37
|
nonexistent_components = mapped_components - required_components
|
38
38
|
if nonexistent_components.any?
|
39
|
-
raise Puppet::ParseError.new(
|
39
|
+
raise Puppet::ParseError.new(
|
40
|
+
_("Application %{application} assigns nodes to non-existent components: %{component_list}") %
|
41
|
+
{ application: app, component_list: nonexistent_components.join(', ') }, file, line)
|
40
42
|
end
|
41
43
|
|
42
44
|
missing_components = required_components - mapped_components
|
43
45
|
if missing_components.any?
|
44
|
-
raise Puppet::ParseError.new("Application
|
46
|
+
raise Puppet::ParseError.new(_("Application %{application} has components without assigned nodes: %{component_list}") %
|
47
|
+
{ application: app, component_list: missing_components.join(', ') }, file, line)
|
45
48
|
end
|
46
49
|
|
47
50
|
# Turn the 'nodes' hash into a map component ref => node name
|
@@ -20,42 +20,42 @@ module Puppet::Network::HTTP::Error
|
|
20
20
|
class HTTPNotAcceptableError < HTTPError
|
21
21
|
CODE = 406
|
22
22
|
def initialize(message, issue_kind = Issues::RUNTIME_ERROR)
|
23
|
-
super(_("Not Acceptable: ")
|
23
|
+
super(_("Not Acceptable: %{message}") % { message: message }, CODE, issue_kind)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
class HTTPNotFoundError < HTTPError
|
28
28
|
CODE = 404
|
29
29
|
def initialize(message, issue_kind = Issues::RUNTIME_ERROR)
|
30
|
-
super(_("Not Found: ")
|
30
|
+
super(_("Not Found: %{message}") % { message: message }, CODE, issue_kind)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
34
|
class HTTPNotAuthorizedError < HTTPError
|
35
35
|
CODE = 403
|
36
36
|
def initialize(message, issue_kind = Issues::RUNTIME_ERROR)
|
37
|
-
super(_("Not Authorized: ")
|
37
|
+
super(_("Not Authorized: %{message}") % { message: message }, CODE, issue_kind)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
class HTTPBadRequestError < HTTPError
|
42
42
|
CODE = 400
|
43
43
|
def initialize(message, issue_kind = Issues::RUNTIME_ERROR)
|
44
|
-
super(_("Bad Request: ")
|
44
|
+
super(_("Bad Request: %{message}") % { message: message }, CODE, issue_kind)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
class HTTPMethodNotAllowedError < HTTPError
|
49
49
|
CODE = 405
|
50
50
|
def initialize(message, issue_kind = Issues::RUNTIME_ERROR)
|
51
|
-
super(_("Method Not Allowed: ")
|
51
|
+
super(_("Method Not Allowed: %{message}") % { message: message }, CODE, issue_kind)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
class HTTPUnsupportedMediaTypeError < HTTPError
|
56
56
|
CODE = 415
|
57
57
|
def initialize(message, issue_kind = Issues::RUNTIME_ERROR)
|
58
|
-
super(_("Unsupported Media Type: ")
|
58
|
+
super(_("Unsupported Media Type: %{message}") % { message: message }, CODE, issue_kind)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -63,7 +63,7 @@ module Puppet::Network::HTTP::Error
|
|
63
63
|
CODE = 500
|
64
64
|
|
65
65
|
def initialize(original_error, issue_kind = Issues::RUNTIME_ERROR)
|
66
|
-
super(_("Server Error: ")
|
66
|
+
super(_("Server Error: %{message}") % { message: original_error.message }, CODE, issue_kind)
|
67
67
|
end
|
68
68
|
|
69
69
|
def to_json
|