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'.freeze
- DEFAULT_LACP_MODE =
'on'.freeze
- DEFAULT_MIN_LINKS =
'0'.freeze
Constants inherited from BaseInterface
BaseInterface::DEFAULT_INTF_DESCRIPTION, BaseInterface::DEFAULT_INTF_ENCAPSULATION, BaseInterface::DEFAULT_LOAD_INTERVAL
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_encapsulation, #set_load_interval, #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.
1052 1053 1054 1055 1056 |
# File 'lib/rbeapi/api/interfaces.rb', line 1052 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
834 835 836 837 838 839 840 841 842 843 844 845 |
# File 'lib/rbeapi/api/interfaces.rb', line 834 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.
1072 1073 1074 1075 |
# File 'lib/rbeapi/api/interfaces.rb', line 1072 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.
1135 1136 1137 1138 |
# File 'lib/rbeapi/api/interfaces.rb', line 1135 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.
1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 |
# File 'lib/rbeapi/api/interfaces.rb', line 1093 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.
1165 1166 1167 1168 |
# File 'lib/rbeapi/api/interfaces.rb', line 1165 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.
1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 |
# File 'lib/rbeapi/api/interfaces.rb', line 1007 def set_members(name, members, mode = nil) raise ArgumentError, 'members must be an Array' unless members.is_a?(Array) 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.
975 976 977 978 |
# File 'lib/rbeapi/api/interfaces.rb', line 975 def set_minimum_links(name, opts = {}) commands = command_builder('port-channel min-links', opts) configure_interface(name, commands) end |