Class: Rbeapi::Api::PortchannelInterface
- Inherits:
-
BaseInterface
- Object
- Entity
- BaseInterface
- Rbeapi::Api::PortchannelInterface
- Defined in:
- lib/rbeapi/api/interfaces.rb
Overview
The PortchannelInterface class manages all port channel interfaces on an EOS node.
Constant Summary collapse
- DEFAULT_LACP_FALLBACK =
'disabled'- DEFAULT_LACP_MODE =
'on'- DEFAULT_MIN_LINKS =
'0'
Constants inherited from BaseInterface
BaseInterface::DEFAULT_INTF_DESCRIPTION
Instance Attribute Summary
Attributes inherited from Entity
Instance Method Summary collapse
-
#add_member(name, member) ⇒ Boolean
add_member adds the interface specified in member to the port-channel interface specified by name in the nodes running-configuration.
-
#get(name) ⇒ nil, Hash<Symbol, Object>
get returns the specified port-channel interface configuration from the nodes running configuration as a resource hash.
-
#remove_member(name, member) ⇒ Boolean
remove_member removes the interface specified in member from the port-channel interface specified by name in the nodes running-configuration.
-
#set_lacp_fallback(name, opts = {}) ⇒ Boolean
set_lacp_fallback configures the lacp fallback mode for the port-channel interface.
-
#set_lacp_mode(name, mode) ⇒ Boolean
set_lacp_mode configures the lacp mode on the port-channel interface by configuring the lacp mode value for each member interface.
-
#set_lacp_timeout(name, opts = {}) ⇒ Boolean
set_lacp_timeout configures the lacp fallback timeout for the port-channel interface.
-
#set_members(name, members) ⇒ Boolean
set_members configures the set of physical interfaces that comprise the logical port-channel interface.
-
#set_minimum_links(name, opts = {}) ⇒ Boolean
set_minimum_links configures the minimum physical links up required to consider the logical portchannel interface operationally up.
Methods inherited from BaseInterface
#create, #default, #delete, #set_description, #set_shutdown
Methods inherited from Entity
#command_builder, #configure, #configure_interface, #get_block, #initialize, instance
Constructor Details
This class inherits a constructor from Rbeapi::Api::Entity
Instance Method Details
#add_member(name, member) ⇒ Boolean
add_member adds the interface specified in member to the port-channel interface specified by name in the nodes running-configuration. If the port-channel interface does not already exist, it will be created.
810 811 812 813 814 |
# File 'lib/rbeapi/api/interfaces.rb', line 810 def add_member(name, member) lacp = parse_lacp_mode(name)[:lacp_mode] grpid = /(\d+)/.match(name)[0] configure_interface(member, "channel-group #{grpid} mode #{lacp}") end |
#get(name) ⇒ nil, Hash<Symbol, Object>
get returns the specified port-channel interface configuration from the nodes running configuration as a resource hash. The resource hash returned extends the BaseInterface resource hash, sets the type value to portchannel and adds the portchannel specific attributes
614 615 616 617 618 619 620 621 622 623 624 625 |
# File 'lib/rbeapi/api/interfaces.rb', line 614 def get(name) config = get_block("^interface #{name}") return nil unless config response = super(name) response[:type] = 'portchannel' response.merge!(parse_members(name)) response.merge!(parse_lacp_mode(name)) response.merge!(parse_minimum_links(config)) response.merge!(parse_lacp_fallback(config)) response.merge!(parse_lacp_timeout(config)) response end |
#remove_member(name, member) ⇒ Boolean
remove_member removes the interface specified in member from the port-channel interface specified by name in the nodes running-configuration.
830 831 832 833 |
# File 'lib/rbeapi/api/interfaces.rb', line 830 def remove_member(name, member) grpid = /(\d+)/.match(name)[0] configure_interface(member, "no channel-group #{grpid}") end |
#set_lacp_fallback(name, opts = {}) ⇒ Boolean
set_lacp_fallback configures the lacp fallback mode for the port-channel interface. If the enable keyword is false, lacp fallback is configured using the no keyword argument. If the default option is specified and set to true, the lacp fallback value is configured using the default keyword. The default keyword takes precedence over the enable keyword if both options are provided.
893 894 895 896 |
# File 'lib/rbeapi/api/interfaces.rb', line 893 def set_lacp_fallback(name, opts = {}) commands = command_builder('port-channel lacp fallback', opts) configure_interface(name, commands) end |
#set_lacp_mode(name, mode) ⇒ Boolean
set_lacp_mode configures the lacp mode on the port-channel interface by configuring the lacp mode value for each member interface. This method will find all member interfaces for a port-channel and reconfigure them using the mode argument.
851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 |
# File 'lib/rbeapi/api/interfaces.rb', line 851 def set_lacp_mode(name, mode) return false unless %w(on passive active).include?(mode) grpid = /(\d+)/.match(name)[0] remove_commands = [] add_commands = [] parse_members(name)[:members].each do |member| remove_commands << "interface #{member}" remove_commands << "no channel-group #{grpid}" add_commands << "interface #{member}" add_commands << "channel-group #{grpid} mode #{mode}" end configure remove_commands + add_commands end |
#set_lacp_timeout(name, opts = {}) ⇒ Boolean
set_lacp_timeout configures the lacp fallback timeout for the port-channel interface. If the enable keyword is false, lacp fallback timeout is configured using the no keyword argument. If the default option is specified and set to true, the lacp fallback timeout value is configured using the default keyword. The default keyword takes precedence over the enable keyword if both options are provided.
924 925 926 927 |
# File 'lib/rbeapi/api/interfaces.rb', line 924 def set_lacp_timeout(name, opts = {}) commands = command_builder('port-channel lacp fallback timeout', opts) configure_interface(name, commands) end |
#set_members(name, members) ⇒ Boolean
set_members configures the set of physical interfaces that comprise the logical port-channel interface. The members value passed should be an array of physical interface names that comprise the port-channel interface. This method will add and remove individual members as required to sync the provided members array
777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 |
# File 'lib/rbeapi/api/interfaces.rb', line 777 def set_members(name, members) current_members = Set.new parse_members(name)[:members] members = Set.new members # remove members from the current port-channel interface current_members.difference(members).each do |intf| result = remove_member(name, intf) return false unless result end # add new member interfaces to the port-channel members.difference(current_members).each do |intf| result = add_member(name, intf) return false unless result end true end |
#set_minimum_links(name, opts = {}) ⇒ Boolean
set_minimum_links configures the minimum physical links up required to consider the logical portchannel interface operationally up. If the enable keyword is false then the minimum-links is configured using the no keyword argument. If the default keyword argument is provided and set to true, the minimum-links value is defaulted using the default keyword. The default keyword takes precedence over the enable keyword argument if both are provided.
754 755 756 757 |
# File 'lib/rbeapi/api/interfaces.rb', line 754 def set_minimum_links(name, opts = {}) commands = command_builder('port-channel min-links', opts) configure_interface(name, commands) end |