From 20ab585a68982c4635c4e5a1ee5bbcc219feaebc Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Wed, 15 Jan 2025 20:38:43 +0100 Subject: syslog: T6989: move up "global preserve-fqdn" one level in CLI Move "global preserve-fqdn" one CLI level up, as it relates to all logging targets (console, global and remote). --- data/templates/rsyslog/rsyslog.conf.j2 | 8 ++++---- interface-definitions/system_syslog.xml.in | 24 ++++++++++++------------ smoketest/config-tests/basic-vyos | 2 +- smoketest/config-tests/bgp-big-as-cloud | 2 +- smoketest/scripts/cli/test_system_syslog.py | 2 +- src/conf_mode/system_syslog.py | 23 +++++++++++++---------- src/migration-scripts/system/28-to-29 | 7 +++++++ 7 files changed, 39 insertions(+), 29 deletions(-) diff --git a/data/templates/rsyslog/rsyslog.conf.j2 b/data/templates/rsyslog/rsyslog.conf.j2 index 779ae8d04..bc98329b2 100644 --- a/data/templates/rsyslog/rsyslog.conf.j2 +++ b/data/templates/rsyslog/rsyslog.conf.j2 @@ -51,13 +51,13 @@ global(workDirectory="/var/spool/rsyslog") # Load the immark module for periodic --MARK-- message capability module(load="immark" interval="{{ global.marker.interval }}") {% endif %} -{% if global.preserve_fqdn is vyos_defined %} +{% if preserve_fqdn is vyos_defined %} # Preserve the fully qualified domain name (FQDN) in log messages global(preserveFQDN="on") -{% endif %} -{% if global.local_host_name is vyos_defined %} +{% if preserve_fqdn.host_name is vyos_defined and preserve_fqdn.domain_name is vyos_defined %} # Set the local hostname for log messages -global(localHostname="{{ global.local_host_name }}") +global(localHostname="{{ preserve_fqdn.host_name }}.{{ preserve_fqdn.domain_name }}") +{% endif %} {% endif %} #### GLOBAL LOGGING #### diff --git a/interface-definitions/system_syslog.xml.in b/interface-definitions/system_syslog.xml.in index f47a95f09..09cfd3dd4 100644 --- a/interface-definitions/system_syslog.xml.in +++ b/interface-definitions/system_syslog.xml.in @@ -8,6 +8,14 @@ 400 + + + Log to system console (/dev/console) + + + #include + + Log to remote host @@ -84,22 +92,14 @@ - - - uses FQDN for logging - - - - + - Log to system console (/dev/console) + Always include domain portion in hostname + - - #include - - + #include #include diff --git a/smoketest/config-tests/basic-vyos b/smoketest/config-tests/basic-vyos index b6bb6ac67..eaa61c56d 100644 --- a/smoketest/config-tests/basic-vyos +++ b/smoketest/config-tests/basic-vyos @@ -95,7 +95,7 @@ set system syslog console facility mail level 'info' set system syslog global facility all level 'info' set system syslog global facility auth level 'info' set system syslog global facility local7 level 'debug' -set system syslog global preserve-fqdn +set system syslog preserve-fqdn set system syslog remote syslog.vyos.net facility auth level 'warning' set system syslog remote syslog.vyos.net facility local7 level 'notice' set system syslog remote syslog.vyos.net format octet-counted diff --git a/smoketest/config-tests/bgp-big-as-cloud b/smoketest/config-tests/bgp-big-as-cloud index d6c17b3d2..ff7549957 100644 --- a/smoketest/config-tests/bgp-big-as-cloud +++ b/smoketest/config-tests/bgp-big-as-cloud @@ -848,5 +848,5 @@ set system sflow interface 'eth0.4088' set system sflow interface 'eth0.4089' set system sflow server 1.2.3.4 port '1234' set system syslog global facility all level 'all' -set system syslog global preserve-fqdn +set system syslog preserve-fqdn set system time-zone 'Europe/Zurich' diff --git a/smoketest/scripts/cli/test_system_syslog.py b/smoketest/scripts/cli/test_system_syslog.py index de2e9b260..b1aaa53a5 100755 --- a/smoketest/scripts/cli/test_system_syslog.py +++ b/smoketest/scripts/cli/test_system_syslog.py @@ -86,7 +86,7 @@ class TestRSYSLOGService(VyOSUnitTestSHIM.TestCase): self.cli_set(['system', 'host-name', hostname]) self.cli_set(['system', 'domain-name', domain_name]) - self.cli_set(base_path + ['global', 'preserve-fqdn']) + self.cli_set(base_path + ['preserve-fqdn']) for tmp, tmp_options in facility.items(): level = tmp_options['level'] diff --git a/src/conf_mode/system_syslog.py b/src/conf_mode/system_syslog.py index ce806a540..6f6546fd1 100755 --- a/src/conf_mode/system_syslog.py +++ b/src/conf_mode/system_syslog.py @@ -53,16 +53,13 @@ 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 + if 'preserve_fqdn' in syslog: + if conf.exists(['system', 'host-name']): + tmp = conf.return_value(['system', 'host-name']) + syslog['preserve_fqdn']['host_name'] = tmp + if conf.exists(['system', 'domain-name']): + tmp = conf.return_value(['system', 'domain-name']) + syslog['preserve_fqdn']['domain_name'] = tmp return syslog @@ -70,6 +67,12 @@ def verify(syslog): if not syslog: return None + if 'preserve_fqdn' in syslog: + if 'host_name' not in syslog['preserve_fqdn']: + Warning('No "system host-name" defined - cannot set syslog FQDN!') + if 'domain_name' not in syslog['preserve_fqdn']: + Warning('No "system domain-name" defined - cannot set syslog FQDN!') + if 'remote' in syslog: for host, host_options in syslog['remote'].items(): if 'protocol' in host_options and host_options['protocol'] == 'udp': diff --git a/src/migration-scripts/system/28-to-29 b/src/migration-scripts/system/28-to-29 index 1addad035..dadfc994a 100644 --- a/src/migration-scripts/system/28-to-29 +++ b/src/migration-scripts/system/28-to-29 @@ -16,6 +16,7 @@ # T6989: # - remove syslog arbitrary file logging # - remove syslog user console logging +# - move "global preserve-fqdn" one CLI level up # - rename "host" to "remote" from vyos.configtree import ConfigTree @@ -34,6 +35,12 @@ def migrate(config: ConfigTree) -> None: if config.exists(base + ['user']): config.delete(base + ['user']) + # Move "global preserve-fqdn" one CLI level up, as it relates to all + # logging targets (console, global and remote) + if config.exists(base + ['global', 'preserve-fqdn']): + config.delete(base + ['global', 'preserve-fqdn']) + config.set(base + ['preserve-fqdn']) + # Rename host x.x.x.x -> remote x.x.x.x if config.exists(base + ['host']): config.set(base + ['remote']) -- cgit v1.2.3