rbeapi 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +35 -0
- data/Gemfile +25 -0
- data/Guardfile +15 -0
- data/LICENSE +28 -0
- data/README.md +218 -0
- data/Rakefile +12 -0
- data/lib/rbeapi.rb +32 -0
- data/lib/rbeapi/api.rb +135 -0
- data/lib/rbeapi/api/aaa.rb +410 -0
- data/lib/rbeapi/api/dns.rb +198 -0
- data/lib/rbeapi/api/interfaces.rb +1193 -0
- data/lib/rbeapi/api/ipinterfaces.rb +328 -0
- data/lib/rbeapi/api/logging.rb +157 -0
- data/lib/rbeapi/api/mlag.rb +519 -0
- data/lib/rbeapi/api/ntp.rb +201 -0
- data/lib/rbeapi/api/ospf.rb +214 -0
- data/lib/rbeapi/api/prefixlists.rb +98 -0
- data/lib/rbeapi/api/radius.rb +317 -0
- data/lib/rbeapi/api/radius.rb.old +399 -0
- data/lib/rbeapi/api/routemaps.rb +100 -0
- data/lib/rbeapi/api/snmp.rb +427 -0
- data/lib/rbeapi/api/staticroutes.rb +88 -0
- data/lib/rbeapi/api/stp.rb +381 -0
- data/lib/rbeapi/api/switchports.rb +272 -0
- data/lib/rbeapi/api/system.rb +87 -0
- data/lib/rbeapi/api/tacacs.rb +236 -0
- data/lib/rbeapi/api/varp.rb +181 -0
- data/lib/rbeapi/api/vlans.rb +338 -0
- data/lib/rbeapi/client.rb +454 -0
- data/lib/rbeapi/eapilib.rb +334 -0
- data/lib/rbeapi/netdev/snmp.rb +370 -0
- data/lib/rbeapi/utils.rb +70 -0
- data/lib/rbeapi/version.rb +37 -0
- data/rbeapi.gemspec +32 -0
- data/spec/fixtures/dut.conf +5 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/support/fixtures.rb +114 -0
- data/spec/support/shared_examples_for_api_modules.rb +124 -0
- data/spec/system/api_ospf_interfaces_spec.rb +58 -0
- data/spec/system/api_ospf_spec.rb +111 -0
- data/spec/system/api_varp_interfaces_spec.rb +60 -0
- data/spec/system/api_varp_spec.rb +44 -0
- data/spec/system/rbeapi/api/dns_spec.rb +77 -0
- data/spec/system/rbeapi/api/interfaces_base_spec.rb +94 -0
- data/spec/system/rbeapi/api/interfaces_ethernet_spec.rb +135 -0
- data/spec/system/rbeapi/api/interfaces_portchannel_spec.rb +188 -0
- data/spec/system/rbeapi/api/interfaces_vxlan_spec.rb +115 -0
- data/spec/system/rbeapi/api/ipinterfaces_spec.rb +97 -0
- data/spec/system/rbeapi/api/logging_spec.rb +65 -0
- data/spec/system/rbeapi/api/mlag_interfaces_spec.rb +80 -0
- data/spec/system/rbeapi/api/mlag_spec.rb +94 -0
- data/spec/system/rbeapi/api/ntp_spec.rb +76 -0
- data/spec/system/rbeapi/api/snmp_spec.rb +68 -0
- data/spec/system/rbeapi/api/stp_instances_spec.rb +61 -0
- data/spec/system/rbeapi/api/stp_interfaces_spec.rb +71 -0
- data/spec/system/rbeapi/api/stp_spec.rb +57 -0
- data/spec/system/rbeapi/api/switchports_spec.rb +135 -0
- data/spec/system/rbeapi/api/system_spec.rb +38 -0
- data/spec/system/rbeapi/api/vlans_spec.rb +121 -0
- metadata +274 -0
@@ -0,0 +1,328 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014, Arista Networks, Inc.
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are
|
7
|
+
# met:
|
8
|
+
#
|
9
|
+
# Redistributions of source code must retain the above copyright notice,
|
10
|
+
# this list of conditions and the following disclaimer.
|
11
|
+
#
|
12
|
+
# Redistributions in binary form must reproduce the above copyright
|
13
|
+
# notice, this list of conditions and the following disclaimer in the
|
14
|
+
# documentation and/or other materials provided with the distribution.
|
15
|
+
#
|
16
|
+
# Neither the name of Arista Networks nor the names of its
|
17
|
+
# contributors may be used to endorse or promote products derived from
|
18
|
+
# this software without specific prior written permission.
|
19
|
+
#
|
20
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS
|
24
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
25
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
26
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
27
|
+
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
28
|
+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
29
|
+
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
30
|
+
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
#
|
32
|
+
require 'rbeapi/api'
|
33
|
+
|
34
|
+
module Rbeapi
|
35
|
+
|
36
|
+
module Api
|
37
|
+
#
|
38
|
+
# The Ipinterface class provides an instance for managing logical
|
39
|
+
# IP interfaces configured using eAPI.
|
40
|
+
class Ipinterfaces < Entity
|
41
|
+
|
42
|
+
DEFAULT_ADDRESS = ''
|
43
|
+
|
44
|
+
##
|
45
|
+
# get returns a resource hash that represents the configuration of the IP
|
46
|
+
# interface from the nodes running configuration.
|
47
|
+
#
|
48
|
+
# @example
|
49
|
+
# {
|
50
|
+
# address: <string>
|
51
|
+
# mtu: <string>
|
52
|
+
# helper_addresses: array<strings>
|
53
|
+
# }
|
54
|
+
#
|
55
|
+
# @param [String] :name The full interface identifier of the interface to
|
56
|
+
# return the resource configuration hash for. The name must be the
|
57
|
+
# full name (Ethernet, not Et)
|
58
|
+
#
|
59
|
+
# @return [nil, Hash<Symbol, Object>] returns the ip interface
|
60
|
+
# configuration as a hash. If the provided interface name is not a
|
61
|
+
# configured ip address, nil is returned.
|
62
|
+
def get(name)
|
63
|
+
config = get_block("interface #{name}")
|
64
|
+
return nil unless config
|
65
|
+
return nil if /\s{3}switchport$/ =~ config
|
66
|
+
|
67
|
+
response = {}
|
68
|
+
response.merge!(parse_address(config))
|
69
|
+
response.merge!(parse_mtu(config))
|
70
|
+
response.merge!(parse_helper_addresses(config))
|
71
|
+
response
|
72
|
+
end
|
73
|
+
|
74
|
+
##
|
75
|
+
# getall returns a hash object that represents all ip interfaces
|
76
|
+
# configured on the node from the current running configuration.
|
77
|
+
#
|
78
|
+
# @example
|
79
|
+
# {
|
80
|
+
# <name>: {...}
|
81
|
+
# }
|
82
|
+
#
|
83
|
+
# @see get Ipaddress resource example
|
84
|
+
#
|
85
|
+
# @return [Hash<Symbol, Object>] returns a hash object that
|
86
|
+
# represents all of the configured IP addresses found. If no IP
|
87
|
+
# addresses are configured, then an empty hash is returned
|
88
|
+
def getall
|
89
|
+
interfaces = config.scan(/(?<=^interface\s).+/)
|
90
|
+
interfaces.each_with_object({}) do |name, hsh|
|
91
|
+
values = get name
|
92
|
+
hsh[name] = values if values
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# parse_address scans the provided configuration block and extracts
|
98
|
+
# the interface address, if configured, and returns it. If there is
|
99
|
+
# no IP address configured, then this method will return the
|
100
|
+
# DEFAULT_ADDRESS. The return value is intended to be merged into the
|
101
|
+
# ipaddress resource hash.
|
102
|
+
#
|
103
|
+
# @api private
|
104
|
+
# @param [String] :config The IP interface configuration block returned
|
105
|
+
# from the node's running configuration
|
106
|
+
#
|
107
|
+
# @return [Hash<Symbol, Object>] resource hash attribute
|
108
|
+
def parse_address(config)
|
109
|
+
mdata = /(?<=^\s{3}ip\saddress\s)(.+)$/.match(config)
|
110
|
+
{ address: mdata.nil? ? DEFAULT_ADDRESS : mdata[1] }
|
111
|
+
end
|
112
|
+
private :parse_address
|
113
|
+
|
114
|
+
##
|
115
|
+
# parse_mtu scans the provided configuration block and extracts the IP
|
116
|
+
# interface MTU value. The MTU value is expected to always be present in
|
117
|
+
# the configuration blcok. The return value is intended to be merged
|
118
|
+
# into the ipaddress resource hash
|
119
|
+
#
|
120
|
+
# @api private
|
121
|
+
#
|
122
|
+
# @param [String] :config The IP interface configuration block returned
|
123
|
+
# from the node's running configuration
|
124
|
+
#
|
125
|
+
# @return [Hash<Symbol, Object>] resource hash attribute
|
126
|
+
def parse_mtu(config)
|
127
|
+
mdata = /(?<=mtu\s)(\d+)$/.match(config)
|
128
|
+
{ mtu: mdata.nil? ? '': mdata[1] }
|
129
|
+
end
|
130
|
+
private :parse_mtu
|
131
|
+
|
132
|
+
##
|
133
|
+
# parse_helper_addresses scans the provided configuraiton block and
|
134
|
+
# extracts any configured IP helper address values. The interface could
|
135
|
+
# be configured with one or more helper addresses. If no helper
|
136
|
+
# addresses are configured, then an empty array is set in the return
|
137
|
+
# hash. The return value is intended to be merged into the ipaddress
|
138
|
+
# resource hash
|
139
|
+
#
|
140
|
+
# @api private
|
141
|
+
#
|
142
|
+
# @param [String] :config The IP interface configuration block returned
|
143
|
+
# from the node's running configuration
|
144
|
+
#
|
145
|
+
# @return [Hash<Symbol, Object>] resource hash attribute
|
146
|
+
def parse_helper_addresses(config)
|
147
|
+
helpers = config.scan(/(?<=\s{3}ip\shelper-address\s).+$/)
|
148
|
+
{ helper_addresses: helpers }
|
149
|
+
end
|
150
|
+
private :parse_helper_addresses
|
151
|
+
|
152
|
+
##
|
153
|
+
# create will create a new IP interface on the node. If the ip interface
|
154
|
+
# already exists in the configuration, this method will still return
|
155
|
+
# successful. This method will cause an existing layer 2 interface
|
156
|
+
# (switchport) to be deleted if it exists in the node's configuration.
|
157
|
+
#
|
158
|
+
# @eos_version 4.13.7M
|
159
|
+
#
|
160
|
+
# @commands
|
161
|
+
# interface <name>
|
162
|
+
# no switchport
|
163
|
+
#
|
164
|
+
# @param [String] :name The full interface name of the port to create the
|
165
|
+
# logical interface on. The name must be the full interface
|
166
|
+
# identifier
|
167
|
+
#
|
168
|
+
# @return [Boolean] returns true if the commands complete successfully
|
169
|
+
def create(name)
|
170
|
+
configure(["interface #{name}", 'no switchport'])
|
171
|
+
end
|
172
|
+
|
173
|
+
##
|
174
|
+
# delete will delete an existing IP interface in the node's current
|
175
|
+
# configuration. If the IP interface does not exist on the specified
|
176
|
+
# interface, this method will still return success. This command will
|
177
|
+
# default the interface back to being a switchport.
|
178
|
+
#
|
179
|
+
# @eos_version 4.13.7M
|
180
|
+
#
|
181
|
+
# @commands
|
182
|
+
# interface <name>
|
183
|
+
# no ip address
|
184
|
+
# switchport
|
185
|
+
#
|
186
|
+
# @param [String] :name The full interface name of the port to delete the
|
187
|
+
# logical interface from. The name must be the full interface name
|
188
|
+
#
|
189
|
+
# @return [Boolean] returns true if the commands complete successfully
|
190
|
+
def delete(name)
|
191
|
+
configure(["interface #{name}", 'no ip address', 'switchport'])
|
192
|
+
end
|
193
|
+
|
194
|
+
##
|
195
|
+
# set_address configures a logical IP interface with an address. The
|
196
|
+
# address value must be in the form of A.B.C.D/E. If no value is
|
197
|
+
# provided, then the interface address is negated using the config no
|
198
|
+
# keyword. If the default option is set to true, then the ip address
|
199
|
+
# value is defaulted using the default keyword. The default keyword has
|
200
|
+
# precedence over the value keyword if both options are specified
|
201
|
+
#
|
202
|
+
# @eos_version 4.13.7M
|
203
|
+
#
|
204
|
+
# @commands
|
205
|
+
# interface <name>
|
206
|
+
# ip address <value>
|
207
|
+
# no ip address
|
208
|
+
# default ip address
|
209
|
+
#
|
210
|
+
# @param [String] :name The name of the interface to configure the
|
211
|
+
# address in the node. The name must be the full interface name.
|
212
|
+
#
|
213
|
+
# @param [Hash] :opts Optional keyword arguments
|
214
|
+
#
|
215
|
+
# @option :opts [String] :value The value to configure the address to
|
216
|
+
# for the specified interface name. The value must be in the form
|
217
|
+
# of A.B.C.D/E
|
218
|
+
#
|
219
|
+
# @option :opts [Boolean] :default Configure the ip address value using
|
220
|
+
# the default keyword
|
221
|
+
#
|
222
|
+
# @return [Boolean] returns true if the command completed successfully
|
223
|
+
def set_address(name, opts = {})
|
224
|
+
value = opts[:value]
|
225
|
+
default = opts[:default] || false
|
226
|
+
|
227
|
+
cmds = ["interface #{name}"]
|
228
|
+
case default
|
229
|
+
when true
|
230
|
+
cmds << 'default ip address'
|
231
|
+
when false
|
232
|
+
cmds << (value.nil? ? 'no ip address' : "ip address #{value}")
|
233
|
+
end
|
234
|
+
configure cmds
|
235
|
+
end
|
236
|
+
|
237
|
+
##
|
238
|
+
# set_mtu configures the IP mtu value of the ip interface in the nodes
|
239
|
+
# configuration. If the value is not provided, then the ip mtu value is
|
240
|
+
# configured using the no keyword. If the default keywork option is
|
241
|
+
# provided and set to true then the ip mtu value is configured using the
|
242
|
+
# default keyword. The default keyword has precedence over the value
|
243
|
+
# keyword if both options are specified.
|
244
|
+
#
|
245
|
+
# @eos_version 4.13.7M
|
246
|
+
#
|
247
|
+
# @commands
|
248
|
+
# interface <name>
|
249
|
+
# mtu <value>
|
250
|
+
# no mtu
|
251
|
+
# default mtu
|
252
|
+
#
|
253
|
+
# @param [String] :name The name of the interface to configure the
|
254
|
+
# address in the node. The name must be the full interface name.
|
255
|
+
#
|
256
|
+
# @param [Hash] :opts Optional keyword arguments
|
257
|
+
#
|
258
|
+
# @option :opts [String] :value The value to configure the IP MTU to in
|
259
|
+
# the nodes configuration. Valid values are in the range of 68 to 9214
|
260
|
+
# bytes. The default is 1500 bytes
|
261
|
+
#
|
262
|
+
# @option :opts [Boolean] :default Configure the ip mtu value using
|
263
|
+
# the default keyword
|
264
|
+
#
|
265
|
+
# @return [Boolean] returns true if the command completed successfully
|
266
|
+
def set_mtu(name, opts = {})
|
267
|
+
value = opts[:value]
|
268
|
+
default = opts[:default] || false
|
269
|
+
|
270
|
+
cmds = ["interface #{name}"]
|
271
|
+
case default
|
272
|
+
when true
|
273
|
+
cmds << 'default mtu'
|
274
|
+
when false
|
275
|
+
cmds << (value.nil? ? 'no mtu' : "mtu #{value}")
|
276
|
+
end
|
277
|
+
configure cmds
|
278
|
+
end
|
279
|
+
|
280
|
+
##
|
281
|
+
# set_helper_addresses configures the list of helper addresses on the ip
|
282
|
+
# interface. An IP interface can have one or more helper addresses
|
283
|
+
# configured. If no value is provided, the helper address configuration
|
284
|
+
# is set using the no keyword. If the default option is specified and
|
285
|
+
# set to true, then the helper address values are defaulted using the
|
286
|
+
# default keyword.
|
287
|
+
#
|
288
|
+
# @eos_version 4.13.7M
|
289
|
+
#
|
290
|
+
# @commands
|
291
|
+
# interface <name>
|
292
|
+
# ip helper-address <value>
|
293
|
+
# no ip helper-address
|
294
|
+
# default ip helper-address
|
295
|
+
#
|
296
|
+
# @param [String] :name The name of the interface to configure the
|
297
|
+
# address in the node. The name must be the full interface name.
|
298
|
+
#
|
299
|
+
# @param [Hash] :opts Optional keyword arguments
|
300
|
+
#
|
301
|
+
# @option :opts [Array] :value The list of IP addresses to configure as
|
302
|
+
# helper address on the interface. The helper addresses must be valid
|
303
|
+
# addresses in the main interface's subnet.
|
304
|
+
#
|
305
|
+
# @option :opts [Boolean] :default Configure the ip helper address values
|
306
|
+
# using the default keyword
|
307
|
+
#
|
308
|
+
def set_helper_addresses(name, opts = {})
|
309
|
+
value = opts[:value]
|
310
|
+
default = opts[:default] || false
|
311
|
+
|
312
|
+
cmds = ["interface #{name}"]
|
313
|
+
case default
|
314
|
+
when true
|
315
|
+
cmds << 'default ip helper-address'
|
316
|
+
when false
|
317
|
+
if value.nil?
|
318
|
+
cmds << 'no ip helper-address'
|
319
|
+
else
|
320
|
+
cmds << 'no ip helper-address'
|
321
|
+
value.each { |addr| cmds << "ip helper-address #{addr}" }
|
322
|
+
end
|
323
|
+
end
|
324
|
+
configure cmds
|
325
|
+
end
|
326
|
+
end
|
327
|
+
end
|
328
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014, Arista Networks, Inc.
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are
|
7
|
+
# met:
|
8
|
+
#
|
9
|
+
# Redistributions of source code must retain the above copyright notice,
|
10
|
+
# this list of conditions and the following disclaimer.
|
11
|
+
#
|
12
|
+
# Redistributions in binary form must reproduce the above copyright
|
13
|
+
# notice, this list of conditions and the following disclaimer in the
|
14
|
+
# documentation and/or other materials provided with the distribution.
|
15
|
+
#
|
16
|
+
# Neither the name of Arista Networks nor the names of its
|
17
|
+
# contributors may be used to endorse or promote products derived from
|
18
|
+
# this software without specific prior written permission.
|
19
|
+
#
|
20
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARISTA NETWORKS
|
24
|
+
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
25
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
26
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
27
|
+
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
28
|
+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
29
|
+
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
30
|
+
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
#
|
32
|
+
require 'rbeapi/api'
|
33
|
+
|
34
|
+
module Rbeapi
|
35
|
+
|
36
|
+
module Api
|
37
|
+
|
38
|
+
class Logging < Entity
|
39
|
+
|
40
|
+
##
|
41
|
+
# get returns the current logging configuration hash extracted from the
|
42
|
+
# nodes running configuration.
|
43
|
+
#
|
44
|
+
# @example
|
45
|
+
# {
|
46
|
+
# enable: [true, false]
|
47
|
+
# hosts: array<strings>
|
48
|
+
# }
|
49
|
+
#
|
50
|
+
# @return [Hash<Symbol, Object>] returns the logging resource as a hash
|
51
|
+
# object from the nodes current configuration
|
52
|
+
def get
|
53
|
+
response = {}
|
54
|
+
response.merge!(parse_enable)
|
55
|
+
response.merge!(parse_hosts)
|
56
|
+
response
|
57
|
+
end
|
58
|
+
|
59
|
+
##
|
60
|
+
# parse_enable scans the nodes current running configuration and extracts
|
61
|
+
# the current enabled state of the logging facility. The logging enable
|
62
|
+
# command is expected to always be in the node's configuration. This
|
63
|
+
# methods return value is intended to be merged into the logging resource
|
64
|
+
# hash.
|
65
|
+
def parse_enable
|
66
|
+
value = /no logging on/ !~ config
|
67
|
+
{ enable: value }
|
68
|
+
end
|
69
|
+
|
70
|
+
##
|
71
|
+
# parse_hosts scans the nodes current running configuration and extracts
|
72
|
+
# the configured logging host destinations if any are configured. If no
|
73
|
+
# logging hosts are configured, then the value for hosts will be an empty
|
74
|
+
# array. The return value is intended to be merged into the logging
|
75
|
+
# resource hash
|
76
|
+
def parse_hosts
|
77
|
+
hosts = config.scan(/(?<=^logging\shost\s)[^\s]+/)
|
78
|
+
{ hosts: hosts }
|
79
|
+
end
|
80
|
+
|
81
|
+
##
|
82
|
+
# set_enable configures the global logging instance on the node as either
|
83
|
+
# enabled or disabled. If the value is set to true then logging is
|
84
|
+
# globally enabled and if set to false, it is globally disabled. If no
|
85
|
+
# value is specified, then the no keyword is used to configure the
|
86
|
+
# logging enable value. If the default keyword is specified and set to
|
87
|
+
# true, then the configuration is defaulted using the default keyword.
|
88
|
+
# The default keyword option takes precedence over the value keyword if
|
89
|
+
# both options are specified.
|
90
|
+
#
|
91
|
+
# @eos_version 4.13.7M
|
92
|
+
#
|
93
|
+
# @commands
|
94
|
+
# logging on
|
95
|
+
# no logging on
|
96
|
+
# default logging on
|
97
|
+
#
|
98
|
+
# @param [Hash] :opts Optional keyword arguments
|
99
|
+
#
|
100
|
+
# @option :opts [Boolean] :value Enables logging globally if value is true or
|
101
|
+
# disabled logging glboally if value is false
|
102
|
+
#
|
103
|
+
# @option :opts [Boolean] :default Configure the ip address value using
|
104
|
+
# the default keyword
|
105
|
+
#
|
106
|
+
# @return [Boolean] returns true if the command completed successfully
|
107
|
+
def set_enable(opts = {})
|
108
|
+
value = opts[:value]
|
109
|
+
default = opts[:default] || false
|
110
|
+
|
111
|
+
case default
|
112
|
+
when true
|
113
|
+
cmd = 'default logging on'
|
114
|
+
when false
|
115
|
+
cmd = value ? 'logging on' : 'no logging on'
|
116
|
+
end
|
117
|
+
configure cmd
|
118
|
+
end
|
119
|
+
|
120
|
+
##
|
121
|
+
# add_host configures a new logging destination host address or hostname
|
122
|
+
# to the list of logging destinations. If the host is already configured
|
123
|
+
# in the list of destinations, this method will return successfully.
|
124
|
+
#
|
125
|
+
# @eos_version 4.13.7M
|
126
|
+
#
|
127
|
+
# @commands
|
128
|
+
# logging host <name>
|
129
|
+
#
|
130
|
+
# @param [String] :name The host name or ip address of the destination
|
131
|
+
# node to send logging information to.
|
132
|
+
#
|
133
|
+
# @return [Boolean] returns true if the command completed successfully
|
134
|
+
def add_host(name)
|
135
|
+
configure "logging host #{name}"
|
136
|
+
end
|
137
|
+
|
138
|
+
##
|
139
|
+
# remove_host deletes a logging destination host name or address form the
|
140
|
+
# list of logging destinations. If the host is not in the list of
|
141
|
+
# configured hosts, this method will still return successfully.
|
142
|
+
#
|
143
|
+
# @eos_version 4.13.7M
|
144
|
+
#
|
145
|
+
# @commands
|
146
|
+
# no logging host <name>
|
147
|
+
#
|
148
|
+
# @param [String] :name The host name or ip address of the destination
|
149
|
+
# host to remove from the nodes current configuration
|
150
|
+
#
|
151
|
+
# @return [Boolean] returns true if the commands completed successfully
|
152
|
+
def remove_host(name)
|
153
|
+
configure "no logging host #{name}"
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|