New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
enhance bmcsetup logic for openbmc #2990
enhance bmcsetup logic for openbmc #2990
Conversation
@@ -161,6 +168,7 @@ logger -s -t $log_label -p local4.info "IPMIVER=$IPMIVER, IPMIMFG=$IPMIMFG, XPRO | |||
# | |||
# IPMIMFG=2 = IBM | |||
# IPMIMFG=0 = OpenPower | |||
# IPMIMFG=42817 and XPROD=16975 = OpenBMC | |||
# | |||
if [ "$IPMIMFG" == 2 ]; then #IBM |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if this is very important, but in some cases in this file we use strings for comparisons and in some cases integers. Should we make this consistent:
if [ "$xxxx" == "yyy" ]
if [ "$xxxx" == yyy ]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi, @gurevichmark , thx very much for the comments. You are right we shall keep the consistent. I do that for the OpenBMC part.
But for others, UT is needed if there is any modifications. But I don't thnk we need to put too much effort to verify it on multiple kind of servers, right? What is your idea?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I agree. Maybe just change the code that gets executed for this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In this file, we use both =
and ==
in if []
statements. Functionally they are equivalent.
Should we make them the same for readability ?
Also people online suggest that =
should be used because ==
is not POSIX compliant. (dash, in particular, does not recognize it) http://stackoverflow.com/questions/2600281/what-is-the-difference-between-operator-and-in-bash/2601583#2601583
xCAT-genesis-scripts/bin/bmcsetup
Outdated
@@ -258,13 +266,20 @@ elif [ "$IPMIMFG" == "674" ]; then # DELL | |||
ipmitool delloem lan set shared with lom$BMCPORT &>/dev/null | |||
ipmitool delloem lan set shared with failover all loms &>dev/null | |||
fi | |||
elif [ "$IPMIMFG" = "42817" -a "$XPROD" = "16975" ]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add a comment here, # IBM OpenPower systems running OpenBMC
xCAT-genesis-scripts/bin/bmcsetup
Outdated
fi | ||
|
||
if [ -z "$ISOPENBMC" ]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest that we test for OpenBMC and override the default, and be consistent with this. So default to non-openbmc and then override for OpenBMC always...
Example:
LAN_MED_TYPE="802.3"
if [ ! -z "${ISOPENBMC+x}" ]; then
# OpenBMC overrides
LAN_MED_TYPE="Other LAN"
# other here...
fi
However, it looks like nothing else is defined at this time to put into this statement, but perhaps it will set the stage for future additions.
xCAT-genesis-scripts/bin/bmcsetup
Outdated
TRIES=0 | ||
bmc_config_rc=0 | ||
# Set Channel Access to apply network setting | ||
#while ! ipmitool -d $idev lan set $LANCHAN access on; do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line should be deleted.
xCAT-genesis-scripts/bin/bmcsetup
Outdated
# update the node status to 'bmcready' for openbmc, no more configuration is needed. | ||
if [ ! -z "$ISOPENBMC" ]; then | ||
# To enable network configuration for openbmc | ||
let idev=0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need to set this idev=0
if it seems to never increase or change...?
if [ ! -z "$XCATMASTER" ]; then | ||
if [ "$bmc_config_rc" = "0" ]; then | ||
# Wait for some time for the new network setting is ready | ||
snooze |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did we check with firmware team about this snooze, it will default to 1 second, is it even needed?
@@ -29,10 +29,17 @@ for LANCHAN in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do | |||
done | |||
BMCMAC=`ipmitool lan print $LANCHAN|grep ^MAC|awk '{print $4}'` #bmcconfig may opt to use DHCP, if so we need to feed up the mac address | |||
#TODO: need a way to get the DUID the service processor may use, perhaps reserve that for 'ibmsetup' since spec doesn't touch ipv6? | |||
|
|||
IPMIMFG=`ipmitool mc info |grep "^Manufacturer ID"|awk '{print $4}'` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we consider having a common file to move some of the common functions into another place?
[vhu@victorvm7 test]$ cat ipmi_common
#!/bin/sh
IPMIMFG="42817"
XPROD="16975"
if [ "$IPMIMFG" == "42817" -a "$XPROD" == "16975" ]; then
ISOPENBMC=1
else
ISOPENBMC=0
fi
If we source it in another file, we will get the variables set....
[vhu@victorvm7 test]$ cat getipmi
#!/bin/sh
echo "BEFORE: ISOPENBMC=$ISOPENBMC"
. ./ipmi_common
echo "AFTER:ISOPENBMC=$ISOPENBMC"
Result:
[vhu@victorvm7 test]$ ./getipmi
BEFORE: ISOPENBMC=
AFTER:ISOPENBMC=1
One downside is that we can't just use relative path . ./ipmi_common
and we have to make sure we don't get "File not found..."
@@ -96,20 +96,24 @@ sub process_request { | |||
my $request = shift; | |||
my $callback = shift; | |||
my $node = $request->{'_xcat_clienthost'}->[0]; | |||
my $open_table = "ipmi"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This variable name doesn't really make sense.. "open table"... Suggest bmc_mgmt_type
?
Hi, @vhu, I had modified based on some of your comments.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @zet809 , I am ok with the changes. Can merge in and give it more tries...
bmc_config_rc=0 | ||
# Set Channel Access to apply network setting | ||
#while ! ipmitool -d 0 lan set $LANCHAN access on; do | ||
while ! ipmitool -d 0 raw 0x06 0x40 $LANCHAN 0x42 0x44 > /dev/null; do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@zet809 I just followed the github issue you opened, I think we should add some comments and point to the openbmc issue so that we don't forgot why we are doing this raw 0x06 0x40
workaround...
Include 3 main modification:
isopenbmc
attribute for thegetbmcconfig
command send bygetipmi
script in xcat-genesis-scriptsbmcsetup
script to disable unsupported ipmitool in-band command for openbmcopenbmc
table if the request come from an openbmc.openbmc
frompasswd
table if the request come from an openbmc.Before modifying:
Configuring BMC:
After modifying:
For the task #2810