diff --git a/xCAT/postscripts/configib b/xCAT/postscripts/configib index eb3d56f1b..552a35454 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,23 +533,37 @@ IPV6ADDR=$nicip/$netmask" >> $dir/ifcfg-$nic echo "IPV6_DEFAULTGW=$gateway" >> $dir/ifcfg-$nic fi else # ipv4 address - echo "DEVICE=$nic:$ipindex + 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" + echo "$cfgcontent" > $cfgfile + else + cfgfile=$dir"/ifcfg-"$nic + cfgcontent="NETMASK$ipindex=$netmask +IPADDR$ipindex=$nicip" + echo "$cfgcontent" >> $cfgfile + fi if [[ "$OSVER" == rhels6* ]] then #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 "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 +573,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 +740,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 86acd954f..204343a99 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 # @@ -1595,13 +1596,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 2 + fi checkservicestatus network > /dev/null 2>/dev/null || checkservicestatus wicked > /dev/null 2>/dev/null if [ $? -eq 0 ]; then stopservice NetworkManager | log_lines info