Merge branch '2.8' of ssh://git.code.sf.net/p/xcat/xcat-core into 2.8
This commit is contained in:
commit
2878c63455
@ -3542,6 +3542,98 @@ sub gettimezone
|
||||
|
||||
}
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
=head3 specialservicemgr
|
||||
some special services cannot be processed in sysVinit, upstart and systemd framework, should be process here...
|
||||
Arguments:
|
||||
service name:
|
||||
action: start/stop/restart/status/enable/disable
|
||||
outputoption:
|
||||
1: return a hashref with the keys:"retcode","retmsg"
|
||||
otherwise: return retcode only
|
||||
Returns:
|
||||
|
||||
a hashref if $outputoption is 1,the hash structure is:
|
||||
{"retcode"=>(status code, 0 for running/active,1 for stopped/inactive,2 for failed)
|
||||
"retmsg" =>(status string, running/active/stopped/inactive/failed)
|
||||
}
|
||||
the status code otherwise
|
||||
|
||||
retcode: 127 if the service specified is not processed
|
||||
the exit code of the service operation if the service specified is processed
|
||||
|
||||
Globals:
|
||||
none
|
||||
Error:
|
||||
none
|
||||
Example:
|
||||
my $ret=xCAT::Utils->specialservicemgr("firewall","start");
|
||||
Comments:
|
||||
none
|
||||
=cut
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
sub specialservicemgr{
|
||||
my $svcname=shift;
|
||||
my $action=shift;
|
||||
my $outputoption=shift;
|
||||
my %ret;
|
||||
|
||||
$ret{retcode}=127;
|
||||
if($svcname eq "firewall")
|
||||
{
|
||||
|
||||
my $cmd="type -P SuSEfirewall2 >/dev/null 2>&1";
|
||||
xCAT::Utils->runcmd($cmd,-1);
|
||||
if($::RUNCMD_RC)
|
||||
{
|
||||
$ret{retcode}=127;
|
||||
if(defined $outputoption and $outputoption == 1){
|
||||
return \%ret;
|
||||
}else{
|
||||
return $ret{retcode};
|
||||
}
|
||||
}else{
|
||||
if(($action eq "start") || ($action eq "stop"))
|
||||
{
|
||||
$cmd="SuSEfirewall2 $action";
|
||||
}elsif($action eq "restart"){
|
||||
$cmd="SuSEfirewall2 stop;SuSEfirewall2 start";
|
||||
}elsif($action eq "disable"){
|
||||
$cmd="SuSEfirewall2 off";
|
||||
}elsif($action eq "enable"){
|
||||
$cmd="SuSEfirewall2 on";
|
||||
}elsif($action eq "status"){
|
||||
$cmd="service SuSEfirewall2_setup status";
|
||||
}else{
|
||||
|
||||
$ret{retcode}=127;
|
||||
if(defined $outputoption and $outputoption == 1){
|
||||
return \%ret;
|
||||
}else{
|
||||
return $ret{retcode};
|
||||
}
|
||||
}
|
||||
|
||||
$ret{retmsg}=xCAT::Utils->runcmd($cmd,-1);
|
||||
$ret{retcode}= $::RUNCMD_RC;
|
||||
if(defined $outputoption and $outputoption == 1){
|
||||
return \%ret;
|
||||
}else{
|
||||
return $ret{retcode};
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(defined $outputoption and $outputoption == 1){
|
||||
return \%ret;
|
||||
}else{
|
||||
return $ret{retcode};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
@ -3594,7 +3686,7 @@ sub servicemap{
|
||||
"nfs" => ["nfsserver","nfs-server","nfs","nfs-kernel-server"],
|
||||
"named" => ["named","bind9"],
|
||||
"syslog" => ["syslog","syslogd","rsyslog"],
|
||||
"firewall" => ["iptables","firewalld","SuSEfirewall2_setup","ufw"],
|
||||
"firewall" => ["iptables","firewalld","ufw"],
|
||||
"http" => ["apache2","httpd"],
|
||||
"ntpserver" =>["ntpd","ntp"],
|
||||
"mysql" => ["mysqld","mysql"],
|
||||
@ -3661,6 +3753,13 @@ sub startservice{
|
||||
$svcname=shift;
|
||||
}
|
||||
|
||||
my $retval=0;
|
||||
$retval=specialservicemgr($svcname,"start");
|
||||
if($retval != 127)
|
||||
{
|
||||
return $retval;
|
||||
}
|
||||
|
||||
my $cmd="";
|
||||
#for Systemd
|
||||
my $svcunit=undef;
|
||||
@ -3725,6 +3824,16 @@ sub stopservice{
|
||||
$svcname=shift;
|
||||
}
|
||||
|
||||
|
||||
my $retval=0;
|
||||
$retval=specialservicemgr($svcname,"stop");
|
||||
if($retval != 127)
|
||||
{
|
||||
return $retval;
|
||||
}
|
||||
|
||||
|
||||
|
||||
my $cmd="";
|
||||
my $svcunit=undef;
|
||||
my $svcd=undef;
|
||||
@ -3787,6 +3896,14 @@ sub restartservice{
|
||||
$svcname=shift;
|
||||
}
|
||||
|
||||
|
||||
my $retval=0;
|
||||
$retval=specialservicemgr($svcname,"restart");
|
||||
if($retval != 127)
|
||||
{
|
||||
return $retval;
|
||||
}
|
||||
|
||||
my $cmd="";
|
||||
my $svcunit=undef;
|
||||
my $svcd=undef;
|
||||
@ -3857,6 +3974,18 @@ sub checkservicestatus{
|
||||
|
||||
my $outputoption=shift;
|
||||
|
||||
my $retval;
|
||||
$retval=specialservicemgr($svcname,"status",1);
|
||||
if($retval->{retcode} != 127)
|
||||
{
|
||||
if(defined $outputoption and $outputoption == 1 ){
|
||||
return $retval;
|
||||
}elsif(exists $retval->{retcode}){
|
||||
return $retval->{retcode};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
my $cmd="";
|
||||
my $svcunit=undef;
|
||||
my $svcd=undef;
|
||||
@ -3950,6 +4079,16 @@ sub enableservice{
|
||||
$svcname=shift;
|
||||
|
||||
}
|
||||
|
||||
my $retval=0;
|
||||
$retval=specialservicemgr($svcname,"enable");
|
||||
if($retval != 127)
|
||||
{
|
||||
return $retval;
|
||||
}
|
||||
|
||||
|
||||
|
||||
my $cmd="";
|
||||
my $svcunit=undef;
|
||||
my $svcd=undef;
|
||||
@ -4016,6 +4155,17 @@ sub disableservice{
|
||||
$svcname=shift;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
my $retval=0;
|
||||
$retval=specialservicemgr($svcname,"disable");
|
||||
if($retval != 127)
|
||||
{
|
||||
return $retval;
|
||||
}
|
||||
|
||||
|
||||
my $cmd="";
|
||||
my $svcunit=undef;
|
||||
my $svcjob=undef;
|
||||
|
@ -491,6 +491,16 @@ Usage:
|
||||
return;
|
||||
}
|
||||
|
||||
# Get no mac address nodes when user only defined CEC in NIF for 7R2 support.
|
||||
my @nomacnodes = ();
|
||||
foreach my $nomacnode(@nodelist){
|
||||
if(defined($hostinfo_dict{$nomacnode}{'cec'}) &&
|
||||
not (defined($hostinfo_dict{$nomacnode}{'mac'})) &&
|
||||
not (defined($hostinfo_dict{$nomacnode}{'switch'}))){
|
||||
push @nomacnodes, $nomacnode;
|
||||
}
|
||||
}
|
||||
|
||||
# Create the full hostinfo dict.
|
||||
xCAT::MsgUtils->message('S', "Generating new hostinfo string.");
|
||||
my ($retcode_gen, $retstr_gen) = gen_new_hostinfo_dict(\%hostinfo_dict);
|
||||
@ -535,6 +545,75 @@ Usage:
|
||||
}
|
||||
}
|
||||
|
||||
# Use xcat command: getmacs <noderanges> -D to automatically get node mac address
|
||||
# If some of nodes can not get mac address, then finally remove them with warning msg.
|
||||
if(@nomacnodes){
|
||||
# Sleep 10 seconds to ensure the basic node attributes are effected
|
||||
sleep 10;
|
||||
$retref = xCAT::Utils->runxcmd({command=>["getmacs"], node=>\@nomacnodes, arg=>['-D']}, $request_command, 0, 2);
|
||||
$retstrref = parse_runxcmd_ret($retref);
|
||||
if($::RUNCMD_RC != 0){
|
||||
$warnstr .= "Warning: Can not discover MAC address by getmacs command for some node(s).";
|
||||
}
|
||||
|
||||
# Parse the output of "getmacs <noderange> -D" to filter success and failed nodes.
|
||||
my @successnodes = ();
|
||||
my @failednodes = ();
|
||||
my $nodelistref = $retref->{'node'};
|
||||
my $index = 0;
|
||||
my $name = '';
|
||||
my $contents = '';
|
||||
if($nodelistref){
|
||||
foreach(@$nodelistref){
|
||||
# Get node name.
|
||||
if($nodelistref->[$index]->{'name'}){
|
||||
$name = $nodelistref->[$index]->{'name'}->[0];
|
||||
}
|
||||
# Get node data contents.
|
||||
if($nodelistref->[$index]->{'data'}->[0]->{'contents'}){
|
||||
$contents = $nodelistref->[$index]->{'data'}->[0]->{'contents'}->[0];
|
||||
}
|
||||
# Get success and failed nodes list.
|
||||
if(defined($name) and $contents =~ /[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}/){
|
||||
push @successnodes, $name;
|
||||
}else{
|
||||
push @failednodes, $name;
|
||||
}
|
||||
$index++;
|
||||
}
|
||||
}
|
||||
|
||||
# Reconfigure the nodes that MAC address discovered by getmacs command
|
||||
if(@successnodes){
|
||||
$mac_addr_mode = 1;
|
||||
my $retref = xCAT::Utils->runxcmd({command=>["kitnodeadd"], node=>\@successnodes, sequential=>[1], macflag=>[$mac_addr_mode]}, $request_command, 0, 2);
|
||||
my $retstrref = parse_runxcmd_ret($retref);
|
||||
if ($::RUNCMD_RC != 0){
|
||||
$warnstr .= "Warning: failed to run command kitnodeadd.";
|
||||
if ($retstrref->[1]) {
|
||||
$warnstr .= "Details: $retstrref->[1]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Remove these nodes that can not get mac address by xcat command: getmacs <noderange> -D.
|
||||
if(@failednodes){
|
||||
my $nodermretref = xCAT::Utils->runxcmd({command=>["noderm"], node=>\@failednodes}, $request_command, 0, 2);
|
||||
my $nodermretstrref = parse_runxcmd_ret($nodermretref);
|
||||
if($::RUNCMD_RC != 0){
|
||||
$warnstr .= "Warning: Cannot remove some of nodes that not MAC address discovered by getmacs command.";
|
||||
if($nodermretstrref->[1]){
|
||||
$warnstr .= "Details: $nodermretstrref->[1]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Push the success nodes to nodelist and remove the failed nodes from nodelist.
|
||||
@nodelist = xCAT::CFMUtils->arrayops("U", \@nodelist, \@successnodes);
|
||||
@failednodes = xCAT::CFMUtils->arrayops("I", \@nodelist, \@failednodes);
|
||||
@nodelist = xCAT::CFMUtils->arrayops("D", \@nodelist, \@failednodes);
|
||||
}
|
||||
|
||||
setrsp_progress("Imported nodes.");
|
||||
#TODO: get the real nodelist here.
|
||||
setrsp_success(\@nodelist, $warnstr);
|
||||
@ -2198,11 +2277,12 @@ sub validate_node_entry{
|
||||
if (exists $allhostnames{$node_name}) {
|
||||
$errmsg .= "Node name $node_name already exists. You must use a new node name.\n";
|
||||
}
|
||||
# Must specify either MAC or switch + port.
|
||||
# Must specify either MAC, CEC or switch + port.
|
||||
if (exists $node_entry{"mac"} ||
|
||||
exists $node_entry{"switches"} ){
|
||||
exists $node_entry{"switch"} && exists $node_entry{"switchport"} ||
|
||||
exists $node_entry{"cec"}){
|
||||
} else{
|
||||
$errmsg .= "MAC address or switches is not specified. You must specify the MAC address or switches.\n";
|
||||
$errmsg .= "MAC address, cec, switch and port is not specified. You must specify the MAC address, CEC name or switch and port.\n";
|
||||
}
|
||||
|
||||
if (! xCAT::NetworkUtils->isValidHostname($node_name)){
|
||||
|
@ -141,16 +141,14 @@ elsif (-f "/etc/SuSE-release")
|
||||
# restart firewall
|
||||
#my $cmd = "service SuSEfirewall2_setup restart";
|
||||
#system($cmd);
|
||||
xCAT::Utils->restartservice("SuSEfirewall2_setup");
|
||||
xCAT::Utils->restartservice("firewall");
|
||||
|
||||
# SuSEfirewall2_setup should be stared on reboot
|
||||
#$cmd = "chkconfig SuSEfirewall2_init on";
|
||||
#system($cmd);
|
||||
#$cmd = "chkconfig SuSEfirewall2_setup on";
|
||||
#system($cmd);
|
||||
xCAT::Utils->enableservice("SuSEfirewall2_init");
|
||||
xCAT::Utils->enableservice("SuSEfirewall2_setup");
|
||||
|
||||
xCAT::Utils->enableservice("firewall");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
5
xCAT/postscripts/disableconsistentNICrename
Executable file
5
xCAT/postscripts/disableconsistentNICrename
Executable file
@ -0,0 +1,5 @@
|
||||
#/bin/sh
|
||||
#modify the grub.cfg to prevent nic consistent network renameing
|
||||
grep -E -q "net.ifnames=0" /etc/sysconfig/grub || sed -i '/^GRUB_CMDLINE_LINUX=.*/{s/"$/ net.ifnames=0"/}' /etc/sysconfig/grub
|
||||
grep -E -q "net.ifnames=0" /etc/default/grub || sed -i '/^GRUB_CMDLINE_LINUX=.*/{s/"$/ net.ifnames=0"/}' /etc/default/grub
|
||||
grub2-mkconfig -o /boot/grub2/grub.cfg
|
@ -42,7 +42,7 @@ fi
|
||||
str_server_ip=`echo $str_server_ip | sed "s/'//g"`
|
||||
#call system imager command to update the image
|
||||
echo "si_updateclient --server $str_server_ip --yes"
|
||||
export PERL5LIB=/usr/lib/perl5/site_perl/;LANG=C si_updateclient --server $str_server_ip --yes
|
||||
export PERL5LIB=/usr/lib/perl5/site_perl/;LANG=C si_updateclient --server $str_server_ip --yes --no-bootloader
|
||||
|
||||
if [[ -f /sbin/dracut ]]; then
|
||||
#redhat or centos
|
||||
|
@ -286,7 +286,7 @@ function servicemap {
|
||||
|
||||
INIT_syslog="syslog syslogd rsyslog";
|
||||
|
||||
INIT_firewall="iptables firewalld SuSEfirewall2_setup ufw";
|
||||
INIT_firewall="iptables firewalld ufw";
|
||||
|
||||
INIT_http="apache2 httpd";
|
||||
|
||||
@ -328,8 +328,58 @@ function servicemap {
|
||||
|
||||
}
|
||||
|
||||
#some special services cannot be processed in sysVinit, upstart and systemd framework, should be process here...
|
||||
#Notice:
|
||||
# return value:
|
||||
# 127 : if the service $svcname cannot be processed in this function
|
||||
# otherwise: the return value of the service action
|
||||
|
||||
function specialservicemgr {
|
||||
local svcname=$1
|
||||
local action=$2
|
||||
|
||||
if [ "$svcname" = "firewall" ];then
|
||||
type -P SuSEfirewall2 >/dev/null 2>&1
|
||||
if [ "$?" = "0" ] ;then
|
||||
case "$action" in
|
||||
"start"|"stop")
|
||||
SuSEfirewall2 $action
|
||||
;;
|
||||
"restart")
|
||||
SuSEfirewall2 stop
|
||||
SuSEfirewall2 start
|
||||
;;
|
||||
"disable")
|
||||
SuSEfirewall2 off
|
||||
;;
|
||||
"enable")
|
||||
SuSEfirewall2 on
|
||||
;;
|
||||
"status")
|
||||
service SuSEfirewall2_setup status
|
||||
;;
|
||||
*)
|
||||
return 127
|
||||
;;
|
||||
esac
|
||||
return $?
|
||||
fi
|
||||
fi
|
||||
|
||||
return 127
|
||||
}
|
||||
|
||||
function startservice {
|
||||
local svcname=$1
|
||||
|
||||
local retval
|
||||
specialservicemgr "$svcname" start
|
||||
retval=$?
|
||||
if [ "$retval" != "127" ]; then
|
||||
return $retval
|
||||
fi
|
||||
|
||||
|
||||
local cmd=
|
||||
local svcunit=`servicemap $svcname 1`
|
||||
local svcjob=`servicemap $svcname 2`
|
||||
@ -354,6 +404,14 @@ function startservice {
|
||||
|
||||
function stopservice {
|
||||
local svcname=$1
|
||||
|
||||
local retval
|
||||
specialservicemgr "$svcname" stop
|
||||
retval=$?
|
||||
if [ "$retval" != "127" ]; then
|
||||
return $retval
|
||||
fi
|
||||
|
||||
local cmd=
|
||||
local svcunit=`servicemap $svcname 1`
|
||||
local svcjob=`servicemap $svcname 2`
|
||||
@ -384,6 +442,15 @@ function stopservice {
|
||||
|
||||
function restartservice {
|
||||
local svcname=$1
|
||||
|
||||
local retval
|
||||
specialservicemgr "$svcname" restart
|
||||
retval=$?
|
||||
if [ "$retval" != "127" ]; then
|
||||
return $retval
|
||||
fi
|
||||
|
||||
|
||||
local cmd=
|
||||
local svcunit=`servicemap $svcname 1`
|
||||
local svcjob=`servicemap $svcname 2`
|
||||
@ -413,6 +480,14 @@ function restartservice {
|
||||
function checkservicestatus {
|
||||
local svcname=$1
|
||||
|
||||
local retval
|
||||
specialservicemgr "$svcname" status
|
||||
retval=$?
|
||||
if [ "$retval" != "127" ]; then
|
||||
return $retval
|
||||
fi
|
||||
|
||||
|
||||
local svcunit=`servicemap $svcname 1`
|
||||
local svcjob=`servicemap $svcname 2`
|
||||
local svcd=`servicemap $svcname 0`
|
||||
@ -455,6 +530,15 @@ function checkservicestatus {
|
||||
|
||||
function enableservice {
|
||||
local svcname=$1
|
||||
|
||||
local retval
|
||||
specialservicemgr "$svcname" enable
|
||||
retval=$?
|
||||
if [ "$retval" != "127" ]; then
|
||||
return $retval
|
||||
fi
|
||||
|
||||
|
||||
local cmd=
|
||||
local svcunit=`servicemap $svcname 1`
|
||||
local svcjob=`servicemap $svcname 2`
|
||||
@ -486,6 +570,14 @@ function enableservice {
|
||||
|
||||
function disableservice {
|
||||
local svcname=$1
|
||||
|
||||
local retval
|
||||
specialservicemgr "$svcname" disable
|
||||
retval=$?
|
||||
if [ "$retval" != "127" ]; then
|
||||
return $retval
|
||||
fi
|
||||
|
||||
local cmd=
|
||||
local svcunit=`servicemap $svcname 1`
|
||||
local svcjob=`servicemap $svcname 2`
|
||||
@ -493,7 +585,7 @@ function disableservice {
|
||||
|
||||
if [ -n "$svcunit" ];then
|
||||
cmd="systemctl disable $svcunit"
|
||||
elif [ -n "svcjob" ];then
|
||||
elif [ -n "$svcjob" ];then
|
||||
cmd="update-rc.d -f $svcd remove"
|
||||
elif [ -n "$svcd" ];then
|
||||
command -v chkconfig >/dev/null 2>&1
|
||||
|
Loading…
Reference in New Issue
Block a user