summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.markdown15
-rw-r--r--lib/puppet/functions/deprecation.rb10
-rw-r--r--lib/puppet/functions/validate_legacy.rb3
-rw-r--r--lib/puppet/parser/functions/deprecation.rb4
-rwxr-xr-xspec/functions/getvar_spec.rb2
5 files changed, 23 insertions, 11 deletions
diff --git a/README.markdown b/README.markdown
index 838a065..c90c9c3 100644
--- a/README.markdown
+++ b/README.markdown
@@ -344,7 +344,20 @@ Deletes all instances of the undef value from an array or hash. For example, `$h
#### `deprecation`
-Prints deprecation warnings and logs a warning once for a given key. The uniqueness key - can appear once. The msg is the message text, including any positional information that is formatted by the user or caller of the method. The Puppet setting 'strict' affects this function. Set 'strict' to :error to output an error message, :off to output no message or error, or :warning (default) to output a warning. In Puppet versions lower than 4.0, you can set an environment variable to decide whether or not to log deprecation warnings (`ENV[STDLIB_LOG_DEPRECATION]`). If this environment variable is set to true, the functions log a warning. *Type*: String, String.
+Prints deprecation warnings and logs a warning once for a given key:
+
+```
+deprecation(key, message)
+```
+
+* key: to keep the number of messages low, during the lifetime of a puppet process, only one message per key is logged.
+* message: the text to be logged.
+
+The Puppet settings '[disable_warnings](https://docs.puppet.com/puppet/latest/reference/configuration.html#disablewarnings)', '[max_deprecations](https://docs.puppet.com/puppet/latest/reference/configuration.html#maxdeprecations)', and '[strict](https://docs.puppet.com/puppet/latest/reference/configuration.html#strict)' affect this function. Set 'strict' to `error` to fail immediately with the deprecation message, `off` to output emit no messages at all, or `warning` (default) to log all warnings.
+
+Additionally you can set the environment variable `STDLIB_LOG_DEPRECATION` to decide whether or not to log deprecation warnings: if this environment variable is set to `true`, the functions log a warning, if it is set to `false`, no warnings are logged. If no value is set at all, Puppet 4 will emit warnings, while Puppet 3 will not. Using this setting is especially useful for automated tests to avoid flooding your logs before you are ready to migrate.
+
+*Type*: String, String.
#### `difference`
diff --git a/lib/puppet/functions/deprecation.rb b/lib/puppet/functions/deprecation.rb
index 30aeb1d..a860aa2 100644
--- a/lib/puppet/functions/deprecation.rb
+++ b/lib/puppet/functions/deprecation.rb
@@ -1,4 +1,5 @@
# Function to print deprecation warnings, Logs a warning once for a given key. The uniqueness key - can appear once. The msg is the message text including any positional information that is formatted by the user/caller of the method It is affected by the puppet setting 'strict', which can be set to :error (outputs as an error message), :off (no message / error is displayed) and :warning (default, outputs a warning) *Type*: String, String.
+#
Puppet::Functions.create_function(:deprecation) do
dispatch :deprecation do
@@ -8,16 +9,15 @@ Puppet::Functions.create_function(:deprecation) do
def deprecation(key, message)
# depending on configuration setting of strict
- caller_infos = caller.first.split(":")
case Puppet.settings[:strict]
when :off
# do nothing
when :error
- err_message = "#{message} : #{caller_infos[0]} : #{caller_infos[1]}"
- fail("deprecation. #{key}. #{err_message}")
+ fail("deprecation. #{key}. #{message}")
else
- err_message = "#{message} : #{caller_infos[0]} : #{caller_infos[1]}"
- Puppet.deprecation_warning(err_message, key)
+ unless ENV['STDLIB_LOG_DEPRECATIONS'] == 'false'
+ Puppet.deprecation_warning(message, key)
+ end
end
end
end
diff --git a/lib/puppet/functions/validate_legacy.rb b/lib/puppet/functions/validate_legacy.rb
index 0ba6dd8..3f50459 100644
--- a/lib/puppet/functions/validate_legacy.rb
+++ b/lib/puppet/functions/validate_legacy.rb
@@ -30,9 +30,8 @@ Puppet::Functions.create_function(:validate_legacy, Puppet::Functions::InternalF
Puppet.notice("Accepting previously invalid value for target type '#{target_type}'")
end
else
- caller_infos = caller.first.split(":")
inferred_type = Puppet::Pops::Types::TypeCalculator.infer_set(value)
- error_msg = Puppet::Pops::Types::TypeMismatchDescriber.new.describe_mismatch("validate_legacy(#{function_name}) [#{caller_infos[0]}:#{caller_infos[1]}]", target_type, inferred_type)
+ error_msg = Puppet::Pops::Types::TypeMismatchDescriber.new.describe_mismatch("validate_legacy(#{function_name})", target_type, inferred_type)
if previous_validation(scope, function_name, value, *prev_args)
call_function('deprecation', 'validate_legacy', error_msg)
else
diff --git a/lib/puppet/parser/functions/deprecation.rb b/lib/puppet/parser/functions/deprecation.rb
index 0cb247d..e30f3a0 100644
--- a/lib/puppet/parser/functions/deprecation.rb
+++ b/lib/puppet/parser/functions/deprecation.rb
@@ -11,9 +11,7 @@ EOS
message = arguments[1]
if ENV['STDLIB_LOG_DEPRECATIONS'] == "true"
- caller_infos = caller.first.split(":")
- err_message = "#{message} : #{caller_infos[0]} : #{caller_infos[1]}"
- warning("deprecation. #{key}. #{err_message}")
+ warning("deprecation. #{key}. #{message}")
end
end
end
diff --git a/spec/functions/getvar_spec.rb b/spec/functions/getvar_spec.rb
index 6ab137e..54f1842 100755
--- a/spec/functions/getvar_spec.rb
+++ b/spec/functions/getvar_spec.rb
@@ -6,6 +6,8 @@ describe 'getvar' do
it { is_expected.to run.with_params('one', 'two').and_raise_error(Puppet::ParseError, /wrong number of arguments/i) }
it { is_expected.to run.with_params().and_raise_error(Puppet::ParseError, /wrong number of arguments/i) }
+ it { is_expected.to run.with_params('$::foo').and_return(nil) }
+
context 'given variables in namespaces' do
let(:pre_condition) {
<<-'ENDofPUPPETcode'