schema: add pve-bridge-id option/format/pair

for re-use in qemu-server/pve-container, which already have this option
duplicated. the '-pair' is needed for remote migration, but can also be
a nice addition to regular intra-cluster migration to lift the
restriction of having identically named bridges.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Reviewed-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2021-11-05 14:03:46 +01:00 committed by Thomas Lamprecht
parent da9f41f5ce
commit 6e55ce7d0f

View File

@ -82,6 +82,12 @@ register_standard_option('pve-storage-id', {
type => 'string', format => 'pve-storage-id', type => 'string', format => 'pve-storage-id',
}); });
register_standard_option('pve-bridge-id', {
description => "Bridge to attach guest network devices to.",
type => 'string', format => 'pve-bridge-id',
format_description => 'bridge',
});
register_standard_option('pve-config-digest', { register_standard_option('pve-config-digest', {
description => 'Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.', description => 'Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.',
type => 'string', type => 'string',
@ -193,6 +199,17 @@ sub parse_storage_id {
return parse_id($storeid, 'storage', $noerr); return parse_id($storeid, 'storage', $noerr);
} }
PVE::JSONSchema::register_format('pve-bridge-id', \&parse_bridge_id);
sub parse_bridge_id {
my ($id, $noerr) = @_;
if ($id !~ m/^[-_.\w\d]+$/) {
return undef if $noerr;
die "invalid bridge ID '$id'\n";
}
return $id;
}
PVE::JSONSchema::register_format('acme-plugin-id', \&parse_acme_plugin_id); PVE::JSONSchema::register_format('acme-plugin-id', \&parse_acme_plugin_id);
sub parse_acme_plugin_id { sub parse_acme_plugin_id {
my ($pluginid, $noerr) = @_; my ($pluginid, $noerr) = @_;
@ -294,6 +311,15 @@ sub verify_storagepair {
return $verify_idpair->($storagepair, $noerr, 'pve-storage-id'); return $verify_idpair->($storagepair, $noerr, 'pve-storage-id');
} }
# note: this only checks a single list entry
# when using a bridge-pair-list map, you need to pass the full parameter to
# parse_idmap
register_format('bridge-pair', \&verify_bridgepair);
sub verify_bridgepair {
my ($bridgepair, $noerr) = @_;
return $verify_idpair->($bridgepair, $noerr, 'pve-bridge-id');
}
register_format('mac-addr', \&pve_verify_mac_addr); register_format('mac-addr', \&pve_verify_mac_addr);
sub pve_verify_mac_addr { sub pve_verify_mac_addr {
my ($mac_addr, $noerr) = @_; my ($mac_addr, $noerr) = @_;