all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH pve-manager v2] api: add 'type' parameter to pool GET endpoint
@ 2022-01-31  8:41 Hannes Laimer
  2022-01-31 10:11 ` Fabian Ebner
  0 siblings, 1 reply; 3+ messages in thread
From: Hannes Laimer @ 2022-01-31  8:41 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
---
v2(based on Thomas Lamprecht <t.lamprecht@proxmox.com>'s feedback):
  - remove openzv
  - optimize loops

This was asked in a forum post, and it does not interfere with
anything else AFAIK.

 PVE/API2/Pool.pm | 33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/PVE/API2/Pool.pm b/PVE/API2/Pool.pm
index 28c29ab8..ae31addf 100644
--- a/PVE/API2/Pool.pm
+++ b/PVE/API2/Pool.pm
@@ -211,6 +211,11 @@ __PACKAGE__->register_method ({
 		type => 'string',
 		format => 'pve-poolid',
 	    },
+	    type => {
+		type => 'string',
+		enum => [ 'qemu', 'lxc', 'storage' ],
+		optional => 1,
+	    },
 	},
     },
     returns => {
@@ -269,27 +274,29 @@ __PACKAGE__->register_method ({
 	my $members = [];
 	for my $vmid (sort keys %{$pool_config->{vms}}) {
 	    my $vmdata = $idlist->{$vmid};
-	    next if !$vmdata;
+	    next if !$vmdata || defined($param->{type}) && $param->{type} eq $vmdata->{type};
 	    my $entry = PVE::API2Tools::extract_vm_stats($vmid, $vmdata, $rrd);
 	    push @$members, $entry;
 	}
 
 	my $nodename = PVE::INotify::nodename();
 	my $cfg = PVE::Storage::config();
-	for my $storeid (sort keys %{$pool_config->{storage}}) {
-	    my $scfg = PVE::Storage::storage_config ($cfg, $storeid, 1);
-	    next if !$scfg;
-
-	    my $storage_node = $nodename; # prefer local node
-	    if ($scfg->{nodes} && !$scfg->{nodes}->{$storage_node}) {
-		for my $node (sort keys(%{$scfg->{nodes}})) {
-		    $storage_node = $node;
-		    last;
+	if (!defined($param->{type}) || $param->{type} eq 'storage') {
+	    for my $storeid (sort keys %{$pool_config->{storage}}) {
+		my $scfg = PVE::Storage::storage_config ($cfg, $storeid, 1);
+		next if !$scfg;
+
+		my $storage_node = $nodename; # prefer local node
+		if ($scfg->{nodes} && !$scfg->{nodes}->{$storage_node}) {
+		    for my $node (sort keys(%{$scfg->{nodes}})) {
+			$storage_node = $node;
+			last;
+		    }
 		}
-	    }
 
-	    my $entry = PVE::API2Tools::extract_storage_stats($storeid, $scfg, $storage_node, $rrd);
-	    push @$members, $entry;
+		my $entry = PVE::API2Tools::extract_storage_stats($storeid, $scfg, $storage_node, $rrd);
+		push @$members, $entry;
+	    }
 	}
 
 	my $res = {
-- 
2.30.2





^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [pve-devel] [PATCH pve-manager v2] api: add 'type' parameter to pool GET endpoint
  2022-01-31  8:41 [pve-devel] [PATCH pve-manager v2] api: add 'type' parameter to pool GET endpoint Hannes Laimer
@ 2022-01-31 10:11 ` Fabian Ebner
  2022-01-31 10:19   ` Fabian Ebner
  0 siblings, 1 reply; 3+ messages in thread
From: Fabian Ebner @ 2022-01-31 10:11 UTC (permalink / raw)
  To: pve-devel, h.laimer

Am 31.01.22 um 09:41 schrieb Hannes Laimer:
> Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
> ---
> v2(based on Thomas Lamprecht <t.lamprecht@proxmox.com>'s feedback):
>   - remove openzv
>   - optimize loops
> 
> This was asked in a forum post, and it does not interfere with
> anything else AFAIK.
> 
>  PVE/API2/Pool.pm | 33 ++++++++++++++++++++-------------
>  1 file changed, 20 insertions(+), 13 deletions(-)
> 
> diff --git a/PVE/API2/Pool.pm b/PVE/API2/Pool.pm
> index 28c29ab8..ae31addf 100644
> --- a/PVE/API2/Pool.pm
> +++ b/PVE/API2/Pool.pm
> @@ -211,6 +211,11 @@ __PACKAGE__->register_method ({
>  		type => 'string',
>  		format => 'pve-poolid',
>  	    },
> +	    type => {
> +		type => 'string',
> +		enum => [ 'qemu', 'lxc', 'storage' ],
> +		optional => 1,
> +	    },
>  	},
>      },
>      returns => {
> @@ -269,27 +274,29 @@ __PACKAGE__->register_method ({
>  	my $members = [];
>  	for my $vmid (sort keys %{$pool_config->{vms}}) {
>  	    my $vmdata = $idlist->{$vmid};
> -	    next if !$vmdata;
> +	    next if !$vmdata || defined($param->{type}) && $param->{type} eq $vmdata->{type};

Logic is inverted here, should be ne rather than eq.

>  	    my $entry = PVE::API2Tools::extract_vm_stats($vmid, $vmdata, $rrd);
>  	    push @$members, $entry;
>  	}
>  
>  	my $nodename = PVE::INotify::nodename();
>  	my $cfg = PVE::Storage::config();
> -	for my $storeid (sort keys %{$pool_config->{storage}}) {
> -	    my $scfg = PVE::Storage::storage_config ($cfg, $storeid, 1);
> -	    next if !$scfg;
> -
> -	    my $storage_node = $nodename; # prefer local node
> -	    if ($scfg->{nodes} && !$scfg->{nodes}->{$storage_node}) {
> -		for my $node (sort keys(%{$scfg->{nodes}})) {
> -		    $storage_node = $node;
> -		    last;
> +	if (!defined($param->{type}) || $param->{type} eq 'storage') {
> +	    for my $storeid (sort keys %{$pool_config->{storage}}) {
> +		my $scfg = PVE::Storage::storage_config ($cfg, $storeid, 1);
> +		next if !$scfg;
> +
> +		my $storage_node = $nodename; # prefer local node
> +		if ($scfg->{nodes} && !$scfg->{nodes}->{$storage_node}) {
> +		    for my $node (sort keys(%{$scfg->{nodes}})) {
> +			$storage_node = $node;
> +			last;
> +		    }

Not your code, but this loop could be replaced with a simple:
    $storage_node = (sort keys $scfg->{nodes}->%*)[0];
You can add a patch for it if you'd like.

>  		}
> -	    }
>  
> -	    my $entry = PVE::API2Tools::extract_storage_stats($storeid, $scfg, $storage_node, $rrd);
> -	    push @$members, $entry;
> +		my $entry = PVE::API2Tools::extract_storage_stats($storeid, $scfg, $storage_node, $rrd);

Style nit: >100 character line

> +		push @$members, $entry;
> +	    }
>  	}
>  
>  	my $res = {




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [pve-devel] [PATCH pve-manager v2] api: add 'type' parameter to pool GET endpoint
  2022-01-31 10:11 ` Fabian Ebner
