From c819444eacef2188245bcad18cc79c77e0b7cc36 Mon Sep 17 00:00:00 2001 From: Will Meek Date: Wed, 22 Aug 2018 14:43:57 +0100 Subject: [PATCH] (NETDEV-46) Add logfile to syslog_settings This commit adds the logfile_name, logfile_severity_level and logfile_size fields to syslog_settings for Cisco Nexus --- .../cmd_ref/syslog_settings.yaml | 16 +++++++ lib/cisco_node_utils/syslog_settings.rb | 44 ++++++++++++++++++- tests/test_syslog_settings.rb | 17 ++++++- 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml b/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml index c17966e7..4deaed86 100644 --- a/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +++ b/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml @@ -9,6 +9,22 @@ console: get_value: '/^(no)?\s*logging console\s*(\d)?/' set_value: ' logging console ' +logfile_name: + get_command: "show running-config all | include 'logging'" + # Returns and + get_value: '/^(no)?\s*logging logfile\s(\S*)\s*?/' + set_value: ' logging logfile ' + +logfile_severity_level: + get_command: "show running-config all | include 'logging'" + # Returns and + get_value: '/^(no)?\s*logging logfile\s\S*\s*(\d)?/' + +logfile_size: + get_command: "show running-config all | include 'logging'" + # Returns and + get_value: '/^(no)?\s*logging logfile.*size\s(\d*)/' + monitor: default_value: 5 get_command: "show running-config all | include 'logging'" diff --git a/lib/cisco_node_utils/syslog_settings.rb b/lib/cisco_node_utils/syslog_settings.rb index d91c39a0..13693dbb 100644 --- a/lib/cisco_node_utils/syslog_settings.rb +++ b/lib/cisco_node_utils/syslog_settings.rb @@ -1,8 +1,9 @@ # Syslog Settings provider class # +# August 2018 # Jonathan Tripathy et al., September 2015 # -# Copyright (c) 2014-2017 Cisco and/or its affiliates. +# Copyright (c) 2014-2018 Cisco and/or its affiliates. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -126,6 +127,47 @@ def timestamp=(val) units: val) end + def logfile_severity_level + logfile_severity_level = + config_get('syslog_settings', 'logfile_severity_level') + if logfile_severity_level.is_a?(Array) + if logfile_severity_level[0] == 'no' + logfile_severity_level = nil + else + logfile_severity_level = logfile_severity_level[1] + end + end + logfile_severity_level + end + + def logfile_name=(logname, severity, size) + if logname + config_set( + 'syslog_settings', 'logfile_name', + state: '', logname: logname, severity: severity, size: size) + else + config_set( + 'syslog_settings', 'logfile_name', + state: 'no', logname: logname, severity: severity, size: size) + end + end + + def logfile_name + logfile_name = config_get('syslog_settings', 'logfile_name') + if logfile_name.is_a?(Array) + logfile_name = (logfile_name[0] == 'no') ? 'unset' : logfile_name[1] + end + logfile_name + end + + def logfile_size + logfile_size = config_get('syslog_settings', 'logfile_size') + if logfile_size.is_a?(Array) + logfile_size = (logfile_size[0] == 'no') ? nil : logfile_size[1] + end + logfile_size + end + alias_method :time_stamp_units, :timestamp alias_method :time_stamp_units=, :timestamp= end # class diff --git a/tests/test_syslog_settings.rb b/tests/test_syslog_settings.rb index 542e3d54..144de1f0 100644 --- a/tests/test_syslog_settings.rb +++ b/tests/test_syslog_settings.rb @@ -39,7 +39,8 @@ def default_syslogsettings config('no logging timestamp seconds', 'logging console 2', 'logging monitor 5', - 'no logging source-interface') + 'no logging source-interface', + 'no logging logfile') end # TESTS @@ -105,4 +106,18 @@ def test_source_interface syslog_setting.source_interface = nil assert_nil(syslog_setting.source_interface) end + + def test_logfile + syslog_setting = Cisco::SyslogSettings.new('default') + + assert_equal('unset', syslog_setting.logfile_name) + syslog_setting.send('logfile_name=', 'testlog', 5, 'size 4097') + assert_equal('testlog', syslog_setting.logfile_name) + assert_equal('5', syslog_setting.logfile_severity_level) + assert_equal('4097', syslog_setting.logfile_size) + syslog_setting.send('logfile_name=', nil, nil, nil) + assert_equal('unset', syslog_setting.logfile_name) + assert_nil(syslog_setting.logfile_severity_level) + assert_nil(syslog_setting.logfile_size) + end end