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, mode = nil) ⇒ 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.
873 874 875 876 877 |
# File 'lib/rbeapi/api/interfaces.rb', line 873 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
660 661 662 663 664 665 666 667 668 669 670 671 |
# File 'lib/rbeapi/api/interfaces.rb', line 660 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.
893 894 895 896 |
# File 'lib/rbeapi/api/interfaces.rb', line 893 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.
956 957 958 959 |
# File 'lib/rbeapi/api/interfaces.rb', line 956 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.
914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 |
# File 'lib/rbeapi/api/interfaces.rb', line 914 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.
986 987 988 989 |
# File 'lib/rbeapi/api/interfaces.rb', line 986 def set_lacp_timeout(name, opts = {}) commands = command_builder('port-channel lacp fallback timeout', opts) configure_interface(name, commands) end |
#set_members(name, members, mode = nil) ⇒ 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
831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 |
# File 'lib/rbeapi/api/interfaces.rb', line 831 def set_members(name, members, mode = nil) current_members = Set.new parse_members(name)[:members] members = Set.new members lacp_mode = parse_lacp_mode(name)[:lacp_mode] if mode && mode != lacp_mode lacp_mode = mode set_lacp_mode(name, lacp_mode) end cmds = [] grpid = /(\d+)/.match(name)[0] # remove members from the current port-channel interface current_members.difference(members).each do |intf| cmds << "interface #{intf}" cmds << "no channel-group #{grpid}" end # add new member interfaces to the port-channel members.difference(current_members).each do |intf| cmds << "interface #{intf}" cmds << "channel-group #{grpid} mode #{lacp_mode}" end configure(cmds) 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.
800 801 802 803 |
# File 'lib/rbeapi/api/interfaces.rb', line 800 def set_minimum_links(name, opts = {}) commands = command_builder('port-channel min-links', opts) configure_interface(name, commands) end |