@ 2022-01-31 10:19   ` Fabian Ebner
  0 siblings, 0 replies; 3+ messages in thread
From: Fabian Ebner @ 2022-01-31 10:19 UTC (permalink / raw)
  To: pve-devel, h.laimer

Am 31.01.22 um 11:11 schrieb Fabian Ebner:
> Am 31.01.22 um 09:41 schrieb Hannes Laimer:
>> Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
>> ---
>> v2(based on Thomas Lamprecht <t.lamprecht@proxmox.com>'s feedback):
>>   - remove openzv
>>   - optimize loops
>>
>> This was asked in a forum post, and it does not interfere with
>> anything else AFAIK.
>>
>>  PVE/API2/Pool.pm | 33 ++++++++++++++++++++-------------
>>  1 file changed, 20 insertions(+), 13 deletions(-)
>>
>> diff --git a/PVE/API2/Pool.pm b/PVE/API2/Pool.pm
>> index 28c29ab8..ae31addf 100644
>> --- a/PVE/API2/Pool.pm
>> +++ b/PVE/API2/Pool.pm
>> @@ -211,6 +211,11 @@ __PACKAGE__->register_method ({
>>  		type => 'string',
>>  		format => 'pve-poolid',
>>  	    },
>> +	    type => {
>> +		type => 'string',
>> +		enum => [ 'qemu', 'lxc', 'storage' ],
>> +		optional => 1,
>> +	    },
>>  	},
>>      },
>>      returns => {
>> @@ -269,27 +274,29 @@ __PACKAGE__->register_method ({
>>  	my $members = [];
>>  	for my $vmid (sort keys %{$pool_config->{vms}}) {
>>  	    my $vmdata = $idlist->{$vmid};
>> -	    next if !$vmdata;
>> +	    next if !$vmdata || defined($param->{type}) && $param->{type} eq $vmdata->{type};
> 
> Logic is inverted here, should be ne rather than eq.
> 
>>  	    my $entry = PVE::API2Tools::extract_vm_stats($vmid, $vmdata, $rrd);
>>  	    push @$members, $entry;
>>  	}
>>  
>>  	my $nodename = PVE::INotify::nodename();
>>  	my $cfg = PVE::Storage::config();
>> -	for my $storeid (sort keys %{$pool_config->{storage}}) {
>> -	    my $scfg = PVE::Storage::storage_config ($cfg, $storeid, 1);
>> -	    next if !$scfg;
>> -
>> -	    my $storage_node = $nodename; # prefer local node
>> -	    if ($scfg->{nodes} && !$scfg->{nodes}->{$storage_node}) {
>> -		for my $node (sort keys(%{$scfg->{nodes}})) {
>> -		    $storage_node = $node;
>> -		    last;
>> +	if (!defined($param->{type}) || $param->{type} eq 'storage') {
>> +	    for my $storeid (sort keys %{$pool_config->{storage}}) {
>> +		my $scfg = PVE::Storage::storage_config ($cfg, $storeid, 1);
>> +		next if !$scfg;
>> +
>> +		my $storage_node = $nodename; # prefer local node
>> +		if ($scfg->{nodes} && !$scfg->{nodes}->{$storage_node}) {
>> +		    for my $node (sort keys(%{$scfg->{nodes}})) {
>> +			$storage_node = $node;
>> +			last;
>> +		    }
> 
> Not your code, but this loop could be replaced with a simple:
>     $storage_node = (sort keys $scfg->{nodes}->%*)[0];
> You can add a patch for it if you'd like.

Or maybe not, if $scfg->{nodes} can be an empty hash..

> 
>>  		}
>> -	    }
>>  
>> -	    my $entry = PVE::API2Tools::extract_storage_stats($storeid, $scfg, $storage_node, $rrd);
>> -	    push @$members, $entry;
>> +		my $entry = PVE::API2Tools::extract_storage_stats($storeid, $scfg, $storage_node, $rrd);
> 
> Style nit: >100 character line
> 
>> +		push @$members, $entry;
>> +	    }
>>  	}
>>  
>>  	my $res = {
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-01-31 10:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-31  8:41 [pve-devel] [PATCH pve-manager v2] api: add 'type' parameter to pool GET endpoint Hannes Laimer
2022-01-31 10:11 ` Fabian Ebner
2022-01-31 10:19   ` Fabian Ebner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal