From 63625c6aae6be306c4094ca3d04f24826daa1286 Mon Sep 17 00:00:00 2001 From: bybai Date: Tue, 9 Apr 2019 22:47:45 -0400 Subject: [PATCH 1/3] configib support nmcli --- xCAT/postscripts/configib | 64 ++++++++++++++++++++++++++++++------ xCAT/postscripts/nicutils.sh | 9 ++--- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/xCAT/postscripts/configib b/xCAT/postscripts/configib index eb3d56f1b..dee2b92c1 100755 --- a/xCAT/postscripts/configib +++ b/xCAT/postscripts/configib @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash # IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html # Internal script used by confignics only # xCAT post script for configuring ib adapters. @@ -29,6 +29,16 @@ else log_label="xcat" fi +######################################################################## +# nmcli_used=0: use network.service +# nmcli_used=1: use NetworkManager +######################################################################## +nmcli_used=0 +ps -ef|grep -v grep|grep NetworkManager >/dev/null 2>/dev/null +if [ $? -eq 0 ]; then + nmcli_used=1 +fi + #This is the number of ports for each ib adpator. portnum=1 if [ -n "$NIC_IBAPORTS" ]; then @@ -461,11 +471,20 @@ IPADDR_$ipindex=$nicip" >> $dir/ifcfg-$nic # First ip address if [ $ipindex -eq 1 ] then + nmcontrol="" + devtype="" + if [ $nmcli_used -eq 0 ]; then + nmcontrol="NM_CONTROLLED=no" + else + devtype="TYPE=InfiniBand" + fi # Write the info to the ifcfg file echo "DEVICE=$nic -NM_CONTROLLED=no +$nmcontrol +$devtype BOOTPROTO=none ONBOOT=yes +NAME=$nic IPADDR=$nicip" > $dir/ifcfg-$nic # ipv6 if echo $nicip | grep : 2>&1 1>/dev/null @@ -514,11 +533,25 @@ IPV6ADDR=$nicip/$netmask" >> $dir/ifcfg-$nic echo "IPV6_DEFAULTGW=$gateway" >> $dir/ifcfg-$nic fi else # ipv4 address - echo "DEVICE=$nic:$ipindex + cfgfile=$dir"/ifcfg-"$nic + if [ $nmcli_used -eq 0 ]; then + cfgfile=$dir"/ifcfg-"$nic":"$ipindex + cfgcontent= "DEVICE=$nic:$ipindex NM_CONTROLLED=no BOOTPROTO=none ONBOOT=yes -IPADDR=$nicip" > $dir/ifcfg-$nic:$ipindex +NETMASK=$netmask +IPADDR=$nicip +DEVICE=$nic:$ipindex" + else + cfgcontent="NETMASK$ipindex=$netmask +IPADDR$ipindex=$nicip" + fi + if [ $nmcli_used -eq 0 ]; then + echo "$cfgcontent" > $cfgfile + else + echo "$cfgcontent" >> $cfgfile + fi if [[ "$OSVER" == rhels6* ]] then #get prefix from netmask, this is for IPv4 only @@ -526,11 +559,15 @@ IPADDR=$nicip" > $dir/ifcfg-$nic:$ipindex prefix=$(convert_netmask_to_cidr $netmask) echo "PREFIX=$prefix" >> $dir/ifcfg-$nic:$ipindex else - echo "NETMASK=$netmask" >> $dir/ifcfg-$nic:$ipindex + echo "$nicnetmask" >> $cfgfile fi if [ -n "$gateway" ]; then - echo "GATEWAY=$gateway" >> $dir/ifcfg-$nic:$ipindex + if [ $nmcli_used -eq 0 ]; then + echo "GATEWAY=$gateway" >> $cfgfile + else + echo "GATEWAY$ipindex=$gateway" >> $cfgfile + fi fi #add extra params @@ -540,12 +577,14 @@ IPADDR=$nicip" > $dir/ifcfg-$nic:$ipindex name="${array_extra_param_names[$i]}" value="${array_extra_param_values[$i]}" echo " $i: name=$name value=$value" - echo "${name}=${value}" >> $dir/ifcfg-$nic:$ipindex + echo "${name}=${value}" >> $cfgfile i=$((i+1)) done # need to run ifup eth1:1 for RedHat - goodnics="$goodnics,$nic:$ipindex" + if [ $nmcli_used -eq 0 ]; then + goodnics="$goodnics,$nic:$ipindex" + fi fi fi # end not the first ip address elif [ $OS_name == 'ubuntu' ] @@ -705,8 +744,13 @@ then sleep 2 ifup $tmp > /dev/null 2>&1 done - else - ifup $nic > /dev/null 2>&1 + else + if [ $nmcli_used -eq 1 ]; then + nmcli con reload $dir/ifcfg-$nic + nmcli con up $nic 2>&1 + else + ifup $nic > /dev/null 2>&1 + fi fi fi done diff --git a/xCAT/postscripts/nicutils.sh b/xCAT/postscripts/nicutils.sh index 22f499f92..660151c08 100755 --- a/xCAT/postscripts/nicutils.sh +++ b/xCAT/postscripts/nicutils.sh @@ -1595,13 +1595,14 @@ function check_NetworkManager_or_network_service() { if [ $? -ne 0 ]; then log_error "There is no nmcli" else - stopservice network | log_lines info - disableservice network | log_lines info - stopservice networking | log_lines info - disableservice networking | log_lines info return 1 fi fi + #In RH8 postscripts stage, nmcli can not modify persistent configure file + ps -ef|grep -v grep|grep NetworkManager >/dev/null 2>/dev/null + if [ $? -eq 0 ]; then + return 0 + fi checkservicestatus network > /dev/null 2>/dev/null || checkservicestatus wicked > /dev/null 2>/dev/null if [ $? -eq 0 ]; then stopservice NetworkManager | log_lines info From d8cb9b5b048d897d364d2ef9341383e16c4ca6bc Mon Sep 17 00:00:00 2001 From: bybai Date: Thu, 11 Apr 2019 04:48:33 -0400 Subject: [PATCH 2/3] reduce if/else times --- xCAT/postscripts/configib | 10 +++------- xCAT/postscripts/nicutils.sh | 5 +++-- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/xCAT/postscripts/configib b/xCAT/postscripts/configib index dee2b92c1..0d71a760d 100755 --- a/xCAT/postscripts/configib +++ b/xCAT/postscripts/configib @@ -533,7 +533,6 @@ IPV6ADDR=$nicip/$netmask" >> $dir/ifcfg-$nic echo "IPV6_DEFAULTGW=$gateway" >> $dir/ifcfg-$nic fi else # ipv4 address - cfgfile=$dir"/ifcfg-"$nic if [ $nmcli_used -eq 0 ]; then cfgfile=$dir"/ifcfg-"$nic":"$ipindex cfgcontent= "DEVICE=$nic:$ipindex @@ -541,15 +540,12 @@ NM_CONTROLLED=no BOOTPROTO=none ONBOOT=yes NETMASK=$netmask -IPADDR=$nicip -DEVICE=$nic:$ipindex" +IPADDR=$nicip" + echo "$cfgcontent" > $cfgfile else + cfgfile=$dir"/ifcfg-"$nic cfgcontent="NETMASK$ipindex=$netmask IPADDR$ipindex=$nicip" - fi - if [ $nmcli_used -eq 0 ]; then - echo "$cfgcontent" > $cfgfile - else echo "$cfgcontent" >> $cfgfile fi if [[ "$OSVER" == rhels6* ]] diff --git a/xCAT/postscripts/nicutils.sh b/xCAT/postscripts/nicutils.sh index 660151c08..25462374b 100755 --- a/xCAT/postscripts/nicutils.sh +++ b/xCAT/postscripts/nicutils.sh @@ -1580,7 +1580,8 @@ function decode_arguments { ############################################################################### # # check NetworkManager -# output: 2 error +# output: 3 error +# 2 using NetworkManager but service(systemctl) can not used, this happens in RH8 postscripts # 1 using NetworkManager # 0 using network # @@ -1601,7 +1602,7 @@ function check_NetworkManager_or_network_service() { #In RH8 postscripts stage, nmcli can not modify persistent configure file ps -ef|grep -v grep|grep NetworkManager >/dev/null 2>/dev/null if [ $? -eq 0 ]; then - return 0 + return 2 fi checkservicestatus network > /dev/null 2>/dev/null || checkservicestatus wicked > /dev/null 2>/dev/null if [ $? -eq 0 ]; then From 3f4c7431c5fd594a1c2bfc52ad87239351ab3ab9 Mon Sep 17 00:00:00 2001 From: bybai Date: Thu, 11 Apr 2019 05:07:50 -0400 Subject: [PATCH 3/3] polished --- xCAT/postscripts/configib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xCAT/postscripts/configib b/xCAT/postscripts/configib index 0d71a760d..552a35454 100755 --- a/xCAT/postscripts/configib +++ b/xCAT/postscripts/configib @@ -553,7 +553,7 @@ IPADDR$ipindex=$nicip" #get prefix from netmask, this is for IPv4 only prefix=24 prefix=$(convert_netmask_to_cidr $netmask) - echo "PREFIX=$prefix" >> $dir/ifcfg-$nic:$ipindex + echo "PREFIX=$prefix" >> $cfgfile else echo "$nicnetmask" >> $cfgfile fi