diff --git a/perl-xCAT/xCAT/Utils.pm b/perl-xCAT/xCAT/Utils.pm
index 4dbaef123..12fb29ff0 100644
--- a/perl-xCAT/xCAT/Utils.pm
+++ b/perl-xCAT/xCAT/Utils.pm
@@ -1850,7 +1850,9 @@ sub get_image_name
Example:
if (xCAT::Utils->startService("named") { ...}
Comments:
- none
+ this subroutine is deprecated,
+ will be used as an internal function to process AIX service,
+ for linux, use xCAT::Utils->startservice instead
=cut
@@ -3557,7 +3559,7 @@ sub servicemap{
# }
my %svchash=(
"dhcp" => {
- 0=>["dhcpd","isc-dhcp-server"],
+ 0=>["dhcp3-server","dhcpd","isc-dhcp-server"],
1=>["dhcpd.service"],
},
"nfs" => {
diff --git a/xCAT-rmc/scripts/monerrorlog b/xCAT-rmc/scripts/monerrorlog
index 54e1d4354..d0908d720 100755
--- a/xCAT-rmc/scripts/monerrorlog
+++ b/xCAT-rmc/scripts/monerrorlog
@@ -10,12 +10,17 @@
checks for errors.
=cut
#------------------------------------------------------------------------------#
-
+BEGIN
+{
+ $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
+}
+use lib "$::XCATROOT/lib/perl";
use strict;
use locale;
use Getopt::Long;
use IPC::SysV qw(IPC_STAT S_IRWXU IPC_PRIVATE IPC_CREAT S_IRUSR S_IWUSR );
use IPC::Msg;
+use xCAT::Utils;
BEGIN
{
@@ -109,8 +114,9 @@ if (&first_time_run)
runcmd("/usr/bin/mkfifo $fifo");
}
runcmd("echo \"$embedinfo\" >> $syslogconf");
- my $cmd = service("syslog", "restart");
- runcmd($cmd);
+ #my $cmd = service("syslog", "restart");
+ #runcmd($cmd);
+ xCAT::Utils->restartservice("syslog");
}
touchFile($runfile);
}
@@ -512,6 +518,9 @@ sub createRandomName
'stop' or 'status'.
Returns:
A full cli for the service script.
+ Comment:
+ this subroutine is deprecated, use service subroutines in xCAT::Utils
+ instead
=cut
#--------------------------------------------------------------------------------
diff --git a/xCAT-server/lib/perl/xCAT/Template.pm b/xCAT-server/lib/perl/xCAT/Template.pm
index a99a2e9f8..b5822e0c3 100644
--- a/xCAT-server/lib/perl/xCAT/Template.pm
+++ b/xCAT-server/lib/perl/xCAT/Template.pm
@@ -154,166 +154,153 @@ sub subvars {
#do *all* includes, recursive and all
my $doneincludes=0;
while (not $doneincludes) {
- $doneincludes=1;
- if ($inc =~ /#INCLUDE_PKGLIST:[^#^\n]+#/) {
- $doneincludes=0;
- $inc =~ s/#INCLUDE_PKGLIST:([^#^\n]+)#/includefile($1, 0, 1)/eg;
- }
- if ($inc =~ /#INCLUDE_PTRNLIST:[^#^\n]+#/) {
- $doneincludes=0;
- $inc =~ s/#INCLUDE_PTRNLIST:([^#^\n]+)#/includefile($1, 0, 2)/eg;
- }
- if ($inc =~ /#INCLUDE_RMPKGLIST:[^#^\n]+#/) {
- $doneincludes=0;
- $inc =~ s/#INCLUDE_RMPKGLIST:([^#^\n]+)#/includefile($1, 0, 3)/eg;
- }
- if ($inc =~ /#INCLUDE:[^#^\n]+#/) {
- $doneincludes=0;
- $inc =~ s/#INCLUDE:([^#^\n]+)#/includefile($1, 0, 0)/eg;
- }
- }
-
- #support multiple paths of osimage in rh/sles diskfull installation
- my @pkgdirs;
- if ( defined($media_dir) ) {
- @pkgdirs = split(",", $media_dir);
- my $source;
- my $source_in_pre;
- my $c = 0;
- foreach my $pkgdir(@pkgdirs) {
- if( $platform =~ /^(rh|SL|centos|fedora)$/ ) {
- if ( $c == 0 ) {
- # After some tests, if we put the repo in pre scripts in the kickstart like for rhels6.x
- # the rhels5.9 will not be installed successfully. So put in kickstart directly.
- $source_in_pre .= "echo 'url --url http://'\$nextserver'/$pkgdir' >> /tmp/repos";
- $source .= "url --url http://#TABLE:noderes:\$NODE:nfsserver#/$pkgdir\n"; #For rhels5.9
- } else {
- $source_in_pre .= "\necho 'repo --name=pkg$c --baseurl=http://'\$nextserver'/$pkgdir' >> /tmp/repos";
- $source .= "repo --name=pkg$c --baseurl=http://#TABLE:noderes:\$NODE:nfsserver#/$pkgdir\n"; #for rhels5.9
+ #support multiple paths of osimage in rh/sles diskfull installation
+ my @pkgdirs;
+ if ( defined($media_dir) ) {
+ @pkgdirs = split(",", $media_dir);
+ my $source;
+ my $source_in_pre;
+ my $c = 0;
+ foreach my $pkgdir(@pkgdirs) {
+ if( $platform =~ /^(rh|SL|centos|fedora)$/ ) {
+ if ( $c == 0 ) {
+ # After some tests, if we put the repo in pre scripts in the kickstart like for rhels6.x
+ # the rhels5.9 will not be installed successfully. So put in kickstart directly.
+ $source_in_pre .= "echo 'url --url http://'\$nextserver'/$pkgdir' >> /tmp/repos";
+ $source .= "url --url http://#TABLE:noderes:\$NODE:nfsserver#/$pkgdir\n"; #For rhels5.9
+ } else {
+ $source_in_pre .= "\necho 'repo --name=pkg$c --baseurl=http://'\$nextserver'/$pkgdir' >> /tmp/repos";
+ $source .= "repo --name=pkg$c --baseurl=http://#TABLE:noderes:\$NODE:nfsserver#/$pkgdir\n"; #for rhels5.9
+ }
+ } elsif ($platform =~ /^(sles|suse)/) {
+ my $http = "http://#TABLE:noderes:\$NODE:nfsserver#$pkgdir";
+ $source .= "
+ $http
+ SuSE-Linux-pkg$c
+ /
+ false
+ SuSE-Linux-pkg$c
+ ";
+ $source_in_pre .="http://'\$nextserver'$pkgdirSuSE-Linux-pkg$c/falseSuSE-Linux-pkg$c";
+ }
+ $c++;
+ }
+
+ $inc =~ s/#INSTALL_SOURCES#/$source/g;
+ $inc =~ s/#INSTALL_SOURCES_IN_PRE#/$source_in_pre/g;
+ }
+
+ #ok, now do everything else..
+ my $shortname = $node;
+ $shortname =~ s/\..*//;
+ $inc =~ s/#TABLE:([^:]+):([^:]+):([^#]+)#/tabdb($1,$2,$3)/eg;
+ $inc =~ s/#TABLEBLANKOKAY:([^:]+):([^:]+):([^#]+)#/tabdb($1,$2,$3,'1')/eg;
+ $inc =~ s/#INCLUDE_NOP:([^#^\n]+)#/includefile($1,1,0)/eg;
+ $inc =~ s/#XCATVAR:([^#]+)#/envvar($1)/eg;
+ $inc =~ s/#ENV:([^#]+)#/envvar($1)/eg;
+ $inc =~ s/#MACHINEPASSWORD#/machinepassword()/eg;
+ $inc =~ s/#CRYPT:([^:]+):([^:]+):([^#]+)#/crydb($1,$2,$3)/eg;
+ $inc =~ s/#COMMAND:([^#]+)#/command($1)/eg;
+ $inc =~ s/#KICKSTARTNET#/kickstartnetwork()/eg;
+ $inc =~ s/#YAST2NET#/yast2network()/eg;
+ $inc =~ s/#ESXIPV6SETUP#/esxipv6setup()/eg;
+ $inc =~ s/#WINTIMEZONE#/xCAT::TZUtils::get_wintimezone()/eg;
+ $inc =~ s/#WINPRODKEY:([^#]+)#/get_win_prodkey($1)/eg;
+ $inc =~ s/#WINNETCFG#/windows_net_cfg()/eg;
+ $inc =~ s/#WINADJOIN#/windows_join_data()/eg;
+ $inc =~ s/#WINDNSCFG#/windows_dns_cfg()/eg;
+ $inc =~ s/#WINACCOUNTDATA#/windows_account_data()/eg;
+ $inc =~ s/#WINDISABLENULLADMIN#/windows_disable_null_admin()/eg;
+ $inc =~ s/#MANAGEDADDRESSMODE#/managed_address_mode()/eg;
+ $inc =~ s/#HOSTNAME#/$node/g;
+ $inc =~ s/#SHORTNAME#/$shortname/g;
+ $inc =~ s/#GETNODEDOMAIN:([^#]+)#/get_node_domain($1)/eg;
+
+ my $nrtab = xCAT::Table->new("noderes");
+ my $tftpserver = $nrtab->getNodeAttribs($node, ['tftpserver']);
+ my $sles_sdk_media = "http://" . $tftpserver->{tftpserver} . $media_dir . "/sdk1";
+
+ $inc =~ s/#SLES_SDK_MEDIA#/$sles_sdk_media/eg;
+
+ #if user specify the partion file, replace the default partition strategy
+ if ($partitionfile){
+ #if the content of the partition file is definition replace the default is ok
+ my $partcontent = '';
+ my $scriptflag = 0;
+
+ if ($partitionfile =~ /^s:(.*)/){
+ $scriptflag = 1;
+ $partitionfile = $1;
+ }
+
+ if (-r $partitionfile){
+ open ($inh, "<", $partitionfile);
+ while (<$inh>){
+ $partcontent .= $_;
+ }
+ close ($inh);
+
+ #the content of the specified file is a script which can write partition definition into /tmp/partitionfile
+ if ($scriptflag){
+ #for redhat/sl/centos/kvm/fedora
+ if ($inc =~ /#XCAT_PARTITION_START#/) {
+ my $tempstr = "%include /tmp/partitionfile\n";
+ $inc =~ s/#XCAT_PARTITION_START#[\s\S]*#XCAT_PARTITION_END#/$tempstr/;
+ #modify the content in the file, and write into %pre part
+ #$partcontent = "cat > /tmp/partscript << EOFEOF\n" . $partcontent . "\nEOFEOF\n";
+ $partcontent = "echo " . "'". $partcontent . "'" . ">/tmp/partscript\n";
+
+ $partcontent .= "chmod 755 /tmp/partscript\n";
+ $partcontent .= "/tmp/partscript\n";
+ #replace the #XCA_PARTITION_SCRIPT#
+ $inc =~ s/#XCA_PARTITION_SCRIPT#/$partcontent/;
+ }
+ #for sles/suse
+ elsif ($inc =~ //){
+ my $tempstr = "XCATPARTITIONTEMP";
+ $inc =~ s/[\s\S]*/$tempstr/;
+ #$partcontent = "cat > /tmp/partscript << EOFEOF\n" . $partcontent . "\nEOFEOF\n";
+ $partcontent = "echo " . "'". $partcontent . "'" . ">/tmp/partscript\n";
+ $partcontent .= "chmod 755 /tmp/partscript\n";
+ $partcontent .= "/tmp/partscript\n";
+ $inc =~ s/#XCA_PARTITION_SCRIPT#/$partcontent/;
+ }
+ }
+ else{
+ $partcontent =~ s/\s$//;
+ if ($inc =~ /#XCAT_PARTITION_START#/){
+ $inc =~ s/#XCAT_PARTITION_START#[\s\S]*#XCAT_PARTITION_END#/$partcontent/;
+ }
+ elsif ($inc =~ //){
+ $inc =~ s/[\s\S]*/$partcontent/;
+ }
}
- } elsif ($platform =~ /^(sles|suse)/) {
- my $http = "http://#TABLE:noderes:\$NODE:nfsserver#$pkgdir";
- $source .= "
- $http
- SuSE-Linux-pkg$c
- /
- false
- SuSE-Linux-pkg$c
- ";
- $source_in_pre .="http://'\$nextserver'$pkgdirSuSE-Linux-pkg$c/falseSuSE-Linux-pkg$c";
}
- $c++;
}
- $inc =~ s/#INSTALL_SOURCES#/$source/g;
- $inc =~ s/#INSTALL_SOURCES_IN_PRE#/$source_in_pre/g;
- }
-
-
-
-
- #Support hierarchical include
- $inc =~ s/#ENV:([^#]+)#/envvar($1)/eg;
- if ($inc =~ /#INCLUDE:[^#^\n]+#/) {
- $inc =~ s/#INCLUDE:([^#^\n]+)#/includefile($1, 0, 0)/eg;
- }
-
- #ok, now do everything else..
- my $shortname = $node;
- $shortname =~ s/\..*//;
- $inc =~ s/#TABLE:([^:]+):([^:]+):([^#]+)#/tabdb($1,$2,$3)/eg;
- $inc =~ s/#TABLEBLANKOKAY:([^:]+):([^:]+):([^#]+)#/tabdb($1,$2,$3,'1')/eg;
- $inc =~ s/#INCLUDE_NOP:([^#^\n]+)#/includefile($1,1,0)/eg;
- $inc =~ s/#INCLUDE_PKGLIST:([^#^\n]+)#/includefile($1,0,1)/eg;
- $inc =~ s/#INCLUDE_PTRNLIST:([^#^\n]+)#/includefile($1,0,2)/eg;
- $inc =~ s/#INCLUDE_RMPKGLIST:([^#^\n]+)#/includefile($1,0,3)/eg;
- $inc =~ s/#INCLUDE:([^#^\n]+)#/includefile($1, 0, 0)/eg;
- $inc =~ s/#XCATVAR:([^#]+)#/envvar($1)/eg;
- $inc =~ s/#ENV:([^#]+)#/envvar($1)/eg;
- $inc =~ s/#MACHINEPASSWORD#/machinepassword()/eg;
- $inc =~ s/#CRYPT:([^:]+):([^:]+):([^#]+)#/crydb($1,$2,$3)/eg;
- $inc =~ s/#COMMAND:([^#]+)#/command($1)/eg;
- $inc =~ s/#KICKSTARTNET#/kickstartnetwork()/eg;
- $inc =~ s/#YAST2NET#/yast2network()/eg;
- $inc =~ s/#ESXIPV6SETUP#/esxipv6setup()/eg;
- $inc =~ s/#WINTIMEZONE#/xCAT::TZUtils::get_wintimezone()/eg;
- $inc =~ s/#WINPRODKEY:([^#]+)#/get_win_prodkey($1)/eg;
- $inc =~ s/#WINNETCFG#/windows_net_cfg()/eg;
- $inc =~ s/#WINADJOIN#/windows_join_data()/eg;
- $inc =~ s/#WINDNSCFG#/windows_dns_cfg()/eg;
- $inc =~ s/#WINACCOUNTDATA#/windows_account_data()/eg;
- $inc =~ s/#WINDISABLENULLADMIN#/windows_disable_null_admin()/eg;
- $inc =~ s/#MANAGEDADDRESSMODE#/managed_address_mode()/eg;
- $inc =~ s/#HOSTNAME#/$node/g;
- $inc =~ s/#SHORTNAME#/$shortname/g;
- $inc =~ s/#GETNODEDOMAIN:([^#]+)#/get_node_domain($1)/eg;
-
- my $nrtab = xCAT::Table->new("noderes");
- my $tftpserver = $nrtab->getNodeAttribs($node, ['tftpserver']);
- my $sles_sdk_media = "http://" . $tftpserver->{tftpserver} . $media_dir . "/sdk1";
-
- $inc =~ s/#SLES_SDK_MEDIA#/$sles_sdk_media/eg;
-
- #if user specify the partion file, replace the default partition strategy
- if ($partitionfile){
- #if the content of the partition file is definition replace the default is ok
- my $partcontent = '';
- my $scriptflag = 0;
-
- if ($partitionfile =~ /^s:(.*)/){
- $scriptflag = 1;
- $partitionfile = $1;
- }
-
- if (-r $partitionfile){
- open ($inh, "<", $partitionfile);
- while (<$inh>){
- $partcontent .= $_;
- }
- close ($inh);
-
- #the content of the specified file is a script which can write partition definition into /tmp/partitionfile
- if ($scriptflag){
- #for redhat/sl/centos/kvm/fedora
- if ($inc =~ /#XCAT_PARTITION_START#/) {
- my $tempstr = "%include /tmp/partitionfile\n";
- $inc =~ s/#XCAT_PARTITION_START#[\s\S]*#XCAT_PARTITION_END#/$tempstr/;
- #modify the content in the file, and write into %pre part
- #$partcontent = "cat > /tmp/partscript << EOFEOF\n" . $partcontent . "\nEOFEOF\n";
- $partcontent = "echo " . "'". $partcontent . "'" . ">/tmp/partscript\n";
-
- $partcontent .= "chmod 755 /tmp/partscript\n";
- $partcontent .= "/tmp/partscript\n";
- #replace the #XCA_PARTITION_SCRIPT#
- $inc =~ s/#XCA_PARTITION_SCRIPT#/$partcontent/;
- }
- #for sles/suse
- elsif ($inc =~ //){
- my $tempstr = "XCATPARTITIONTEMP";
- $inc =~ s/[\s\S]*/$tempstr/;
- #$partcontent = "cat > /tmp/partscript << EOFEOF\n" . $partcontent . "\nEOFEOF\n";
- $partcontent = "echo " . "'". $partcontent . "'" . ">/tmp/partscript\n";
- $partcontent .= "chmod 755 /tmp/partscript\n";
- $partcontent .= "/tmp/partscript\n";
- $inc =~ s/#XCA_PARTITION_SCRIPT#/$partcontent/;
- }
- }
- else{
- $partcontent =~ s/\s$//;
- if ($inc =~ /#XCAT_PARTITION_START#/){
- $inc =~ s/#XCAT_PARTITION_START#[\s\S]*#XCAT_PARTITION_END#/$partcontent/;
- }
- elsif ($inc =~ //){
- $inc =~ s/[\s\S]*/$partcontent/;
- }
- }
- }
+ $doneincludes=1;
+ if ($inc =~ /#INCLUDE_PKGLIST:[^#^\n]+#/) {
+ $doneincludes=0;
+ $inc =~ s/#INCLUDE_PKGLIST:([^#^\n]+)#/includefile($1, 0, 1)/eg;
+ }
+ if ($inc =~ /#INCLUDE_PTRNLIST:[^#^\n]+#/) {
+ $doneincludes=0;
+ $inc =~ s/#INCLUDE_PTRNLIST:([^#^\n]+)#/includefile($1, 0, 2)/eg;
+ }
+ if ($inc =~ /#INCLUDE_RMPKGLIST:[^#^\n]+#/) {
+ $doneincludes=0;
+ $inc =~ s/#INCLUDE_RMPKGLIST:([^#^\n]+)#/includefile($1, 0, 3)/eg;
+ }
+ if ($inc =~ /#INCLUDE:[^#^\n]+#/) {
+ $doneincludes=0;
+ $inc =~ s/#INCLUDE:([^#^\n]+)#/includefile($1, 0, 0)/eg;
+ }
}
if ($tmplerr) {
- close ($outh);
- return $tmplerr;
- }
+ close ($outh);
+ return $tmplerr;
+ }
print $outh $inc;
close($outh);
return 0;
diff --git a/xCAT-server/lib/xcat/monitoring/nagiosmon.pm b/xCAT-server/lib/xcat/monitoring/nagiosmon.pm
index 24ded6ddd..4f0acb8cc 100644
--- a/xCAT-server/lib/xcat/monitoring/nagiosmon.pm
+++ b/xCAT-server/lib/xcat/monitoring/nagiosmon.pm
@@ -66,12 +66,14 @@ sub start {
my $mychildren_cfg="/etc/nagios/objects/mychildren.cfg";
if ($isSN) { #start nagios daemon only when mychildren exists on the sn
if (-f $mychildren_cfg) {
- my $rc=`service nagios restart 2>&1`;
+ #my $rc=`service nagios restart 2>&1`;
+ my $rc=xCAT::Utils->restartservice("nagios");
reportError("$localhostname: $rc", $callback);
}
}
else { #always start nagios daemon on mn
- my $rc=`service nagios restart 2>&1`;
+ #my $rc=`service nagios restart 2>&1`;
+ my $rc=xCAT::Utils->restartservice("nagios");
reportError("$localhostname: $rc", $callback);
}
diff --git a/xCAT-server/lib/xcat/monitoring/rrdutil.pm b/xCAT-server/lib/xcat/monitoring/rrdutil.pm
index 840615203..57c25ddd5 100755
--- a/xCAT-server/lib/xcat/monitoring/rrdutil.pm
+++ b/xCAT-server/lib/xcat/monitoring/rrdutil.pm
@@ -122,7 +122,8 @@ sub start_RRD_server
print FILE "\tserver_args = - /var/rrd\n";
print FILE "}\n";
close FILE;
- xCAT::Utils->runcmd("service xinetd restart", 0);
+ #xCAT::Utils->runcmd("service xinetd restart", 0);
+ xCAT::Utils->restartservice("xinetd");
}
return 0;
}
@@ -188,7 +189,8 @@ sub stop_RRD_server
} else {
xCAT::Utils->runcmd("rm -f /etc/xinetd.d/rrdsrv", 0);
}
- xCAT::Utils->runcmd("service xinetd restart", 0);
+ #xCAT::Utils->runcmd("service xinetd restart", 0);
+ xCAT::Utils->restartservice("xinetd");
}
return 0;
}
diff --git a/xCAT-server/lib/xcat/plugins/AAsn.pm b/xCAT-server/lib/xcat/plugins/AAsn.pm
index f06ded0b0..540e0bdce 100755
--- a/xCAT-server/lib/xcat/plugins/AAsn.pm
+++ b/xCAT-server/lib/xcat/plugins/AAsn.pm
@@ -509,8 +509,13 @@ sub setup_CONS
"conserver cannot be started because the file $ca_file2 cannot be found\n";
}
else
- {
- my $rc = xCAT::Utils->startService("conserver");
+ {
+ if (xCAT::Utils->isAIX()){
+ $rc=xCAT::Utils->startService("conserver");
+ }elsif(xCAT::Utils->isLinux()){
+ #my $rc = xCAT::Utils->startService("conserver");
+ $rc=xCAT::Utils->startservice("conserver");
+ }
if ($rc != 0)
{
return 1;
@@ -537,9 +542,11 @@ sub setup_DHCP
my $snonly = 0;
# if on the MN check to see if dhcpd is running, and start it if not.
if (xCAT::Utils->isMN()) { # on the MN
- my @output = xCAT::Utils->runcmd("service dhcpd status", -1);
- if ($::RUNCMD_RC != 0) { # not running
- $rc = xCAT::Utils->startService("dhcpd");
+ #my @output = xCAT::Utils->runcmd("service dhcpd status", -1);
+ #if ($::RUNCMD_RC != 0) { # not running
+ my $retcode= xCAT::Utils->checkservicestatus("dhcpd");
+ if($retcode!=0){
+ $rc = xCAT::Utils->startservice("dhcpd");
if ($rc != 0)
{
return 1;
@@ -573,12 +580,18 @@ sub setup_DHCP
->($cmdref, \&xCAT::Client::handle_response);
my $distro = xCAT::Utils->osver();
- my $serv = "dhcpd";
- if ( $distro =~ /ubuntu.*/i || $distro =~ /debian.*/i ){
- $serv = "isc-dhcp-server";
- }
+ #my $serv = "dhcpd";
+ #if ( $distro =~ /ubuntu.*/i || $distro =~ /debian.*/i ){
+ # $serv = "isc-dhcp-server";
+ #}
- my $rc = xCAT::Utils->startService($serv);
+ #my $rc = xCAT::Utils->startService($serv);
+ my $rc=0;
+ if(xCAT::Utils->isAIX()){
+ $rc = xCAT::Utils->startService("dhcpd");
+ } elsif(xCAT::Utils->isLinux()){
+ $rc = xCAT::Utils->startservice("dhcp");
+ }
if ($rc != 0)
{
return 1;
@@ -672,7 +685,13 @@ sub setup_FTP
# start ftp
- my $rc = xCAT::Utils->startService("vsftpd");
+ #my $rc = xCAT::Utils->startService("vsftpd");
+ my $rc = 0;
+ if(xCAT::Utils->isAIX()){
+ $rc = xCAT::Utils->startService("vsftpd");
+ }elsif(xCAT::Utils->isLinux()){
+ $rc = xCAT::Utils->startservice("vsftpd");
+ }
if ($rc != 0)
{
return 1;
@@ -723,12 +742,19 @@ sub setup_DNS
# turn DNS on
my $distro = xCAT::Utils->osver();
- my $serv = "named";
- if ( $distro =~ /ubuntu.*/i || $distro =~ /debian.*/i ){
- $serv = "bind9";
+ #my $serv = "named";
+ #if ( $distro =~ /ubuntu.*/i || $distro =~ /debian.*/i ){
+ # $serv = "bind9";
+ #}
+
+ #my $rc = xCAT::Utils->startService($serv);
+ my $rc = 0;
+ if(xCAT::Utils->isAIX()){
+ $rc = xCAT::Utils->startService("named");
+ }elsif(xCAT::Utils->isLinux()){
+ $rc=xCAT::Utils->startservice("named");
}
- my $rc = xCAT::Utils->startService($serv);
if ($rc != 0)
{
return 1;
@@ -751,15 +777,17 @@ sub setup_DNS
else
{
#chkconfig
- my $cmd = "/sbin/chkconfig $serv on";
- my $outref = xCAT::Utils->runcmd("$cmd", 0);
- if ($::RUNCMD_RC != 0)
+ #my $cmd = "/sbin/chkconfig $serv on";
+ #my $outref = xCAT::Utils->runcmd("$cmd", 0);
+ #if ($::RUNCMD_RC != 0)
+ my $retcode=xCAT::Utils->enableservice("named");
+ if($retcode!=0)
{
- xCAT::MsgUtils->message("SE", " Error: Could not enable $serv.");
+ xCAT::MsgUtils->message("SE", " Error: Could not enable dns server.");
}
else
{
- xCAT::MsgUtils->message("SI", " $serv has been enabled on boot.");
+ xCAT::MsgUtils->message("SI", " dns server has been enabled on boot.");
}
}
@@ -778,7 +806,14 @@ sub setup_DNS
sub setup_LDAP
{
- my $rc = xCAT::Utils->startService("ldap");
+ #my $rc = xCAT::Utils->startService("ldap");
+ my $rc = 0;
+
+ if(xCAT::Utils->isAIX()){
+ $rc = xCAT::Utils->startService("ldap");
+ }elsif(xCAT::Utils->isLinux()){
+ $rc=xCAT::Utils->startservice("ldap");
+ }
if ($rc != 0)
{
return 1;
@@ -805,16 +840,17 @@ sub setup_NFS
my $rc = 0;
if (xCAT::Utils->isLinux())
{
- my $os = xCAT::Utils->osver();
- if ($os =~ /sles.*/)
- {
- $rc = xCAT::Utils->startService("nfs");
- $rc = xCAT::Utils->startService("nfsserver");
- }
- else
- {
- $rc = xCAT::Utils->startService("nfs");
- }
+ #my $os = xCAT::Utils->osver();
+ #if ($os =~ /sles.*/)
+ #{
+ # $rc = xCAT::Utils->startService("nfs");
+ # $rc = xCAT::Utils->startService("nfsserver");
+ #}
+ #else
+ #{
+ # $rc = xCAT::Utils->startService("nfs");
+ #}
+ $rc = xCAT::Utils->startservice("nfs");
}
else
{ #AIX
@@ -944,7 +980,14 @@ sub setup_NTPmn
sub start_NTP
{
- my $rc = xCAT::Utils->startService("ntpd");
+ my $rc =0;
+ if (xCAT::Utils->isAIX()){
+ $rc=xCAT::Utils->startService("ntpd");
+ }elsif(xCAT::Utils->isLinux()){
+ #my $rc = xCAT::Utils->startService("conserver");
+ $rc=xCAT::Utils->startservice("ntpd");
+ }
+
if ($rc != 0)
{
return 1;
@@ -1271,15 +1314,16 @@ sub setup_HTTP
if (xCAT::Utils->isLinux())
{
- my $os = xCAT::Utils->osver();
- if ($os =~ /sles.*/)
- {
- $rc = xCAT::Utils->startService("apache2");
- }
- else
- {
- $rc = xCAT::Utils->startService("httpd");
- }
+ #my $os = xCAT::Utils->osver();
+ #if ($os =~ /sles.*/)
+ #{
+ # $rc = xCAT::Utils->startService("apache2");
+ #}
+ #else
+ #{
+ # $rc = xCAT::Utils->startService("httpd");
+ #}
+ $rc=xCAT::Utils->startservice("http");
}
return $rc;
}
@@ -1385,24 +1429,33 @@ sub enable_TFTPhpa
}
print FILE @newcfgfile;
close (FILE);
- my @output = xCAT::Utils->runcmd("service xinetd status", -1);
- if ($::RUNCMD_RC == 0) {
- if (grep(/running/, @output))
- {
- print ' '; # indent service output to separate it from the xcatd service output
- system "service xinetd stop";
- if ($? > 0)
- { # error
+ #my @output = xCAT::Utils->runcmd("service xinetd status", -1);
+ #if ($::RUNCMD_RC == 0) {}
+ my $retcode=xCAT::Utils->checkservicestatus("xinetd");
+ if($retcode==0){
+ my $retcode=xCAT::Utils->restartservice("xinetd");
+ if($retcode !=0 )
+ {
xCAT::MsgUtils->message("S",
- "Error on command: service xinetd stop\n");
+ "Error on restart xinetd\n");
+
}
- system "service xinetd start";
- if ($? > 0)
- { # error
- xCAT::MsgUtils->message("S",
- "Error on command: service xinetd start\n");
- }
- }
+ #if (grep(/running/, @output))
+ #{
+ # print ' '; # indent service output to separate it from the xcatd service output
+ # system "service xinetd stop";
+ # if ($? > 0)
+ # { # error
+ # xCAT::MsgUtils->message("S",
+ # "Error on command: service xinetd stop\n");
+ # }
+ # system "service xinetd start";
+ # if ($? > 0)
+ # { # error
+ # xCAT::MsgUtils->message("S",
+ # "Error on command: service xinetd start\n");
+ # }
+ #}
}
}
}
@@ -1449,7 +1502,8 @@ sub enable_TFTPhpa
sleep 1;
my @checkproc=`ps axf|grep -v grep|grep in.tftpd`;
if (@checkproc){
- system("service tftpd-hpa stop");
+ #system("service tftpd-hpa stop");
+ xCAT::Utils->stopservice("tftpd-hpa");
}
}
my @tftpprocs=`ps axf|grep -v grep|grep in.tftpd`;
diff --git a/xCAT-server/lib/xcat/plugins/anaconda.pm b/xCAT-server/lib/xcat/plugins/anaconda.pm
index 7ac9f7c61..96fb59291 100644
--- a/xCAT-server/lib/xcat/plugins/anaconda.pm
+++ b/xCAT-server/lib/xcat/plugins/anaconda.pm
@@ -1978,20 +1978,51 @@ sub mksysclone
}
my $cmd =qq{echo "$node:compute:$imagename:" >> $clusterfile};
- my $out = xCAT::Utils->runcmd($cmd, -1);
+ my $rc = xCAT::Utils->runcmd($cmd, -1);
+
+ my $imagedir;
+ my $osimagetab = xCAT::Table->new('linuximage');
+ my $osimageentry = $osimagetab->getAttribs({imagename => $imagename}, 'rootimgdir');
+ if($osimageentry){
+ $imagedir = $osimageentry->{rootimgdir};
+ $imagedir =~ s/^(\/.*)\/.+\/?$/$1/;
+ }else{
+ $imagedir = "$installroot/sysclone/images";
+ $cmd = "chdef -t osimage $imagename rootimgdir=$imagedir/$imagename";
+ $rc = `$cmd`;
+ }
+
+ my $cfgimagedir = `cat /etc/systemimager/rsync_stubs/40$imagename|grep path`;
+ chomp($cfgimagedir);
+ $cfgimagedir =~ s/^\s+path=(\/.*)\/.+$/$1/g;
+
+ if($imagedir ne $cfgimagedir){
+ my $oldstr = `cat /etc/systemimager/rsync_stubs/40$imagename|grep path`;
+ chomp($oldstr);
+ $oldstr =~ s/\//\\\\\//g;
- unless (-r "$installroot/sysclone/images/$imagename/opt/xcat/xcatdsklspost")
+ my $targetstr="\tpath=".$imagedir."/".$imagename;
+ $targetstr =~ s/\//\\\\\//g;
+ $cmd= "sed -i \"s/$oldstr/$targetstr/\" /etc/systemimager/rsync_stubs/40$imagename";
+ $rc = `$cmd`;
+ }
+
+ $rc = `export PERL5LIB=/usr/lib/perl5/site_perl/;LANG=C si_mkrsyncd_conf`;
+
+ unless (-r "$imagedir/$imagename/opt/xcat/xcatdsklspost")
{
- mkpath("$installroot/sysclone/images/$imagename/opt/xcat/");
- copy("$installroot/postscripts/xcatdsklspost","$installroot/sysclone/images/$imagename/opt/xcat/");
+ mkpath("$imagedir/$imagename/opt/xcat/");
+ copy("$installroot/postscripts/xcatdsklspost","$imagedir/$imagename/opt/xcat/");
}
}
# check systemimager-server-rsyncd to make sure it's running.
- my $out = xCAT::Utils->runcmd("service systemimager-server-rsyncd status", -1);
- if ($::RUNCMD_RC != 0) { # not running
- my $rc = xCAT::Utils->startService("systemimager-server-rsyncd");
+ #my $out = xCAT::Utils->runcmd("service systemimager-server-rsyncd status", -1);
+ # if ($::RUNCMD_RC != 0) { # not running
+ my $retcode=xCAT::Utils->checkservicestatus("systemimager-server-rsyncd");
+ if($retcode!=0){
+ my $rc = xCAT::Utils->startservice("systemimager-server-rsyncd");
if ($rc != 0) {
return 1;
}
diff --git a/xCAT-server/lib/xcat/plugins/ddns.pm b/xCAT-server/lib/xcat/plugins/ddns.pm
index ddda1a6a8..58c5659f6 100755
--- a/xCAT-server/lib/xcat/plugins/ddns.pm
+++ b/xCAT-server/lib/xcat/plugins/ddns.pm
@@ -571,7 +571,8 @@ sub process_request {
}
else
{
- system("service $service stop"); #named may otherwise hold on to stale journal filehandles
+ #system("service $service stop"); #named may otherwise hold on to stale journal filehandles
+ xCAT::Utils->stopservice("named");
}
my $conf = get_conf();
unlink $conf;
@@ -614,24 +615,31 @@ sub process_request {
}
else
{
- my $cmd = "service $service stop";
- my @output=xCAT::Utils->runcmd($cmd, 0);
- my $outp = join('', @output);
- if ($::RUNCMD_RC != 0)
- {
- my $rsp = {};
- $rsp->{data}->[0] = "Command failed: $cmd. Error message: $outp.\n";
- xCAT::MsgUtils->message("E", $rsp, $callback);
- return;
- }
+ #my $cmd = "service $service stop";
+ #my @output=xCAT::Utils->runcmd($cmd, 0);
+ #my $outp = join('', @output);
+ #if ($::RUNCMD_RC != 0)
+ #{
+ # my $rsp = {};
+ # $rsp->{data}->[0] = "Command failed: $cmd. Error message: $outp.\n";
+ # xCAT::MsgUtils->message("E", $rsp, $callback);
+ # return;
+ #}
- $cmd = "service $service start";
- @output=xCAT::Utils->runcmd($cmd, 0);
- $outp = join('', @output);
- if ($::RUNCMD_RC != 0)
- {
+ #$cmd = "service $service start";
+ #@output=xCAT::Utils->runcmd($cmd, 0);
+ #$outp = join('', @output);
+ #if ($::RUNCMD_RC != 0)
+ #{
+ # my $rsp = {};
+ # $rsp->{data}->[0] = "Command failed: $cmd. Error message: $outp.\n";
+ # xCAT::MsgUtils->message("E", $rsp, $callback);
+ # return;
+ #}
+ my $retcode=xCAT::Utils->restartservice("named");
+ if($retcode!=0){
my $rsp = {};
- $rsp->{data}->[0] = "Command failed: $cmd. Error message: $outp.\n";
+ $rsp->{data}->[0] = "failed to start named.\n";
xCAT::MsgUtils->message("E", $rsp, $callback);
return;
}
@@ -673,20 +681,29 @@ sub process_request {
}
else
{
- my $cmd = "service $service status|grep running";
- my @output=xCAT::Utils->runcmd($cmd, 0);
- if ($::RUNCMD_RC != 0)
+ #my $cmd = "service $service status|grep running";
+ #my @output=xCAT::Utils->runcmd($cmd, 0);
+ #if ($::RUNCMD_RC != 0)
+ #{
+ # $cmd = "service $service start";
+ # @output=xCAT::Utils->runcmd($cmd, 0);
+ # my $outp = join('', @output);
+ # if ($::RUNCMD_RC != 0)
+ # {
+ # my $rsp = {};
+ # $rsp->{data}->[0] = "Command failed: $cmd. Error message: $outp.\n";
+ # xCAT::MsgUtils->message("E", $rsp, $callback);
+ # return;
+ # }
+ #}
+ my $retcode=xCAT::Utils->startservice("named");
+ if($retcode!=0)
{
- $cmd = "service $service start";
- @output=xCAT::Utils->runcmd($cmd, 0);
- my $outp = join('', @output);
- if ($::RUNCMD_RC != 0)
- {
my $rsp = {};
- $rsp->{data}->[0] = "Command failed: $cmd. Error message: $outp.\n";
+ $rsp->{data}->[0] = "failed to start named.\n";
xCAT::MsgUtils->message("E", $rsp, $callback);
return;
- }
+
}
}
}
diff --git a/xCAT-server/lib/xcat/plugins/dhcp.pm b/xCAT-server/lib/xcat/plugins/dhcp.pm
index 22c6dcdb6..150dd4955 100755
--- a/xCAT-server/lib/xcat/plugins/dhcp.pm
+++ b/xCAT-server/lib/xcat/plugins/dhcp.pm
@@ -884,15 +884,19 @@ sub check_options
# if not help and not -n, dhcpd needs to be running
if (!($opt->{h})&& (!($opt->{n}))) {
if (xCAT::Utils->isLinux()) {
- my $DHCPSERVER="dhcpd";
- if( -e "/etc/init.d/isc-dhcp-server" ){
- $DHCPSERVER="isc-dhcp-server";
- }
+ #my $DHCPSERVER="dhcpd";
+ #if( -e "/etc/init.d/isc-dhcp-server" ){
+ # $DHCPSERVER="isc-dhcp-server";
+ #}
- my @output = xCAT::Utils->runcmd("service $DHCPSERVER status", -1);
- if ($::RUNCMD_RC != 0) { # not running
+ #my @output = xCAT::Utils->runcmd("service $DHCPSERVER status", -1);
+ #if ($::RUNCMD_RC != 0) { # not running
+ my $ret=0;
+ $ret=xCAT::Utils->checkservicestatus("dhcp");
+ if($ret!=0)
+ {
my $rsp = {};
- $rsp->{data}->[0] = "$DHCPSERVER is not running. Run service $DHCPSERVER start and rerun your command.";
+ $rsp->{data}->[0] = "dhcp server is not running. please start the dhcp server.";
xCAT::MsgUtils->message("E", $rsp, $callback, 1);
return 1;
}
@@ -1840,25 +1844,29 @@ sub process_request
{
restart_dhcpd_aix();
}
- elsif ( $distro =~ /ubuntu.*/ || $distro =~ /debian.*/i)
- {
- if (-e '/etc/dhcp/dhcpd.conf') {
- system("chmod a+r /etc/dhcp/dhcpd.conf");
- system("/etc/init.d/isc-dhcp-server restart");
- }
- else {
- #ubuntu config
- system("chmod a+r /etc/dhcp3/dhcpd.conf");
- system("/etc/init.d/dhcp3-server restart");
- }
- }
- else
- {
- system("/etc/init.d/dhcpd restart");
- # should not chkconfig dhcpd on every makedhcp invoation
- # it is not appropriate and will cause problem for HAMN
- # do it in xcatconfig instead
- #system("chkconfig dhcpd on");
+ else {
+ if ( $distro =~ /ubuntu.*/ || $distro =~ /debian.*/i)
+ {
+ if (-e '/etc/dhcp/dhcpd.conf') {
+ system("chmod a+r /etc/dhcp/dhcpd.conf");
+ #system("/etc/init.d/isc-dhcp-server restart");
+ }
+ else {
+ #ubuntu config
+ system("chmod a+r /etc/dhcp3/dhcpd.conf");
+ #system("/etc/init.d/dhcp3-server restart");
+ }
+ }
+ #else
+ #{
+ # system("/etc/init.d/dhcpd restart");
+ # # should not chkconfig dhcpd on every makedhcp invoation
+ # # it is not appropriate and will cause problem for HAMN
+ # # do it in xcatconfig instead
+ # #system("chkconfig dhcpd on");
+ #}
+ xCAT::Utils->restartservice("dhcp");
+ print "xx";
}
}
flock($dhcplockfd,LOCK_UN);
diff --git a/xCAT-server/lib/xcat/plugins/imgcapture.pm b/xCAT-server/lib/xcat/plugins/imgcapture.pm
index bd4f881de..26e58572f 100644
--- a/xCAT-server/lib/xcat/plugins/imgcapture.pm
+++ b/xCAT-server/lib/xcat/plugins/imgcapture.pm
@@ -130,7 +130,7 @@ sub process_request {
my $shortname = xCAT::InstUtils->myxCATname();
my $rc;
- $rc = sysclone_configserver($shortname, $callback, $doreq);
+ $rc = sysclone_configserver($shortname, $osimg, $callback, $doreq);
if($rc){
my $rsp = {};
$rsp->{data}->[0] = qq{Can not configure Imager Server on $shortname.};
@@ -467,7 +467,7 @@ sub getplatform {
}
sub sysclone_configserver{
- my ($server, $callback, $subreq) = @_;
+ my ($server, $osimage, $callback, $subreq) = @_;
# check if systemimager is installed on the imager server
my $rsp = {};
@@ -514,9 +514,40 @@ sub sysclone_configserver{
{
mkpath($sysclone_overrides);
}
+
+ my $imagedir;
+ my $osimgtab = xCAT::Table->new('osimage');
+ my $entry = ($osimgtab->getAllAttribsWhere("imagename = '$osimage'", 'ALL' ))[0];
+ if(!$entry){
+ $imagedir = $sysclone_home . "/images/" . $osimage;
+ }else{
+ my $osimagetab = xCAT::Table->new('linuximage');
+ my $osimageentry = $osimagetab->getAttribs({imagename => $osimage}, 'rootimgdir');
+ if($osimageentry){
+ $imagedir = $osimageentry->{rootimgdir};
+ if (!(-e $imagedir)){
+ mkpath($imagedir);
+ }
+ }else{
+ $imagedir = $sysclone_home . "/images/" . $osimage;
+ $cmd = "chdef -t osimage $osimage rootimgdir=$imagedir";
+ $rc = `$cmd`;
+ }
+ }
+ $imagedir =~ s/^(\/.*)\/.+\/?$/$1/;
+ $imagedir =~ s/\//\\\\\//g;
+ $imagedir = "DEFAULT_IMAGE_DIR = ".$imagedir;
+
+ my $olddir = `more /etc/systemimager/systemimager.conf |grep DEFAULT_IMAGE_DIR`;
+ $olddir =~ s/\//\\\\\//g;
+ chomp($olddir);
+
+ $cmd= "sed -i \"s/$olddir/$imagedir/\" /etc/systemimager/systemimager.conf";
+ $rc = `$cmd`;
+
# update /etc/systemimager/rsync_stubs/10header to generate new /etc/systemimager/rsyncd.conf
- my $rc = `sed -i "s/\\/var\\/lib\\/systemimager/\\/install\\/sysclone/g" /etc/systemimager/rsync_stubs/10header`;
+ $rc = `sed -i "s/\\/var\\/lib\\/systemimager/\\/install\\/sysclone/g" /etc/systemimager/rsync_stubs/10header`;
$rc = `export PERL5LIB=/usr/lib/perl5/site_perl/;LANG=C si_mkrsyncd_conf`;
return 0;
@@ -678,6 +709,22 @@ sub sysclone_createosimgdef{
$osimgdef{$osimage}{template} = "";
$osimgdef{$osimage}{otherpkglist} = "";
$osimgdef{$osimage}{pkglist} = "";
+
+ if(!($imagedef{$oldimg}{rootimgdir})){
+ $imagedef{$oldimg}{rootimgdir} = $sysclone_home . "/images/" . $osimage;
+
+ my $imagedir = $imagedef{$oldimg}{rootimgdir};
+ $imagedir =~ s/^(\/.*)\/.+\/?$/$1/;
+ $imagedir =~ s/\//\\\\\//g;
+ $imagedir = "DEFAULT_IMAGE_DIR = ".$imagedir;
+
+ my $olddir = `more /etc/systemimager/systemimager.conf |grep DEFAULT_IMAGE_DIR`;
+ $olddir =~ s/\//\\\\\//g;
+ chomp($olddir);
+
+ my $cmd= "sed -i \"s/$olddir/$imagedir/\" /etc/systemimager/systemimager.conf";
+ my $rc = `$cmd`;
+ }
}
} else {
$createnew = 1;
@@ -701,6 +748,18 @@ sub sysclone_createosimgdef{
$osimgdef{$osimage}{osname} = "Linux";
$osimgdef{$osimage}{osvers} = $osver;
$osimgdef{$osimage}{osdistroname} = "$osver-$arch";
+
+ $osimgdef{$osimage}{rootimgdir} = $sysclone_home . "/images/" . $osimage;
+ my $imagedir = $osimgdef{$osimage}{rootimgdir};
+ $imagedir =~ s/^(\/.*)\/.+\/?$/$1/;
+ $imagedir =~ s/\//\\\\\//g;
+ $imagedir = "DEFAULT_IMAGE_DIR = ".$imagedir;
+ my $olddir = `more /etc/systemimager/systemimager.conf |grep DEFAULT_IMAGE_DIR`;
+ $olddir =~ s/\//\\\\\//g;
+ chomp($olddir);
+ my $cmd= "sed -i \"s/$olddir/$imagedir/\" /etc/systemimager/systemimager.conf";
+ my $rc = `$cmd`;
+
#$osimgdef{$osimage}{pkgdir} = "/install/$osver/$arch";
#$osimgdef{$osimage}{otherpkgdir} = "/install/post/otherpkgs/$osver/$arch";
}
diff --git a/xCAT-server/lib/xcat/plugins/mic.pm b/xCAT-server/lib/xcat/plugins/mic.pm
index 6da7c7395..add9c0726 100644
--- a/xCAT-server/lib/xcat/plugins/mic.pm
+++ b/xCAT-server/lib/xcat/plugins/mic.pm
@@ -4,11 +4,13 @@
# This plugin is used to handle the command requests for Xeon Phi (mic) support
#
+
package xCAT_plugin::mic;
BEGIN
{
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
}
+use lib "$::XCATROOT/lib/perl";
use strict;
use Getopt::Long;
@@ -612,6 +614,11 @@ sub rflash {
# run the cmd on the host to flash the mic
my @args = ("-s", "-v", "-e");
push @args, "$::XCATROOT/sbin/flashmic";
+ my $master = $request->{'_xcatdest'};
+ # in case there are multiple servicenode entries, assume the first entry
+ # is the master
+ ($master) = split (/,/,$master);
+
# assume that all hosts are on the same network connected to this master
# (otherwise, will need to move this call into loop above for each host
# and build separate miccfg calls for each unique returned value from
@@ -630,7 +637,6 @@ sub rflash {
return;
}
-}
push @args, ("-m", "$master");
push @args, ("-p", "$tftpdir/xcat/miccfg");
@@ -930,6 +936,11 @@ sub nodeset {
# run the cmd on the host to configure the mic
my @args = ("-s", "-v", "-e");
push @args, "$::XCATROOT/sbin/configmic";
+ my $master = $request->{'_xcatdest'};
+ # in case there are multiple servicenode entries, assume the first entry
+ # is the master
+ ($master) = split (/,/,$master);
+
# assume that all hosts are on the same network connected to this master
# (otherwise, will need to move this call into loop above for each host
# and build separate miccfg calls for each unique returned value from
diff --git a/xCAT-server/lib/xcat/plugins/nimol.pm b/xCAT-server/lib/xcat/plugins/nimol.pm
index afc2a9336..46f206364 100644
--- a/xCAT-server/lib/xcat/plugins/nimol.pm
+++ b/xCAT-server/lib/xcat/plugins/nimol.pm
@@ -25,6 +25,7 @@ Getopt::Long::Configure("pass_through");
use xCAT::Table;
use xCAT::MsgUtils;
use xCAT::DBobjUtils;
+use xCAT::Utils;
sub handled_commands {
return {
@@ -376,7 +377,9 @@ sub update_export {
for my $l (@new_export) { print $new_export_fd $l; }
flock($new_export_fd,LOCK_UN);
close($new_export_fd);
- system("service nfs restart");
+ #system("service nfs restart");
+ my $retcode=xCAT::Utils->restartservice("nfs");
+ return $retcode;
}
sub update_syslog {
@@ -391,7 +394,9 @@ sub update_syslog {
open($new_syslog_fd, ">>", "/etc/exports");
print $new_syslog_fd "local2.* /var/log/nimol.log\n";
close($new_syslog_fd);
- system("service rsyslog restart");
+ #system("service rsyslog restart");
+ my $retcode=xCAT::Utils->restartservice("rsyslog");
+ return $retcode;
} else {
print "Don't need to update syslog configure file.\n";
}
diff --git a/xCAT-server/lib/xcat/plugins/sles.pm b/xCAT-server/lib/xcat/plugins/sles.pm
index 786dcbfd0..0f69e07b7 100755
--- a/xCAT-server/lib/xcat/plugins/sles.pm
+++ b/xCAT-server/lib/xcat/plugins/sles.pm
@@ -1521,9 +1521,11 @@ sub mksysclone
}
# check systemimager-server-rsyncd to make sure it's running.
- my $out = xCAT::Utils->runcmd("service systemimager-server-rsyncd status", -1);
- if ($::RUNCMD_RC != 0) { # not running
- my $rc = xCAT::Utils->startService("systemimager-server-rsyncd");
+ #my $out = xCAT::Utils->runcmd("service systemimager-server-rsyncd status", -1);
+ #if ($::RUNCMD_RC != 0) { # not running
+ my $retcode=xCAT::Utils->checkservicestatus("systemimager-server-rsyncd");
+ if($retcode !=0){
+ my $rc = xCAT::Utils->startservice("systemimager-server-rsyncd");
if ($rc != 0) {
return 1;
}
diff --git a/xCAT-server/sbin/xcatconfig b/xCAT-server/sbin/xcatconfig
index 2abb7f7fe..096e70cee 100755
--- a/xCAT-server/sbin/xcatconfig
+++ b/xCAT-server/sbin/xcatconfig
@@ -453,8 +453,8 @@ if ($::INITIALINSTALL || $::FORCE)
&setuphttp;
# chkconfig dhcpd on
- system("chkconfig dhcpd on");
-
+ #system("chkconfig dhcpd on");
+ xCAT::Utils->enableservice("dhcp");
# Turn off selinux on RedHat
if (-f "/etc/redhat-release")
diff --git a/xCAT/postscripts/config_chef_server b/xCAT/postscripts/config_chef_server
index b1ac1ce15..b1bb266ca 100755
--- a/xCAT/postscripts/config_chef_server
+++ b/xCAT/postscripts/config_chef_server
@@ -2,6 +2,12 @@
# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html
+
+str_dir_name=`dirname $0`
+
+. $str_dir_name/xcatlib.sh
+
+
#-------------------------------------------------------------------------------
#=head1 configure_chef_server
#=head2 This command configures the chef server on a xCAT node.
@@ -35,7 +41,8 @@ then
then
echo -e "\n/etc/chef-server *(rw,no_root_squash,sync,no_subtree_check)\n" >> /etc/exports
fi
- sudo /etc/init.d/nfs-kernel-server restart
+ #sudo /etc/init.d/nfs-kernel-server restart
+ sudo restartservice nfs-kernel-server
if [ $? -ne 0 ]
then
errmsg="Failed to run sudo /etc/init.d/nfs-kernel-server restart on $node"
@@ -43,7 +50,8 @@ then
echo $errmsg
exit 1
fi
- service portmap restart
+ #service portmap restart
+ startservice portmap
if [ $? -ne 0 ]
then
errmsg="Failed to run service portmap restart on $node"
diff --git a/xCAT/postscripts/configfirewall b/xCAT/postscripts/configfirewall
index ddd864794..22a5bf5e6 100755
--- a/xCAT/postscripts/configfirewall
+++ b/xCAT/postscripts/configfirewall
@@ -1,8 +1,16 @@
#!/usr/bin/perl
+BEGIN
+{
+ $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
+}
+use lib "$::XCATROOT/lib/perl";
+
use strict;
use Getopt::Long;
+use xCAT::Utils;
+
Getopt::Long::Configure("bundling");
$Getopt::Long::ignorecase = 0;
@@ -83,12 +91,14 @@ if (-f "/etc/redhat-release")
system($cmd);
# restart iptables
- $cmd = "service iptables restart";
- system($cmd);
+ #$cmd = "service iptables restart";
+ #system($cmd);
+ xCAT::Utils->restartservice("firewall");
# iptables should be stared on reboot
- $cmd = "chkconfig iptables on";
- system($cmd);
+ #$cmd = "chkconfig iptables on";
+ #system($cmd);
+ xCAT::Utils->enableservice("firewall");
}
elsif (-f "/etc/SuSE-release")
{
@@ -129,14 +139,18 @@ elsif (-f "/etc/SuSE-release")
close(CONFFILE);
# restart firewall
- my $cmd = "service SuSEfirewall2_setup restart";
- system($cmd);
+ #my $cmd = "service SuSEfirewall2_setup restart";
+ #system($cmd);
+ xCAT::Utils->restartservice("SuSEfirewall2_setup");
# SuSEfirewall2_setup should be stared on reboot
- $cmd = "chkconfig SuSEfirewall2_init on";
- system($cmd);
- $cmd = "chkconfig SuSEfirewall2_setup on";
- system($cmd);
+ #$cmd = "chkconfig SuSEfirewall2_init on";
+ #system($cmd);
+ #$cmd = "chkconfig SuSEfirewall2_setup on";
+ #system($cmd);
+ xCAT::Utils->enableservice("SuSEfirewall2_init");
+ xCAT::Utils->enableservice("SuSEfirewall2_setup");
+
}
else
{
diff --git a/xCAT/postscripts/configib b/xCAT/postscripts/configib
index da721559e..905cbe351 100755
--- a/xCAT/postscripts/configib
+++ b/xCAT/postscripts/configib
@@ -18,6 +18,10 @@
# NETWORKS_LINE3='netname=ib3||net=15.0.3.0||mask=255.255.255.0||mgtifname=||gateway=||dhcpserver=||tftpserver=||nameservers=||ntpservers=||logservers=||dynamicrange=||staticrange=||staticrangeincrement=||nodehostname=||ddnsdomain=||vlanid=||domain=||disable=||comments='
+str_dir_name=`dirname $0`
+
+. $str_dir_name/xcatlib.sh
+
#This is the number of ports for each ib adpator.
portnum=1
if [ -n "$NIC_IBAPORTS" ]; then
@@ -68,15 +72,19 @@ PLTFRM=`uname`
if [[ $OSVER == rhels5* || "$OSVER" == rhels6* ]]
then
ib_driver="rdma"
- /sbin/service $ib_driver status
- if [ $? -eq 1 ]
+ #/sbin/service $ib_driver status
+ checkservicestatus $ib_driver
+ #if [ $? -eq 1 ]
+ if [ $? -ne 0 ]
then
ib_driver="openibd"
- /sbin/service $ib_driver status
- if [ $? -eq 1 ]
+ #/sbin/service $ib_driver status
+ checkservicestatus $ib_driver
+ #if [ $? -eq 1 ]
+ if [ $? -ne 0 ]
then
echo "Not found the driver dameon: rdma or openibd"
- logger -p local4.info -t xcat "Not found the driver dameon: rdma or openibd"
+ logger -p local4.info -t xcat "Not found the driver dameon: rdma or openibd"
exit
fi
fi
@@ -111,8 +119,10 @@ then
echo "$TMP3" > /etc/modprobe.conf
echo 'options ib_ehca lock_hcalls=0' >> /etc/modprobe.conf
fi
- /sbin/chkconfig --level 2345 $ib_driver on > /dev/null 2>&1
- /sbin/service $ib_driver restart
+ #/sbin/chkconfig --level 2345 $ib_driver on > /dev/null 2>&1
+ enableservice $ib_driver > /dev/null 2>&1
+ #/sbin/service $ib_driver restart
+ restartservice $ib_driver
sysctl -p
fi
@@ -490,7 +500,8 @@ done # end for nic
if [ $PLTFRM == "Linux" ]
then
- /sbin/service $ib_driver restart
+ #/sbin/service $ib_driver restart
+ restartservice $ib_driver
for nic in `echo "$goodnics" | tr "," "\n"`
do
sleep 5
diff --git a/xCAT/postscripts/enablekdump b/xCAT/postscripts/enablekdump
index 92d628982..1c6ad2d92 100755
--- a/xCAT/postscripts/enablekdump
+++ b/xCAT/postscripts/enablekdump
@@ -3,6 +3,11 @@
#(C)IBM Corp
#
+
+str_dir_name=`dirname $0`
+
+. $str_dir_name/xcatlib.sh
+
# create /etc/sysconfig/network-scripts/
pmatch ()
{
@@ -175,7 +180,8 @@ EOF
/usr/bin/find . | cpio -H newc -o|gzip -9 -c - > /boot/${KDUMPINIT}
cd /
/bin/rm -rf "/var/tmp/tempinit"
- service kdump restart
+ #service kdump restart
+ restartservice kdump
else
/bin/mount -o nolock $KDIP:$KDPATH $MOUNTPATH
KDTEMPPATH=${KDPATH//\//\\\/}
@@ -208,7 +214,8 @@ EOF
/bin/mount -o nolock $KDIP:$KDPATH $MOUNTPATH
echo "net $KDIP:$KDPATH" > /etc/kdump.conf
echo "link_delay 180" >> /etc/kdump.conf
- /etc/init.d/kdump restart
+ #/etc/init.d/kdump restart
+ restartservice kdump
fi
fi
fi
diff --git a/xCAT/postscripts/install_puppet_server b/xCAT/postscripts/install_puppet_server
index 2db004532..ac7cf9201 100755
--- a/xCAT/postscripts/install_puppet_server
+++ b/xCAT/postscripts/install_puppet_server
@@ -2,6 +2,10 @@
# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html
+str_dir_name=`dirname $0`
+
+. $str_dir_name/xcatlib.sh
+
#-------------------------------------------------------------------------------
#=head1 install_puppet_server
#=head2 This command installs the puppet server on a xCAT server or node.
@@ -82,9 +86,11 @@ if [ "$os" == "Ubuntu" ]; then
${result}/config_puppet_server "$@"
#restart puppet master
- service puppetmaster stop
+ #service puppetmaster stop
+ stopservice puppetmaster
kill $(ps auxww | grep puppet | grep master | grep -v grep | awk '{print $2}')
- service puppetmaster start
+ #service puppetmaster start
+ startservice puppetmaster
elif [ "$os" == "RedHat" ]; then
echo "Puppet server installation with xCAT on RedHat is through a kit. Please refer to ... for details.".
diff --git a/xCAT/postscripts/remoteshell b/xCAT/postscripts/remoteshell
index 928e7bcf5..e411245a7 100755
--- a/xCAT/postscripts/remoteshell
+++ b/xCAT/postscripts/remoteshell
@@ -11,6 +11,12 @@
# id.rsa
#
# if on the Management Node, exit
+
+
+str_dir_name=`dirname $0`
+
+. $str_dir_name/xcatlib.sh
+
if [ -e /etc/xCATMN ]; then
logger -t xcat -p local4.info "remoteshell:Running on the Management Node , exiting "
exit 0
@@ -376,10 +382,12 @@ then
chmod 0755 /var/run/sshd
/usr/sbin/sshd -f /etc/ssh/sshd_config
else
- service ssh restart
+ #service ssh restart
+ restartservice ssh
fi
else
- service sshd restart
+ #service sshd restart
+ restartservice sshd
fi
kill -9 $CREDPID
diff --git a/xCAT/postscripts/setupntp b/xCAT/postscripts/setupntp
index f58595801..db75578b4 100755
--- a/xCAT/postscripts/setupntp
+++ b/xCAT/postscripts/setupntp
@@ -5,6 +5,12 @@
# setup NTP configuration on the compute nodes
#
#---------------------------------------------------------------------------
+
+
+str_dir_name=`dirname $0`
+
+. $str_dir_name/xcatlib.sh
+
# if on the Management Node, exit
if [ -e /etc/xCATMN ]; then
logger -t xcat -p local4.info "setupntp:Running on the Management Node , exiting "
@@ -120,15 +126,17 @@ if [ $OS_TYPE = Linux ]; then
disable auth
restrict 127.0.0.1" >>$conf_file
# default service for redhat/fedora
- SERVICE=ntpd
- if ( pmatch $OSVER "sles*" ) || ( pmatch $OSVER "suse*" ) || [ -f /etc/SuSE-release ] || ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ); then
- SERVICE=ntp
- fi
+ #SERVICE=ntpd
+ #if ( pmatch $OSVER "sles*" ) || ( pmatch $OSVER "suse*" ) || [ -f /etc/SuSE-release ] || ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ); then
+ # SERVICE=ntp
+ #fi
#ntpdate/sntp conflict with ntpd, stop the service first
- service $SERVICE status
+# service $SERVICE status
+ checkservicestatus ntpserver
if [ $? -eq 0 ];then
- service $SERVICE stop
+# service $SERVICE stop
+ stopservice ntpserver
fi
#ntpdate program is deprecated on SuSE
if ( pmatch $OSVER "sles*" ) || ( pmatch $OSVER "suse*" ) || [ -f /etc/SuSE-release ]; then
@@ -178,23 +186,27 @@ restrict 127.0.0.1" >>$conf_file
echo "#!/bin/sh" > $cron_file
echo "/sbin/hwclock --systohc --utc" >> $cron_file
chmod a+x $cron_file
- service cron restart
+ #service cron restart
+ restartservice cron
fi
fi
- service $SERVICE start
+ #service $SERVICE start
+ startservice ntpserver
#start ntp and crontab automaticlly
- if [ -f "/etc/debian_version" ];then
- update-rc.d cron defaults
- update-rc.d $SERVICE defaults
- else
- chkconfig --add $SERVICE >/dev/null 2>&1
- chkconfig --level 345 $SERVICE on >/dev/null 2>&1
- if ( pmatch $OSVER "sles*" ) || ( pmatch $OSVER "suse*" ) || [ -f /etc/SuSE-release ];then
- chkconfig --add cron >/dev/null 2>&1
- chkconfig --level 345 cron on >/dev/null 2>&1
- fi
- fi
+ #if [ -f "/etc/debian_version" ];then
+ # update-rc.d cron defaults
+ # update-rc.d $SERVICE defaults
+ #else
+ # chkconfig --add $SERVICE >/dev/null 2>&1
+ # chkconfig --level 345 $SERVICE on >/dev/null 2>&1
+ # if ( pmatch $OSVER "sles*" ) || ( pmatch $OSVER "suse*" ) || [ -f /etc/SuSE-release ];then
+ # chkconfig --add cron >/dev/null 2>&1
+ # chkconfig --level 345 cron on >/dev/null 2>&1
+ # fi
+ #fi
+ enableservice cron
+ enableservice ntpserver
else
# stop and start AIX ntp
echo "driftfile /etc/ntp.drift
diff --git a/xCAT/postscripts/sudoer b/xCAT/postscripts/sudoer
index 65c540c27..c15166c2d 100755
--- a/xCAT/postscripts/sudoer
+++ b/xCAT/postscripts/sudoer
@@ -7,6 +7,12 @@
#
#------------------------------------------------------------------------------
+
+str_dir_name=`dirname $0`
+
+. $str_dir_name/xcatlib.sh
+
+
# Configuration for the sudoer
SUDOER="xcat"
SUDOERPW="rootpw"
@@ -53,8 +59,9 @@ chown $SUDOER:users $HOME/.ssh/authorized_keys
# Restart the SSHD for syncfiles postscript to do the sync work
logger -t xCAT -p local4.info "Restarting SSHD"
-if [ -f "/etc/debian_version" ];then
- service ssh restart
-else
- service sshd restart
-fi
+#if [ -f "/etc/debian_version" ];then
+# service ssh restart
+#else
+# service sshd restart
+#fi
+restartservice ssh
diff --git a/xCAT/postscripts/syslog b/xCAT/postscripts/syslog
index bab90406a..41ddbe389 100755
--- a/xCAT/postscripts/syslog
+++ b/xCAT/postscripts/syslog
@@ -14,6 +14,11 @@
#=cut
#-------------------------------------------------------------------------------
+
+str_dir_name=`dirname $0`
+
+. $str_dir_name/xcatlib.sh
+
master=$MASTER
conf_file="/etc/syslog.conf"
sysconfig="/etc/sysconfig/syslog"
@@ -23,7 +28,7 @@ isSN=0
isLinux=1
isRsyslog=0
isC3=0
-systemdEnabled=0
+#systemdEnabled=0
# pmatch determines if 1st argument string is matched by 2nd argument pattern
pmatch ()
@@ -115,19 +120,19 @@ if [ "$NTYPE" = service ]; then
isSN=1
fi
-if [ -e /etc/systemd ]; then
- systemdEnabled=1
-fi
+#if [ -e /etc/systemd ]; then
+# systemdEnabled=1
+#fi
if [ "$(uname -s)" = "Linux" ]; then
if ( pmatch $OSVER "fedora*" ) || ( pmatch $OSVER "rhels5*" ) || ( pmatch $OSVER "rhel6*" ) || ( pmatch $OSVER "rhels6*" ) || [ -f /etc/fedora-release ] || [ -f /etc/redhat-release ] || ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ) || ( pmatch $OSVER "debian*" ); then
if [ -e /etc/rsyslog.conf ]; then
conf_file="/etc/rsyslog.conf"
sysconfig="/etc/sysconfig/rsyslog"
- init="/etc/init.d/rsyslog"
- if [ $systemdEnabled -eq 1 ]; then
- init="rsyslog"
- fi
+ #init="/etc/init.d/rsyslog"
+ #if [ $systemdEnabled -eq 1 ]; then
+ # init="rsyslog"
+ #fi
isRsyslog=1
if ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ) || ( pmatch $OSVER "debian*" ); then
sysconfig="/etc/default/rsyslog"
@@ -328,11 +333,12 @@ if [ $isLinux -eq 0 ]; then
fi
done
else
- if [ $systemdEnabled -eq 1 ]; then
- systemctl restart $init.service
- else
- $init restart
- fi
+ #if [ $systemdEnabled -eq 1 ]; then
+ # systemctl restart $init.service
+ #else
+ # $init restart
+ #fi
+ restartservice syslog
fi
#keep a record
diff --git a/xCAT/postscripts/xcatlib.sh b/xCAT/postscripts/xcatlib.sh
index 6bac5d0d5..2eb70760b 100644
--- a/xCAT/postscripts/xcatlib.sh
+++ b/xCAT/postscripts/xcatlib.sh
@@ -273,7 +273,7 @@ function servicemap {
local svcmgrtype=$2
local svclistname=
- INIT_dhcp="dhcpd isc-dhcp-server";
+ INIT_dhcp="dhcp3-server dhcpd isc-dhcp-server";
SYSTEMD_dhcp="dhcpd.service";
INIT_nfs="nfsserver nfs nfs-kernel-server";
@@ -291,6 +291,15 @@ function servicemap {
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 retdefault=$svcname
local svcvar=${svcname//[-.]/_}