diff --git a/xCAT-server/lib/xcat/plugins/makentp.pm b/xCAT-server/lib/xcat/plugins/makentp.pm index 4e6f19a40..f48b67d34 100755 --- a/xCAT-server/lib/xcat/plugins/makentp.pm +++ b/xCAT-server/lib/xcat/plugins/makentp.pm @@ -234,6 +234,44 @@ sub process_request { send_msg(\%request, 0, "configuring service node: $nodename."); } + # get site.extntpservers for mn, for sn use mn as the server + my $ntp_servers; + my $ntp_master; + my $ntp_attrib; + if (xCAT::Utils->isMN()) { + $ntp_attrib = "extntpservers"; + } else { + $ntp_attrib = "ntpservers"; + } + my @entries = xCAT::TableUtils->get_site_attribute($ntp_attrib); + my $ntp_servers = $entries[0]; + + if (!xCAT::Utils->isMN() && ((!$ntp_servers) || + (($ntp_servers) && ($ntp_servers =~ //)))) { + my $retdata = xCAT::ServiceNodeUtils->readSNInfo($nodename); + $ntp_servers = $retdata->{'master'}; + } + + # Handle chronyd here, + if (-f "/usr/sbin/chronyd") { + send_msg(\%request, 0, "Will configure chronyd instead."); + + my $cmd = "/install/postscripts/setupntp " . + join(' ', split(',', $ntp_servers)); + send_msg(\%request, 0, "Calling ... " . $cmd); + + my $result = xCAT::Utils->runcmd($cmd, 0); + if ($::RUNCMD_RC != 0) { + send_msg(\%request, 1, "Error from command: $cmd\n $result"); + return 1; + } + + send_msg(\%request, 0, "Daemon chronyd configured."); + + # Cannot find a better way other than use goto statement :-/ + goto HANDLE_MAKENTP_A; + } + #check if ntp is installed or not if ($verbose) { send_msg(\%request, 0, " ...checking if nptd is installed."); @@ -272,23 +310,6 @@ sub process_request { } } - # get site.extntpservers for mn, for sn use mn as the server - my $ntp_servers; - my $ntp_master; - my $ntp_attrib; - if (xCAT::Utils->isMN()) { - $ntp_attrib = "extntpservers"; - } else { - $ntp_attrib = "ntpservers"; - } - my @entries = xCAT::TableUtils->get_site_attribute($ntp_attrib); - my $ntp_servers = $entries[0]; - - if (!xCAT::Utils->isMN() && ((!$ntp_servers) || (($ntp_servers) && ($ntp_servers =~ //)))) { - my $retdata = xCAT::ServiceNodeUtils->readSNInfo($nodename); - $ntp_servers = $retdata->{'master'}; - } - if ($verbose) { send_msg(\%request, 0, " ...changing the ntp configuration file /etc/ntp.conf.\n ntp servers are: $ntp_servers"); } @@ -455,6 +476,8 @@ sub process_request { } xCAT::Utils->enableservice($ntp_service); +HANDLE_MAKENTP_A: + #now handle sn that has ntpserver=1 set in servicenode table. # this part is called by makentp -a. if ($req->{_all}->[0] == 1) {