Skip to content

Commit

Permalink
syslog: T6719: fix the behavior of "syslog global preserve-fqdn"
Browse files Browse the repository at this point in the history
(cherry picked from commit c196c6d)
  • Loading branch information
nvollmar authored and mergify[bot] committed Sep 25, 2024
1 parent 6450c7d commit de9bba0
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 3 deletions.
4 changes: 4 additions & 0 deletions data/templates/rsyslog/rsyslog.conf.j2
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ $MarkMessagePeriod {{ global.marker.interval }}
$PreserveFQDN on
{% endif %}

{% if global.local_host_name is vyos_defined %}
$LocalHostName {{ global.local_host_name }}
{% endif %}

# We always log to /var/log/messages
$outchannel global,/var/log/messages,262144,/usr/sbin/logrotate {{ logrotate }}
{% if global.facility is vyos_defined %}
Expand Down
33 changes: 30 additions & 3 deletions smoketest/scripts/cli/test_system_syslog.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from base_vyostest_shim import VyOSUnitTestSHIM

from vyos.utils.file import read_file
from vyos.utils.process import cmd
from vyos.utils.process import process_named_running

PROCESS_NAME = 'rsyslogd'
Expand Down Expand Up @@ -61,19 +62,45 @@ def test_syslog_basic(self):
self.cli_set(base_path + ['host', host2, 'facility', 'kern', 'level', 'err'])
self.cli_set(base_path + ['console', 'facility', 'all', 'level', 'warning'])


self.cli_commit()
# verify log level and facilities in config file
# *.warning /dev/console
# *.* @198.51.100.1:999
# kern.err @192.0.2.1:514
config = [get_config_value('\*.\*'), get_config_value('kern.err'), get_config_value('\*.warning')]
config = [
get_config_value('\*.\*'),
get_config_value('kern.err'),
get_config_value('\*.warning'),
]
expected = [f'@{host1}:999', f'@{host2}:514', '/dev/console']

for i in range(0,3):
for i in range(0, 3):
self.assertIn(expected[i], config[i])
# Check for running process
self.assertTrue(process_named_running(PROCESS_NAME))

def test_syslog_global(self):
self.cli_set(['system', 'host-name', 'vyos'])
self.cli_set(['system', 'domain-name', 'example.local'])
self.cli_set(base_path + ['global', 'marker', 'interval', '600'])
self.cli_set(base_path + ['global', 'preserve-fqdn'])
self.cli_set(base_path + ['global', 'facility', 'kern', 'level', 'err'])

self.cli_commit()

config = cmd(f'sudo cat {RSYSLOG_CONF}')
expected = [
'$MarkMessagePeriod 600',
'$PreserveFQDN on',
'kern.err',
'$LocalHostName vyos.example.local',
]

for e in expected:
self.assertIn(e, config)
# Check for running process
self.assertTrue(process_named_running(PROCESS_NAME))


if __name__ == '__main__':
unittest.main(verbosity=2)
11 changes: 11 additions & 0 deletions src/conf_mode/system_syslog.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,17 @@ def get_config(config=None):
if syslog.from_defaults(['global']):
del syslog['global']

if (
'global' in syslog
and 'preserve_fqdn' in syslog['global']
and conf.exists(['system', 'host-name'])
and conf.exists(['system', 'domain-name'])
):
hostname = conf.return_value(['system', 'host-name'])
domain = conf.return_value(['system', 'domain-name'])
fqdn = f'{hostname}.{domain}'
syslog['global']['local_host_name'] = fqdn

return syslog

def verify(syslog):
Expand Down

0 comments on commit de9bba0

Please sign in to comment.