Debloats the already quite big Manager package from an independent helper. Signed-off-by: Daniel Kral <d.k...@proxmox.com> --- src/PVE/HA/Manager.pm | 30 ++---------------------------- src/PVE/HA/Tools.pm | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm index 748667e8..14a20c5b 100644 --- a/src/PVE/HA/Manager.pm +++ b/src/PVE/HA/Manager.pm @@ -539,33 +539,6 @@ my $have_groups_been_migrated = sub { return keys $groups->{ids}->%* < 1; }; -my $get_version_parts = sub { - my ($node_version) = @_; - - return $node_version =~ m/^(\d+)\.(\d+)(?:\.|-)(\d+)(?:~(\d+))?/; -}; - -my $has_node_min_version = sub { - my ($node_version, $min_version) = @_; - - my ($major, $minor, $patch, $rev) = $get_version_parts->($node_version); - my ($min_major, $min_minor, $min_patch, $min_rev) = $get_version_parts->($min_version); - - return 0 if $major < $min_major; - return 0 if $major == $min_major && $minor < $min_minor; - return 0 if $major == $min_major && $minor == $min_minor && $patch < $min_patch; - - $min_rev //= 0; - return 0 - if $major == $min_major - && $minor == $min_minor - && $patch == $min_patch - && defined($rev) - && $rev < $min_rev; - - return 1; -}; - my $is_lrm_active_or_idle = sub { my ($ss, $node, $lrm_state) = @_; @@ -622,7 +595,8 @@ my $assert_cluster_can_migrate_ha_groups = sub { $haenv->log( 'notice', "ha groups migration: node '$node' has version '$node_version'", ); - my $has_min_version = $has_node_min_version->($node_version, $HA_RULES_MINVERSION); + my $has_min_version = + PVE::HA::Tools::has_min_version($node_version, $HA_RULES_MINVERSION); die "node '$node' needs at least pve-manager version '$HA_RULES_MINVERSION'\n" if !$has_min_version; } diff --git a/src/PVE/HA/Tools.pm b/src/PVE/HA/Tools.pm index 71eb5d0b..47b4aa03 100644 --- a/src/PVE/HA/Tools.pm +++ b/src/PVE/HA/Tools.pm @@ -237,6 +237,33 @@ sub upid_wait { PVE::ProcFSTools::upid_wait($upid, $waitfunc, 5); } +sub has_min_version { + my ($version, $min_version) = @_; + + my $get_version_parts = sub { + my ($version_str) = @_; + + return $version_str =~ m/^(\d+)\.(\d+)(?:\.|-)(\d+)(?:~(\d+))?/; + }; + + my ($major, $minor, $patch, $rev) = $get_version_parts->($version); + my ($min_major, $min_minor, $min_patch, $min_rev) = $get_version_parts->($min_version); + + return 0 if $major < $min_major; + return 0 if $major == $min_major && $minor < $min_minor; + return 0 if $major == $min_major && $minor == $min_minor && $patch < $min_patch; + + $min_rev //= 0; + return 0 + if $major == $min_major + && $minor == $min_minor + && $patch == $min_patch + && defined($rev) + && $rev < $min_rev; + + return 1; +} + # bash auto completion helper # NOTE: we use PVE::HA::Config here without declaring an 'use' clause above as -- 2.47.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel