* [pve-devel] [PATCH installer 0/6] small, overall install progress improvements @ 2024-05-16 13:39 Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 1/6] test: ui2-stdio: fix multi-process testing Christoph Heiss ` (6 more replies) 0 siblings, 7 replies; 9+ messages in thread From: Christoph Heiss @ 2024-05-16 13:39 UTC (permalink / raw) To: pve-devel This series tries to improve upon some small things around the installation progress reporting, esp. in the auto-installer, as well as some small fixes & code-deduplication. Christoph Heiss (6): test: ui2-stdio: fix multi-process testing auto, tui: move low-level installer message struct to common crate auto: log non-json low-level messages into separate file low-level: stdio: fix: make progress text properly optional low-level: add proper message to 100% progress ratio update auto: avoid printing unnecessary progress update lines Proxmox/Install.pm | 2 +- Proxmox/UI/StdIO.pm | 8 ++- .../src/bin/proxmox-auto-installer.rs | 35 ++++++++-- proxmox-auto-installer/src/utils.rs | 23 ------- proxmox-installer-common/src/setup.rs | 23 +++++++ .../src/views/install_progress.rs | 67 +++++++------------ test/ui2-stdio.pl | 10 +-- 7 files changed, 88 insertions(+), 80 deletions(-) -- 2.44.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* [pve-devel] [PATCH installer 1/6] test: ui2-stdio: fix multi-process testing 2024-05-16 13:39 [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss @ 2024-05-16 13:39 ` Christoph Heiss 2024-11-10 18:50 ` [pve-devel] applied: " Thomas Lamprecht 2024-05-16 13:39 ` [pve-devel] [PATCH installer 2/6] auto, tui: move low-level installer message struct to common crate Christoph Heiss ` (5 subsequent siblings) 6 siblings, 1 reply; 9+ messages in thread From: Christoph Heiss @ 2024-05-16 13:39 UTC (permalink / raw) To: pve-devel Previously, if something failed in the child, the overall test would still be successful and exit with `0`. Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> --- test/ui2-stdio.pl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/ui2-stdio.pl b/test/ui2-stdio.pl index ae29b79..01f323d 100755 --- a/test/ui2-stdio.pl +++ b/test/ui2-stdio.pl @@ -4,7 +4,6 @@ use strict; use warnings; use JSON qw(from_json); -use Test::More; use Proxmox::Log; use Proxmox::UI; @@ -16,10 +15,11 @@ $parent_writer->autoflush(1); $child_writer->autoflush(1); $child_reader->autoflush(1); - my $child_pid = fork() // die "fork failed - $!\n"; if ($child_pid) { + eval 'use Test::More tests => 3;'; + # parent, the hypothetical low-level installer close($parent_reader); close($parent_writer); @@ -45,8 +45,11 @@ if ($child_pid) { Proxmox::UI::progress(1, 0, 1, 'done'); waitpid($child_pid, 0); + is($?, 0); # check child exit status done_testing(); } else { + eval 'use Test::More tests => 10;'; + # child, e.g. the TUI close($child_reader); close($child_writer); @@ -90,6 +93,5 @@ if ($child_pid) { 'should get 100% done progress message'); done_testing(); - exit(0); } -- 2.44.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* [pve-devel] applied: [PATCH installer 1/6] test: ui2-stdio: fix multi-process testing 2024-05-16 13:39 ` [pve-devel] [PATCH installer 1/6] test: ui2-stdio: fix multi-process testing Christoph Heiss @ 2024-11-10 18:50 ` Thomas Lamprecht 0 siblings, 0 replies; 9+ messages in thread From: Thomas Lamprecht @ 2024-11-10 18:50 UTC (permalink / raw) To: Proxmox VE development discussion, Christoph Heiss Am 16.05.24 um 15:39 schrieb Christoph Heiss: > Previously, if something failed in the child, the overall test would > still be successful and exit with `0`. > > Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> > --- > test/ui2-stdio.pl | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > applied this one, thanks! most of the remaining patches need some rebasing or are ordered such, that I'm not sure if I can simply apply them without the previous one without an in-depth look, but as some rebasing is required anyway I'm just go for the lazy^W efficient variant and skip looking into that ;P _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* [pve-devel] [PATCH installer 2/6] auto, tui: move low-level installer message struct to common crate 2024-05-16 13:39 [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 1/6] test: ui2-stdio: fix multi-process testing Christoph Heiss @ 2024-05-16 13:39 ` Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 3/6] auto: log non-json low-level messages into separate file Christoph Heiss ` (4 subsequent siblings) 6 siblings, 0 replies; 9+ messages in thread From: Christoph Heiss @ 2024-05-16 13:39 UTC (permalink / raw) To: pve-devel Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> --- .../src/bin/proxmox-auto-installer.rs | 8 ++-- proxmox-auto-installer/src/utils.rs | 23 --------- proxmox-installer-common/src/setup.rs | 23 +++++++++ .../src/views/install_progress.rs | 48 +++++-------------- 4 files changed, 38 insertions(+), 64 deletions(-) diff --git a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs index 9fcec1e..e607a9c 100644 --- a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs +++ b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs @@ -8,14 +8,12 @@ use std::{ }; use proxmox_installer_common::setup::{ - installer_setup, read_json, spawn_low_level_installer, LocaleInfo, RuntimeInfo, SetupInfo, + installer_setup, read_json, spawn_low_level_installer, LocaleInfo, LowLevelMessage, + RuntimeInfo, SetupInfo, }; use proxmox_auto_installer::{ - answer::Answer, - log::AutoInstLogger, - udevinfo::UdevInfo, - utils::{parse_answer, LowLevelMessage}, + answer::Answer, log::AutoInstLogger, udevinfo::UdevInfo, utils::parse_answer, }; static LOGGER: AutoInstLogger = AutoInstLogger; diff --git a/proxmox-auto-installer/src/utils.rs b/proxmox-auto-installer/src/utils.rs index 202ad41..7f3688d 100644 --- a/proxmox-auto-installer/src/utils.rs +++ b/proxmox-auto-installer/src/utils.rs @@ -380,26 +380,3 @@ pub fn parse_answer( } Ok(config) } - -#[derive(Clone, Debug, Deserialize, PartialEq)] -#[serde(tag = "type", rename_all = "lowercase")] -pub enum LowLevelMessage { - #[serde(rename = "message")] - Info { - message: String, - }, - Error { - message: String, - }, - Prompt { - query: String, - }, - Finished { - state: String, - message: String, - }, - Progress { - ratio: f32, - text: String, - }, -} diff --git a/proxmox-installer-common/src/setup.rs b/proxmox-installer-common/src/setup.rs index 64d05af..0c62bc3 100644 --- a/proxmox-installer-common/src/setup.rs +++ b/proxmox-installer-common/src/setup.rs @@ -558,3 +558,26 @@ where _ => Err(de::Error::custom("could not find file system: {de_fs}")), } } + +#[derive(Clone, Debug, Deserialize, PartialEq)] +#[serde(tag = "type", rename_all = "lowercase")] +pub enum LowLevelMessage { + #[serde(rename = "message")] + Info { + message: String, + }, + Error { + message: String, + }, + Prompt { + query: String, + }, + Finished { + state: String, + message: String, + }, + Progress { + ratio: f32, + text: String, + }, +} diff --git a/proxmox-tui-installer/src/views/install_progress.rs b/proxmox-tui-installer/src/views/install_progress.rs index 6453426..11b12f0 100644 --- a/proxmox-tui-installer/src/views/install_progress.rs +++ b/proxmox-tui-installer/src/views/install_progress.rs @@ -4,7 +4,6 @@ use cursive::{ views::{Dialog, DummyView, LinearLayout, PaddedView, ProgressBar, TextView}, CbSink, Cursive, }; -use serde::Deserialize; use std::{ fs::File, io::{BufRead, BufReader, Write}, @@ -14,7 +13,7 @@ use std::{ }; use crate::{abort_install_button, prompt_dialog, InstallerState}; -use proxmox_installer_common::setup::{spawn_low_level_installer, InstallConfig}; +use proxmox_installer_common::setup::{spawn_low_level_installer, InstallConfig, LowLevelMessage}; pub struct InstallProgressView { view: PaddedView<LinearLayout>, @@ -105,7 +104,7 @@ impl InstallProgressView { continue; } - let msg = match serde_json::from_str::<UiMessage>(&line) { + let msg = match serde_json::from_str::<LowLevelMessage>(&line) { Ok(msg) => msg, Err(err) => { // Not a fatal error, so don't abort the installation by returning @@ -116,17 +115,17 @@ impl InstallProgressView { }; let result = match msg.clone() { - UiMessage::Info { message } => cb_sink.send(Box::new(|siv| { + LowLevelMessage::Info { message } => cb_sink.send(Box::new(|siv| { siv.add_layer(Dialog::info(message).title("Information")); })), - UiMessage::Error { message } => cb_sink.send(Box::new(|siv| { + LowLevelMessage::Error { message } => cb_sink.send(Box::new(|siv| { siv.add_layer(Dialog::info(message).title("Error")); })), - UiMessage::Prompt { query } => cb_sink.send({ + LowLevelMessage::Prompt { query } => cb_sink.send({ let writer = writer.clone(); Box::new(move |siv| Self::show_prompt(siv, &query, writer)) }), - UiMessage::Progress { ratio, text } => { + LowLevelMessage::Progress { ratio, text } => { counter.set((ratio * 100.).floor() as usize); cb_sink.send(Box::new(move |siv| { siv.call_on_name(Self::PROGRESS_TEXT_VIEW_ID, |v: &mut TextView| { @@ -134,7 +133,7 @@ impl InstallProgressView { }); })) } - UiMessage::Finished { state, message } => { + LowLevelMessage::Finished { state, message } => { counter.set(100); cb_sink.send(Box::new(move |siv| { siv.call_on_name(Self::PROGRESS_TEXT_VIEW_ID, |v: &mut TextView| { @@ -241,29 +240,6 @@ impl ViewWrapper for InstallProgressView { cursive::wrap_impl!(self.view: PaddedView<LinearLayout>); } -#[derive(Clone, Debug, Deserialize, PartialEq)] -#[serde(tag = "type", rename_all = "lowercase")] -enum UiMessage { - #[serde(rename = "message")] - Info { - message: String, - }, - Error { - message: String, - }, - Prompt { - query: String, - }, - Finished { - state: String, - message: String, - }, - Progress { - ratio: f32, - text: String, - }, -} - #[cfg(test)] mod tests { use super::*; @@ -292,7 +268,7 @@ mod tests { let mut line = String::new(); reader.read_line(&mut line).expect("a line"); - match serde_json::from_str::<UiMessage>(&line) { + match serde_json::from_str::<LowLevelMessage>(&line) { Ok(msg) => Some(msg), Err(err) => panic!("unexpected error: '{err}'"), } @@ -300,7 +276,7 @@ mod tests { assert_eq!( next_msg(), - Some(UiMessage::Prompt { + Some(LowLevelMessage::Prompt { query: "Reply anything?".to_owned() }), ); @@ -314,7 +290,7 @@ mod tests { assert_eq!( next_msg(), - Some(UiMessage::Info { + Some(LowLevelMessage::Info { message: "Test Message - got ok".to_owned() }), ); @@ -322,7 +298,7 @@ mod tests { for i in (1..=1000).step_by(3) { assert_eq!( next_msg(), - Some(UiMessage::Progress { + Some(LowLevelMessage::Progress { ratio: (i as f32) / 1000., text: format!("foo {i}"), }), @@ -331,7 +307,7 @@ mod tests { assert_eq!( next_msg(), - Some(UiMessage::Finished { + Some(LowLevelMessage::Finished { state: "ok".to_owned(), message: "Installation finished - reboot now?".to_owned(), }), -- 2.44.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* [pve-devel] [PATCH installer 3/6] auto: log non-json low-level messages into separate file 2024-05-16 13:39 [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 1/6] test: ui2-stdio: fix multi-process testing Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 2/6] auto, tui: move low-level installer message struct to common crate Christoph Heiss @ 2024-05-16 13:39 ` Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 4/6] low-level: stdio: fix: make progress text properly optional Christoph Heiss ` (3 subsequent siblings) 6 siblings, 0 replies; 9+ messages in thread From: Christoph Heiss @ 2024-05-16 13:39 UTC (permalink / raw) To: 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 <c.heiss@proxmox.com> --- .../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::<LowLevelMessage>(&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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [pve-devel] [PATCH installer 4/6] low-level: stdio: fix: make progress text properly optional 2024-05-16 13:39 [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss ` (2 preceding siblings ...) 2024-05-16 13:39 ` [pve-devel] [PATCH installer 3/6] auto: log non-json low-level messages into separate file Christoph Heiss @ 2024-05-16 13:39 ` Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 5/6] low-level: add proper message to 100% progress ratio update Christoph Heiss ` (2 subsequent siblings) 6 siblings, 0 replies; 9+ messages in thread From: Christoph Heiss @ 2024-05-16 13:39 UTC (permalink / raw) To: pve-devel .. such that receivers can differentiate between these two cases more clearly. Sometimes, the `progress` sub does not get passed a text (on purpose!), just updating the progress ratio. This would cause log messages to be written out which could indicate missing text and look rather weird. Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> --- Proxmox/UI/StdIO.pm | 8 +++++--- .../src/bin/proxmox-auto-installer.rs | 6 +++++- proxmox-installer-common/src/setup.rs | 2 +- .../src/views/install_progress.rs | 19 +++++++++++++------ test/ui2-stdio.pl | 2 +- 5 files changed, 25 insertions(+), 12 deletions(-) diff --git a/Proxmox/UI/StdIO.pm b/Proxmox/UI/StdIO.pm index 2838fcb..ec9eac9 100644 --- a/Proxmox/UI/StdIO.pm +++ b/Proxmox/UI/StdIO.pm @@ -70,9 +70,11 @@ sub display_html { sub progress { my ($self, $ratio, $text) = @_; - $text = '' if !defined($text); - - send_msg('progress', ratio => $ratio, text => $text); + if (defined($text)) { + send_msg('progress', ratio => $ratio, text => $text); + } else { + send_msg('progress', ratio => $ratio); + } } sub process_events { diff --git a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs index 9fc328c..96a48bd 100644 --- a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs +++ b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs @@ -172,7 +172,11 @@ fn run_installation( } LowLevelMessage::Progress { ratio, text } => { let percentage = ratio * 100.; - info!("progress {percentage:>5.1} % - {text}"); + if let Some(text) = text { + info!("progress {percentage:>5.1} % - {text}"); + } else { + info!("progress {percentage:>5.1} %"); + } } LowLevelMessage::Finished { state, message } => { if state == "err" { diff --git a/proxmox-installer-common/src/setup.rs b/proxmox-installer-common/src/setup.rs index 0c62bc3..d145fc5 100644 --- a/proxmox-installer-common/src/setup.rs +++ b/proxmox-installer-common/src/setup.rs @@ -578,6 +578,6 @@ pub enum LowLevelMessage { }, Progress { ratio: f32, - text: String, + text: Option<String>, }, } diff --git a/proxmox-tui-installer/src/views/install_progress.rs b/proxmox-tui-installer/src/views/install_progress.rs index 11b12f0..629472a 100644 --- a/proxmox-tui-installer/src/views/install_progress.rs +++ b/proxmox-tui-installer/src/views/install_progress.rs @@ -127,11 +127,18 @@ impl InstallProgressView { }), LowLevelMessage::Progress { ratio, text } => { counter.set((ratio * 100.).floor() as usize); - cb_sink.send(Box::new(move |siv| { - siv.call_on_name(Self::PROGRESS_TEXT_VIEW_ID, |v: &mut TextView| { - v.set_content(text); - }); - })) + if let Some(text) = text { + cb_sink.send(Box::new(move |siv| { + siv.call_on_name( + Self::PROGRESS_TEXT_VIEW_ID, + |v: &mut TextView| { + v.set_content(text); + }, + ); + })) + } else { + Ok(()) + } } LowLevelMessage::Finished { state, message } => { counter.set(100); @@ -300,7 +307,7 @@ mod tests { next_msg(), Some(LowLevelMessage::Progress { ratio: (i as f32) / 1000., - text: format!("foo {i}"), + text: Some(format!("foo {i}")), }), ); } diff --git a/test/ui2-stdio.pl b/test/ui2-stdio.pl index 01f323d..eebb5c9 100755 --- a/test/ui2-stdio.pl +++ b/test/ui2-stdio.pl @@ -81,7 +81,7 @@ if ($child_pid) { 'should get 20% done progress message'); is_deeply( - $next_msg->(), { type => 'progress', ratio => 0.2, text => '' }, + $next_msg->(), { type => 'progress', ratio => 0.2, }, 'should get progress continuation message'); is_deeply( -- 2.44.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* [pve-devel] [PATCH installer 5/6] low-level: add proper message to 100% progress ratio update 2024-05-16 13:39 [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss ` (3 preceding siblings ...) 2024-05-16 13:39 ` [pve-devel] [PATCH installer 4/6] low-level: stdio: fix: make progress text properly optional Christoph Heiss @ 2024-05-16 13:39 ` Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 6/6] auto: avoid printing unnecessary progress update lines Christoph Heiss 2024-07-23 10:35 ` [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss 6 siblings, 0 replies; 9+ messages in thread From: Christoph Heiss @ 2024-05-16 13:39 UTC (permalink / raw) To: pve-devel Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> --- Proxmox/Install.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Proxmox/Install.pm b/Proxmox/Install.pm index c0f8955..af857ca 100644 --- a/Proxmox/Install.pm +++ b/Proxmox/Install.pm @@ -1331,7 +1331,7 @@ _EOD my $err = $@; - update_progress(1, 0, 1, ""); + update_progress(1, 0, 1, "installation finished"); print STDERR $err if $err && $err ne "\n"; -- 2.44.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* [pve-devel] [PATCH installer 6/6] auto: avoid printing unnecessary progress update lines 2024-05-16 13:39 [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss ` (4 preceding siblings ...) 2024-05-16 13:39 ` [pve-devel] [PATCH installer 5/6] low-level: add proper message to 100% progress ratio update Christoph Heiss @ 2024-05-16 13:39 ` Christoph Heiss 2024-07-23 10:35 ` [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss 6 siblings, 0 replies; 9+ messages in thread From: Christoph Heiss @ 2024-05-16 13:39 UTC (permalink / raw) To: pve-devel In case the progress message did not contain any text and the percentage did not change, don't print another (useless) line. Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> --- proxmox-auto-installer/src/bin/proxmox-auto-installer.rs | 6 +++++- 1 file changed, 5 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 96a48bd..a72181f 100644 --- a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs +++ b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs @@ -140,6 +140,8 @@ fn run_installation( let mut lowlevel_log = File::create("/tmp/install-low-level.log") .map_err(|err| format_err!("failed to open low-level installer logfile: {err}"))?; + let mut last_progress_percentage = 0.; + for line in reader.lines() { let line = match line { Ok(line) => line, @@ -174,8 +176,10 @@ fn run_installation( let percentage = ratio * 100.; if let Some(text) = text { info!("progress {percentage:>5.1} % - {text}"); - } else { + last_progress_percentage = percentage; + } else if (percentage - last_progress_percentage) > 0.1 { info!("progress {percentage:>5.1} %"); + last_progress_percentage = percentage; } } LowLevelMessage::Finished { state, message } => { -- 2.44.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pve-devel] [PATCH installer 0/6] small, overall install progress improvements 2024-05-16 13:39 [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss ` (5 preceding siblings ...) 2024-05-16 13:39 ` [pve-devel] [PATCH installer 6/6] auto: avoid printing unnecessary progress update lines Christoph Heiss @ 2024-07-23 10:35 ` Christoph Heiss 6 siblings, 0 replies; 9+ messages in thread From: Christoph Heiss @ 2024-07-23 10:35 UTC (permalink / raw) To: Proxmox VE development discussion Ping, still applies cleanly to current master as of today (23-07-2024). Did a quick test round of Auto/GUI/TUI too, just to confirm everything. On Thu, May 16, 2024 at 03:39:30PM GMT, Christoph Heiss wrote: > This series tries to improve upon some small things around the > installation progress reporting, esp. in the auto-installer, as well as > some small fixes & code-deduplication. > > Christoph Heiss (6): > test: ui2-stdio: fix multi-process testing > auto, tui: move low-level installer message struct to common crate > auto: log non-json low-level messages into separate file > low-level: stdio: fix: make progress text properly optional > low-level: add proper message to 100% progress ratio update > auto: avoid printing unnecessary progress update lines > > Proxmox/Install.pm | 2 +- > Proxmox/UI/StdIO.pm | 8 ++- > .../src/bin/proxmox-auto-installer.rs | 35 ++++++++-- > proxmox-auto-installer/src/utils.rs | 23 ------- > proxmox-installer-common/src/setup.rs | 23 +++++++ > .../src/views/install_progress.rs | 67 +++++++------------ > test/ui2-stdio.pl | 10 +-- > 7 files changed, 88 insertions(+), 80 deletions(-) > > -- > 2.44.0 > > > > _______________________________________________ > pve-devel mailing list > pve-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > > _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-11-10 18:50 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-05-16 13:39 [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 1/6] test: ui2-stdio: fix multi-process testing Christoph Heiss 2024-11-10 18:50 ` [pve-devel] applied: " Thomas Lamprecht 2024-05-16 13:39 ` [pve-devel] [PATCH installer 2/6] auto, tui: move low-level installer message struct to common crate Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 3/6] auto: log non-json low-level messages into separate file Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 4/6] low-level: stdio: fix: make progress text properly optional Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 5/6] low-level: add proper message to 100% progress ratio update Christoph Heiss 2024-05-16 13:39 ` [pve-devel] [PATCH installer 6/6] auto: avoid printing unnecessary progress update lines Christoph Heiss 2024-07-23 10:35 ` [pve-devel] [PATCH installer 0/6] small, overall install progress improvements Christoph Heiss
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.