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 E649D1FF38C for ; Thu, 16 May 2024 15:40:01 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7A23652F; Thu, 16 May 2024 15:39:58 +0200 (CEST) From: Christoph Heiss To: pve-devel@lists.proxmox.com Date: Thu, 16 May 2024 15:39:33 +0200 Message-ID: <20240516133945.1087246-4-c.heiss@proxmox.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240516133945.1087246-1-c.heiss@proxmox.com> References: <20240516133945.1087246-1-c.heiss@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.006 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: [pve-devel] [PATCH installer 3/6] auto: log non-json low-level messages into separate file 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-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Same as the TUI does, as introduced in [0]. [0] 22de6e5 ("tui: install_progress: write low-level non-JSON messages to separate file") Signed-off-by: Christoph Heiss --- .../src/bin/proxmox-auto-installer.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs index e607a9c..9fc328c 100644 --- a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs +++ b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs @@ -2,6 +2,7 @@ use anyhow::{bail, format_err, Result}; use log::{error, info, LevelFilter}; use std::{ env, + fs::File, io::{BufRead, BufReader, Write}, path::PathBuf, process::ExitCode, @@ -136,15 +137,29 @@ fn run_installation( .map_err(|err| format_err!("failed to serialize install config: {err}"))?; writeln!(writer).map_err(|err| format_err!("failed to write install config: {err}"))?; + let mut lowlevel_log = File::create("/tmp/install-low-level.log") + .map_err(|err| format_err!("failed to open low-level installer logfile: {err}"))?; + for line in reader.lines() { let line = match line { Ok(line) => line, Err(_) => break, }; + + // The low-level installer also spews the output of any command it runs on its + // stdout. Use a very simple heuricstic to determine whether it is actually JSON + // or not. + if !line.starts_with('{') || !line.ends_with('}') { + let _ = writeln!(lowlevel_log, "{}", line); + continue; + } + let msg = match serde_json::from_str::(&line) { Ok(msg) => msg, - Err(_) => { + Err(err) => { // Not a fatal error, so don't abort the installation by returning + eprintln!("low-level installer: error while parsing message: '{err}'"); + eprintln!(" original message was: '{line}'"); continue; } }; -- 2.44.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel