aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAngelo Naselli <anaselli@linux.it>2015-03-25 12:06:03 +0100
committerAngelo Naselli <anaselli@linux.it>2015-03-25 12:06:03 +0100
commit7d4134a7fdc5651e90b7aefbda95c5a1998ec3c6 (patch)
treed2c504a1ad271a57c9fbce23eb84f9ea9820f0a2
parent031f000833f385de8bc5142c571aec73399b4a1a (diff)
downloadmanatools-7d4134a7fdc5651e90b7aefbda95c5a1998ec3c6.tar
manatools-7d4134a7fdc5651e90b7aefbda95c5a1998ec3c6.tar.gz
manatools-7d4134a7fdc5651e90b7aefbda95c5a1998ec3c6.tar.bz2
manatools-7d4134a7fdc5651e90b7aefbda95c5a1998ec3c6.tar.xz
manatools-7d4134a7fdc5651e90b7aefbda95c5a1998ec3c6.zip
fixed ntp_program attribute initialization and added its test
-rw-r--r--lib/ManaTools/Shared/TimeZone.pm41
-rw-r--r--t/04-Shared_TimeZone.t2
2 files changed, 36 insertions, 7 deletions
diff --git a/lib/ManaTools/Shared/TimeZone.pm b/lib/ManaTools/Shared/TimeZone.pm
index 155de20d..d481bf23 100644
--- a/lib/ManaTools/Shared/TimeZone.pm
+++ b/lib/ManaTools/Shared/TimeZone.pm
@@ -105,17 +105,16 @@ has 'timezone_prefix' => (
has 'ntp_configuration_file' => (
is => 'rw',
isa => 'Str',
+ lazy => 1,
builder => '_ntp_configuration_file_init',
);
sub _ntp_configuration_file_init {
my $self = shift;
- return "/etc/chrony.conf" if (-f "/etc/chrony.conf");
-
- return "/etc/ntp.conf" if (-f "/etc/ntp.conf");
+ my $curr = $self->ntp_program;
- return "/etc/systemd/timesyncd.conf";
+ return $self->getNTPServiceConfig($curr);
}
#=============================================================
@@ -163,11 +162,39 @@ has 'ntp_program' => (
sub _ntp_program_init {
my $self = shift;
- return "chronyd" if ($self->ntp_configuration_file() eq "/etc/chrony.conf");
+ # looks for a running service from the configured ones,
+ # if none is running chooses the first of the list
+ my $list = $self->ntpServiceList();
+ return $self->loc->N("No NTP services") if !$list;
- return "ntpd" if ($self->ntp_configuration_file() eq "/etc/ntp.conf");
+ my $ntpd;
+ my $isRunning = 0;
+ foreach $ntpd (@{$list}) {
+ $isRunning = $self->sh_services->is_service_running($ntpd);
+ last if $isRunning;
+ }
+
+ if (!$isRunning) {
+ # being sure systemd-timesyncd is not really running (or set to be)
+ if ($self->getEmbeddedNTP()) {
+ $ntpd = "systemd-timesyncd";
+ Sys::Syslog::syslog(
+ 'info|local1',
+ $self->loc->N("%s enabled but stopped - disabling it",
+ $ntpd
+ )
+ );
+ # enabled but stopped, disabling it
+ # NOTE this happens tipically on VM if not well configured
+ $self->setEmbeddedNTP(0);
+ }
+ else {
+ # coosing the first one of the list that is not running
+ $ntpd = $list->[0];
+ }
+ }
- return "systemd-timesyncd" if ($self->ntp_configuration_file() eq "/etc/systemd/timesyncd.conf");
+ return $ntpd;
}
#=============================================================
diff --git a/t/04-Shared_TimeZone.t b/t/04-Shared_TimeZone.t
index 9f286cce..21dd2e72 100644
--- a/t/04-Shared_TimeZone.t
+++ b/t/04-Shared_TimeZone.t
@@ -14,6 +14,8 @@ BEGIN {
ok (my @l = $tz->getTimeZones(), 'getTimeZones');
ok (my $h = $tz->readConfiguration(), 'readConfiguration');
diag Dumper($h);
+ ok (my $currService = $tz->ntp_program(), 'ntp_program');
+ diag "ntp_program got: < " . $currService . " >";
ok (my $s = $tz->ntpCurrentServer(), 'currentNTPServer');
diag "ntpCurrentServer got: < " . ($s ? $s : "none") . " >";
ok (my $a = ($tz->isNTPRunning() ? "running" : "not running"), 'isNTPRunning');