2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-06-21 05:25:32 +00:00

Initial implementation of rflash --activate

This commit is contained in:
Mark Gurevich
2017-06-21 11:35:42 -04:00
parent 7effdf1993
commit f18044a8c2

View File

@ -156,6 +156,14 @@ my %status_info = (
RFLASH_FILE_UPLOAD_RESPONSE => {
process => \&rflash_response,
},
RFLASH_UPDATE_ACTIVATE_REQUEST => {
method => "PUT",
init_url => "$openbmc_project_url/software",
data => "xyz.openbmc_project.Software.Activation.RequestedActivations.Active",
},
RFLASH_UPDATE_ACTIVATE_RESPONSE => {
process => \&rflash_response,
},
RINV_REQUEST => {
method => "GET",
@ -564,10 +572,19 @@ sub parse_args {
#
$check = unsupported($callback); if (ref($check) eq "ARRAY") { return $check; }
my $filename_passed = 0;
my $updateid_passed = 0;
foreach my $opt (@$extrargs) {
print "Examening $opt \n";
# Only files ending on .tar are allowed
if ($opt =~ /.*\.tar$/i) {
$filename_passed = 1;
print "Opt matches filename ending on .tar \n";
next;
}
# Check if hex number for the updateid is passed
if ($opt =~ /^[[:xdigit:]]+$/i) {
$updateid_passed = 1;
print "Opt matches hex fileid \n";
next;
}
if ($filename_passed) {
@ -577,9 +594,17 @@ sub parse_args {
}
}
else {
# Filename was not passed, check flags allowed without file
if ($opt !~ /^-c$|^--check$|^-l$|^--list/) {
return ([ 1, "Invalid option specified: $opt" ]);
if ($updateid_passed) {
# Updateid was passed, check flags allowed with update id
if ($opt !~ /^^-d$|^--delete$|^-a$|^--activate$/) {
return ([ 1, "Invalid option specified when an update id is provided: $opt" ]);
}
}
else {
# Neither Filename nor updateid was not passed, check flags allowed without file or updateid
if ($opt !~ /^-c$|^--check$|^-l$|^--list/) {
return ([ 1, "Invalid option specified: $opt" ]);
}
}
}
}
@ -772,9 +797,11 @@ sub parse_command_status {
if ($command eq "rflash") {
my $check_version = 0;
<<<<<<< HEAD
my $list = 0;
my $delete = 0;
my $upload = 0;
my $activate = 0;
if ($$subcommands[-1] =~ /c|check/) {
$check_version = 1;
@ -788,6 +815,9 @@ sub parse_command_status {
} elsif ($$subcommands[-1] =~ /u|upload/) {
$upload = 1;
pop(@$subcommands);
} elsif ($$subcommands[-1] =~ /a|activate/) {
$activate = 1;
pop(@$subcommands);
}
my $update_file = $$subcommands[0];
@ -822,7 +852,11 @@ sub parse_command_status {
}
}
else {
# TODO Process file id passed in
# Check if hex number for the updateid is passed
if ($update_file =~ /^[[:xdigit:]]+$/i) {
# Update init_url to include the id of the update to activate
$status_info{RFLASH_UPDATE_ACTIVATE_REQUEST}{init_url} .= "/$update_file/attr/RequestedActivation";
}
}
}
if ($check_version) {
@ -844,6 +878,14 @@ sub parse_command_status {
$next_status{LOGIN_RESPONSE} = "RFLASH_FILE_UPLOAD_REQUEST";
$next_status{"RFLASH_FILE_UPLOAD_REQUEST"} = "RFLASH_FILE_UPLOAD_RESPONSE";
}
if ($activate) {
# MG
print "Current value of activate request $status_info{RFLASH_UPDATE_ACTIVATE_REQUEST}{init_url} \n";
$next_status{LOGIN_RESPONSE} = "RFLASH_UPDATE_ACTIVATE_REQUEST";
$next_status{"RFLASH_UPDATE_ACTIVATE_REQUEST"} = "RFLASH_UPDATE_ACTIVATE_RESPONSE";
#xCAT::SvrUtils::sendmsg("Activate option is not yet supported.", $callback);
#return 1;
}
}
print Dumper(\%next_status) . "\n";
@ -1797,6 +1839,9 @@ sub rflash_response {
}
}
}
if ($node_info{$node}{cur_status} eq "RFLASH_UPDATE_ACTIVATE_RESPONSE") {
print "Update activatiion response\n";
}
if ($next_status{ $node_info{$node}{cur_status} }) {
$node_info{$node}{cur_status} = $next_status{ $node_info{$node}{cur_status} };