rbeapi 0.5.1 → 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.
Files changed (57) hide show
  1. data/CHANGELOG.md +211 -76
  2. data/Gemfile +14 -3
  3. data/README.md +74 -38
  4. data/Rakefile +38 -17
  5. data/gems/inifile/inifile.spec.tmpl +31 -4
  6. data/gems/net_http_unix/net_http_unix.spec.tmpl +34 -8
  7. data/gems/netaddr/netaddr.spec.tmpl +31 -5
  8. data/guide/getting-started.rst +95 -64
  9. data/guide/installation.rst +27 -6
  10. data/guide/release-notes.rst +5 -1
  11. data/guide/testing.rst +5 -2
  12. data/guide/upgrading.rst +2 -0
  13. data/lib/rbeapi/api/dns.rb +8 -2
  14. data/lib/rbeapi/api/interfaces.rb +107 -21
  15. data/lib/rbeapi/api/ipinterfaces.rb +48 -0
  16. data/lib/rbeapi/api/prefixlists.rb +53 -23
  17. data/lib/rbeapi/api/routemaps.rb +11 -0
  18. data/lib/rbeapi/api/stp.rb +6 -3
  19. data/lib/rbeapi/api/switchports.rb +5 -11
  20. data/lib/rbeapi/api/system.rb +1 -1
  21. data/lib/rbeapi/api/users.rb +2 -0
  22. data/lib/rbeapi/api/varp.rb +6 -0
  23. data/lib/rbeapi/api/vlans.rb +44 -0
  24. data/lib/rbeapi/api/vrrp.rb +13 -0
  25. data/lib/rbeapi/client.rb +19 -4
  26. data/lib/rbeapi/switchconfig.rb +330 -0
  27. data/lib/rbeapi/version.rb +1 -1
  28. data/rbeapi.gemspec +2 -0
  29. data/rbeapi.spec.tmpl +30 -3
  30. data/spec/fixtures/.gitignore +1 -0
  31. data/spec/support/matchers/switch_config_sections.rb +80 -0
  32. data/spec/system/rbeapi/api/interfaces_base_spec.rb +32 -3
  33. data/spec/system/rbeapi/api/interfaces_ethernet_spec.rb +56 -8
  34. data/spec/system/rbeapi/api/interfaces_portchannel_spec.rb +33 -1
  35. data/spec/system/rbeapi/api/interfaces_vxlan_spec.rb +27 -0
  36. data/spec/system/rbeapi/api/ipinterfaces_spec.rb +34 -1
  37. data/spec/system/rbeapi/api/prefixlists_spec.rb +198 -0
  38. data/spec/system/rbeapi/api/stp_instances_spec.rb +49 -5
  39. data/spec/system/rbeapi/api/switchports_spec.rb +15 -9
  40. data/spec/system/rbeapi/api/vlans_spec.rb +46 -0
  41. data/spec/unit/rbeapi/api/interfaces/base_spec.rb +1 -1
  42. data/spec/unit/rbeapi/api/interfaces/ethernet_spec.rb +1 -1
  43. data/spec/unit/rbeapi/api/interfaces/portchannel_spec.rb +9 -2
  44. data/spec/unit/rbeapi/api/interfaces/vxlan_spec.rb +1 -1
  45. data/spec/unit/rbeapi/api/prefixlists/default_spec.rb +202 -0
  46. data/spec/unit/rbeapi/api/prefixlists/fixture_prefixlists.text +11 -0
  47. data/spec/unit/rbeapi/api/routemaps/default_spec.rb +5 -0
  48. data/spec/unit/rbeapi/api/switchports/default_spec.rb +4 -4
  49. data/spec/unit/rbeapi/api/system/default_spec.rb +5 -0
  50. data/spec/unit/rbeapi/api/system/fixture_system.text +1 -0
  51. data/spec/unit/rbeapi/api/vlans/default_spec.rb +30 -0
  52. data/spec/unit/rbeapi/api/vrrp/default_spec.rb +10 -0
  53. data/spec/unit/rbeapi/client_spec.rb +42 -0
  54. data/spec/unit/rbeapi/switchconfig2_spec.rb +119 -0
  55. data/spec/unit/rbeapi/switchconfig3_spec.rb +125 -0
  56. data/spec/unit/rbeapi/switchconfig_spec.rb +335 -0
  57. metadata +21 -7
@@ -3,18 +3,37 @@ Installation
3
3
 
4
4
  .. contents:: :local:
5
5
 
6
- The source code for rbeapi is provided on Github at http://github.com/arista-eosplus/rbeapi. All current development is done in the develop branch. Stable released versions are tagged in the master branch and uploaded to RubyGems.
6
+ The source code for rbeapi is provided on Github at
7
+ http://github.com/arista-eosplus/rbeapi. All current development is done in the
8
+ develop branch. Stable released versions are tagged in the master branch and
9
+ uploaded to RubyGems.
7
10
 
8
- To install the latest stable version of rbeapi, simply run gem install rbeapi
11
+ To install the latest stable version of rbeapi, simply run ``gem install
12
+ rbeapi``
9
13
 
10
- To install the latest development version from Github, simply clone the develop branch and run
14
+ To install the latest development version from Github, simply clone the develop
15
+ branch and run
16
+
17
+ .. code-block:: console
11
18
 
12
19
  $ rake build
13
20
  $ rake install
14
21
 
15
- To create an RPM, run rake rpm
22
+ To create an RPM, run ``rake rpm``
23
+
24
+ To generate a SWIX file for EOS with necessary dependencies, run ``rake
25
+ all_rpms`` then follow the swix create instructions, provided by the build.
26
+ NOTE: Puppet provides a puppet agent SWIX which includes Ruby 1.9.3 in
27
+ /opt/puppetlabs/bin/ which is different from where you might otherwise
28
+ install Ruby. If you have installed the puppet-enterprise 3.x SWIX, then
29
+ you should build and use the rbeapi-puppet3 swix, below. If you have
30
+ installed the puppet-enterprise 2015.x SWIX, then you should build and use
31
+ the rbeapi-puppet-aio swix, below. The Chef client omnibus install also
32
+ includes its own version of Ruby in /opt/chef/bin/, thus the rbeapi-chef
33
+ swix should be used. Otherwise, if you have installed at least Ruby
34
+ 1.9.3 in the standard system location, then the rbeapi SWIX may be used.
16
35
 
17
- To generate a SWIX file for EOS with necessary dependencies, run rake all_rpms then follow the swix create instructions, provided by the build. NOTE: PuppetLabs provides a puppet agent SWIX which includes Ruby 1.9.3 in /opt/puppet/bin/ which is different from where you might otherwise install Ruby. If you have installed the puppet-enterprise 3.x SWIX, then you should build and use the rbeapi-puppet3 swix, below. If you have installed the puppet-enterprise 2015.x SWIX, then you should build and use the rbeapi-puppet-aio swix, below. Otherwise, if you have installed at least Ruby 1.9.3 in the standard system location, then the rbeapi SWIX may be used.
36
+ .. code-block:: console
18
37
 
19
38
  $ bundle install --path .bundle/gems/
20
39
  $ bundle exec rake all_rpms
@@ -43,7 +62,9 @@ The source code for rbeapi is provided on Github at http://github.com/arista-eos
43
62
  rubygem-netaddr-puppet-aio-1.5.0-2.eos4.noarch.rpm \
44
63
  rubygem-net_http_unix-puppet-aio-0.2.1-3.eos4.noarch.rpm
45
64
 
46
- On EOS:
65
+ On EOS:
66
+
67
+ .. code-block:: console
47
68
 
48
69
  Arista# copy <URI-to-RPMs> flash:
49
70
  Arista# bash
@@ -3,4 +3,8 @@ Release Notes
3
3
 
4
4
  .. toctree::
5
5
  :maxdepth: 2
6
- :titlesonly:
6
+ :titlesonly:
7
+
8
+ For the most up-to-date release notes, see the `GitHub release
9
+ <https://github.com/arista-eosplus/rbeapi/releases>`_ pages or the `CHANGELOG
10
+ <https://github.com/arista-eosplus/rbeapi/blob/develop/CHANGELOG.md>`_.
data/guide/testing.rst CHANGED
@@ -3,6 +3,9 @@ Testing Modules
3
3
 
4
4
  .. contents:: :local:
5
5
 
6
- The rbeapi library provides spec tests. To run the spec tests, you will need to update the dut.conf file found in spec/fixtures. The switch used for testing should have at least interfaces Ethernet1-7.
6
+ The rbeapi library provides spec tests. To run the spec tests, you will need to
7
+ update the ``spec/fixtures/dut.conf`` file. The switch used for testing
8
+ must have at least interfaces Ethernet1-7.
7
9
 
