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 D37AC74902 for ; Mon, 19 Apr 2021 13:02:38 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C992114F6C for ; Mon, 19 Apr 2021 13:02:08 +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 E9AB014F49 for ; Mon, 19 Apr 2021 13:02:07 +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 B1B8145B76 for ; Mon, 19 Apr 2021 13:02:07 +0200 (CEST) From: Dominik Csapak To: pbs-devel@lists.proxmox.com Date: Mon, 19 Apr 2021 13:02:02 +0200 Message-Id: <20210419110206.28498-3-d.csapak@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210419110206.28498-1-d.csapak@proxmox.com> References: <20210419110206.28498-1-d.csapak@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.158 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment 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: [pbs-devel] [PATCH proxmox-backup 2/6] api2/nodes/status: use NodeStatus struct X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Apr 2021 11:02:38 -0000 Signed-off-by: Dominik Csapak --- src/api2/node/status.rs | 77 +++++++++-------------------------------- 1 file changed, 17 insertions(+), 60 deletions(-) diff --git a/src/api2/node/status.rs b/src/api2/node/status.rs index 14d4b587..d5df05ff 100644 --- a/src/api2/node/status.rs +++ b/src/api2/node/status.rs @@ -2,7 +2,7 @@ use std::process::Command; use std::path::Path; use anyhow::{Error, format_err, bail}; -use serde_json::{json, Value}; +use serde_json::Value; use proxmox::sys::linux::procfs; @@ -21,43 +21,7 @@ use crate::tools::cert::CertInfo; }, }, returns: { - type: Object, - description: "Returns node memory, CPU and (root) disk usage", - properties: { - memory: { - type: Object, - description: "node memory usage counters", - properties: { - total: { - description: "total memory", - type: Integer, - }, - used: { - description: "total memory", - type: Integer, - }, - free: { - description: "free memory", - type: Integer, - }, - }, - }, - cpu: { - type: Number, - description: "Total CPU usage since last query.", - optional: true, - }, - info: { - type: Object, - description: "contains node information", - properties: { - fingerprint: { - description: "The SSL Fingerprint", - type: String, - }, - }, - }, - }, + type: NodeStatus, }, access: { permission: &Permission::Privilege(&["system", "status"], PRIV_SYS_AUDIT, false), @@ -68,32 +32,25 @@ fn get_status( _param: Value, _info: &ApiMethod, _rpcenv: &mut dyn RpcEnvironment, -) -> Result { - +) -> Result { let meminfo: procfs::ProcFsMemInfo = procfs::read_meminfo()?; - let kstat: procfs::ProcFsStat = procfs::read_proc_stat()?; - let disk_usage = crate::tools::disks::disk_usage(Path::new("/"))?; + let memory = NodeMemoryCounters { + total: meminfo.memtotal, + used: meminfo.memused, + free: meminfo.memfree, + }; - // get fingerprint - let cert = CertInfo::new()?; - let fp = cert.fingerprint()?; + let kstat: procfs::ProcFsStat = procfs::read_proc_stat()?; + let cpu = kstat.cpu; - Ok(json!({ - "memory": { - "total": meminfo.memtotal, - "used": meminfo.memused, - "free": meminfo.memfree, - }, - "cpu": kstat.cpu, - "root": { - "total": disk_usage.total, - "used": disk_usage.used, - "free": disk_usage.avail, - }, - "info": { - "fingerprint": fp, + Ok(NodeStatus { + memory, + root: crate::tools::disks::disk_usage(Path::new("/"))?, + cpu, + info: NodeInformation { + fingerprint: CertInfo::new()?.fingerprint()?, }, - })) + }) } #[api( -- 2.20.1