2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-07-31 10:09:40 +00:00

refactor(dhcp): reuse shared version comparison

This commit is contained in:
Vinícius Ferrão
2026-07-18 01:41:13 -03:00
parent ec2bbb9a6a
commit 5467c1aef9
2 changed files with 7 additions and 41 deletions
+3 -21
View File
@@ -59,8 +59,9 @@ sub default_backend {
my $os_name = exists $args{os_name} ? $args{os_name} : $class->_osver('os');
my $version = exists $args{version} ? $args{version} : $class->_osver('version');
if ( defined($os_name) && $os_name =~ /^ubuntu$/i && _version_at_least( $version, '22.04' ) ) {
return 'kea';
if ( defined($os_name) && $os_name =~ /^ubuntu$/i && defined($version) && $version =~ /^\d+\.\d+(?:\.\d+)*$/ ) {
require xCAT::Utils;
return 'kea' if xCAT::Utils->version_cmp( $version, '22.04' ) >= 0;
}
return 'isc';
@@ -153,23 +154,4 @@ sub _command_exists {
return 0;
}
sub _version_at_least {
my ( $version, $minimum ) = @_;
return 0 unless defined($version) && $version =~ /^\d+\.\d+(?:\.\d+)*$/;
my @version_parts = split /\./, $version;
my @minimum_parts = split /\./, $minimum;
my $max = @version_parts > @minimum_parts ? @version_parts : @minimum_parts;
for my $idx ( 0 .. $max - 1 ) {
my $left = $version_parts[$idx] || 0;
my $right = $minimum_parts[$idx] || 0;
return 1 if $left > $right;
return 0 if $left < $right;
}
return 1;
}
1;
+4 -20
View File
@@ -899,7 +899,10 @@ sub _use_modern_additional_class_syntax {
return 0 if $self->{additional_class_syntax} && $self->{additional_class_syntax} eq 'legacy';
my $version = $self->kea_version();
return _version_at_least( $version, '2.7.4' );
return 0 unless defined($version) && $version =~ /\A\d+(?:\.\d+)*(?:-[A-Za-z0-9]+)?\z/;
require xCAT::Utils;
return xCAT::Utils->version_cmp( $version, '2.7.4' ) >= 0 ? 1 : 0;
}
sub kea_version {
@@ -934,25 +937,6 @@ sub _first_defined {
return;
}
sub _version_at_least {
my ( $version, $minimum ) = @_;
return 0 unless defined($version) && $version =~ /^\d+(?:\.\d+)*/;
my @version_parts = split /\./, $version;
my @minimum_parts = split /\./, $minimum;
my $max = @version_parts > @minimum_parts ? @version_parts : @minimum_parts;
for my $idx ( 0 .. $max - 1 ) {
my $left = $version_parts[$idx] || 0;
my $right = $minimum_parts[$idx] || 0;
return 1 if $left > $right;
return 0 if $left < $right;
}
return 1;
}
sub _integer {
my ($value) = @_;