[pve-devel] [RFC common 1/1] REST environment: add static log_warn function

Fabian Ebner f.ebner at proxmox.com
Wed Sep 1 13:02:05 CEST 2021


Am 23.08.21 um 18:22 schrieb Thomas Lamprecht:
> On 06/08/2021 14:57, Fabian Ebner wrote:
>> which can be called even when the environment is not initialized.
>>
>> Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
>> ---
>>   src/PVE/RESTEnvironment.pm | 12 +++++++++---
>>   1 file changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/PVE/RESTEnvironment.pm b/src/PVE/RESTEnvironment.pm
>> index 189a6cd..4278966 100644
>> --- a/src/PVE/RESTEnvironment.pm
>> +++ b/src/PVE/RESTEnvironment.pm
>> @@ -712,14 +712,20 @@ sub fork_worker {
>>       return wantarray ? ($upid, $res) : $upid;
>>   }
>>   
>> -sub warn {
>> -    my ($self, $message) = @_;
>> +sub log_warn {
>> +    my ($message) = @_;
>>   
>>       chomp($message);
>>   
>>       print STDERR "WARN: $message\n";
>>   
>> -    $self->{warning_count}++;
>> +    $rest_env->{warning_count}++ if $rest_env;
>> +}
>> +
>> +sub warn {
>> +    my ($self, $message) = @_;
>> +
>> +    log_warn($message);
>>   }
>>   
>>   # Abstract function
>>
> 
> The approach seems OK-ish in general to me, was there any off-list discussion against this
> or just not prioritized for review yet?
> 

I can't remember any off-list discussion about this, but I'm wondering 
two things:

1. Would adding an EXPORT_OK for the function be ok?

2. The following approach leads to a bit of duplication, but would 
ensure that if a derived class overrides warn() then log_warn() will use 
that one too. Should that be preferred?

diff --git a/src/PVE/RESTEnvironment.pm b/src/PVE/RESTEnvironment.pm
index 189a6cd..bf10040 100644
--- a/src/PVE/RESTEnvironment.pm
+++ b/src/PVE/RESTEnvironment.pm
@@ -712,6 +712,17 @@ sub fork_worker {
      return wantarray ? ($upid, $res) : $upid;
  }

+sub log_warn {
+    my ($message) = @_;
+
+    if ($rest_env) {
+       $rest_env->warn($message);
+    } else {
+       chomp($message);
+       print STDERR "WARN: $message\n";
+    }
+}
+
  sub warn {
      my ($self, $message) = @_;




More information about the pve-devel mailing list