rbeapi 1.2 → 1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +28 -4
- data/Gemfile +1 -0
- data/README.md +13 -13
- data/lib/rbeapi/api/logging.rb +207 -5
- data/lib/rbeapi/api/radius.rb +50 -0
- data/lib/rbeapi/api/tacacs.rb +48 -0
- data/lib/rbeapi/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 110cd5fb3e11a5fec2598d63ed79db2c3b092ce7
|
|
4
|
+
data.tar.gz: 7e7d89671f76f5875980d0320cdee5fa93d2333b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2f36371a3497d8e4af54803b64385cf787e530bbb6eb65fad541f1e378986f6c1e81df7dc25cbf72a5d932d15a5d3ad44e6decc4eaeecf5261664883056cb7bb
|
|
7
|
+
data.tar.gz: c2f98dd638875fabe9183ffdd308c9d1f6c245d3f9e1d2e267b05850b7d9a4e514c27a3b2bf747ada68b84573426d870d23bbfa24a1ce8b954980d85188305ec
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
|
-
## [1.
|
|
4
|
-
|
|
3
|
+
## [1.3.0](https://github.com/arista-eosplus/rbeapi/tree/1.3.0) (2018-04-03)
|
|
4
|
+
|
|
5
|
+
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v1.2...1.3.0)
|
|
6
|
+
|
|
7
|
+
**Implemented enhancements:**
|
|
8
|
+
|
|
9
|
+
- logging: support vrf, port, and protocol options [\#173](https://github.com/arista-eosplus/rbeapi/issues/173)
|
|
10
|
+
- \(NETDEV-30\) Support new properties in Types [\#174](https://github.com/arista-eosplus/rbeapi/pull/174) ([jerearista](https://github.com/jerearista))
|
|
11
|
+
|
|
12
|
+
**Merged pull requests:**
|
|
13
|
+
|
|
14
|
+
- Release 1.2.0 [\#170](https://github.com/arista-eosplus/rbeapi/pull/170) ([jerearista](https://github.com/jerearista))
|
|
15
|
+
|
|
16
|
+
## [v1.2](https://github.com/arista-eosplus/rbeapi/tree/v1.2) (2017-06-03)
|
|
17
|
+
|
|
18
|
+
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v1.1...v1.2)
|
|
5
19
|
|
|
6
20
|
**Implemented enhancements:**
|
|
7
21
|
|
|
@@ -13,6 +27,7 @@
|
|
|
13
27
|
- \(NETDEV-29\) Enhance netdev NTP api [\#169](https://github.com/arista-eosplus/rbeapi/pull/169) ([shermdog](https://github.com/shermdog))
|
|
14
28
|
|
|
15
29
|
## [v1.1](https://github.com/arista-eosplus/rbeapi/tree/v1.1) (2016-12-06)
|
|
30
|
+
|
|
16
31
|
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v1.0...v1.1)
|
|
17
32
|
|
|
18
33
|
**Implemented enhancements:**
|
|
@@ -31,6 +46,7 @@
|
|
|
31
46
|
- extend and fix ospf features [\#156](https://github.com/arista-eosplus/rbeapi/pull/156) ([rknaus](https://github.com/rknaus))
|
|
32
47
|
|
|
33
48
|
## [v1.0](https://github.com/arista-eosplus/rbeapi/tree/v1.0) (2016-09-26)
|
|
49
|
+
|
|
34
50
|
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.5.1...v1.0)
|
|
35
51
|
|
|
36
52
|
**Implemented enhancements:**
|
|
@@ -75,6 +91,7 @@
|
|
|
75
91
|
- Created vlans set\_trunk\_groups method. [\#119](https://github.com/arista-eosplus/rbeapi/pull/119) ([devrobo](https://github.com/devrobo))
|
|
76
92
|
|
|
77
93
|
## [v0.5.1](https://github.com/arista-eosplus/rbeapi/tree/v0.5.1) (2016-02-16)
|
|
94
|
+
|
|
78
95
|
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.5.0...v0.5.1)
|
|
79
96
|
|
|
80
97
|
**Implemented enhancements:**
|
|
@@ -104,6 +121,7 @@
|
|
|
104
121
|
- Added support for setting system banners. [\#104](https://github.com/arista-eosplus/rbeapi/pull/104) ([devrobo](https://github.com/devrobo))
|
|
105
122
|
|
|
106
123
|
## [v0.5.0](https://github.com/arista-eosplus/rbeapi/tree/v0.5.0) (2016-01-12)
|
|
124
|
+
|
|
107
125
|
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.4.0...v0.5.0)
|
|
108
126
|
|
|
109
127
|
**Implemented enhancements:**
|
|
@@ -140,6 +158,7 @@
|
|
|
140
158
|
- Update documentation [\#97](https://github.com/arista-eosplus/rbeapi/pull/97) ([HuntBurdick](https://github.com/HuntBurdick))
|
|
141
159
|
|
|
142
160
|
## [v0.4.0](https://github.com/arista-eosplus/rbeapi/tree/v0.4.0) (2015-11-21)
|
|
161
|
+
|
|
143
162
|
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.3.0...v0.4.0)
|
|
144
163
|
|
|
145
164
|
**Implemented enhancements:**
|
|
@@ -177,6 +196,7 @@
|
|
|
177
196
|
- add dry-run mode [\#42](https://github.com/arista-eosplus/rbeapi/pull/42) ([kakkotetsu](https://github.com/kakkotetsu))
|
|
178
197
|
|
|
179
198
|
## [v0.3.0](https://github.com/arista-eosplus/rbeapi/tree/v0.3.0) (2015-08-24)
|
|
199
|
+
|
|
180
200
|
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.2.0...v0.3.0)
|
|
181
201
|
|
|
182
202
|
**Fixed bugs:**
|
|
@@ -196,6 +216,7 @@
|
|
|
196
216
|
- Eliminate overloading value option in command\_builder. [\#39](https://github.com/arista-eosplus/rbeapi/pull/39) ([devrobo](https://github.com/devrobo))
|
|
197
217
|
|
|
198
218
|
## [v0.2.0](https://github.com/arista-eosplus/rbeapi/tree/v0.2.0) (2015-07-08)
|
|
219
|
+
|
|
199
220
|
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/v0.1.0...v0.2.0)
|
|
200
221
|
|
|
201
222
|
**Implemented enhancements:**
|
|
@@ -239,5 +260,8 @@
|
|
|
239
260
|
|
|
240
261
|
## [v0.1.0](https://github.com/arista-eosplus/rbeapi/tree/v0.1.0) (2015-02-25)
|
|
241
262
|
|
|
263
|
+
[Full Changelog](https://github.com/arista-eosplus/rbeapi/compare/63b0bf8c005b4eab53036556d7becf9b1a7f4bb4...v0.1.0)
|
|
264
|
+
|
|
265
|
+
|
|
242
266
|
|
|
243
|
-
\* *This
|
|
267
|
+
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/Gemfile
CHANGED
|
@@ -17,6 +17,7 @@ end
|
|
|
17
17
|
|
|
18
18
|
group :development, :test do
|
|
19
19
|
gem 'ci_reporter_rspec', require: false
|
|
20
|
+
gem 'github_changelog_generator', :git => 'https://github.com/skywinder/github-changelog-generator.git'
|
|
20
21
|
gem 'listen', '<=3.0.3'
|
|
21
22
|
gem 'pry', require: false
|
|
22
23
|
gem 'pry-doc', require: false
|
data/README.md
CHANGED
|
@@ -250,29 +250,29 @@ omnibus installation package in /opt/chef/bin/. For Chef, use the
|
|
|
250
250
|
Examples:
|
|
251
251
|
Puppet Open Source:
|
|
252
252
|
cd /mnt/flash; \
|
|
253
|
-
swix create rbeapi-1.
|
|
254
|
-
rubygem-rbeapi-1.
|
|
253
|
+
swix create rbeapi-1.3-1.swix \
|
|
254
|
+
rubygem-rbeapi-1.3-1.eos4.noarch.rpm \
|
|
255
255
|
rubygem-inifile-3.0.0-3.eos4.noarch.rpm \
|
|
256
256
|
rubygem-netaddr-1.5.0-2.eos4.noarch.rpm \
|
|
257
257
|
rubygem-net_http_unix-0.2.1-3.eos4.noarch.rpm
|
|
258
258
|
Puppet-enterprise agent (3.x):
|
|
259
259
|
cd/mnt/flash; \
|
|
260
|
-
swix create rbeapi-puppet3-1.
|
|
261
|
-
rubygem-rbeapi-puppet3-1.
|
|
260
|
+
swix create rbeapi-puppet3-1.3-1.swix \
|
|
261
|
+
rubygem-rbeapi-puppet3-1.3-1.eos4.noarch.rpm \
|
|
262
262
|
rubygem-inifile-puppet3-3.0.0-3.eos4.noarch.rpm \
|
|
263
263
|
rubygem-netaddr-puppet3-1.5.0-2.eos4.noarch.rpm
|
|
264
264
|
Puppet-All-in-one agent (2015.x/4.x):
|
|
265
265
|
cd/mnt/flash; \
|
|
266
|
-
swix create rbeapi-puppet-aio-1.
|
|
267
|
-
rubygem-rbeapi-puppet-aio-1.
|
|
266
|
+
swix create rbeapi-puppet-aio-1.3-1.swix \
|
|
267
|
+
rubygem-rbeapi-puppet-aio-1.3-1.eos4.noarch.rpm \
|
|
268
268
|
rubygem-inifile-puppet-aio-3.0.0-3.eos4.noarch.rpm \
|
|
269
269
|
rubygem-netaddr-puppet-aio-1.5.0-2.eos4.noarch.rpm \
|
|
270
270
|
rubygem-net_http_unix-puppet-aio-0.2.1-3.eos4.noarch.rpm
|
|
271
271
|
|
|
272
272
|
Chef client:
|
|
273
273
|
cd /mnt/flash; \
|
|
274
|
-
swix create rbeapi-chef-1.
|
|
275
|
-
rubygem-rbeapi-chef-1.
|
|
274
|
+
swix create rbeapi-chef-1.3-1.swix \
|
|
275
|
+
rubygem-rbeapi-chef-1.3-1.eos4.noarch.rpm \
|
|
276
276
|
rubygem-inifile-chef-3.0.0-5.eos4.noarch.rpm \
|
|
277
277
|
rubygem-netaddr-chef-1.5.1-4.eos4.noarch.rpm \
|
|
278
278
|
rubygem-net_http_unix-chef-0.2.2-5.eos4.noarch.rpm
|
|
@@ -283,13 +283,13 @@ omnibus installation package in /opt/chef/bin/. For Chef, use the
|
|
|
283
283
|
Arista# copy <URI-to-RPMs> flash:
|
|
284
284
|
Arista# bash
|
|
285
285
|
-bash-4.1# cd /mnt/flash/
|
|
286
|
-
-bash-4.1# swix create rbeapi-puppet3-1.
|
|
287
|
-
rubygem-rbeapi-puppet3-1.
|
|
286
|
+
-bash-4.1# swix create rbeapi-puppet3-1.3-1.swix \
|
|
287
|
+
rubygem-rbeapi-puppet3-1.3-1.eos4.noarch.rpm \
|
|
288
288
|
rubygem-inifile-puppet3-3.0.0-1.eos4.noarch.rpm \
|
|
289
289
|
rubygem-netaddr-puppet3-1.5.0-1.eos4.noarch.rpm
|
|
290
290
|
-bash-4.1# exit
|
|
291
|
-
Arista# copy flash:rbeapi-puppet3-1.
|
|
292
|
-
Arista# extension rbeapi-puppet3-1.
|
|
291
|
+
Arista# copy flash:rbeapi-puppet3-1.3-1.swix extension:
|
|
292
|
+
Arista# extension rbeapi-puppet3-1.3-1.swix
|
|
293
293
|
Arista# copy installed-extensions boot-extensions
|
|
294
294
|
```
|
|
295
295
|
|
|
@@ -298,7 +298,7 @@ omnibus installation package in /opt/chef/bin/. For Chef, use the
|
|
|
298
298
|
On EOS:
|
|
299
299
|
```
|
|
300
300
|
Arista# no extension pe-rbeapi-1.1.0-1.swix
|
|
301
|
-
Arista# extension rbeapi-puppet3-1.
|
|
301
|
+
Arista# extension rbeapi-puppet3-1.3-1.swix
|
|
302
302
|
Arista# copy installed-extensions boot-extensions
|
|
303
303
|
```
|
|
304
304
|
|
data/lib/rbeapi/api/logging.rb
CHANGED
|
@@ -40,6 +40,16 @@ module Rbeapi
|
|
|
40
40
|
##
|
|
41
41
|
# The Logging class manages logging settings on an EOS node.
|
|
42
42
|
class Logging < Entity
|
|
43
|
+
SEV_NUM = {
|
|
44
|
+
'emergencies' => 0,
|
|
45
|
+
'alerts' => 1,
|
|
46
|
+
'critical' => 2,
|
|
47
|
+
'errors' => 3,
|
|
48
|
+
'warnings' => 4,
|
|
49
|
+
'notifications' => 5,
|
|
50
|
+
'informational' => 6,
|
|
51
|
+
'debugging' => 7
|
|
52
|
+
}.freeze
|
|
43
53
|
##
|
|
44
54
|
# get returns the current logging configuration hash extracted from the
|
|
45
55
|
# nodes running configuration.
|
|
@@ -55,6 +65,10 @@ module Rbeapi
|
|
|
55
65
|
def get
|
|
56
66
|
response = {}
|
|
57
67
|
response.merge!(parse_enable)
|
|
68
|
+
response.merge!(parse_console_level)
|
|
69
|
+
response.merge!(parse_monitor_level)
|
|
70
|
+
response.merge!(parse_timestamp_units)
|
|
71
|
+
response.merge!(parse_source)
|
|
58
72
|
response.merge!(parse_hosts)
|
|
59
73
|
response
|
|
60
74
|
end
|
|
@@ -73,6 +87,79 @@ module Rbeapi
|
|
|
73
87
|
value = /no logging on/ !~ config
|
|
74
88
|
{ enable: value }
|
|
75
89
|
end
|
|
90
|
+
private :parse_enable
|
|
91
|
+
|
|
92
|
+
##
|
|
93
|
+
# parse_console_level scans the nodes current running configuration and
|
|
94
|
+
# extracts the current enabled state of the logging facility. The logging
|
|
95
|
+
# enable command is expected to always be in the node's configuration.
|
|
96
|
+
# This methods return value is intended to be merged into the logging
|
|
97
|
+
# resource hash.
|
|
98
|
+
#
|
|
99
|
+
# @api private
|
|
100
|
+
#
|
|
101
|
+
# @return [Hash<Symbol, Object>] Returns the resource hash attribute.
|
|
102
|
+
def parse_console_level
|
|
103
|
+
level = config.scan(/^logging console ([^\s]+)/).first
|
|
104
|
+
{ console: SEV_NUM[level[0]] }
|
|
105
|
+
end
|
|
106
|
+
private :parse_console_level
|
|
107
|
+
|
|
108
|
+
##
|
|
109
|
+
# parse_monitor_level scans the nodes current running configuration and
|
|
110
|
+
# extracts the current enabled state of the logging facility. The
|
|
111
|
+
# logging enable command is expected to always be in the node's
|
|
112
|
+
# configuration. This methods return value is intended to be merged into
|
|
113
|
+
# the logging resource hash.
|
|
114
|
+
#
|
|
115
|
+
# @api private
|
|
116
|
+
#
|
|
117
|
+
# @return [Hash<Symbol, Object>] Returns the resource hash attribute.
|
|
118
|
+
def parse_monitor_level
|
|
119
|
+
level = config.scan(/^logging monitor ([^\s]+)/).first
|
|
120
|
+
{ monitor: SEV_NUM[level[0]] }
|
|
121
|
+
end
|
|
122
|
+
private :parse_monitor_level
|
|
123
|
+
|
|
124
|
+
##
|
|
125
|
+
# parse_timestamp_units scans the nodes current running configuration
|
|
126
|
+
# and extracts the current configured value of the logging timestamps.
|
|
127
|
+
# The logging timestamps command is expected to always be in the node's
|
|
128
|
+
# configuration. This methods return value is intended to be merged into
|
|
129
|
+
# the logging resource hash.
|
|
130
|
+
#
|
|
131
|
+
# @api private
|
|
132
|
+
#
|
|
133
|
+
# @return [Hash<Symbol, Object>] Returns the resource hash attribute.
|
|
134
|
+
def parse_timestamp_units
|
|
135
|
+
value = config.scan(/^logging format timestamp ([^\s]+)/).first
|
|
136
|
+
units = value[0] == 'traditional' ? 'seconds' : 'milliseconds'
|
|
137
|
+
{ time_stamp_units: units }
|
|
138
|
+
end
|
|
139
|
+
private :parse_timestamp_units
|
|
140
|
+
|
|
141
|
+
##
|
|
142
|
+
# parse_source scans the nodes' current running configuration and extracts
|
|
143
|
+
# the configured logging source interfaces if any are configured. If no
|
|
144
|
+
# logging sources are configured, then the value will be an empty
|
|
145
|
+
# array. The return value requires conversion from a hash to a pair of
|
|
146
|
+
# ordered arrays to be merged into the logging resource hash.
|
|
147
|
+
#
|
|
148
|
+
# @api private
|
|
149
|
+
#
|
|
150
|
+
# @return [Hash<Symbol, Object>] Returns the resource hash attribute.
|
|
151
|
+
def parse_source
|
|
152
|
+
entries = config.scan(
|
|
153
|
+
/^logging(?:\svrf\s([^\s]+))?\ssource-interface\s([^\s]+)/
|
|
154
|
+
)
|
|
155
|
+
sources = {}
|
|
156
|
+
entries.each do |vrf, intf|
|
|
157
|
+
vrf = vrf.nil? ? 'default' : vrf
|
|
158
|
+
sources[vrf.to_s] = intf
|
|
159
|
+
end
|
|
160
|
+
{ source: sources }
|
|
161
|
+
end
|
|
162
|
+
private :parse_source
|
|
76
163
|
|
|
77
164
|
##
|
|
78
165
|
# parse_hosts scans the nodes current running configuration and extracts
|
|
@@ -85,7 +172,17 @@ module Rbeapi
|
|
|
85
172
|
#
|
|
86
173
|
# @return [Hash<Symbol, Object>] Returns the resource hash attribute.
|
|
87
174
|
def parse_hosts
|
|
88
|
-
|
|
175
|
+
entries = config.scan(
|
|
176
|
+
/^logging(?:\svrf\s([^\s]+))?\shost\s([^\s]+)\s(\d+)
|
|
177
|
+
\sprotocol\s([^\s]+)/x
|
|
178
|
+
)
|
|
179
|
+
hosts = []
|
|
180
|
+
entries.each do |vrf, address, port, proto|
|
|
181
|
+
hosts << { address: address,
|
|
182
|
+
vrf: vrf.nil? ? 'default' : vrf,
|
|
183
|
+
port: port,
|
|
184
|
+
protocol: proto }
|
|
185
|
+
end
|
|
89
186
|
{ hosts: hosts }
|
|
90
187
|
end
|
|
91
188
|
private :parse_hosts
|
|
@@ -119,6 +216,104 @@ module Rbeapi
|
|
|
119
216
|
configure cmd
|
|
120
217
|
end
|
|
121
218
|
|
|
219
|
+
##
|
|
220
|
+
# set_console configures the global logging level for the console.
|
|
221
|
+
# If the default keyword is specified and set to true, then the
|
|
222
|
+
# configuration is defaulted using the default keyword. The default
|
|
223
|
+
# keyword option takes precedence over the enable keyword if both
|
|
224
|
+
# options are specified.
|
|
225
|
+
#
|
|
226
|
+
# @since eos_version 4.13.7M
|
|
227
|
+
#
|
|
228
|
+
# ===Commands
|
|
229
|
+
# logging console <level>
|
|
230
|
+
# no logging console <level>
|
|
231
|
+
# default logging console
|
|
232
|
+
#
|
|
233
|
+
# @param opts [Hash] Optional keyword arguments
|
|
234
|
+
#
|
|
235
|
+
# @option opts level [Int|String] Enables logging at the specified
|
|
236
|
+
# level. Accepts <0-7> and logging level keywords.
|
|
237
|
+
#
|
|
238
|
+
# @option opts default [Boolean] Resets the monitor level to the
|
|
239
|
+
# default.
|
|
240
|
+
#
|
|
241
|
+
# @return [Boolean] Returns true if the command completed successfully.
|
|
242
|
+
def set_console(opts = {})
|
|
243
|
+
cmd = 'logging console'
|
|
244
|
+
cmd += " #{opts[:level]}" if opts[:level]
|
|
245
|
+
cmd = command_builder(cmd, opts)
|
|
246
|
+
configure cmd
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
##
|
|
250
|
+
# set_monitor configures the global logging level for terminals
|
|
251
|
+
# If the default keyword is specified and set to true, then the
|
|
252
|
+
# configuration is defaulted using the default keyword. The default
|
|
253
|
+
# keyword option takes precedence over the enable keyword if both
|
|
254
|
+
# options are specified.
|
|
255
|
+
#
|
|
256
|
+
# @since eos_version 4.13.7M
|
|
257
|
+
#
|
|
258
|
+
# ===Commands
|
|
259
|
+
# logging monitor <level>
|
|
260
|
+
# no logging monitor <level>
|
|
261
|
+
# default logging monitor
|
|
262
|
+
#
|
|
263
|
+
# @param opts [Hash] Optional keyword arguments
|
|
264
|
+
#
|
|
265
|
+
# @option opts level [Int|String] Enables logging at the specified
|
|
266
|
+
# level. Accepts <0-7> and logging level keywords.
|
|
267
|
+
#
|
|
268
|
+
# @option opts default [Boolean] Resets the monitor level to the
|
|
269
|
+
# default.
|
|
270
|
+
#
|
|
271
|
+
# @return [Boolean] Returns true if the command completed successfully.
|
|
272
|
+
def set_monitor(opts = {})
|
|
273
|
+
cmd = 'logging monitor'
|
|
274
|
+
cmd += " #{opts[:level]}" if opts[:level]
|
|
275
|
+
cmd = command_builder(cmd, opts)
|
|
276
|
+
configure cmd
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
##
|
|
280
|
+
# set_time_stamp_units configures the global logging time_stamp_units
|
|
281
|
+
# If the default keyword is specified and set to true, then the
|
|
282
|
+
# configuration is defaulted using the default keyword. The default
|
|
283
|
+
# keyword option takes precedence over the enable keyword if both
|
|
284
|
+
# options are specified.
|
|
285
|
+
#
|
|
286
|
+
# @since eos_version 4.13.7M
|
|
287
|
+
#
|
|
288
|
+
# ===Commands
|
|
289
|
+
# logging format timestamp <traditional|high-resolution>
|
|
290
|
+
# no logging format timestamp <level>
|
|
291
|
+
# default logging format timestamp
|
|
292
|
+
#
|
|
293
|
+
# @param opts [Hash] Optional keyword arguments
|
|
294
|
+
#
|
|
295
|
+
# @option opts units [String] Enables logging timestamps with the
|
|
296
|
+
# specified units. One of 'traditional' | 'seconds' or
|
|
297
|
+
# 'high-resolution' | 'milliseconds'
|
|
298
|
+
#
|
|
299
|
+
# @option opts default [Boolean] Resets the logging timestamp level to
|
|
300
|
+
# the default.
|
|
301
|
+
#
|
|
302
|
+
# @return [Boolean] Returns true if the command completed successfully.
|
|
303
|
+
def set_time_stamp_units(opts = {})
|
|
304
|
+
unit_map = {
|
|
305
|
+
'traditional' => ' traditional',
|
|
306
|
+
'seconds' => ' traditional',
|
|
307
|
+
'high-resolution' => ' high-resolution',
|
|
308
|
+
'milliseconds' => ' high-resolution'
|
|
309
|
+
}
|
|
310
|
+
units = ''
|
|
311
|
+
units = unit_map[opts[:units]] if opts[:units]
|
|
312
|
+
cmd = "logging format timestamp#{units}"
|
|
313
|
+
cmd = command_builder(cmd, opts)
|
|
314
|
+
configure cmd
|
|
315
|
+
end
|
|
316
|
+
|
|
122
317
|
##
|
|
123
318
|
# add_host configures a new logging destination host address or hostname
|
|
124
319
|
# to the list of logging destinations. If the host is already configured
|
|
@@ -133,8 +328,12 @@ module Rbeapi
|
|
|
133
328
|
# node to send logging information to.
|
|
134
329
|
#
|
|
135
330
|
# @return [Boolean] Returns true if the command completed successfully.
|
|
136
|
-
def add_host(name)
|
|
137
|
-
|
|
331
|
+
def add_host(name, opts = {})
|
|
332
|
+
vrf = opts[:vrf] ? "vrf #{opts[:vrf]} " : ''
|
|
333
|
+
cmd = "logging #{vrf}host #{name}"
|
|
334
|
+
cmd += " #{opts[:port]}" if opts[:port]
|
|
335
|
+
cmd += " protocol #{opts[:protocol]}" if opts[:protocol]
|
|
336
|
+
configure cmd
|
|
138
337
|
end
|
|
139
338
|
|
|
140
339
|
##
|
|
@@ -151,8 +350,11 @@ module Rbeapi
|
|
|
151
350
|
# host to remove from the nodes current configuration.
|
|
152
351
|
#
|
|
153
352
|
# @return [Boolean] Returns true if the commands completed successfully.
|
|
154
|
-
def remove_host(name)
|
|
155
|
-
|
|
353
|
+
def remove_host(name, opts = {})
|
|
354
|
+
vrf = opts[:vrf] ? "vrf #{opts[:vrf]} " : ''
|
|
355
|
+
# Hosts are uniquely identified by vrf and address, alone.
|
|
356
|
+
cmd = "no logging #{vrf}host #{name}"
|
|
357
|
+
configure cmd
|
|
156
358
|
end
|
|
157
359
|
end
|
|
158
360
|
end
|
data/lib/rbeapi/api/radius.rb
CHANGED
|
@@ -76,6 +76,7 @@ module Rbeapi
|
|
|
76
76
|
global.merge!(parse_global_timeout)
|
|
77
77
|
global.merge!(parse_global_retransmit)
|
|
78
78
|
global.merge!(parse_global_key)
|
|
79
|
+
global.merge!(parse_global_source)
|
|
79
80
|
resource = { global: global, servers: parse_servers }
|
|
80
81
|
resource
|
|
81
82
|
end
|
|
@@ -126,6 +127,29 @@ module Rbeapi
|
|
|
126
127
|
end
|
|
127
128
|
private :parse_global_key
|
|
128
129
|
|
|
130
|
+
##
|
|
131
|
+
# parse_global_source takes a running configuration as a string
|
|
132
|
+
# and parses out the radius global source-interface per VRF if it exists
|
|
133
|
+
# in the configuration. An empty Hash is returned if there is no global
|
|
134
|
+
# setting configured. The Hash needs to be converted to ordered lists
|
|
135
|
+
# for vrf and source_interface before being merged into a property hash.
|
|
136
|
+
#
|
|
137
|
+
# @api private
|
|
138
|
+
#
|
|
139
|
+
# @return [Hash<Symbol, Object>] Returns the resource hash attribute.
|
|
140
|
+
def parse_global_source
|
|
141
|
+
src = config.scan(/ip radius(?:\svrf\s(\w+))?\ssource-interface\s(\w+)/)
|
|
142
|
+
sources = {}
|
|
143
|
+
src.each do |vrf, intf|
|
|
144
|
+
vrf = vrf.nil? ? 'default' : vrf
|
|
145
|
+
sources[vrf] = intf
|
|
146
|
+
end
|
|
147
|
+
{ source_interface: sources }
|
|
148
|
+
end
|
|
149
|
+
private :parse_global_source
|
|
150
|
+
|
|
151
|
+
##
|
|
152
|
+
|
|
129
153
|
##
|
|
130
154
|
# parse_servers returns an Array of radius server resource hashes. Each
|
|
131
155
|
# hash describes the current state of the radius server and is intended
|
|
@@ -335,6 +359,32 @@ module Rbeapi
|
|
|
335
359
|
cmd << " acct-port #{opts[:acct_port]}" if opts[:acct_port]
|
|
336
360
|
configure cmd
|
|
337
361
|
end
|
|
362
|
+
|
|
363
|
+
##
|
|
364
|
+
# set_source_interface takes a dictionary mapping the VRF to the desired
|
|
365
|
+
# source interface. Any radius source-interface lines in the
|
|
366
|
+
# running-config that are not defined in the hash will be removed, then
|
|
367
|
+
# lines generated from the hash will be applied. This is NOT idempotent,
|
|
368
|
+
# however, it is explicit.
|
|
369
|
+
#
|
|
370
|
+
# @api public
|
|
371
|
+
#
|
|
372
|
+
# @param sources [Hash] A hash mapping the vrf name to the source
|
|
373
|
+
# interface.
|
|
374
|
+
#
|
|
375
|
+
# @return [Boolean] Returns true if there are no errors.
|
|
376
|
+
def set_source_interface(sources)
|
|
377
|
+
existing = config.scan(/ip radius.* source-interface.*/)
|
|
378
|
+
desired = []
|
|
379
|
+
sources.each do |vrf, intf|
|
|
380
|
+
vrf_str = vrf == 'default' ? '' : " vrf #{vrf}"
|
|
381
|
+
desired << "ip radius#{vrf_str} source-interface #{intf}"
|
|
382
|
+
end
|
|
383
|
+
remove = existing - desired
|
|
384
|
+
cmds = remove.map { |line| "no #{line}" }
|
|
385
|
+
cmds.concat(desired)
|
|
386
|
+
configure cmds
|
|
387
|
+
end
|
|
338
388
|
end
|
|
339
389
|
end
|
|
340
390
|
end
|
data/lib/rbeapi/api/tacacs.rb
CHANGED
|
@@ -77,6 +77,7 @@ module Rbeapi
|
|
|
77
77
|
global = {}
|
|
78
78
|
global.merge!(parse_global_timeout)
|
|
79
79
|
global.merge!(parse_global_key)
|
|
80
|
+
global.merge!(parse_global_source)
|
|
80
81
|
resource = { global: global, servers: servers }
|
|
81
82
|
resource
|
|
82
83
|
end
|
|
@@ -116,6 +117,27 @@ module Rbeapi
|
|
|
116
117
|
end
|
|
117
118
|
private :parse_global_timeout
|
|
118
119
|
|
|
120
|
+
##
|
|
121
|
+
# parse_global_source takes a running configuration as a string
|
|
122
|
+
# and parses out the tacacs global source-interface per VRF if it exists
|
|
123
|
+
# in the configuration. An empty Hash is returned if there is no global
|
|
124
|
+
# setting configured. The Hash needs to be converted to ordered lists
|
|
125
|
+
# for vrf and source_interface before being merged into a property hash.
|
|
126
|
+
#
|
|
127
|
+
# @api private
|
|
128
|
+
#
|
|
129
|
+
# @return [Hash<Symbol,Object>] Returns the resource hash attributes.
|
|
130
|
+
def parse_global_source
|
|
131
|
+
src = config.scan(/ip tacacs(?:\svrf\s(\w+))?\ssource-interface\s(\w+)/)
|
|
132
|
+
sources = {}
|
|
133
|
+
src.each do |vrf, intf|
|
|
134
|
+
vrf = vrf.nil? ? 'default' : vrf
|
|
135
|
+
sources[vrf] = intf
|
|
136
|
+
end
|
|
137
|
+
{ source_interface: sources }
|
|
138
|
+
end
|
|
139
|
+
private :parse_global_source
|
|
140
|
+
|
|
119
141
|
##
|
|
120
142
|
# servers returns an Array of tacacs server resource hashes. Each hash
|
|
121
143
|
# describes the current state of the tacacs server and is suitable for
|
|
@@ -243,6 +265,32 @@ module Rbeapi
|
|
|
243
265
|
cmd << " port #{opts[:port]}" if opts[:port]
|
|
244
266
|
configure cmd
|
|
245
267
|
end
|
|
268
|
+
|
|
269
|
+
##
|
|
270
|
+
# set_source_interface takes a dictionary mapping the VRF to the desired
|
|
271
|
+
# source interface. Any tacacs source-interface lines in the
|
|
272
|
+
# running-config that are not defined in the hash will be removed, then
|
|
273
|
+
# lines generated from the hash will be applied. This is NOT idempotent,
|
|
274
|
+
# however, it is explicit.
|
|
275
|
+
#
|
|
276
|
+
# @api public
|
|
277
|
+
#
|
|
278
|
+
# @param sources [Hash] A hash mapping the vrf name to the source
|
|
279
|
+
# interface.
|
|
280
|
+
#
|
|
281
|
+
# @return [Boolean] Returns true if there are no errors.
|
|
282
|
+
def set_source_interface(sources)
|
|
283
|
+
existing = config.scan(/ip tacacs.* source-interface.*/)
|
|
284
|
+
desired = []
|
|
285
|
+
sources.each do |vrf, intf|
|
|
286
|
+
vrf_str = vrf == 'default' ? '' : " vrf #{vrf}"
|
|
287
|
+
desired << "ip tacacs#{vrf_str} source-interface #{intf}"
|
|
288
|
+
end
|
|
289
|
+
remove = existing - desired
|
|
290
|
+
cmds = remove.map { |line| "no #{line}" }
|
|
291
|
+
cmds.concat(desired)
|
|
292
|
+
configure cmds
|
|
293
|
+
end
|
|
246
294
|
end
|
|
247
295
|
end
|
|
248
296
|
end
|
data/lib/rbeapi/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbeapi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.3'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Sprygada
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-04-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: inifile
|
|
@@ -350,7 +350,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
350
350
|
version: '0'
|
|
351
351
|
requirements: []
|
|
352
352
|
rubyforge_project:
|
|
353
|
-
rubygems_version: 2.6.
|
|
353
|
+
rubygems_version: 2.6.14
|
|
354
354
|
signing_key:
|
|
355
355
|
specification_version: 4
|
|
356
356
|
summary: This Gem library provides a Ruby interface to the Arista EOS command API
|
|
@@ -444,4 +444,3 @@ test_files:
|
|
|
444
444
|
- spec/unit/rbeapi/switchconfig2_spec.rb
|
|
445
445
|
- spec/unit/rbeapi/switchconfig3_spec.rb
|
|
446
446
|
- spec/unit/rbeapi/switchconfig_spec.rb
|
|
447
|
-
has_rdoc:
|