From e44238a9c7da7ad4a872ba86cd103becadd51b3b Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Sat, 8 Oct 2016 18:10:53 +0100 Subject: Revert "Addition of logging with file and line numbers" This reverts commit b63862ff43194194f7428739a32cfe13bad1e7ed, as it would only show the irrelevant first entry of the ruby stack trace. The puppetserver log does contain the full trace information, or you can use --strict=error to cause a hard failure when hitting a deprecation. # Conflicts: # lib/puppet/functions/validate_legacy.rb --- lib/puppet/functions/deprecation.rb | 8 +++----- lib/puppet/functions/validate_legacy.rb | 3 +-- lib/puppet/parser/functions/deprecation.rb | 4 +--- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/lib/puppet/functions/deprecation.rb b/lib/puppet/functions/deprecation.rb index 30aeb1d..6b7b977 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,13 @@ 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) + Puppet.deprecation_warning(message, key) 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 -- cgit v1.2.3 From bec521e6b79dd612a73e742d1cb6371e17ade1a9 Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Sat, 8 Oct 2016 18:28:22 +0100 Subject: Update deprecation() so warnings can be disabled for CI --- README.markdown | 15 ++++++++++++++- lib/puppet/functions/deprecation.rb | 4 +++- 2 files changed, 17 insertions(+), 2 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 6b7b977..a860aa2 100644 --- a/lib/puppet/functions/deprecation.rb +++ b/lib/puppet/functions/deprecation.rb @@ -15,7 +15,9 @@ Puppet::Functions.create_function(:deprecation) do when :error fail("deprecation. #{key}. #{message}") else - Puppet.deprecation_warning(message, key) + unless ENV['STDLIB_LOG_DEPRECATIONS'] == 'false' + Puppet.deprecation_warning(message, key) + end end end end -- cgit v1.2.3 From 729e076f1d5eee87c22fee1253dd6cac039f8509 Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Sat, 8 Oct 2016 20:06:32 +0100 Subject: Add testcase for #665 @keymone added information on how to reproduce his issue, so here's the test case that would fail without his change. --- spec/functions/getvar_spec.rb | 2 ++ 1 file changed, 2 insertions(+) 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' -- cgit v1.2.3