2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-29 09:13:08 +00:00

Merge pull request #5346 from gurevichmark/ipmi_rflash

rflash for ipmi machines enhancements
This commit is contained in:
xuweibj 2018-07-11 17:21:15 +08:00 committed by GitHub
commit 4c93552c01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -50,6 +50,7 @@ my $xcatdebugmode = 0;
my $IPMIXCAT = "/opt/xcat/bin/ipmitool-xcat";
my $NON_BLOCK = 1;
my $BIG_DATA_MACHINE_MODELS = "8001-22C|9006-22C|5104-22C|8001-12C|9006-12C";
use constant RFLASH_LOG_DIR => "/var/log/xcat/rflash";
if (-d RFLASH_LOG_DIR) {
chmod 0700, RFLASH_LOG_DIR;
@ -1978,7 +1979,7 @@ sub do_firmware_update {
# P9 Boston (9006-22C, 9006-12C, 5104-22C) or P8 Briggs (8001-22C)
# firmware update is done using pUpdate utility expected to be in the
# specified data directory along with the update files .bin for BMC or .pnor for Host
if ($output =~ /8001-22C|9006-22C|5104-22C|8001-12C|9006-12C/) {
if ($output =~ /$BIG_DATA_MACHINE_MODELS/) {
# Verify valid data directory was specified
if (defined $directory_name) {
unless (File::Spec->file_name_is_absolute($directory_name)) {
@ -2040,6 +2041,7 @@ sub do_firmware_update {
$exit_with_error_func->($sessdata->{node}, $callback,
"At least one update file (.bin or .pnor) needs to be in data directory $pUpdate_directory.");
}
# All checks are done, run pUpdate utility on each of the update files found in
# the specified data directory
xCAT::SvrUtils::sendmsg("rflash started, Please wait...", $callback, $sessdata->{node});
@ -2105,13 +2107,28 @@ sub do_firmware_update {
}
$exit_with_success_func->($sessdata->{node}, $callback, "Firmware updated, powering chassis on to populate FRU information...");
} else {
# The target machine is *NOT* IBM Power S822LC for Big Data (Supermicro)
# Only .hpm files is supported for such machine, no directory option is supported
if (defined $directory_name and $output =~ /Chassis Part Number\s*:\s*(\S*)/) {
my $model = $1;
$exit_with_error_func->($sessdata->{node}, $callback, "Flashing of $model is not supported with pUpdate, supported Model Types: $BIG_DATA_MACHINE_MODELS");
}
}
if (($hpm_data_hash{deviceID} ne $sessdata->{device_id}) ||
($hpm_data_hash{productID} ne $sessdata->{prod_id}) ||
($hpm_data_hash{manufactureID} ne $sessdata->{mfg_id})) {
$exit_with_error_func->($sessdata->{node}, $callback,
"The image file doesn't match this machine");
# If we fall through here, it is *NOT* IBM Power S822LC for Big Data (Supermicro) and we expact some data in hpm_data_hash.
# Verify hpm_data_hash has some values
if (!exists($hpm_data_hash{deviceID})
|| !exists($hpm_data_hash{manufactureID})
|| !exists($hpm_data_hash{productID})) {
$exit_with_error_func->($sessdata->{node}, $callback, "Extract data from .hpm update file failed, no deviceID, productID or manufactureID got");
} elsif (($hpm_data_hash{deviceID} ne $sessdata->{device_id}) ||
($hpm_data_hash{productID} ne $sessdata->{prod_id}) ||
($hpm_data_hash{manufactureID} ne $sessdata->{mfg_id})) {
$exit_with_error_func->($sessdata->{node}, $callback, "The image file doesn't match target machine: \n$output");
}
# check for 8335-GTB Firmware above 1610A release. If below, exit