X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=src%2FPVE%2FJSONSchema.pm;h=d458ec13f87d57eed2b6d1fab691479dac5cf0a5;hp=36fa994eb7e6d4bddeb2600585a085cdc7c7ba70;hb=aad3582eab367a261d5a2a1fed9002fe299f9d46;hpb=14324ea8744ccca64453bea72a746a758a5cd9b9 diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm index 36fa994..d458ec1 100644 --- a/src/PVE/JSONSchema.pm +++ b/src/PVE/JSONSchema.pm @@ -113,6 +113,12 @@ register_standard_option('pve-output-format', { default => 'text', }); +register_standard_option('pve-snapshot-name', { + description => "The name of the snapshot.", + type => 'string', format => 'pve-configid', + maxLength => 40, +}); + my $format_list = {}; sub register_format { @@ -208,12 +214,23 @@ register_format('mac-addr', \&pve_verify_mac_addr); sub pve_verify_mac_addr { my ($mac_addr, $noerr) = @_; - if ($mac_addr !~ m/^[0-9a-f]{2}(:[0-9a-f]{2}){5}$/i) { + # don't allow I/G bit to be set, most of the time it breaks things, see: + # https://pve.proxmox.com/pipermail/pve-devel/2019-March/035998.html + if ($mac_addr !~ m/^[a-f0-9][02468ace](?::[a-f0-9]{2}){5}$/i) { return undef if $noerr; - die "value does not look like a valid MAC address\n"; + die "value does not look like a valid unicast MAC address\n"; } return $mac_addr; + } +register_standard_option('mac-addr', { + type => 'string', + description => 'Unicast MAC address.', + verbose_description => 'A common MAC address with the I/G (Individual/Group) bit not set.', + format_description => "XX:XX:XX:XX:XX:XX", + optional => 1, + format => 'mac-addr', +}); register_format('ipv4', \&pve_verify_ipv4); sub pve_verify_ipv4 { @@ -249,6 +266,7 @@ sub pve_verify_ip { } my $ipv4_mask_hash = { + '0.0.0.0' => 0, '128.0.0.0' => 1, '192.0.0.0' => 2, '224.0.0.0' => 3, @@ -283,6 +301,11 @@ my $ipv4_mask_hash = { '255.255.255.255' => 32, }; +sub get_netmask_bits { + my ($mask) = @_; + return $ipv4_mask_hash->{$mask}; +} + register_format('ipv4mask', \&pve_verify_ipv4mask); sub pve_verify_ipv4mask { my ($mask, $noerr) = @_; @@ -356,8 +379,7 @@ register_format('email', \&pve_verify_email); sub pve_verify_email { my ($email, $noerr) = @_; - # we use same regex as in Utils.js - if ($email !~ /^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,63}$/) { + if ($email !~ /^[\w\+\-\~]+(\.[\w\+\-\~]+)*@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*$/) { return undef if $noerr; die "value does not look like a valid email address\n"; } @@ -450,23 +472,23 @@ my %bwlimit_opt = ( my $bwlimit_format = { default => { %bwlimit_opt, - description => 'default bandwidth limit in MiB/s', + description => 'default bandwidth limit in KiB/s', }, restore => { %bwlimit_opt, - description => 'bandwidth limit in MiB/s for restoring guests from backups', + description => 'bandwidth limit in KiB/s for restoring guests from backups', }, migration => { %bwlimit_opt, - description => 'bandwidth limit in MiB/s for migrating guests', + description => 'bandwidth limit in KiB/s for migrating guests (including moving local disks)', }, clone => { %bwlimit_opt, - description => 'bandwidth limit in MiB/s for cloning disks', + description => 'bandwidth limit in KiB/s for cloning disks', }, move => { %bwlimit_opt, - description => 'bandwidth limit in MiB/s for moving disks', + description => 'bandwidth limit in KiB/s for moving disks', }, }; register_format('bwlimit', $bwlimit_format);