summaryrefslogtreecommitdiff
path: root/src/conf_mode/system-logs.py
diff options
context:
space:
mode:
authorzsdc <taras@vyos.io>2021-12-07 22:41:27 +0200
committerzsdc <taras@vyos.io>2021-12-07 22:44:34 +0200
commitac73200e4f0cf4020dfcd0a11e6004bca479253f (patch)
treec5478ea432686c46d2a17913828efd573185faa7 /src/conf_mode/system-logs.py
parent7ac6b589e3827ea6ff8e796bb6617c021cf26bca (diff)
downloadvyos-1x-ac73200e4f0cf4020dfcd0a11e6004bca479253f.tar.gz
vyos-1x-ac73200e4f0cf4020dfcd0a11e6004bca479253f.zip
logs: T3774: Added CLI options to control atop logs rotation
Added CLI options to generate logrotate configuration file for atop logs
Diffstat (limited to 'src/conf_mode/system-logs.py')
-rwxr-xr-xsrc/conf_mode/system-logs.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/conf_mode/system-logs.py b/src/conf_mode/system-logs.py
new file mode 100755
index 000000000..8eb95e543
--- /dev/null
+++ b/src/conf_mode/system-logs.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2021 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from sys import exit
+
+from vyos import ConfigError
+from vyos import airbag
+from vyos.config import Config
+from vyos.logger import syslog
+from vyos.template import render_to_string
+from vyos.util import read_file, write_file
+airbag.enable()
+
+# path to logrotate config for atop
+logrotate_atop_file = '/etc/logrotate.d/vyos-atop'
+
+
+def get_config(config=None):
+ if config:
+ conf = config
+ else:
+ conf = Config()
+
+ base = ['system', 'logs']
+ logs_config = conf.get_config_dict(base)
+
+ return logs_config
+
+
+def verify(logs_config):
+ # Nothing to verify here
+ pass
+
+
+def generate(logs_config):
+ # get configuration for logrotate atop
+ logrotate_atop = logs_config.get('logs', {}).get('logrotate',
+ {}).get('atop', {})
+ # read current config file for atop
+ logrotate_atop_current = read_file(logrotate_atop_file)
+ # generate new config file for atop
+ logrotate_atop_new = render_to_string('logs/logrotate/vyos-atop.tmpl',
+ logrotate_atop)
+ # update configuration files if this is necessary
+ if logrotate_atop_new != logrotate_atop_current:
+ syslog.debug('Adding logrotate config for atop')
+ write_file(logrotate_atop_file, logrotate_atop_new)
+
+
+def apply(logs_config):
+ # No further actions needed
+ pass
+
+
+if __name__ == '__main__':
+ try:
+ c = get_config()
+ verify(c)
+ generate(c)
+ apply(c)
+ except ConfigError as e:
+ print(e)
+ exit(1)