From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 67B1A1FF2C5 for ; Mon, 8 Jul 2024 16:24:30 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7135A7F47; Mon, 8 Jul 2024 16:24:50 +0200 (CEST) Message-ID: Date: Mon, 8 Jul 2024 16:24:16 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Proxmox VE development discussion , Christoph Heiss References: <20240516102837.422278-1-c.heiss@proxmox.com> <20240516102837.422278-2-c.heiss@proxmox.com> From: Aaron Lauterer In-Reply-To: <20240516102837.422278-2-c.heiss@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.040 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH installer 1/3] low-level: add zfs module for retrieving importable zpool info X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" On 2024-05-16 12:28, Christoph Heiss wrote: > Signed-off-by: Christoph Heiss > --- > Proxmox/Makefile | 1 + > Proxmox/Sys/ZFS.pm | 43 ++++++++++++++++++++++++++++++++++ > test/Makefile | 6 +++++ > test/zfs-get-pool-list.pl | 49 +++++++++++++++++++++++++++++++++++++++ > 4 files changed, 99 insertions(+) > create mode 100644 Proxmox/Sys/ZFS.pm > create mode 100755 test/zfs-get-pool-list.pl > > diff --git a/Proxmox/Makefile b/Proxmox/Makefile > index 9561d9b..035626b 100644 > --- a/Proxmox/Makefile > +++ b/Proxmox/Makefile > @@ -17,6 +17,7 @@ PERL_MODULES=\ > Sys/File.pm \ > Sys/Net.pm \ > Sys/Udev.pm \ > + Sys/ZFS.pm \ > UI.pm \ > UI/Base.pm \ > UI/Gtk3.pm \ > diff --git a/Proxmox/Sys/ZFS.pm b/Proxmox/Sys/ZFS.pm > new file mode 100644 > index 0000000..4c732ca > --- /dev/null > +++ b/Proxmox/Sys/ZFS.pm > @@ -0,0 +1,43 @@ > +package Proxmox::Sys::ZFS; > + > +use strict; > +use warnings; > + > +use Proxmox::Sys::Command qw(run_command); > + > +use base qw(Exporter); > +our @EXPORT_OK = qw(get_exported_pools); > + Some of the flow in this function is difficult to understand without having a sample of the text it is parsing. Could we have a small example, maybe added as comment? That could help people to see what is it trying to parse, even if they are not too familiar with the expected output > +my sub parse_pool_list { > + my ($fh) = @_; > + > + my @pools; > + my $pool = {}; # last found pool in output > + > + while (my $line = <$fh>) { > + if ($line =~ /^\s+pool: (.+)$/) { > + push @pools, $pool if %$pool; > + $pool = { name => $1 }; > + next; > + } > + > + next if !%$pool; > + > + if ($line =~ /^\s*(id|state|status|action): (.+)$/) { > + chomp($pool->{$1} = $2); > + next; > + } > + } > + > + push @pools, $pool if %$pool; > + return \@pools; not too sure, but we usually tend to use anonymous arrays, $pools = []; then we could just return $pools The downside is of course that we need to dereference it in all the other places, AFAICT all the `push` lines: push @$pools ... But IME this is more in line with how usually handle such code. _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel