rbeapi 0.1.0
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.
- 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
|