From: Christoph Heiss <c.heiss@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH installer/proxmox v4 00/30] fix #2164: add bond setup across all installers
Date: Mon, 2 Nov 2026 13:45:06 +0100 [thread overview]
Message-ID: <20261102124539.1008075-1-c.heiss@proxmox.com> (raw)
Fixes #2164 [0] by adding the possibility to set up a bond and set a
VLAN ID for the management interface during the installation, for all of
GUI, TUI and auto-installer.
For the GUI and TUI, the current name pinning dialog is converted into a
full-fledged advanced network options dialog, in the same vein as with
the bootdisk options.
This makes it practical to then add additional networking options, in
this case bond and VLAN options.
The auto-installer gains two new sections under [network]:
[network.bond]
members-list = ["ab:cd:ef:12:34:56", "ab:cd:ef:12:34:57"]
# or, alternatively
members-filter.ID_NET_DRIVER = "igc"
members-filter-match = "all"
# general bond options
mode = "active-backup"
hash-policy = "layer2+3"
primary-interface = "ab:cd:ef:12:34:57"
[network.vlan]
vid = 5
Both being of course independent of each other.
The respective PDM integration will be sent separately.
[0] https://bugzilla.proxmox.com/show_bug.cgi?id=2164
History
=======
v3: off-list review sample
v2: https://lore.proxmox.com/pve-devel/20261020112327.641633-1-c.heiss@proxmox.com/
v1: https://lore.proxmox.com/pve-devel/20260908101647.1057780-1-c.heiss@proxmox.com/
Notable changes v3 -> v4:
* add some `Display` derives for proxmox-installer-types
* fixed expanding of tab page contents, which caused unnecessary padding
Notable changes v2 -> v3:
* added VLAN configuration support
* rebased atop @Thomas changes, including some patches from him
* split bond member selection into static list and udev filters
Notable changes v1 -> v2:
* rebased on latest masters for each repo
* fixed a bug in the GUI installer, passing an invalid index to GTK with a
bond set up
Questions
=========
1. Since we now discourage the use of the 'balance-alb' and 'balance-tlb'
modes in combination with a Linux bridge (as of [1]), should these not
even be available for selection here?
2. For the Rust part, it reuses the already existing bond types from the
'proxmox-network-api' crate. Given that they are pretty universal rather,
than just completely API-specific, would it make sense to move them into
'proxmox-network-types' instead?
@Stefan might have some comment on this as well, as we discussed that
off-list recently as well.
[1] https://lore.proxmox.com/pve-devel/20260828095721.263382-1-m.sandoval@proxmox.com/
Diffstat
========
proxmox:
Christoph Heiss (8):
installer-types: clippy: use .is_multiple_of() instead of manual
modulo
installer-types: use `MacAddress` type where applicable
installer-types: derive Display for RebootMode and FilterMatch
installer-types: answer: add options for configuring management bond
installer-types: answer: add options for configuring management vlan
installer-types: bump fetch schema for bond and VLAN answer options
installer-types: bump version to 0.3.0-1
network-api: derive Display and FromStr for network bond types
Cargo.toml | 1 +
proxmox-installer-types/Cargo.toml | 3 +-
proxmox-installer-types/debian/changelog | 21 +
proxmox-installer-types/debian/control | 18 +-
proxmox-installer-types/src/answer.rs | 486 ++++++++++++++++++++++-
proxmox-installer-types/src/post_hook.rs | 4 +-
proxmox-network-api/Cargo.toml | 1 +
proxmox-network-api/debian/control | 6 +-
proxmox-network-api/src/api_types.rs | 27 +-
9 files changed, 524 insertions(+), 43 deletions(-)
pve-installer:
Christoph Heiss (22):
install: run make tidy
tree-wide: use `MacAddress` type instead of string for MAC addresses
install: factor out ifupdown2 config generation into own subroutine
install: do not rely on interface name map to be fully populated
install: config: add option for setting up bond on management
interface
install: config: add option for setting up vlan on management
interface
install: network: set up management bond if requested
install: network: set up vlan on management interface if requested
gui: network: factor out name pinning into advanced options dialog
gui: network: add bond setup options to advanced options dialog
gui: network: add vlan setup options to advanced network dialog
auto: pass through management network bond options to low-level
installer
auto: pass through management network vlan options to low-level
installer
tui: drop long obsolete comment about logo formatting
tui: views: add widget for displaying a group of checkboxes
tui: network: factor out name pinning into advanced options dialog
tui: network: add bond setup options to advanced network dialog
tui: network: add vlan setup options to advanced network dialog
gui: network: split advanced options dialog into tabs
tui: network: split advanced options dialog into tabs
gui: network: list bond member candidates sharing a MAC address once
tui: network: list bond member candidates sharing a MAC address once
Cargo.toml | 4 +-
Proxmox/Install.pm | 244 ++++--
Proxmox/Install/Config.pm | 79 ++
Proxmox/Sys/Net.pm | 43 +
debian/control | 3 +-
proxinstall | 491 +++++++++--
proxmox-auto-installer/Cargo.toml | 1 +
proxmox-auto-installer/src/utils.rs | 115 ++-
proxmox-auto-installer/tests/parse-answer.rs | 12 +-
.../resources/parse_answer/network_bond.json | 25 +
.../resources/parse_answer/network_bond.toml | 20 +
.../parse_answer/network_bond_and_vlan.json | 29 +
.../parse_answer/network_bond_and_vlan.toml | 23 +
.../network_bond_with_filter.json | 24 +
.../network_bond_with_filter.toml | 22 +
...ace_pinning_mixed_case_mac_addresses.json} | 0
...ace_pinning_mixed_case_mac_addresses.toml} | 4 +-
.../resources/parse_answer/network_vlan.json | 23 +
.../resources/parse_answer/network_vlan.toml | 17 +
.../network_bond_invalid_hash_policy.json | 3 +
.../network_bond_invalid_hash_policy.toml | 20 +
.../network_bond_invalid_mode.json | 3 +
.../network_bond_invalid_mode.toml | 18 +
.../network_bond_primary_not_member.json | 3 +
.../network_bond_primary_not_member.toml | 19 +
.../network_bond_single_interface.json | 3 +
.../network_bond_single_interface.toml | 18 +
...rface_pinning_overlong_interface_name.json | 2 +-
.../network_vlan_invalid_vid.json | 3 +
.../network_vlan_invalid_vid.toml | 17 +
proxmox-installer-common/Cargo.toml | 1 +
proxmox-installer-common/src/options.rs | 117 +--
proxmox-installer-common/src/setup.rs | 99 ++-
proxmox-post-hook/src/main.rs | 2 +-
proxmox-tui-installer/Cargo.toml | 1 +
proxmox-tui-installer/src/main.rs | 9 +-
proxmox-tui-installer/src/options.rs | 51 +-
proxmox-tui-installer/src/setup.rs | 20 +-
proxmox-tui-installer/src/views/mod.rs | 141 +++-
proxmox-tui-installer/src/views/network.rs | 762 ++++++++++++++----
.../src/views/tabbed_view.rs | 7 +
test/Makefile | 6 +-
test/generate-ifupdown2-config.pl | 541 +++++++++++++
43 files changed, 2661 insertions(+), 384 deletions(-)
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond.toml
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond_and_vlan.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond_and_vlan.toml
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond_with_filter.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_bond_with_filter.toml
rename proxmox-auto-installer/tests/resources/parse_answer/{network_interface_pinning_uppercase_mac_address.json => network_interface_pinning_mixed_case_mac_addresses.json} (100%)
rename proxmox-auto-installer/tests/resources/parse_answer/{network_interface_pinning_uppercase_mac_address.toml => network_interface_pinning_mixed_case_mac_addresses.toml} (85%)
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_vlan.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer/network_vlan.toml
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_invalid_hash_policy.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_invalid_hash_policy.toml
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_invalid_mode.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_invalid_mode.toml
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_primary_not_member.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_primary_not_member.toml
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_single_interface.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_bond_single_interface.toml
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_vlan_invalid_vid.json
create mode 100644 proxmox-auto-installer/tests/resources/parse_answer_fail/network_vlan_invalid_vid.toml
create mode 100755 test/generate-ifupdown2-config.pl
next reply other threads:[~2026-11-02 12:45 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-02 12:45 Christoph Heiss [this message]
2026-11-02 12:45 ` [PATCH proxmox v4 01/30] installer-types: clippy: use .is_multiple_of() instead of manual modulo Christoph Heiss
2026-11-02 12:45 ` [PATCH proxmox v4 02/30] installer-types: use `MacAddress` type where applicable Christoph Heiss
2026-11-02 12:45 ` [PATCH proxmox v4 03/30] installer-types: derive Display for RebootMode and FilterMatch Christoph Heiss
2026-11-02 12:45 ` [PATCH proxmox v4 04/30] installer-types: answer: add options for configuring management bond Christoph Heiss
2026-11-02 12:45 ` [PATCH proxmox v4 05/30] installer-types: answer: add options for configuring management vlan Christoph Heiss
2026-11-02 12:45 ` [PATCH proxmox v4 06/30] installer-types: bump fetch schema for bond and VLAN answer options Christoph Heiss
2026-11-02 12:45 ` [PATCH proxmox v4 07/30] installer-types: bump version to 0.3.0-1 Christoph Heiss
2026-11-02 12:45 ` [PATCH proxmox v4 08/30] network-api: derive Display and FromStr for network bond types Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 09/30] install: run make tidy Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 10/30] tree-wide: use `MacAddress` type instead of string for MAC addresses Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 11/30] install: factor out ifupdown2 config generation into own subroutine Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 12/30] install: do not rely on interface name map to be fully populated Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 13/30] install: config: add option for setting up bond on management interface Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 14/30] install: config: add option for setting up vlan " Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 15/30] install: network: set up management bond if requested Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 16/30] install: network: set up vlan on management interface " Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 17/30] gui: network: factor out name pinning into advanced options dialog Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 18/30] gui: network: add bond setup options to " Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 19/30] gui: network: add vlan setup options to advanced network dialog Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 20/30] auto: pass through management network bond options to low-level installer Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 21/30] auto: pass through management network vlan " Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 22/30] tui: drop long obsolete comment about logo formatting Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 23/30] tui: views: add widget for displaying a group of checkboxes Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 24/30] tui: network: factor out name pinning into advanced options dialog Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 25/30] tui: network: add bond setup options to advanced network dialog Christoph Heiss
2026-11-02 14:55 ` Lukas Sichert
2026-11-02 12:45 ` [PATCH installer v4 26/30] tui: network: add vlan " Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 27/30] gui: network: split advanced options dialog into tabs Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 28/30] tui: " Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 29/30] gui: network: list bond member candidates sharing a MAC address once Christoph Heiss
2026-11-02 12:45 ` [PATCH installer v4 30/30] tui: " Christoph Heiss
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=20261102124539.1008075-1-c.heiss@proxmox.com \
--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