8
- To run the spec tests, run bundle exec rspec spec from the root of the rbeapi source folder.
10
+ To run the spec tests, run ``bundle exec rspec spec`` from the root of the
11
+ rbeapi source folder.
data/guide/upgrading.rst CHANGED
@@ -5,6 +5,8 @@ Upgrading
5
5
 
6
6
  On EOS:
7
7
 
8
+ .. code-block:: console
9
+
8
10
  Arista# no extension pe-rbeapi-0.3.0-1.swix
9
11
  Arista# extension rbeapi-puppet3-0.4.0-1.swix
10
12
  Arista# copy installed-extensions boot-extensions
@@ -198,19 +198,24 @@ module Rbeapi
198
198
  # no ip domain-list
199
199
  # default ip domain-list
200
200
  #
201
- # @option value [Array] The set of domain names to configure on the
201
+ # @option opts value [Array] The set of domain names to configure on the
202
202
  # node. The list of domain names will be replace in the nodes running
203
203
  # configuration by the list provided in value.
204
204
  #
205
- # @option default [Boolean] Configures the ip domain-list using the
205
+ # @option opts default [Boolean] Configures the ip domain-list using the
206
206
  # default keyword argument.
207
207
  #
208
208
  # @return [Boolean] Returns true if the commands completed successfully.
209
+ # rubocop:disable Metrics/MethodLength
209
210
  def set_domain_list(opts = {})
210
211
  value = opts[:value]
211
212
  enable = opts.fetch(:enable, true)
212
213
  default = opts[:default] || false
213
214
 
215
+ if value
216
+ fail ArgumentError, 'value must be an Array' unless value.is_a?(Array)
217
+ end
218
+
214
219
  cmds = []
215
220
  case default
216
221
  when true
@@ -229,6 +234,7 @@ module Rbeapi
229
234
  end
230
235
  configure cmds
231
236
  end
237
+ # rubocop:enable Metrics/MethodLength
232
238
 
233
239
  ##
234
240
  # add_domain_list adds an ip domain-list.
@@ -144,6 +144,7 @@ module Rbeapi
144
144
  # that is common to all interfaces configured in EOS.
145
145
  class BaseInterface < Entity
146
146
  DEFAULT_INTF_DESCRIPTION = ''
147
+ DEFAULT_LOAD_INTERVAL = ''
147
148
 
148
149
  ##
149
150
  # get returns the specified interface resource hash that represents the
@@ -157,6 +158,7 @@ module Rbeapi
157
158
  # type: 'generic'
158
159
  # description: <string>
159
160
  # shutdown: [true, false]
161
+ # load_interval: <string>
160
162
  # }
161
163
  #
162
164
  # @param name [String] The name of the interface to return from the
@@ -172,6 +174,7 @@ module Rbeapi
172
174
  response = { name: name, type: 'generic' }
173
175
  response.merge!(parse_description(config))
174
176
  response.merge!(parse_shutdown(config))
177
+ response.merge!(parse_load_interval(config))
175
178
  response
176
179
  end
177
180
 
@@ -213,6 +216,24 @@ module Rbeapi
213
216
  end
214
217
  private :parse_shutdown
215
218
 
219
+ ##
220
+ # parse_load_interval scans the provided configuration block and
221
+ # parse the load-interval value. If the interface load-interval
222
+ # value is not configured, then this method will return the value of
223
+ # DEFAULT_LOAD_INTERVAL. The hash returned is intended to be merged into
224
+ # the interface resource hash.
225
+ #
226
+ # @api private
227
+ #
228
+ # @param config [String] The configuration block to parse.
229
+ #
230
+ # @return [Hash<Symbol, Object>] Returns the resource hash attribute.
231
+ def parse_load_interval(config)
232
+ mdata = /load-interval (\w+)$/.match(config)
233
+ { load_interval: mdata.nil? ? DEFAULT_LOAD_INTERVAL : mdata[1] }
234
+ end
235
+ private :parse_load_interval
236
+
216
237
  ##
217
238
  # create will create a new interface resource in the node's current
218
239
  # configuration with the specified interface name. If the create
@@ -326,6 +347,27 @@ module Rbeapi
326
347
  commands = command_builder('shutdown', opts)
327
348
  configure_interface(name, commands)
328
349
  end
