Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Changelog
### New Cisco Resources

### Added
* Extend syslog_server with attribute:
* `facility`

### Changed

Expand Down
6 changes: 3 additions & 3 deletions lib/cisco_node_utils/cmd_ref/syslog_server.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ server:
multiple: true
nexus:
get_command: "show running-config all | include '^logging server'"
# Returns <ip>, <level>, <port>, <vrf>
get_value: '/^(?:logging server )([^\s]+)(?: (\d+))?(?: port (\d+))?(?: use-vrf (\S+))?/'
set_value: '<state> logging server <ip> <level> <port> <vrf>'
# Returns <ip>, <level>, <port>, <vrf>, <facility>
get_value: '/^(?:logging server )([^\s]+)(?: (\d+))?(?: port (\d+))?(?: use-vrf (\S+))?(?: facility (\S+))?/'
set_value: '<state> logging server <ip> <level> <port> <vrf> <facility>'
ios_xr:
get_command: "show running-config logging"
get_value: '/^logging (\S+).*/'
Expand Down
31 changes: 18 additions & 13 deletions lib/cisco_node_utils/syslog_server.rb
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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,
Expand All @@ -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])?
Expand All @@ -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?
Expand All @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions tests/test_syslog_server.rb
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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)

Expand All @@ -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)
Expand Down