From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 498AC74378 for ; Sun, 18 Apr 2021 17:54:06 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 389B5CAE7 for ; Sun, 18 Apr 2021 17:54:06 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 1B44BCADA for ; Sun, 18 Apr 2021 17:54:02 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id CA64F44F84 for ; Sun, 18 Apr 2021 17:54:01 +0200 (CEST) Message-ID: Date: Sun, 18 Apr 2021 17:54:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:88.0) Gecko/20100101 Thunderbird/88.0 Content-Language: en-US To: Proxmox VE development discussion , Aaron Lauterer References: <20210215152647.7328-1-a.lauterer@proxmox.com> <20210215152647.7328-3-a.lauterer@proxmox.com> From: Thomas Lamprecht In-Reply-To: <20210215152647.7328-3-a.lauterer@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.040 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment NICE_REPLY_A -0.001 Looks like a legit reply (A) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust 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 v5 manager 2/3] ui: utils: add method to get VM data from resource store 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: , X-List-Received-Date: Sun, 18 Apr 2021 15:54:06 -0000 On 15.02.21 16:26, Aaron Lauterer wrote: > Signed-off-by: Aaron Lauterer > --- > v3 -> v4i -> v5: rebased > v2 -> v3: nothing changed > v1 -> v2: fixed linter errors > > > www/manager6/Utils.js | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js > index 7a1a7fb6..a298aac0 100644 > --- a/www/manager6/Utils.js > +++ b/www/manager6/Utils.js > @@ -1833,4 +1833,17 @@ Ext.define('PVE.Utils', { > }); > }, > > + getNodeVMs: function(nodename) { > + let rstore = PVE.data.ResourceStore; > + let vms = {}; > + rstore.data.items.forEach((item) => { we normally use 'rstore' for a remote store, so I dislike the use when talking about the in-memory ResourceStore as it's confusing. FIY: In JS arrow functions the parenthesis can be dropped if there's only on parameter And it seems like what you actually want is a .filter let guests = rstore.data.items.filter(item => item.id.startsWith('qemu/') && item.data.node === nodename); Maybe future proof this and allow to add the type, as we want the feature this is made for also for CTs. The whole thing could be reduced a bit with combinators, like (untested): // type can be 'qemu', 'lxc' or left-out (for both) // returns an Object with `vmid => guest-data` entries getNodeGuests: function(nodename, type) { return PVE.data.ResourceStore.data .items .filter(item => (type && item.id.startsWith(`${type}/`)) && item.data.node === nodename) .reduce((acc, item) => acc[item.data.vmid] = item.data, {}); } > + if (!item.id.startsWith('qemu/')) { return; } > + let vmdata = item.data; > + if (vmdata.node !== nodename) { return; } Please avoid squishing early return ifs to one line. If that would be actually required (see above for a general shorter approach), then it'd be nicer to write it as: if (!item.id.startsWith('qemu/') || item.data.node !== nodename) { return; } > + > + vms[vmdata.vmid] = vmdata; > + }); > + return vms; > + }, > + > }); >