350
+
351
+ ##
352
+ # set_load_interval is a convenience function for configuring the
353
+ # value of interface load-interval
354
+ #
355
+ # @param name [String] The interface name to apply the configuration
356
+ # values to. The name must be the full interface identifier.
357
+ #
358
+ # @param opts [Hash] Optional keyword arguments.
359
+ #
360
+ # @option opts value [String] Specifies the value to configure the
361
+ # load-interval setting for. Valid values are between 5 and 600.
362
+ #
363
+ # @option opts default [Boolean] Configures the load-interval value on
364
+ # the interface using the default keyword.
365
+ #
366
+ # @return [Boolean] Returns true if the command completed successfully.
367
+ def set_load_interval(name, opts = {})
368
+ commands = command_builder('load-interval', opts)
369
+ configure_interface(name, commands)
370
+ end
329
371
  end
330
372
 
331
373
  ##
@@ -334,8 +376,8 @@ module Rbeapi
334
376
  class EthernetInterface < BaseInterface
335
377
  DEFAULT_ETH_FLOWC_TX = 'off'
336
378
  DEFAULT_ETH_FLOWC_RX = 'off'
337
- DEFAULT_SPEED = 'auto'
338
- DEFAULT_FORCED = false
379
+ DEFAULT_SPEED = 'default'
380
+ DEFAULT_LACP_PRIORITY = 32_768
339
381
 
340
382
  ##
341
383
  # get returns the specified Ethernet interface resource hash that
@@ -347,11 +389,12 @@ module Rbeapi
347
389
  # type: <string>,
348
390
  # description: <string>,
349
391
  # shutdown: <boolean>,
392
+ # load_interval: <string>
350
393
  # speed: <string>,
351
- # forced: <boolean>,
352
394
  # sflow: <boolean>,
353
395
  # flowcontrol_send: <string>,
354
396
  # flowcontrol_receive: <string>
397
+ # lacp_priority: <integer>
355
398
  # }
356
399
  #
357
400
  # @param name [String] The interface name to return a resource hash
@@ -371,6 +414,7 @@ module Rbeapi
371
414
  response.merge!(parse_sflow(config))
372
415
  response.merge!(parse_flowcontrol_send(config))
373
416
  response.merge!(parse_flowcontrol_receive(config))
417
+ response.merge!(parse_lacp_priority(config))
374
418
  response
375
419
  end
376
420
 
@@ -386,10 +430,8 @@ module Rbeapi
386
430
  #
387
431
  # @return [Hash<Symbol, Object>] Returns the resource hash attribute.
388
432
  def parse_speed(config)
389
- value = config.scan(/speed (forced)?[ ]?(\w+)/).first
390
- return { speed: DEFAULT_SPEED, forced: DEFAULT_FORCED } unless value
391
- (forced, value) = value.first
392
- { speed: value, forced: !forced.nil? }
433
+ value = config.scan(/speed (.*)/).first
434
+ { speed: value.nil? ? DEFAULT_SPEED : value.first }
393
435
  end
394
436
  private :parse_speed
395
437
 
@@ -446,6 +488,24 @@ module Rbeapi
446
488
  end
447
489
  private :parse_flowcontrol_receive
448
490
 
491
+ ##
492
+ # parse_lacp_priority scans the provided configuration block and parse
493
+ # the lacp port-priority value. If the interface lacp port-priority value
494
+ # is not configured, then this method will return the value of
495
+ # DEFAULT_LACP_PRIORITY. The hash returned is intended to be merged into
496
+ # the interface resource hash.
497
+ #
498
+ # @api private
499
+ #
500
+ # @param config [String] The configuration block to parse.
501
+ #
502
+ # @return [Hash<Symbol, Object>] Returns the resource hash attribute.
503
+ def parse_lacp_priority(config)
504
+ mdata = /lacp port-priority (\d+)$/.match(config)
505
+ { lacp_priority: mdata.nil? ? DEFAULT_LACP_PRIORITY : mdata[1] }
506
+ end
507
+ private :parse_lacp_priority
508
+
449
509
  ##
450
510
  # create overrides the create method from the BaseInterface and raises
451
511
  # an exception because Ethernet interface creation is not supported.
@@ -494,29 +554,21 @@ module Rbeapi
494
554
  # @option opts enable [Boolean] If false then the command is
495
555
  # negated. Default is true.
496
556
  #
