diff --git a/CHANGELOG.md b/CHANGELOG.md index 944e3a48..03b7dffd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ Changelog ### New Cisco Resources ### Added +* Extend syslog_server with attribute: + * `facility` ### Changed diff --git a/lib/cisco_node_utils/cmd_ref/syslog_server.yaml b/lib/cisco_node_utils/cmd_ref/syslog_server.yaml index 256b176a..97c20aee 100644 --- a/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +++ b/lib/cisco_node_utils/cmd_ref/syslog_server.yaml @@ -15,9 +15,9 @@ server: multiple: true nexus: get_command: "show running-config all | include '^logging server'" - # Returns , , , - get_value: '/^(?:logging server )([^\s]+)(?: (\d+))?(?: port (\d+))?(?: use-vrf (\S+))?/' - set_value: ' logging server ' + # Returns , , , , + get_value: '/^(?:logging server )([^\s]+)(?: (\d+))?(?: port (\d+))?(?: use-vrf (\S+))?(?: facility (\S+))?/' + set_value: ' logging server ' ios_xr: get_command: "show running-config logging" get_value: '/^logging (\S+).*/' diff --git a/lib/cisco_node_utils/syslog_server.rb b/lib/cisco_node_utils/syslog_server.rb index 7f2e990f..385c7785 100644 --- a/lib/cisco_node_utils/syslog_server.rb +++ b/lib/cisco_node_utils/syslog_server.rb @@ -1,8 +1,9 @@ # Syslog Server provider class # +# June 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. @@ -22,7 +23,7 @@ module Cisco # SyslogServer - node utility class for syslog server configuration management class SyslogServer < NodeUtil - attr_reader :name, :level, :port, :vrf, :severity_level + attr_reader :name, :level, :port, :vrf, :severity_level, :facility LEVEL_TO_NUM = { 'emergencies' => 0, 'alerts' => 1, @@ -40,6 +41,7 @@ def initialize(opts, instantiate=true) @port = opts['port'] @vrf = opts['vrf'] @severity_level = opts['severity_level'] || opts['level'] + @facility = opts['facility'] hostname_regex = /^(?=.{1,255}$)[0-9A-Za-z] (?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])? @@ -56,7 +58,7 @@ def initialize(opts, instantiate=true) end def self.syslogservers - keys = %w(name level port vrf severity_level) + keys = %w(name level port vrf facility severity_level) hash = {} syslogservers_list = config_get('syslog_server', 'server') return hash if syslogservers_list.nil? @@ -65,6 +67,7 @@ def self.syslogservers value_hash = Hash[keys.zip(id)] value_hash['severity_level'] = value_hash['level'] value_hash['vrf'] = 'default' if value_hash['vrf'].nil? + value_hash['facility'] = 'local7' if value_hash['facility'].nil? hash[id[0]] = SyslogServer.new(value_hash, false) end @@ -93,11 +96,12 @@ def create else config_set('syslog_server', 'server', - state: '', - ip: @name, - level: @level ? "#{@level}" : '', - port: @port ? "port #{@port}" : '', - vrf: @vrf ? "use-vrf #{@vrf}" : '', + state: '', + ip: @name, + level: @level ? "#{@level}" : '', + port: @port ? "port #{@port}" : '', + vrf: @vrf ? "use-vrf #{@vrf}" : '', + facility: @facility ? "facility #{@facility}" : '', ) end end @@ -129,11 +133,12 @@ def destroy(duplicate_vrfs=[]) else config_set('syslog_server', 'server', - state: 'no', - ip: @name, - level: '', - port: '', - vrf: '', + state: 'no', + ip: @name, + level: '', + port: '', + vrf: '', + facility: '', ) end end diff --git a/tests/test_syslog_server.rb b/tests/test_syslog_server.rb index c101e3bd..7d188234 100644 --- a/tests/test_syslog_server.rb +++ b/tests/test_syslog_server.rb @@ -1,7 +1,7 @@ # # Minitest for SyslogServer class # -# Copyright (c) 2014-2016 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. @@ -101,7 +101,7 @@ def test_create_options end id = '1.2.3.4' - options = { 'name' => id, 'level' => '4', 'port' => '2154', 'vrf' => 'red' } + options = { 'name' => id, 'level' => '4', 'port' => '2154', 'vrf' => 'red', 'facility' => 'local5' } refute_includes(Cisco::SyslogServer.syslogservers, id) @@ -111,6 +111,7 @@ def test_create_options assert_equal('4', Cisco::SyslogServer.syslogservers[id].level) assert_equal('2154', Cisco::SyslogServer.syslogservers[id].port) assert_equal('red', Cisco::SyslogServer.syslogservers[id].vrf) + assert_equal('local5', Cisco::SyslogServer.syslogservers[id].facility) server.destroy refute_includes(Cisco::SyslogServer.syslogservers, id)