2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-06-14 18:30:23 +00:00

fix issue 5694, not try to install tree for xCAT-probe

This commit is contained in:
xuweibj
2018-10-12 01:45:07 -04:00
parent a248377b4d
commit 823a1530ee
4 changed files with 87 additions and 6 deletions

View File

@ -8,5 +8,5 @@ Standards-Version: 3.9.4
Package: xcat-probe
Architecture: all
Depends: ${perl:Depends}
Recommends: wget, dnsutils, tftp-hpa, tcpdump, tree
Recommends: wget, dnsutils, tftp-hpa, tcpdump
Description: Provides a toolkit to probe possible issues in xCAT

View File

@ -697,6 +697,72 @@ sub convert_second_to_time {
#------------------------------------------
=head3
Description:
Call get_files_recursive to get all files under given dir,
and save to target file
Arguments:
dir: the dir want to get files
target_file: the file to save files list
=cut
#------------------------------------------
sub list_files_to_file {
my $src_dir = shift;
$src_dir = shift if (($src_dir) && ($src_dir =~ /probe_utils/));
my $target_file = shift;
my $errormsg_ref = shift;
my @files = ();
get_files_recursive("$src_dir", \@files);
my $all_file = join("\n", @files);
if (!open f,"> $target_file") {
$$errormsg_ref = "Can not open file $target_file to save files list";
return 1;
}
print f $all_file;
close f;
return 0;
}
#------------------------------------------
=head3
Description:
Get all files under the given dir
Arguments:
dir: the dir want to get files
files_path_ref: list of all files
=cut
#------------------------------------------
sub get_files_recursive {
my $dir = shift;
my $files_path_ref = shift;
my $fd = undef;
opendir($fd, $dir);
for (; ;)
{
my $direntry = readdir($fd);
last unless (defined($direntry));
next if ($direntry =~ m/^\.\w*/);
next if ($direntry eq '..');
my $target = "$dir/$direntry";
if (-d $target) {
get_files_recursive($target, $files_path_ref);
} else {
push(@{$files_path_ref}, glob("$target\n"));
}
}
closedir($fd);
}
#------------------------------------------
=head3
Description:
print table

View File

@ -579,13 +579,29 @@ sub check_directory {
$flag = "w" if (!$rst);
$rst = 1;
} else {
my $diffout = `bash -c 'diff <(tree -i --noreport $sitetable_ref->{$dir}) <(tree -i --noreport $tmpdir) | wc -l'`;
if ($diffout > 4) {
push @$error_ref, "$dir '$sitetable_ref->{$dir}' is not the same with MN's, may be error";
my $dir_list_file = "/tmp/$dir" . "_list";
my $mnt_list_file = $tmpdir . "_list";
my $error;
if (probe_utils->list_files_to_file($sitetable_ref->{$dir}, $dir_list_file, \$error)) {
push @$error_ref, "$error";
$flag = "w" if (!$rst);
$rst = 1;
} elsif (probe_utils->list_files_to_file($tmpdir, $mnt_list_file, \$error)) {
push @$error_ref, "$error";
$flag = "w" if (!$rst);
$rst = 1;
} else {
`sed -i "s|^$tmpdir|$sitetable_ref->{$dir}|g" $mnt_list_file`;
my $diffout = `diff $dir_list_file $mnt_list_file`;
if ($diffout) {
push @$error_ref, "$dir '$sitetable_ref->{$dir}' is not the same with MN's, may be error";
$flag = "w" if (!$rst);
$rst = 1;
}
}
`umount $tmpdir`;
unlink($dir_list_file) if (-e "$dir_list_file");
unlink($mnt_list_file) if (-e "$mnt_list_file");
rmdir($tmpdir);
}
}
@ -1194,7 +1210,7 @@ sub get_attribute_value {
if ($command_info =~ /$attr=(\d+)/) {
$cmd_value = $1
}
print_check_result("Checking $table table attribute... $attr=$cmd_value", 0, 0, \@error);
probe_utils->send_msg("$output", "i", "Checking $table table attribute... $attr=$cmd_value") if($verbose);
return $cmd_value
}

View File

@ -21,7 +21,6 @@ BuildArch: noarch
Requires: /usr/bin/nslookup
Requires: /usr/bin/tftp
Requires: /usr/bin/wget
Requires: /usr/bin/tree
# Tool detect_dhcpd requires tcpdump
Requires: /usr/sbin/tcpdump
%endif