From 72760749a2be0c1569d22d97554f5d89763cef9e Mon Sep 17 00:00:00 2001 From: bybai Date: Fri, 8 Mar 2019 04:12:45 -0500 Subject: [PATCH 1/2] confignetwork refine using nmcli --- xCAT/postscripts/confignetwork | 52 ++++++++++---------- xCAT/postscripts/nicutils.sh | 86 ++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 26 deletions(-) diff --git a/xCAT/postscripts/confignetwork b/xCAT/postscripts/confignetwork index 7a6186bf4..602919b5c 100755 --- a/xCAT/postscripts/confignetwork +++ b/xCAT/postscripts/confignetwork @@ -559,7 +559,11 @@ function configure_nicdevice { if [ $? -ne 0 ]; then errorcode=1 else - create_bridge_interface ifname=$nic_dev _brtype=$nic_dev_type _port=$base_nic_dev _pretype=$base_nic_type + if [ "$networkmanager_active" = "0" ]; then + create_bridge_interface ifname=$nic_dev _brtype=$nic_dev_type _port=$base_nic_dev _pretype=$base_nic_type + elif [ "$networkmanager_active" = "1" ]; then + create_bridge_interface_nmcli ifname=$nic_dev _brtype=$nic_dev_type _port=$base_nic_dev _pretype=$base_nic_type + fi fi #configure vlan elif [ x"$nic_dev_type" = "xvlan" ]; then @@ -570,11 +574,18 @@ function configure_nicdevice { vlanid=`echo "$nic_dev" | $sed -e 's/^\(.*\)vla\?n\?\([0-9]\+\)$/\2/'` vlanname=`echo "$nic_dev" | $sed -e 's/^\(.*\)vla\?n\?\([0-9]\+\)$/\1/'` fi - create_vlan_interface ifname=$vlanname vlanid=$vlanid - + if [ "$networkmanager_active" = "0" ]; then + create_vlan_interface ifname=$vlanname vlanid=$vlanid + elif [ "$networkmanager_active" = "1" ]; then + create_vlan_interface_nmcli ifname=$vlanname vlanid=$vlanid + fi #configure bond elif [ x"$nic_dev_type" = "xbond" ]; then - create_bond_interface ifname=$nic_dev slave_ports=$base_nic_for_bond slave_type=$base_nic_type + if [ "$networkmanager_active" = "0" ]; then + create_bond_interface ifname=$nic_dev slave_ports=$base_nic_for_bond slave_type=$base_nic_type + elif [ "$networkmanager_active" = "1" ]; then + create_bond_interface_nmcli ifname=$nic_dev slave_ports=$base_nic_for_bond slave_type=$base_nic_type + fi elif [ x"$nic_dev_type" = "xinfiniband" ] || [ x"$nic_dev_type" = "xOmnipath" ]; then log_info "Call configib for IB nics: $nic_dev, ports: $num_iba_ports" log_info "NIC_IBNICS=$nic_dev NIC_IBAPORTS=$num_iba_ports configib" @@ -593,26 +604,6 @@ function configure_nicdevice { return $errorcode } -############################################################################ -# -# disable NetworkManager and start network -# -########################################################################### -function enable_network_service { - - checkservicestatus NetworkManager > /dev/null - if [ $? -eq 0 ]; then - log_info "NetworkManager is active. start to stop it ..." - stopservice NetworkManager | log_lines info - disableservice NetworkManager - enableservice network - startservice network - else - log_info "NetworkManager is inactive." - fi - -} - ############################################################################ # # Main process @@ -644,6 +635,17 @@ if [ $boot_install_nic -eq 1 ];then fi fi +#check if using NetworkManager or network service +networkmanager_active=2 +check_NetworkManager_or_network_service +if [ $? -eq 0 ]; then + networkmanager_active=0 +elif [ $? -eq 1 ]; then + networkmanager_active=1 +else + exit 1 +fi + #replace | with "@", for example, eth1|eth2 ----> eth1@eth2 nicdevice=`echo "$NICDEVICES" | sed 's/|/@/g'` @@ -695,8 +697,6 @@ if [ -n "$valid_sorted_nicdevice_list" ]; then log_info "All valid nics and device list:" echo "$valid_sorted_nicdevice_list" |log_lines info fi -#enable network service -enable_network_service #config nics and ifcfg files configure_nicdevice "$valid_sorted_nicdevice_list" diff --git a/xCAT/postscripts/nicutils.sh b/xCAT/postscripts/nicutils.sh index 74e6131ce..63ecd021d 100755 --- a/xCAT/postscripts/nicutils.sh +++ b/xCAT/postscripts/nicutils.sh @@ -743,6 +743,17 @@ function check_brctl() { fi } +############################################################################### +# +# check and set device managed +# input: ifname +# output: 0 managed +# 1 umanaged +# +############################################################################### +function check_and_set_device_managed() { + ifname=$1 +} ############################################################################### # @@ -1548,3 +1559,78 @@ function decode_arguments { return $rc } +############################################################################### +# +# check NetworkManager +# output: 2 error +# 1 using NetworkManager +# 0 using network +# +############################################################################## +function check_NetworkManager_or_network_service() { + + #check NetworkManager is active + checkservicestatus NetworkManager > /dev/null 2>/dev/null + if [ $? -eq 0 ]; then + log_info "NetworkManager is active" + #check nmcli is installed + type $nmcli >/dev/null 2>/dev/null + if [ $? -ne 0 ]; then + log_error "There is no nmcli" + fi + stopservice network + stopservice networking + return 1 + else + checkservicestatus network > /dev/null 2>/dev/null + if [ $? -eq 0 ]; then + log_info "network service is active" + return 0 + fi + checkservicestatus networking > /dev/null 2>/dev/null + if [ $? -eq 0 ]; then + log_info "networking service is active" + return 0 + fi + log_error "NetworkManager, network.service and networking service are not active" + return 2 + + fi +} + +############################################################################### +# +# create vlan using nmcli +# +# input : ifname= slave_ports= xcatnet= _ipaddr= _netmask= _mtu= _bridge= vlanid= +# return : 0 success +# +############################################################################### +function create_vlan_interface_nmcli { + log_info "create_vlan_interface_nmcli $@" +} + +############################################################################### +# +# create bridge +# +# input : ifname= xcatnet= _ipaddr= _netmask= _port= _pretype= _brtype= _mtu= _bridge= +# +############################################################################### +function create_bridge_interface_nmcli { + log_info "create_bridge_interface_nmcli $@" + +} + +############################################################################################################################# +# +# create bond or bond->vlan interface +# https://www.kernel.org/doc/Documentation/networking/bonding.txt +# https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Using_Channel_Bonding.html +# +# input : ifname= xcatnet= _ipaddr= _netmask= _bonding_opts= _mtu= slave_ports= +# +############################################################################################################################ +function create_bond_interface_nmcli { + log_info "create_bond_interface $@" +} From c9c7227374d927388a9c24cefdb857d6cae89f25 Mon Sep 17 00:00:00 2001 From: bybai Date: Tue, 12 Mar 2019 23:35:12 -0400 Subject: [PATCH 2/2] enhance if there is no nmcli, should check network or networking service --- xCAT/postscripts/nicutils.sh | 40 ++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/xCAT/postscripts/nicutils.sh b/xCAT/postscripts/nicutils.sh index 63ecd021d..bc6dc1b47 100755 --- a/xCAT/postscripts/nicutils.sh +++ b/xCAT/postscripts/nicutils.sh @@ -1568,7 +1568,6 @@ function decode_arguments { # ############################################################################## function check_NetworkManager_or_network_service() { - #check NetworkManager is active checkservicestatus NetworkManager > /dev/null 2>/dev/null if [ $? -eq 0 ]; then @@ -1577,25 +1576,30 @@ function check_NetworkManager_or_network_service() { type $nmcli >/dev/null 2>/dev/null 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 - stopservice network - stopservice networking - return 1 - else - checkservicestatus network > /dev/null 2>/dev/null - if [ $? -eq 0 ]; then - log_info "network service is active" - return 0 - fi - checkservicestatus networking > /dev/null 2>/dev/null - if [ $? -eq 0 ]; then - log_info "networking service is active" - return 0 - fi - log_error "NetworkManager, network.service and networking service are not active" - return 2 - fi + checkservicestatus network > /dev/null 2>/dev/null + if [ $? -eq 0 ]; then + stopservice NetworkManager | log_lines info + disableservice NetworkManager | log_lines info + log_info "network service is active" + return 0 + fi + checkservicestatus networking > /dev/null 2>/dev/null + if [ $? -eq 0 ]; then + stopservice NetworkManager | log_lines info + disableservice NetworkManager | log_lines info + log_info "networking service is active" + return 0 + fi + log_error "NetworkManager, network.service and networking service are not active" + return 2 } ###############################################################################