497
- # @option opts forced [Boolean] Specifies if auto negotiation should be
498
- # enabled (true) or disabled (false).
499
- #
500
- # @option opts default [Boolean] Configures the sflow value on the
501
- # interface using the default keyword.
502
- #
503
557
  # @return [Boolean] Returns true if the command completed successfully.
504
558
  def set_speed(name, opts = {})
505
559
  value = opts[:value]
506
- forced = opts.fetch(:forced, false)
507
560
  enable = opts.fetch(:enable, true)
508
- default = opts.fetch(:default, false)
509
-
510
- forced = 'forced' if forced
511
- forced = '' if value == 'auto'
561
+ default = (value == :default)
512
562
 
513
563
  cmds = ["interface #{name}"]
514
564
  case default
515
565
  when true
516
566
  cmds << 'default speed'
517
567
  when false
518
- cmds << enable ? "speed #{forced} #{value}" : 'no speed'
568
+ cmd = enable ? "speed #{value}" : 'no speed'
569
+ cmds << cmd
519
570
  end
571
+
520
572
  configure cmds
521
573
  end
522
574
 
@@ -633,6 +685,35 @@ module Rbeapi
633
685
  def set_flowcontrol_receive(name, opts = {})
634
686
  set_flowcontrol(name, 'receive', opts)
635
687
  end
688
+
689
+ ##
690
+ # set_lacp_priority configures the lacp port-priority on the interface.
691
+ # Setting the enable keyword to true enables the lacp port-priority on
692
+ # the interface and setting enable to false disables the lacp
693
+ # port-priority on the interface.
694
+ # If the default keyword is set to true, then the lacp port-priority
695
+ # value is defaulted using the default keyword. The default keyword takes
696
+ # precedence over the enable keyword
697
+ #
698
+ # @since eos_version 4.13.7M
699
+ #
700
+ # @param name [String] The interface name to apply the configuration
701
+ # values to. The name must be the full interface identifier.
702
+ #
703
+ # @param opts [Hash] Optional keyword arguments.
704
+ #
705
+ # @option opts enable [Boolean] Enables sflow if the value is true or
706
+ # disables the lacp port-priority on the interface if false. Default is
707
+ # true.
708
+ #
709
+ # @option opts default [Boolean] Configures the lacp port-priority value
710
+ # on the interface using the default keyword.
711
+ #
712
+ # @return [Boolean] Returns true if the command completed successfully.
713
+ def set_lacp_priority(name, opts = {})
714
+ commands = command_builder('lacp port-priority', opts)
715
+ configure_interface(name, commands)
716
+ end
636
717
  end
637
718
 
638
719
  ##
@@ -654,6 +735,7 @@ module Rbeapi
654
735
  # type: 'portchannel'
655
736
  # description: <string>
656
737
  # shutdown: [true, false]
738
+ # load_interval: <string>
657
739
  # members: array[<strings>]
658
740
  # lacp_mode: [active, passive, on]
659
741
  # minimum_links: <string>
@@ -700,7 +782,7 @@ module Rbeapi
700
782
  grpid = name.scan(/(?<=Port-Channel)\d+/)[0]
701
783
  command = "show port-channel #{grpid} all-ports"
702
784
  config = node.enable(command, encoding: 'text')
703
- values = config.first[:result]['output'].scan(/\bEthernet[^\s]+/)
785
+ values = config.first[:result]['output'].scan(/\bEthernet[^\s]+/).sort
704
786
  { members: values }
705
787
  end
706
788
  private :parse_members
@@ -843,6 +925,9 @@ module Rbeapi
843
925
  #
844
926
  # @return [Boolean] Returns true if the command completed successfully.
845
927
  def set_members(name, members, mode = nil)
928
+ fail ArgumentError, 'members must be an Array' unless
929
+ members.is_a?(Array)
930
+
846
931
  current_members = Set.new parse_members(name)[:members]
847
932
  members = Set.new members
848
933
 
@@ -1021,6 +1106,7 @@ module Rbeapi
1021
1106
  # type: <string>,
1022
1107
  # description: <string>,
1023
1108
  # shutdown: <boolean>,
1109
+ # load_interval: <string>
1024
1110
  # source_interface: <string>,
1025
1111
  # multicast_group: <string>,
1026
1112
  # udp_port: <fixnum>,
@@ -1079,7 +1165,7 @@ module Rbeapi
1079
1165
  #
1080
1166
  # @return [Hash<Symbol, Object>]
