From 10a858cf61fd65b8a70f15d49550e3cd0dbf1378 Mon Sep 17 00:00:00 2001 From: xuweibj Date: Wed, 21 Nov 2018 19:59:04 -0500 Subject: [PATCH] fix issue 5719, make output of commands against openbmc same --- .../agent/hwctl/executor/openbmc_inventory.py | 4 +- xCAT-server/lib/xcat/plugins/openbmc.pm | 38 ++++++++++++++----- xCAT-server/lib/xcat/plugins/openbmc2.pm | 2 +- .../UT_openbmc/supported_commands_case0 | 6 +-- xCAT-test/autotest/testcase/rspconfig/cases1 | 6 +-- .../autotest/testcase/rspconfig/rspconfig.sh | 2 +- 6 files changed, 38 insertions(+), 20 deletions(-) diff --git a/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_inventory.py b/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_inventory.py index 0b454d426..dd9d15c76 100644 --- a/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_inventory.py +++ b/xCAT-openbmc-py/lib/python/agent/hwctl/executor/openbmc_inventory.py @@ -60,7 +60,7 @@ class OpenBMCInventoryTask(ParallelNodesCommand): continue firm_info.append('%s Firmware Product: %s (%s)%s' % - (firm_obj_dict[key].purpose, + (firm_obj_dict[key].purpose.upper(), firm_obj_dict[key].version, firm_obj_dict[key].active, flag)) @@ -70,7 +70,7 @@ class OpenBMCInventoryTask(ParallelNodesCommand): for extended in extendeds: firm_info.append('%s Firmware Product: ' \ '-- additional info: %s' % \ - (firm_obj_dict[key].purpose, extended)) + (firm_obj_dict[key].purpose.upper(), extended)) return firm_info diff --git a/xCAT-server/lib/xcat/plugins/openbmc.pm b/xCAT-server/lib/xcat/plugins/openbmc.pm index 97c826ab0..f8f74dc46 100644 --- a/xCAT-server/lib/xcat/plugins/openbmc.pm +++ b/xCAT-server/lib/xcat/plugins/openbmc.pm @@ -1230,7 +1230,7 @@ sub parse_args { my $option_s; GetOptions( 's' => \$option_s ); return ([ 1, "The -s option is not supported for OpenBMC." ]) if ($option_s); - if ( "resolved" ~~ @ARGV) { + if ( "resolved=" ~~ @ARGV) { return ([ 1, "$usage_errormsg $reventlog_no_id_resolved_errormsg" ]); } return ([ 1, "Only one option is supported at the same time for $command" ]); @@ -1243,7 +1243,7 @@ sub parse_args { if ($command eq "rbeacon") { unless ($subcommand =~ /^on$|^off$|^stat$/) { - return ([ 1, "Only 'on', 'off' or 'stat' are supported for OpenBMC managed nodes."]); + return ([ 1, "Only 'on', 'off' and 'stat' are supported for OpenBMC managed nodes."]); } } elsif ($command eq "rpower") { unless ($subcommand =~ /^on$|^off$|^softoff$|^reset$|^boot$|^bmcreboot$|^bmcstate$|^status$|^stat$|^state$/) { @@ -1291,6 +1291,22 @@ sub parse_args { if ($::RSPCONFIG_CONFIGURED_API_KEY ne -1) { return ([ 1, "Can not query $api_config_info{$::RSPCONFIG_CONFIGURED_API_KEY}{subcommand} information with other options at the same time" ]) if ($#ARGV > 1); # subcommand defined in the configured API hash, return from here, the RSPCONFIG_CONFIGURED_API_KEY is the key into the hash + if ($subcommand =~ /(\w+)=(.*)/) { + my $subcommand_key = $1; + my $subcommand_value = $2; + my $error_msg = "Invalid value '$subcommand_value' for '$subcommand_key'"; + my @valid_values = sort (keys %{ $api_config_info{$::RSPCONFIG_CONFIGURED_API_KEY}{attr_value} }); + if (!@valid_values) { + if ($api_config_info{$::RSPCONFIG_CONFIGURED_API_KEY}{type} eq "boolean") { + @valid_values = (0, 1); + } else { + return ([1, "$error_msg"]); + } + } + if (! grep { $_ eq $subcommand_value } @valid_values ) { + return ([1, "$error_msg, Valid values: " . join(",", @valid_values)]); + } + } return; } elsif ($subcommand =~ /^(\w+)=(.*)/) { @@ -1729,14 +1745,16 @@ sub parse_command_status { } else { # Everything else is invalid - xCAT::SvrUtils::sendmsg([1, "Invalid value '$subcommand_value' for '$subcommand_key'"], $callback); + my $error_msg = "Invalid value '$subcommand_value' for '$subcommand_key'"; my @valid_values = keys %{ $api_config_info{$::RSPCONFIG_CONFIGURED_API_KEY}{attr_value} }; if (!@valid_values) { if ($api_config_info{$::RSPCONFIG_CONFIGURED_API_KEY}{type} eq "boolean") { - xCAT::SvrUtils::sendmsg([1, "Valid values: 0,1"], $callback); + xCAT::SvrUtils::sendmsg([1, "$error_msg, Valid values: 0,1"], $callback); + } else { + xCAT::SvrUtils::sendmsg([1, "$error_msg"], $callback); } } else { - xCAT::SvrUtils::sendmsg([1, "Valid values: " . join(",", @valid_values)], $callback); + xCAT::SvrUtils::sendmsg([1, "$error_msg, Valid values: " . join(",", @valid_values)], $callback); } return 1; } @@ -1782,7 +1800,7 @@ sub parse_command_status { $next_status{RSPCONFIG_GET_REQUEST} = "RSPCONFIG_GET_RESPONSE"; $status_info{RSPCONFIG_SET_HOSTNAME_REQUEST}{data} = $1; - $status_info{RSPCONFIG_SET_RESPONSE}{argv} = "Hostname"; + $status_info{RSPCONFIG_SET_RESPONSE}{argv} = "BMC Hostname"; $status_info{RSPCONFIG_GET_RESPONSE}{argv} = "hostname"; return 0; } @@ -2530,7 +2548,7 @@ sub deal_with_response { $cur_url = $status_info{REVENTLOG_RESOLVED_REQUEST}{init_url}; } my $log_id = (split ('/', $cur_url))[5]; - $error = "Invalid ID=$log_id provided to be resolved. [$::RESPONSE_FORBIDDEN]"; + $error = "Invalid ID: $log_id provided to be resolved. [$::RESPONSE_FORBIDDEN]"; } else{ $error = "$::RESPONSE_FORBIDDEN - Requested endpoint does not exist or may indicate function is not yet supported by OpenBMC firmware."; } @@ -3320,7 +3338,7 @@ sub reventlog_response { } else { # Return if there are no entries with callout data - xCAT::SvrUtils::sendmsg("There are no event log entries contributing to LED fault", $callback, $node); + xCAT::SvrUtils::sendmsg([1, "No event log entries needed to be resolved"], $callback, $node); $wait_node_num--; return; } @@ -3878,7 +3896,7 @@ sub rspconfig_api_config_response { my $last_component = $attr_value[-1]; my @valid_values = values %{ $api_config_info{$::RSPCONFIG_CONFIGURED_API_KEY}{attr_value} }; if ($value) { - xCAT::SvrUtils::sendmsg($api_config_info{$::RSPCONFIG_CONFIGURED_API_KEY}{display_name} . " : $last_component", $callback, $node); + xCAT::SvrUtils::sendmsg($api_config_info{$::RSPCONFIG_CONFIGURED_API_KEY}{display_name} . ": $last_component", $callback, $node); my $found = grep(/$value/, @valid_values); if ($found eq 0) { # Received data value not expected @@ -4113,7 +4131,7 @@ sub rspconfig_dump_response { if ($node_info{$node}{cur_status} eq "RSPCONFIG_DUMP_CLEAR_RESPONSE") { if ($response_info->{'message'} eq $::RESPONSE_OK) { my $dump_id = $status_info{RSPCONFIG_DUMP_CLEAR_RESPONSE}{argv}; - xCAT::MsgUtils->message("I", { data => ["[$dump_id] clear"] }, $callback) unless ($next_status{ $node_info{$node}{cur_status} }); + xCAT::MsgUtils->message("I", { data => ["$node: [$dump_id] clear"] }, $callback) unless ($next_status{ $node_info{$node}{cur_status} }); } else { my $error_msg = "Could not clear BMC diagnostics successfully (". $response_info->{'message'} . ")"; xCAT::MsgUtils->message("W", { data => ["$node: $error_msg"] }, $callback) if ($next_status{ $node_info{$node}{cur_status} }); diff --git a/xCAT-server/lib/xcat/plugins/openbmc2.pm b/xCAT-server/lib/xcat/plugins/openbmc2.pm index 9ccfac90a..c15bf7ad8 100644 --- a/xCAT-server/lib/xcat/plugins/openbmc2.pm +++ b/xCAT-server/lib/xcat/plugins/openbmc2.pm @@ -202,7 +202,7 @@ sub parse_args { if ($command eq "rbeacon") { unless ($subcommand =~ /^on$|^off$|^stat$/) { - return ([ 1, "Only 'on', 'off' or 'stat' is supported for OpenBMC managed nodes."]); + return ([ 1, "Only 'on', 'off' and 'stat' are supported for OpenBMC managed nodes."]); } } elsif ($command eq "rflash") { my ($activate, $check, $delete, $directory, $list, $upload) = (0) x 6; diff --git a/xCAT-test/autotest/testcase/UT_openbmc/supported_commands_case0 b/xCAT-test/autotest/testcase/UT_openbmc/supported_commands_case0 index 403511355..7458af4dd 100644 --- a/xCAT-test/autotest/testcase/UT_openbmc/supported_commands_case0 +++ b/xCAT-test/autotest/testcase/UT_openbmc/supported_commands_case0 @@ -27,7 +27,7 @@ check:rc==0 check:output=~$$CN: SYSTEM SerialNumber cmd: rinv $$CN firm check:rc==0 -check:output=~$$CN: Host Firmware +check:output=~$$CN: HOST Firmware check:output=~$$CN: BMC Firmware cmd: rinv $$CN cpu check:rc==0 @@ -53,13 +53,13 @@ check:rc==0 check:output=~$$CN: Ps0 Input Voltage: cmd: rvitals $$CN wattage check:rc==0 -check:output=~$$CN: Total Power: +check:output=~$$CN: Ps0 Input Power: cmd: rvitals $$CN fanspeed check:rc==0 check:output=~$$CN: Fan cmd: rvitals $$CN power check:rc==0 -check:output=~$$CN: Total Power: +check:output=~$$CN: Ps0 Input Power: cmd: rvitals $$CN leds check:rc==0 check:output=~$$CN: LEDs Front diff --git a/xCAT-test/autotest/testcase/rspconfig/cases1 b/xCAT-test/autotest/testcase/rspconfig/cases1 index e475bcad0..deff88bb1 100644 --- a/xCAT-test/autotest/testcase/rspconfig/cases1 +++ b/xCAT-test/autotest/testcase/rspconfig/cases1 @@ -197,7 +197,7 @@ cmd:rspconfig $$CN powerrestorepolicy=restore check:output =~$$CN:\s*BMC Setting BMC PowerRestorePolicy... check:rc == 0 cmd:rspconfig $$CN powerrestorepolicy=abc -check:output =~$$CN:\s*(\[.*?\]: )?Error: Invalid value '\S*' for 'powerrestorepolicy', Valid values: restore,always_on,always_off +check:output =~$$CN:\s*Error: Invalid value '\S*' for 'powerrestorepolicy', Valid values: always_off,always_on,restore check:rc != 0 cmd:rspconfig $$CN powerrestorepolicy check:rc == 0 @@ -256,7 +256,7 @@ cmd:rspconfig $$CN timesyncmethod check:rc == 0 check:output =~$$CN:\s*BMC TimeSyncMethod:\s*Manual cmd:rspconfig $$CN timesyncmethod=abc -check:output =~$$CN:\s*(\[.*?\]: )?Error: Invalid value \S* for 'timesyncmethod', Valid values: ntp,manual +check:output =~$$CN:\s*(\[.*?\]: )?Error: Invalid value \S* for 'timesyncmethod', Valid values: manual,ntp check:rc != 0 cmd:syncmethod=`cat /tmp/timesyncmethod | awk -F ":" '{print $3}'`;newsyncmethod=`echo $syncmethod |tr 'A-Z' 'a-z'`;rspconfig $$CN timesyncmethod=$newsyncmethod check:rc == 0 @@ -290,7 +290,7 @@ cmd:rspconfig $$CN bootmode check:rc == 0 check:output =~$$CN:\s*BMC BootMode:\s*Setup cmd:rspconfig $$CN bootmode=abc -check:output =~$$CN:\s*(\[.*?\]: )?Error: Invalid value \S* for 'bootmode', Valid values: regular,safe,setup +check:output =~$$CN:\s*Error: Invalid value \S* for 'bootmode', Valid values: regular,safe,setup check:rc != 0 cmd:mode=`cat /tmp/bootmode |awk -F ":" '{print $3}'`;newmode=`echo $mode |tr 'A-Z' 'a-z'`;rspconfig $$CN bootmode=$newmode check:rc == 0 diff --git a/xCAT-test/autotest/testcase/rspconfig/rspconfig.sh b/xCAT-test/autotest/testcase/rspconfig/rspconfig.sh index e7f988b3f..8764b7735 100755 --- a/xCAT-test/autotest/testcase/rspconfig/rspconfig.sh +++ b/xCAT-test/autotest/testcase/rspconfig/rspconfig.sh @@ -177,7 +177,7 @@ function change_all if [[ $? -eq 0 ]];then BMCIP=`rspconfig $1 ip |awk -F":" '{print $3}'|sed s/[[:space:]]//g`; BMCNETMASK=`rspconfig $1 netmask |awk -F":" '{print $3}'|sed s/[[:space:]]//g`; - BMCGGATEWAY=`rspconfig $1 gateway |awk -F":" '{print $3}'|sed s/[[:space:]]//g`; + BMCGGATEWAY=`rspconfig $1 gateway |awk -F":" '{print $3}'| awk -F" " '{print $1}' |sed s/[[:space:]]//g`; output=`rspconfig $1 vlan` if [[ $output =~ "BMC VLAN ID enabled" ]];then BMCVLAN=`rspconfig $1 vlan |awk -F":" '{print $3}'|sed s/[[:space:]]//g`