From: Christoph Heiss <c.heiss@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH v2 installer] fix #4869: Make management interface selection more verbose
Date: Fri, 13 Oct 2023 12:36:12 +0200 [thread overview]
Message-ID: <gjurmht4p2uuqonq2usnapozxlggco6v54vdswhymyz3vg3za3@5qn3755ptc2k> (raw)
In-Reply-To: <20231012130208.181749-1-f.schauer@proxmox.com>
See inline comments. Also, `cargo fmt` please :^)
On Thu, Oct 12, 2023 at 03:02:08PM +0200, Filip Schauer wrote:
> [..]
> diff --git a/proxinstall b/proxinstall
> index d5b2565..51170cd 100755
> --- a/proxinstall
> +++ b/proxinstall
> @@ -347,7 +347,9 @@ sub create_ipconf_view {
>
> my $get_device_desc = sub {
> my $iface = shift;
> - return "$iface->{name} - $iface->{mac} ($iface->{driver})";
> + my $iface_state_symbol = "\N{U+25EF}";
> + $iface_state_symbol = "\N{U+1F7E2}" if ($iface->{state} eq "UP");
> + return "$iface_state_symbol $iface->{name} - $iface->{mac} ($iface->{driver})";
^ Here we have e.g. "<symbol> eno1 - 12:34:56:78:9a:bc (r8169)".
> };
>
> my $run_env = Proxmox::Install::RunEnv::get();
> diff --git a/proxmox-tui-installer/src/main.rs b/proxmox-tui-installer/src/main.rs
> index 3f01713..7e46f33 100644
> --- a/proxmox-tui-installer/src/main.rs
> +++ b/proxmox-tui-installer/src/main.rs
> @@ -548,20 +548,28 @@ fn password_dialog(siv: &mut Cursive) -> InstallerView {
> fn network_dialog(siv: &mut Cursive) -> InstallerView {
> let state = siv.user_data::<InstallerState>().unwrap();
> let options = &state.options.network;
> - let ifnames = state.runtime_info.network.interfaces.keys();
> +
> + let mut management_interface_select_view = SelectView::new().popup();
> + for (key, value) in state.runtime_info.network.interfaces.iter() {
> + let interface_state_symbol = if value.state == "UP" {
> + "\x1b[1;92m\u{25CF}"
> + } else {
> + "\x1b[1;31m\u{25CF}"
> + };
One thing I noticed while testing the TUI installer is the
setting of the color here fsck up the colors of the other entries.
Colors/effects applied using ANSI escape sequences do not reset
automatically, so this must be done after the unicode symbol manually
using "\x1b[1;30m".
E.g. with multiple NICS, nics in UP are sometimes displayed entirely in
green, in non-UP entirely red. And scrolling through the list changes
that completely.
[ To properly display colors in Cursive, you'd normally use a
`StyledString`, but - after quickly trying it out - seems broken for
SelectView (not sure why, I might investigate that some time). ]
So although a bit hacky, seems to work here fine (still seems a bit
broken under VGA for me, but that is just some random artifact it seems,
as 30 is the correct color code in any case).
> +
> + let interface_label = format!("{0} - {1} {2}", value.name, value.mac, interface_state_symbol);
^ And here we have "eno1 - 12:34:56:78:9a:bc <symbol>".
Just for the sake of consistency they should be the same between GUI and
TUI.
I would propose "<symbol> <name> - <mac>", and just drop the driver part
completely in the GUI. The latter does not provide any real value IMO,
at least not I could come up with any.
> + management_interface_select_view.add_item(interface_label, key.to_string());
> + }
>
> let inner = FormView::new()
> .child(
> "Management interface",
> - SelectView::new()
> - .popup()
> - .with_all_str(ifnames.clone())
> - .selected(
> - ifnames
> - .clone()
> - .position(|ifname| ifname == &options.ifname)
> - .unwrap_or_default(),
> - ),
> + management_interface_select_view.selected(
> + state.runtime_info.network.interfaces.keys()
> + .clone()
> + .position(|ifname| ifname == &options.ifname)
> + .unwrap_or_default(),
> + ),
> )
> .child(
> "Hostname (FQDN)",
> diff --git a/proxmox-tui-installer/src/setup.rs b/proxmox-tui-installer/src/setup.rs
> index 942e319..dbff3da 100644
> --- a/proxmox-tui-installer/src/setup.rs
> +++ b/proxmox-tui-installer/src/setup.rs
> @@ -443,6 +443,8 @@ pub struct Interface {
>
> pub index: usize,
>
> + pub state: String,
This can be an enum for cleanliness, as this field is well defined. All
possible states as recognized (and thus can be put out) by iproute2 are
defined here:
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/ip/ipaddress.c?h=v6.5.0#n119
> +
> pub mac: String,
>
> #[serde(default)]
> --
> 2.39.2
>
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
>
next prev parent reply other threads:[~2023-10-13 10:36 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-12 13:02 Filip Schauer
2023-10-13 10:36 ` Christoph Heiss [this message]
2023-10-16 11:29 ` Filip Schauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=gjurmht4p2uuqonq2usnapozxlggco6v54vdswhymyz3vg3za3@5qn3755ptc2k \
--to=c.heiss@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox