From bb6bbbb4e48e642bc2136318fabce5cd5db4f66b Mon Sep 17 00:00:00 2001 From: immarvin Date: Fri, 4 Jul 2014 09:06:56 -0700 Subject: [PATCH] add support for Upstart of ubuntu on service management --- xCAT/postscripts/xcatlib.sh | 67 ++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/xCAT/postscripts/xcatlib.sh b/xCAT/postscripts/xcatlib.sh index 2eb70760b..46d9d3a6f 100644 --- a/xCAT/postscripts/xcatlib.sh +++ b/xCAT/postscripts/xcatlib.sh @@ -274,45 +274,39 @@ function servicemap { local svclistname= INIT_dhcp="dhcp3-server dhcpd isc-dhcp-server"; - SYSTEMD_dhcp="dhcpd.service"; - INIT_nfs="nfsserver nfs nfs-kernel-server"; - SYSTEMD_nfs="nfs-server.service"; + INIT_nfs="nfsserver nfs-server nfs nfs-kernel-server"; INIT_named="named bind9"; - SYSTEMD_named="named.service"; INIT_syslog="syslog syslogd rsyslog"; - SYSTEMD_syslog="rsyslog.service"; - INIT_firewall="iptables firewalld SuSEfirewall2_setup"; - SYSTEMD_firewall="firewalld.service"; + INIT_firewall="iptables firewalld SuSEfirewall2_setup ufw"; INIT_http="apache2 httpd"; - SYSTEMD_http="httpd.service"; INIT_ntpserver="ntpd ntp"; - SYSTEMD_ntpserver="ntpd.service"; INIT_mysql="mysqld mysql"; - SYSTEMD_mysql="mysqld.service"; INIT_ssh="sshd ssh"; - SYSTEMD_ssh="sshd.service"; local path= + local postfix="" local retdefault=$svcname local svcvar=${svcname//[-.]/_} if [ "$svcmgrtype" = "0" ];then - svclistname=INIT_$svcvar path="/etc/init.d/" elif [ "$svcmgrtype" = "1" ];then - svclistname=SYSTEMD_$svcvar retdefault=$svcname.service path="/usr/lib/systemd/system/" + postfix=".service" + elif [ "$svcmgrtype" = "2" ];then + path="/etc/init/" + postfix=".conf" fi - + svclistname=INIT_$svcvar local svclist=$(eval echo \$$svclistname) if [ -z "$svclist" ];then @@ -321,7 +315,7 @@ function servicemap { for name in `echo $svclist` do - if [ -e "$path$name" ];then + if [ -e "$path$name$postfix" ];then echo $name break fi @@ -333,10 +327,13 @@ function startservice { local svcname=$1 local cmd= local svcunit=`servicemap $svcname 1` + local svcjob=`servicemap $svcname 2` local svcd=`servicemap $svcname 0` if [ -n "$svcunit" ];then cmd="systemctl start $svcunit" + elif [ -n "$svcjob" ];then + cmd="initctl start $svcjob"; elif [ -n "$svcd" ];then cmd="service $svcd start"; fi @@ -354,13 +351,23 @@ function stopservice { local svcname=$1 local cmd= local svcunit=`servicemap $svcname 1` + local svcjob=`servicemap $svcname 2` local svcd=`servicemap $svcname 0` if [ -n "$svcunit" ];then cmd="systemctl stop $svcunit" + elif [ -n "$svcjob" ];then + initctl status $svcjob | grep stop + if [ "$?" = "0" ] ; then + return 0 + else + cmd="initctl stop $svcjob" + fi elif [ -n "$svcd" ];then - cmd="service $svcd stop"; + cmd="service $svcd stop" fi + + echo $cmd if [ -z "$cmd" ];then return 127 @@ -374,12 +381,20 @@ function restartservice { local svcname=$1 local cmd= local svcunit=`servicemap $svcname 1` + local svcjob=`servicemap $svcname 2` local svcd=`servicemap $svcname 0` if [ -n "$svcunit" ];then cmd="systemctl restart $svcunit" + elif [ -n "$svcjob" ];then + initctl status $svcjob | grep stop + if [ "$?" = "0" ];then + cmd= "initctl start $svcjob" + else + cmd="initctl restart $svcjob" + fi elif [ -n "$svcd" ];then - cmd="service $svcd restart"; + cmd="service $svcd restart" fi if [ -z "$cmd" ];then @@ -394,6 +409,7 @@ function checkservicestatus { local svcname=$1 local svcunit=`servicemap $svcname 1` + local svcjob=`servicemap $svcname 2` local svcd=`servicemap $svcname 0` local output= @@ -408,6 +424,13 @@ function checkservicestatus { elif echo $output|grep -E -i "^failed$";then retcode=2 fi + elif [ -n "$svcjob" ];then + output=$(initctl status $svcjob) + if echo $output|grep -i "waiting";then + retcode=2 + elif echo $output|grep -i "running";then + retcode=0 + fi elif [ -n "$svcd" ];then output=$(service $svcd status) retcode=$? @@ -420,7 +443,7 @@ function checkservicestatus { else retcode=127 fi - +#echo $svcunit-----$svcd return $retcode } @@ -429,14 +452,17 @@ function enableservice { local svcname=$1 local cmd= local svcunit=`servicemap $svcname 1` + local svcjob=`servicemap $svcname 2` local svcd=`servicemap $svcname 0` if [ -n "$svcunit" ];then cmd="systemctl enable $svcunit" + elif [ -n "$svcjob" ];then + cmd="update-rc.d $svcjob defaults" elif [ -n "$svcd" ];then command -v chkconfig >/dev/null 2>&1 if [ $? -eq 0 ];then - cmd="chkconfig $svcd on"; + cmd="chkconfig $svcd on" else command -v update-rc.d >/dev/null 2>&1 if [ $? -eq 0 ];then @@ -457,10 +483,13 @@ function disableservice { local svcname=$1 local cmd= local svcunit=`servicemap $svcname 1` + local svcjob=`servicemap $svcname 2` local svcd=`servicemap $svcname 0` if [ -n "$svcunit" ];then cmd="systemctl disable $svcunit" + elif [ -n "svcjob" ];then + cmd="update-rc.d -f $svcd remove" elif [ -n "$svcd" ];then command -v chkconfig >/dev/null 2>&1 if [ $? -eq 0 ];then