From eba16f3dd84b5acc1bbc7601482761d009fecc6c Mon Sep 17 00:00:00 2001 From: Victor Hu Date: Thu, 22 Jun 2017 20:39:27 -0400 Subject: [PATCH 1/3] Found out that for Witherspoon machines, if the host has not been booted there is no system information returned, so check for the boxelder bmc for a model/serial combination to use --- xCAT-server/lib/xcat/plugins/bmcdiscover.pm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/bmcdiscover.pm b/xCAT-server/lib/xcat/plugins/bmcdiscover.pm index f1fb34b32..5fb0f8009 100644 --- a/xCAT-server/lib/xcat/plugins/bmcdiscover.pm +++ b/xCAT-server/lib/xcat/plugins/bmcdiscover.pm @@ -1054,6 +1054,7 @@ sub bmcdiscovery_openbmc{ my $openbmc_project_url = "xyz/openbmc_project"; my $login_endpoint = "login"; my $system_endpoint = "inventory/system"; + my $motherboard_boxelder_endpoint = "$system_endpoint/chassis/motherboard/boxelder/bmc"; my $node_data = $ip; my $brower = LWP::UserAgent->new( ssl_opts => { SSL_verify_mode => 0x00, verify_hostname => 0 }, ); @@ -1067,12 +1068,19 @@ sub bmcdiscovery_openbmc{ my $login_response = $brower->request($login_request); if ($login_response->is_success) { + # attempt to find the system serial/model $url = "$http_protocol://$ip/$openbmc_project_url/$system_endpoint"; my $req = HTTP::Request->new('GET', $url, $header); my $req_output = $brower->request($req); if ($req_output->is_error) { - xCAT::MsgUtils->message("W", { data => ["$ip: Could not obtain system information from BMC. Verify firmware levels are up-to-date."] }, $::CALLBACK); - return; + # If the host system has not yet been powered on, check the boxelder bmc info for model/serial + $url = "$http_protocol://$ip/$openbmc_project_url/$motherboard_boxelder_endpoint"; + $req = HTTP::Request->new('GET', $url, $header); + $req_output = $brower->request($req); + if ($req_output->is_error) { + xCAT::MsgUtils->message("W", { data => ["$ip: Could not obtain system information from BMC."] }, $::CALLBACK); + return; + } } my $response = decode_json $req_output->content; my $mtm; From 32b467d635a3fe175405edc6c0cd4225638aef57 Mon Sep 17 00:00:00 2001 From: Victor Hu Date: Thu, 22 Jun 2017 22:29:20 -0400 Subject: [PATCH 2/3] Our p9 boxes do not have any VPD information, so in order to force the code to return a generated discovered definition, blank out the mtm string if XCAT_DEV_WITHERSPOON=TRUE --- xCAT-server/lib/xcat/plugins/bmcdiscover.pm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xCAT-server/lib/xcat/plugins/bmcdiscover.pm b/xCAT-server/lib/xcat/plugins/bmcdiscover.pm index 5fb0f8009..63da7ea97 100644 --- a/xCAT-server/lib/xcat/plugins/bmcdiscover.pm +++ b/xCAT-server/lib/xcat/plugins/bmcdiscover.pm @@ -83,6 +83,11 @@ sub process_request $::CALLBACK = $callback; #$::args = $request->{arg}; + if (ref($request->{environment}) eq 'ARRAY' and ref($request->{environment}->[0]->{XCAT_DEV_WITHERSPOON}) eq 'ARRAY') { + $::XCAT_DEV_WITHERSPOON = $request->{environment}->[0]->{XCAT_DEV_WITHERSPOON}->[0]; + } else { + $::XCAT_DEV_WITHERSPOON = $request->{environment}->{XCAT_DEV_WITHERSPOON}; + } unless (defined($request->{arg})) { bmcdiscovery_usage(); @@ -1089,6 +1094,10 @@ sub bmcdiscovery_openbmc{ if (defined($response->{data})) { if (defined($response->{data}->{Model}) and defined($response->{data}->{SerialNumber})) { $mtm = $response->{data}->{Model}; + if (defined($::XCAT_DEV_WITHERSPOON) && ($::XCAT_DEV_WITHERSPOON eq "TRUE")) { + print "XCAT_DEV_WITHERSPOON=TRUE, forcing MTM to blank string (ORIG MTM=$mtm)\n"; + $mtm = ""; + } $serial = $response->{data}->{SerialNumber}; } else { xCAT::MsgUtils->message("W", { data => ["Could not obtain Model Type and/or Serial Number for BMC at $ip"] }, $::CALLBACK); From bc46643b739302708a402986e876fa5aedf8b6ab Mon Sep 17 00:00:00 2001 From: Victor Hu Date: Thu, 22 Jun 2017 23:08:15 -0400 Subject: [PATCH 3/3] Print the XCAT_DEV_WITHERSPOON bypass message out to the user --- xCAT-server/lib/xcat/plugins/bmcdiscover.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xCAT-server/lib/xcat/plugins/bmcdiscover.pm b/xCAT-server/lib/xcat/plugins/bmcdiscover.pm index 63da7ea97..fdf03b3b7 100644 --- a/xCAT-server/lib/xcat/plugins/bmcdiscover.pm +++ b/xCAT-server/lib/xcat/plugins/bmcdiscover.pm @@ -1095,7 +1095,7 @@ sub bmcdiscovery_openbmc{ if (defined($response->{data}->{Model}) and defined($response->{data}->{SerialNumber})) { $mtm = $response->{data}->{Model}; if (defined($::XCAT_DEV_WITHERSPOON) && ($::XCAT_DEV_WITHERSPOON eq "TRUE")) { - print "XCAT_DEV_WITHERSPOON=TRUE, forcing MTM to blank string (ORIG MTM=$mtm)\n"; + xCAT::MsgUtils->message("I", { data => ["XCAT_DEV_WITHERSPOON=TRUE, forcing MTM to empty string for $ip (Original MTM=$mtm)"] }, $::CALLBACK); $mtm = ""; } $serial = $response->{data}->{SerialNumber};