1081
1167
  def parse_multicast_group(config)
1082
- mdata = /multicast-group ([^\s]+)$/.match(config)
1168
+ mdata = /^\s*vxlan multicast-group ([^\s]+)$/.match(config)
1083
1169
  { multicast_group: mdata ? mdata[1] : DEFAULT_MCAST_GRP }
1084
1170
  end
1085
1171
  private :parse_multicast_group
@@ -42,6 +42,7 @@ module Rbeapi
42
42
  # IP interfaces configured using eAPI.
43
43
  class Ipinterfaces < Entity
44
44
  DEFAULT_ADDRESS = ''
45
+ DEFAULT_LOAD_INTERVAL = ''
45
46
 
46
47
  ##
47
48
  # get returns a resource hash that represents the configuration of the IP
@@ -52,6 +53,7 @@ module Rbeapi
52
53
  # address: <string>,
53
54
  # mtu: <string>,
54
55
  # helper_addresses: array<strings>
56
+ # load_interval: <string>
55
57
  # }
56
58
  #
57
59
  # @param name [String] The full interface identifier of the interface to
@@ -70,6 +72,7 @@ module Rbeapi
70
72
  response.merge!(parse_address(config))
71
73
  response.merge!(parse_mtu(config))
72
74
  response.merge!(parse_helper_addresses(config))
75
+ response.merge!(parse_load_interval(config))
73
76
  response
74
77
  end
75
78
 
@@ -83,11 +86,13 @@ module Rbeapi
83
86
  # address: <string>,
84
87
  # mtu: <string>,
85
88
  # helper_addresses: array<strings>
89
+ # load_interval: <string>
86
90
  # },
87
91
  # <name>: {
88
92
  # address: <string>,
89
93
  # mtu: <string>,
90
94
  # helper_addresses: array<strings>
95
+ # load_interval: <string>
91
96
  # },
92
97
  # ...
93
98
  # }
@@ -162,6 +167,24 @@ module Rbeapi
162
167
  end
163
168
  private :parse_helper_addresses
164
169
 
170
+ ##
171
+ # parse_load_interval scans the provided configuration block and
172
+ # parse the load-interval value. If the interface load-interval
173
+ # value is not configured, then this method will return the value of
174
+ # DEFAULT_LOAD_INTERVAL. The hash returned is intended to be merged into
175
+ # the interface resource hash.
176
+ #
177
+ # @api private
178
+ #
179
+ # @param config [String] The configuration block to parse.
180
+ #
181
+ # @return [Hash<Symbol, Object>] Returns the resource hash attribute.
182
+ def parse_load_interval(config)
183
+ mdata = /load-interval (\w+)$/.match(config)
184
+ { load_interval: mdata.nil? ? DEFAULT_LOAD_INTERVAL : mdata[1] }
185
+ end
186
+ private :parse_load_interval
187
+
165
188
  ##
166
189
  # create will create a new IP interface on the node. If the ip interface
167
190
  # already exists in the configuration, this method will still return
@@ -312,6 +335,10 @@ module Rbeapi
312
335
  enable = opts.fetch(:enable, true)
313
336
  default = opts[:default] || false
314
337
 
338
+ if value
339
+ fail ArgumentError, 'value must be an Array' unless value.is_a?(Array)
340
+ end
341
+
315
342
  case default
316
343
  when true
317
344
  cmds = 'default ip helper-address'
@@ -321,6 +348,27 @@ module Rbeapi
321
348
  end
322
349
  configure_interface(name, cmds)
323
350
  end
351
+
352
+ ##
353
+ # set_load_interval is a convenience function for configuring the
354
+ # value of interface load-interval
355
+ #
356
+ # @param name [String] The interface name to apply the configuration
357
+ # values to. The name must be the full interface identifier.
358
+ #
359
+ # @param opts [Hash] Optional keyword arguments.
360
+ #
361
+ # @option opts value [String] Specifies the value to configure the
362
+ # load-interval setting for. Valid values are between 5 and 600.
363
+ #
364
+ # @option opts default [Boolean] Configures the load-interval value on
365
+ # the interface using the default keyword.
366
+ #
367
+ # @return [Boolean] Returns true if the command completed successfully.
368
+ def set_load_interval(name, opts = {})
369
+ cmds = command_builder('load-interval', opts)
370
+ configure_interface(name, cmds)
371
+ end
324
372
  end
325
373
  end
326
374
  end