Class: Cisco::Interface
- Defined in:
- lib/cisco_node_utils/interface.rb
Overview
Interface - node utility class for general interface config management
Constant Summary collapse
- ETHERNET =
Regexp to match various Ethernet interface variants:
Ethernet GigabitEthernet TenGigE HundredGigE MgmtEth
Regexp.new('(Ethernet|GigE|MgmtEth)', Regexp::IGNORECASE)
- PORTCHANNEL =
Regexp to match various link bundle interface variants
Regexp.new('(port-channel|Bundle-Ether)', Regexp::IGNORECASE)
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#show_name ⇒ Object
readonly
Returns the value of attribute show_name.
-
#state_default ⇒ Object
readonly
Returns the value of attribute state_default.
Class Method Summary collapse
-
.capabilities(intf, mode = :hash) ⇒ Object
‘capabilities’ is a getter-only helper for minitest and beaker.
-
.filter(filter, id, show_name) ⇒ Object
General-purpose filter for Interface.interfaces().
- .interface_count ⇒ Object
- .interfaces(opt = nil, show_name = nil) ⇒ Object
Instance Method Summary collapse
-
#access_vlan ⇒ Object
For range based attributes, a new attribute purge will be added in future.
- #access_vlan=(vlan) ⇒ Object
- #bfd_echo ⇒ Object
- #bfd_echo=(val) ⇒ Object
- #check_switchport(status) ⇒ Object
-
#cli_error_check(result) ⇒ Object
————————–.
- #create ⇒ Object
- #default? ⇒ Boolean
- #default_access_vlan ⇒ Object
- #default_bfd_echo ⇒ Object
- #default_description ⇒ Object
- #default_duplex ⇒ Object
- #default_encapsulation_dot1q ⇒ Object
- #default_fabric_forwarding_anycast_gateway ⇒ Object
- #default_hsrp_bfd ⇒ Object
- #default_hsrp_delay ⇒ Object
- #default_hsrp_delay_minimum ⇒ Object
- #default_hsrp_delay_reload ⇒ Object
- #default_hsrp_mac_refresh ⇒ Object
- #default_hsrp_use_bia ⇒ Object
- #default_hsrp_version ⇒ Object
- #default_ipv4_acl_in ⇒ Object
- #default_ipv4_acl_out ⇒ Object
- #default_ipv4_address ⇒ Object
- #default_ipv4_address_secondary ⇒ Object
- #default_ipv4_arp_timeout ⇒ Object
- #default_ipv4_dhcp_relay_addr ⇒ Object
- #default_ipv4_dhcp_relay_info_trust ⇒ Object
- #default_ipv4_dhcp_relay_src_addr_hsrp ⇒ Object
- #default_ipv4_dhcp_relay_src_intf ⇒ Object
- #default_ipv4_dhcp_relay_subnet_broadcast ⇒ Object
- #default_ipv4_dhcp_smart_relay ⇒ Object
- #default_ipv4_forwarding ⇒ Object
- #default_ipv4_netmask_length ⇒ Object
- #default_ipv4_netmask_length_secondary ⇒ Object
- #default_ipv4_pim_sparse_mode ⇒ Object
- #default_ipv4_proxy_arp ⇒ Object
- #default_ipv4_redirects ⇒ Object
- #default_ipv6_acl_in ⇒ Object
- #default_ipv6_acl_out ⇒ Object
- #default_ipv6_dhcp_relay_addr ⇒ Object
- #default_ipv6_dhcp_relay_src_intf ⇒ Object
- #default_ipv6_redirects ⇒ Object
- #default_load_interval_counter_1_delay ⇒ Object
- #default_load_interval_counter_2_delay ⇒ Object
- #default_load_interval_counter_3_delay ⇒ Object
- #default_mtu ⇒ Object
- #default_negotiate_auto ⇒ Object
- #default_pim_bfd ⇒ Object
- #default_pvlan_mapping ⇒ Object
- #default_shutdown ⇒ Object
- #default_speed ⇒ Object
- #default_storm_control_broadcast ⇒ Object
- #default_storm_control_multicast ⇒ Object
- #default_storm_control_unicast ⇒ Object
- #default_stp_bpdufilter ⇒ Object
- #default_stp_bpduguard ⇒ Object
- #default_stp_cost ⇒ Object
- #default_stp_guard ⇒ Object
- #default_stp_link_type ⇒ Object
- #default_stp_mst_cost ⇒ Object
- #default_stp_mst_port_priority ⇒ Object
- #default_stp_port_priority ⇒ Object
- #default_stp_port_type ⇒ Object
- #default_stp_vlan_cost ⇒ Object
- #default_stp_vlan_port_priority ⇒ Object
- #default_svi_autostate ⇒ Object
- #default_svi_management ⇒ Object
- #default_switchport_autostate_exclude ⇒ Object
- #default_switchport_mode ⇒ Object
- #default_switchport_pvlan_host ⇒ Object
- #default_switchport_pvlan_host_association ⇒ Object
- #default_switchport_pvlan_mapping ⇒ Object
- #default_switchport_pvlan_mapping_trunk ⇒ Object
- #default_switchport_pvlan_promiscuous ⇒ Object
- #default_switchport_pvlan_trunk_allowed_vlan ⇒ Object
- #default_switchport_pvlan_trunk_association ⇒ Object
- #default_switchport_pvlan_trunk_native_vlan ⇒ Object
- #default_switchport_pvlan_trunk_promiscuous ⇒ Object
- #default_switchport_pvlan_trunk_secondary ⇒ Object
- #default_switchport_trunk_allowed_vlan ⇒ Object
- #default_switchport_trunk_native_vlan ⇒ Object
- #default_switchport_vtp ⇒ Object
-
#default_vlan_mapping ⇒ Object
Getter: Builds an array of vlan_mapping commands currently on the device.
-
#default_vlan_mapping_enable ⇒ Object
cli: switchport vlan mapping enable.
- #default_vpc_id ⇒ Object
- #default_vpc_peer_link ⇒ Object
- #default_vrf ⇒ Object
- #description ⇒ Object
- #description=(desc) ⇒ Object
- #destroy ⇒ Object
- #duplex ⇒ Object
- #duplex=(val) ⇒ Object
- #encapsulation_dot1q ⇒ Object
- #encapsulation_dot1q=(val) ⇒ Object
- #fabric_forwarding_anycast_gateway ⇒ Object
- #fabric_forwarding_anycast_gateway=(state) ⇒ Object
- #fabricpath_feature ⇒ Object
- #fabricpath_feature_set(fabricpath_set) ⇒ Object
- #feature_lacp? ⇒ Boolean
- #feature_lacp_set(val) ⇒ Object
- #feature_vlan? ⇒ Boolean
- #feature_vlan_set(val = true) ⇒ Object
- #hsrp_bfd ⇒ Object
- #hsrp_bfd=(val) ⇒ Object
-
#hsrp_delay ⇒ Object
hsrp delay minimum and reload are in the same CLI hsrp delay minimum 0 reload 0.
- #hsrp_delay_minimum ⇒ Object
-
#hsrp_delay_minimum=(val) ⇒ Object
hsrp delay minimum and reload are in the same CLI but both can be set independent of each other.
- #hsrp_delay_reload ⇒ Object
-
#hsrp_delay_reload=(val) ⇒ Object
hsrp delay minimum and reload are in the same CLI but both can be set independent of each other.
- #hsrp_mac_refresh ⇒ Object
- #hsrp_mac_refresh=(val) ⇒ Object
- #hsrp_use_bia ⇒ Object
- #hsrp_use_bia=(val) ⇒ Object
- #hsrp_version ⇒ Object
- #hsrp_version=(val) ⇒ Object
-
#initialize(name, instantiate = true, default_state = false, show_name = nil) ⇒ Interface
constructor
A new instance of Interface.
- #ipv4_acl_in ⇒ Object
- #ipv4_acl_in=(val) ⇒ Object
- #ipv4_acl_out ⇒ Object
- #ipv4_acl_out=(val) ⇒ Object
- #ipv4_addr_mask ⇒ Object
- #ipv4_addr_mask_set(addr, mask, secondary = false) ⇒ Object
- #ipv4_address ⇒ Object
- #ipv4_address_secondary ⇒ Object
- #ipv4_arp_timeout ⇒ Object
- #ipv4_arp_timeout=(timeout) ⇒ Object
- #ipv4_arp_timeout_lookup_string ⇒ Object
- #ipv4_dhcp_relay_addr ⇒ Object
- #ipv4_dhcp_relay_addr=(list) ⇒ Object
- #ipv4_dhcp_relay_info_trust ⇒ Object
- #ipv4_dhcp_relay_info_trust=(state) ⇒ Object
- #ipv4_dhcp_relay_src_addr_hsrp ⇒ Object
- #ipv4_dhcp_relay_src_addr_hsrp=(state) ⇒ Object
- #ipv4_dhcp_relay_src_intf ⇒ Object
- #ipv4_dhcp_relay_src_intf=(val) ⇒ Object
- #ipv4_dhcp_relay_subnet_broadcast ⇒ Object
- #ipv4_dhcp_relay_subnet_broadcast=(state) ⇒ Object
- #ipv4_dhcp_smart_relay ⇒ Object
- #ipv4_dhcp_smart_relay=(state) ⇒ Object
- #ipv4_forwarding ⇒ Object
- #ipv4_forwarding=(state) ⇒ Object
- #ipv4_netmask_length ⇒ Object
- #ipv4_netmask_length_secondary ⇒ Object
- #ipv4_pim_sparse_mode ⇒ Object
- #ipv4_pim_sparse_mode=(state) ⇒ Object
- #ipv4_proxy_arp ⇒ Object
- #ipv4_proxy_arp=(proxy_arp) ⇒ Object
- #ipv4_redirects ⇒ Object
- #ipv4_redirects=(redirects) ⇒ Object
- #ipv4_redirects_lookup_string ⇒ Object
- #ipv6_acl_in ⇒ Object
- #ipv6_acl_in=(val) ⇒ Object
- #ipv6_acl_out ⇒ Object
- #ipv6_acl_out=(val) ⇒ Object
- #ipv6_dhcp_relay_addr ⇒ Object
- #ipv6_dhcp_relay_addr=(list) ⇒ Object
- #ipv6_dhcp_relay_src_intf ⇒ Object
- #ipv6_dhcp_relay_src_intf=(val) ⇒ Object
- #ipv6_redirects ⇒ Object
- #ipv6_redirects=(redirects) ⇒ Object
- #load_interval_counter_1_delay ⇒ Object
- #load_interval_counter_1_delay=(val) ⇒ Object
- #load_interval_counter_2_delay ⇒ Object
- #load_interval_counter_2_delay=(val) ⇒ Object
- #load_interval_counter_3_delay ⇒ Object
- #load_interval_counter_3_delay=(val) ⇒ Object
- #mtu ⇒ Object
- #mtu=(val) ⇒ Object
- #mtu_lookup_string ⇒ Object
- #negotiate_auto ⇒ Object
- #negotiate_auto=(negotiate_auto) ⇒ Object
- #negotiate_auto_lookup_string ⇒ Object
- #pim_bfd ⇒ Object
- #pim_bfd=(val) ⇒ Object
- #pvlan_enable ⇒ Object
-
#pvlan_mapping ⇒ Object
————————– This is an SVI property.
- #pvlan_mapping=(range) ⇒ Object
- #pvlan_mapping_delta(is, should) ⇒ Object
- #pvlan_trunk_association_delta(is, should) ⇒ Object
- #select_ipv4_attribute(attribute) ⇒ Object
- #set_range_based_params(list, param_name) ⇒ Object
- #shutdown ⇒ Object
- #shutdown=(state) ⇒ Object
- #speed ⇒ Object
- #speed=(val) ⇒ Object
- #storm_control_broadcast ⇒ Object
- #storm_control_broadcast=(val) ⇒ Object
- #storm_control_multicast ⇒ Object
- #storm_control_multicast=(val) ⇒ Object
- #storm_control_unicast ⇒ Object
- #storm_control_unicast=(val) ⇒ Object
- #stp_bpdufilter ⇒ Object
- #stp_bpdufilter=(val) ⇒ Object
- #stp_bpduguard ⇒ Object
- #stp_bpduguard=(val) ⇒ Object
- #stp_cost ⇒ Object
- #stp_cost=(val) ⇒ Object
- #stp_guard ⇒ Object
- #stp_guard=(val) ⇒ Object
- #stp_link_type ⇒ Object
- #stp_link_type=(val) ⇒ Object
-
#stp_mst_cost ⇒ Object
Getter: Builds an array of mst cost commands currently on the device.
- #stp_mst_cost=(list) ⇒ Object
-
#stp_mst_port_priority ⇒ Object
Getter: Builds an array of mst port-priority commands currently on the device.
- #stp_mst_port_priority=(list) ⇒ Object
- #stp_port_priority ⇒ Object
- #stp_port_priority=(val) ⇒ Object
- #stp_port_type ⇒ Object
- #stp_port_type=(val) ⇒ Object
-
#stp_vlan_cost ⇒ Object
Getter: Builds an array of vlan cost commands currently on the device.
- #stp_vlan_cost=(list) ⇒ Object
-
#stp_vlan_port_priority ⇒ Object
Getter: Builds an array of vlan port-priority commands currently on the device.
- #stp_vlan_port_priority=(list) ⇒ Object
-
#svi_autostate ⇒ Object
svi_autostate is exclusive to svi interfaces.
- #svi_autostate=(val) ⇒ Object
- #svi_cmd_allowed?(cmd) ⇒ Boolean
-
#svi_management ⇒ Object
svi_management is exclusive to svi interfaces.
- #svi_management=(val) ⇒ Object
- #switchport ⇒ Object
-
#switchport_autostate_exclude ⇒ Object
switchport_autostate_exclude is exclusive to switchport interfaces.
- #switchport_autostate_exclude=(val) ⇒ Object
- #switchport_enable(val = true) ⇒ Object
- #switchport_enable_and_mode(mode_set) ⇒ Object
- #switchport_mode ⇒ Object
- #switchport_mode=(mode_set) ⇒ Object
- #switchport_mode_lookup_string ⇒ Object
-
#switchport_pvlan_host ⇒ Object
————————– <state> switchport mode private-vlan host.
- #switchport_pvlan_host=(state) ⇒ Object
-
#switchport_pvlan_host_association ⇒ Object
————————– <state> switchport private-vlan host-association <pri> <sec> Note this is NOT a multiple, unlike trunk association.
-
#switchport_pvlan_host_association=(pri_and_sec) ⇒ Object
Input: An array of primary and secondary vlans: [‘44’, ‘244’].
-
#switchport_pvlan_mapping ⇒ Object
————————– <state> switchport private-vlan mapping <primary> <vlan>.
-
#switchport_pvlan_mapping=(primary_and_range) ⇒ Object
Input: An array of primary vlan and range of vlans: [‘44’, ‘3-4,6’].
-
#switchport_pvlan_mapping_delta(primary_and_range) ⇒ Object
————————– Find the is/should delta and add/remove commands as needed.
-
#switchport_pvlan_mapping_remove?(should_primary) ⇒ Boolean
————————– switchport_pvlan_mapping_remove? This is a helper to check if command needs to be removed entirely.
-
#switchport_pvlan_mapping_trunk ⇒ Object
————————– <state> switchport private-vlan mapping trunk <primary> <vlan>.
-
#switchport_pvlan_mapping_trunk=(should) ⇒ Object
Input: A nested array of primary vlan and range of vlans: [[‘44’, ‘3-4,6’], [‘99’, ‘199’]].
-
#switchport_pvlan_mapping_trunk_delta(should) ⇒ Object
————————– switchport_pvlan_mapping_trunk_delta(should).
-
#switchport_pvlan_promiscuous ⇒ Object
————————– <state> switchport mode private-vlan promiscuous.
- #switchport_pvlan_promiscuous=(state) ⇒ Object
-
#switchport_pvlan_trunk_allowed_vlan ⇒ Object
————————– <state> switchport private-vlan trunk allowed vlan <range> Note that range is handled as a string because the entire range is replaced instead of individually adding or removing vlans from the range.
- #switchport_pvlan_trunk_allowed_vlan=(range) ⇒ Object
-
#switchport_pvlan_trunk_association ⇒ Object
————————– <state> switchport private-vlan association trunk <pri> <sec> Supports multiple.
-
#switchport_pvlan_trunk_association=(should) ⇒ Object
Input: A nested array of primary and secondary vlans: [[‘44’, ‘244’], [‘99’, ‘299’]].
-
#switchport_pvlan_trunk_native_vlan ⇒ Object
————————– <state> switchport trunk native vlan <vlan>.
- #switchport_pvlan_trunk_native_vlan=(vlan) ⇒ Object
-
#switchport_pvlan_trunk_promiscuous ⇒ Object
————————– <state> switchport mode private-vlan trunk promiscuous.
- #switchport_pvlan_trunk_promiscuous=(state) ⇒ Object
-
#switchport_pvlan_trunk_secondary ⇒ Object
————————– <state> switchport mode private-vlan trunk secondary.
- #switchport_pvlan_trunk_secondary=(state) ⇒ Object
- #switchport_status?(status) ⇒ Boolean
- #switchport_trunk_allowed_vlan ⇒ Object
- #switchport_trunk_allowed_vlan=(val) ⇒ Object
- #switchport_trunk_native_vlan ⇒ Object
- #switchport_trunk_native_vlan=(val) ⇒ Object
- #switchport_vtp ⇒ Object
- #switchport_vtp=(vtp_set) ⇒ Object
- #switchport_vtp_feature? ⇒ Boolean
- #switchport_vtp_mode_capable? ⇒ Boolean
- #system_default_svi_autostate ⇒ Object
- #system_default_switchport ⇒ Object
- #system_default_switchport_shutdown ⇒ Object
- #to_s ⇒ Object
- #vlan_mapping ⇒ Object
- #vlan_mapping=(should_list) ⇒ Object
- #vlan_mapping_enable ⇒ Object
- #vlan_mapping_enable=(state) ⇒ Object
- #vpc_id ⇒ Object
- #vpc_id=(num) ⇒ Object
- #vpc_peer_link ⇒ Object
- #vpc_peer_link=(state) ⇒ Object
- #vrf ⇒ Object
- #vrf=(v) ⇒ Object
Methods inherited from NodeUtil
client, #client, config_get, #config_get, #config_get_default, config_get_default, config_set, #config_set, #get, #ios_xr?, #nexus?, #node, node, platform, #platform, supports?, #supports?
Constructor Details
#initialize(name, instantiate = true, default_state = false, show_name = nil) ⇒ Interface
Returns a new instance of Interface.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/cisco_node_utils/interface.rb', line 47 def initialize(name, instantiate=true, default_state=false, show_name=nil) fail TypeError unless name.is_a?(String) fail ArgumentError unless name.length > 0 # @name is used for context: keys only # @show_name is used for get_command: keys; allows callers to limit # show command to a single interface @name = name.downcase @show_name = show_name.nil? ? '' : Utils.normalize_intf_pattern(show_name) @get_args = { name: @name, show_name: @show_name } @smr = config_get('interface', 'stp_mst_range') @svr = config_get('interface', 'stp_vlan_range') @match_found = false # Keep track of default vs non-default state for # interfaces that cannot be created/destroyed. @state_default = nil # Track ethernet but not sub-interfaces if @name[/ethernet/] && !@name[/ethernet.*\.\d+/] @state_default = default_state end create if instantiate end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
45 46 47 |
# File 'lib/cisco_node_utils/interface.rb', line 45 def name @name end |
#show_name ⇒ Object (readonly)
Returns the value of attribute show_name.
45 46 47 |
# File 'lib/cisco_node_utils/interface.rb', line 45 def show_name @show_name end |
#state_default ⇒ Object (readonly)
Returns the value of attribute state_default.
45 46 47 |
# File 'lib/cisco_node_utils/interface.rb', line 45 def state_default @state_default end |
Class Method Details
.capabilities(intf, mode = :hash) ⇒ Object
‘capabilities’ is a getter-only helper for minitest and beaker. mode values:
:hash = Transform the output into a hash
:raw = The raw output from 'show int capabilities'. Some multi-line
values do not translate easily so this option allows the
caller to extract the data it needs.
Sample cli output:
Model: N7K-M132XP-12L
Type (SFP capable): 10Gbase-SR
Speed: 10,100,1000
Sample hash output: “Type”=>“10Gbase-SR”, “Speed”=>“10,100,1000”
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/cisco_node_utils/interface.rb', line 148 def self.capabilities(intf, mode=:hash) array = [] begin array = config_get('interface', 'capabilities', name: intf) rescue CliError => e raise unless e.clierror[/(Invalid command|Cmd exec error)/] end return array if mode == :raw hash = {} if array array.delete('') array.each do |line| k, v = line.split(':') next if k.nil? || v.nil? k.gsub!(/ \(.*\)/, '') # Remove any parenthetical text from key v.strip! v.gsub!(%r{half/full}, 'half,full') if k == 'Duplex' hash[k] = v end end hash end |
.filter(filter, id, show_name) ⇒ Object
General-purpose filter for Interface.interfaces(). filter: This may be overloaded in the future to allow a hash of filters.
id: The interface name
show_name: needed for get_command: <show_name> Return: true if the interface should be filtered out, false to keep it.
120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/cisco_node_utils/interface.rb', line 120 def self.filter(filter, id, show_name) case filter when :pvlan_any return false if config_get('interface', 'pvlan_any', name: id, show_name: show_name) else # Just a basic pattern filter (:ethernet, :loopback, etc) return false if id.match(filter.to_s) end true end |
.interface_count ⇒ Object
74 75 76 |
# File 'lib/cisco_node_utils/interface.rb', line 74 def self.interface_count config_get('interface', 'all_count').to_i end |
.interfaces(opt = nil, show_name = nil) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/cisco_node_utils/interface.rb', line 78 def self.interfaces(opt=nil, show_name=nil) hash = {} show_name = Utils.normalize_intf_pattern(show_name) begin intf_list = config_get('interface', 'all_interfaces', show_name: show_name) rescue CliError => e raise unless show_name # ignore logical interfaces that do not exist debug 'Interface.interfaces ignoring CliError => ' + e.to_s end return hash if intf_list.nil? # Massage intf_list data into an array that is easy to work with. # Use a MARKER to hide pesky 'interface' substrings intf_list.collect! { |x| x.strip || x } intf_list.delete('') intf_list.collect! { |x| (x.sub('interface', '~!MARKER!~') unless x[/^interface /]) || x } # rubocop:disable Metrics/LineLength intf_list = intf_list.join(' ').split('interface') intf_list.delete('') # Restore 'interface' substrings intf_list.collect! { |x| x.sub('~!MARKER!~', 'interface') } intf_list.each do |id| int_data = id.strip.split(' ') next if int_data[0].nil? id = int_data[0].downcase next if opt && filter(opt, id, show_name) # If there are any additional options associated # with this interface then it's in a non-default # state. default_state = int_data.size > 1 ? false : true hash[id] = Interface.new(id, false, default_state, show_name) end hash end |
Instance Method Details
#access_vlan ⇒ Object
For range based attributes, a new attribute purge will be added in future. When purge is set to true, all the ranges which are specified in the manifest will be set to the desired values and those which are not specified in the manifest will be set to default. When purge is false, only the ranges specified in the manifest will be set to the values given in the manifest and others are left untouched.
213 214 215 216 |
# File 'lib/cisco_node_utils/interface.rb', line 213 def access_vlan return nil if switchport_mode == :disabled config_get('interface', 'access_vlan', @get_args) end |
#access_vlan=(vlan) ⇒ Object
218 219 220 |
# File 'lib/cisco_node_utils/interface.rb', line 218 def access_vlan=(vlan) config_set('interface', 'access_vlan', name: @name, vlan: vlan) end |
#bfd_echo ⇒ Object
226 227 228 229 230 |
# File 'lib/cisco_node_utils/interface.rb', line 226 def bfd_echo return nil unless Feature.bfd_enabled? return nil if @name[/loop/i] config_get('interface', 'bfd_echo', @get_args) end |
#bfd_echo=(val) ⇒ Object
232 233 234 235 236 237 238 239 240 |
# File 'lib/cisco_node_utils/interface.rb', line 232 def bfd_echo=(val) fail ArgumentError, 'Interface cannot be loopback' if @name[/loop/i] return if val == bfd_echo state = (val ? '' : 'no') Feature.bfd_enable config_set('interface', 'bfd_echo', name: @name, state: state) end |
#check_switchport(status) ⇒ Object
2016 2017 2018 2019 2020 |
# File 'lib/cisco_node_utils/interface.rb', line 2016 def check_switchport(status) return if switchport_status?(status) fail("#{caller[0][/`.*'/][1..-2]} cannot be set unless " \ "switchport mode is #{status}") end |
#cli_error_check(result) ⇒ Object
1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 |
# File 'lib/cisco_node_utils/interface.rb', line 1484 def cli_error_check(result) # Check for messages that can be safely ignored. # The NXOS interface private-vlan cli does not raise an exception # in some conditions and instead just displays a STDOUT error message # thus NXAPI does not detect the failure. # We must catch it by inspecting the "body" hash entry returned by NXAPI. # This vlan cli behavior is unlikely to change. errors = /(ERROR:|VLAN:|Eth)/ return unless result[1].is_a?(Hash) && errors.match(result[1]['body'].to_s) # Split errors into a list, but keep the delimiter as part of the message. error_list = (result[1]['body'].split(errors) - ['']).each_slice(2).map(&:join) error_list.each do |_msg| fail result[1]['body'] end end |
#create ⇒ Object
171 172 173 174 175 176 177 178 179 180 |
# File 'lib/cisco_node_utils/interface.rb', line 171 def create feature_vlan_set(true) if @name[/(vlan|bdi)/i] config_set('interface', 'create', name: @name) rescue Cisco::CliError # Some XR platforms do not support channel-group configuration # on some OS versions. Since this is an OS version difference and not # a platform difference, we can't handle this in the YAML. raise unless PORTCHANNEL =~ @name && platform == :ios_xr raise Cisco::UnsupportedError.new('interface', @name, 'create') end |
#default? ⇒ Boolean
190 191 192 193 |
# File 'lib/cisco_node_utils/interface.rb', line 190 def default? state = config_get('interface', 'default', @get_args) state.nil? ? true : false end |
#default_access_vlan ⇒ Object
222 223 224 |
# File 'lib/cisco_node_utils/interface.rb', line 222 def default_access_vlan config_get_default('interface', 'access_vlan') end |
#default_bfd_echo ⇒ Object
242 243 244 245 246 |
# File 'lib/cisco_node_utils/interface.rb', line 242 def default_bfd_echo return nil unless Feature.bfd_enabled? return nil if @name[/loop/i] config_get_default('interface', 'bfd_echo') end |
#default_description ⇒ Object
263 264 265 |
# File 'lib/cisco_node_utils/interface.rb', line 263 def default_description config_get_default('interface', 'description') end |
#default_duplex ⇒ Object
994 995 996 |
# File 'lib/cisco_node_utils/interface.rb', line 994 def default_duplex config_get_default('interface', 'duplex') end |
#default_encapsulation_dot1q ⇒ Object
281 282 283 |
# File 'lib/cisco_node_utils/interface.rb', line 281 def default_encapsulation_dot1q config_get_default('interface', 'encapsulation_dot1q') end |
#default_fabric_forwarding_anycast_gateway ⇒ Object
315 316 317 |
# File 'lib/cisco_node_utils/interface.rb', line 315 def default_fabric_forwarding_anycast_gateway config_get_default('interface', 'fabric_forwarding_anycast_gateway') end |
#default_hsrp_bfd ⇒ Object
333 334 335 |
# File 'lib/cisco_node_utils/interface.rb', line 333 def default_hsrp_bfd config_get_default('interface', 'hsrp_bfd') end |
#default_hsrp_delay ⇒ Object
344 345 346 |
# File 'lib/cisco_node_utils/interface.rb', line 344 def default_hsrp_delay [default_hsrp_delay_minimum, default_hsrp_delay_reload] end |
#default_hsrp_delay_minimum ⇒ Object
362 363 364 |
# File 'lib/cisco_node_utils/interface.rb', line 362 def default_hsrp_delay_minimum config_get_default('interface', 'hsrp_delay_minimum') end |
#default_hsrp_delay_reload ⇒ Object
380 381 382 |
# File 'lib/cisco_node_utils/interface.rb', line 380 def default_hsrp_delay_reload config_get_default('interface', 'hsrp_delay_reload') end |
#default_hsrp_mac_refresh ⇒ Object
396 397 398 |
# File 'lib/cisco_node_utils/interface.rb', line 396 def default_hsrp_mac_refresh config_get_default('interface', 'hsrp_mac_refresh') end |
#default_hsrp_use_bia ⇒ Object
434 435 436 |
# File 'lib/cisco_node_utils/interface.rb', line 434 def default_hsrp_use_bia config_get_default('interface', 'hsrp_use_bia') end |
#default_hsrp_version ⇒ Object
448 449 450 |
# File 'lib/cisco_node_utils/interface.rb', line 448 def default_hsrp_version config_get_default('interface', 'hsrp_version') end |
#default_ipv4_acl_in ⇒ Object
469 470 471 |
# File 'lib/cisco_node_utils/interface.rb', line 469 def default_ipv4_acl_in config_get_default('interface', 'ipv4_acl_in') end |
#default_ipv4_acl_out ⇒ Object
490 491 492 |
# File 'lib/cisco_node_utils/interface.rb', line 490 def default_ipv4_acl_out config_get_default('interface', 'ipv4_acl_out') end |
#default_ipv4_address ⇒ Object
565 566 567 |
# File 'lib/cisco_node_utils/interface.rb', line 565 def default_ipv4_address config_get_default('interface', 'ipv4_address') end |
#default_ipv4_address_secondary ⇒ Object
569 570 571 |
# File 'lib/cisco_node_utils/interface.rb', line 569 def default_ipv4_address_secondary default_ipv4_address end |
#default_ipv4_arp_timeout ⇒ Object
602 603 604 |
# File 'lib/cisco_node_utils/interface.rb', line 602 def default_ipv4_arp_timeout config_get_default('interface', ipv4_arp_timeout_lookup_string) end |
#default_ipv4_dhcp_relay_addr ⇒ Object
626 627 628 |
# File 'lib/cisco_node_utils/interface.rb', line 626 def default_ipv4_dhcp_relay_addr config_get_default('interface', 'ipv4_dhcp_relay_addr') end |
#default_ipv4_dhcp_relay_info_trust ⇒ Object
642 643 644 |
# File 'lib/cisco_node_utils/interface.rb', line 642 def default_ipv4_dhcp_relay_info_trust config_get_default('interface', 'ipv4_dhcp_relay_info_trust') end |
#default_ipv4_dhcp_relay_src_addr_hsrp ⇒ Object
657 658 659 |
# File 'lib/cisco_node_utils/interface.rb', line 657 def default_ipv4_dhcp_relay_src_addr_hsrp config_get_default('interface', 'ipv4_dhcp_relay_src_addr_hsrp') end |
#default_ipv4_dhcp_relay_src_intf ⇒ Object
677 678 679 |
# File 'lib/cisco_node_utils/interface.rb', line 677 def default_ipv4_dhcp_relay_src_intf config_get_default('interface', 'ipv4_dhcp_relay_src_intf') end |
#default_ipv4_dhcp_relay_subnet_broadcast ⇒ Object
693 694 695 |
# File 'lib/cisco_node_utils/interface.rb', line 693 def default_ipv4_dhcp_relay_subnet_broadcast config_get_default('interface', 'ipv4_dhcp_relay_subnet_broadcast') end |
#default_ipv4_dhcp_smart_relay ⇒ Object
709 710 711 |
# File 'lib/cisco_node_utils/interface.rb', line 709 def default_ipv4_dhcp_smart_relay config_get_default('interface', 'ipv4_dhcp_smart_relay') end |
#default_ipv4_forwarding ⇒ Object
723 724 725 |
# File 'lib/cisco_node_utils/interface.rb', line 723 def default_ipv4_forwarding config_get_default('interface', 'ipv4_forwarding') end |
#default_ipv4_netmask_length ⇒ Object
573 574 575 |
# File 'lib/cisco_node_utils/interface.rb', line 573 def default_ipv4_netmask_length config_get_default('interface', 'ipv4_netmask_length') end |
#default_ipv4_netmask_length_secondary ⇒ Object
577 578 579 |
# File 'lib/cisco_node_utils/interface.rb', line 577 def default_ipv4_netmask_length_secondary default_ipv4_netmask_length end |
#default_ipv4_pim_sparse_mode ⇒ Object
739 740 741 |
# File 'lib/cisco_node_utils/interface.rb', line 739 def default_ipv4_pim_sparse_mode config_get_default('interface', 'ipv4_pim_sparse_mode') end |
#default_ipv4_proxy_arp ⇒ Object
754 755 756 |
# File 'lib/cisco_node_utils/interface.rb', line 754 def default_ipv4_proxy_arp config_get_default('interface', 'ipv4_proxy_arp') end |
#default_ipv4_redirects ⇒ Object
779 780 781 |
# File 'lib/cisco_node_utils/interface.rb', line 779 def default_ipv4_redirects config_get_default('interface', ipv4_redirects_lookup_string) end |
#default_ipv6_acl_in ⇒ Object
799 800 801 |
# File 'lib/cisco_node_utils/interface.rb', line 799 def default_ipv6_acl_in config_get_default('interface', 'ipv6_acl_in') end |
#default_ipv6_acl_out ⇒ Object
819 820 821 |
# File 'lib/cisco_node_utils/interface.rb', line 819 def default_ipv6_acl_out config_get_default('interface', 'ipv6_acl_out') end |
#default_ipv6_dhcp_relay_addr ⇒ Object
843 844 845 |
# File 'lib/cisco_node_utils/interface.rb', line 843 def default_ipv6_dhcp_relay_addr config_get_default('interface', 'ipv6_dhcp_relay_addr') end |
#default_ipv6_dhcp_relay_src_intf ⇒ Object
863 864 865 |
# File 'lib/cisco_node_utils/interface.rb', line 863 def default_ipv6_dhcp_relay_src_intf config_get_default('interface', 'ipv6_dhcp_relay_src_intf') end |
#default_ipv6_redirects ⇒ Object
879 880 881 |
# File 'lib/cisco_node_utils/interface.rb', line 879 def default_ipv6_redirects config_get_default('interface', 'ipv6_redirects') end |
#default_load_interval_counter_1_delay ⇒ Object
904 905 906 907 908 909 910 911 912 |
# File 'lib/cisco_node_utils/interface.rb', line 904 def default_load_interval_counter_1_delay # for vlan and bdi the default is 60 if @name[/(vlan|bdi)/i] config_get_default('interface', 'load_interval_counter_1_delay_vlan_bdi') else config_get_default('interface', 'load_interval_counter_1_delay') end end |
#default_load_interval_counter_2_delay ⇒ Object
926 927 928 |
# File 'lib/cisco_node_utils/interface.rb', line 926 def default_load_interval_counter_2_delay config_get_default('interface', 'load_interval_counter_2_delay') end |
#default_load_interval_counter_3_delay ⇒ Object
944 945 946 |
# File 'lib/cisco_node_utils/interface.rb', line 944 def default_load_interval_counter_3_delay config_get_default('interface', 'load_interval_counter_3_delay') end |
#default_mtu ⇒ Object
968 969 970 |
# File 'lib/cisco_node_utils/interface.rb', line 968 def default_mtu config_get_default('interface', mtu_lookup_string) end |
#default_negotiate_auto ⇒ Object
1020 1021 1022 |
# File 'lib/cisco_node_utils/interface.rb', line 1020 def default_negotiate_auto config_get_default('interface', negotiate_auto_lookup_string) end |
#default_pim_bfd ⇒ Object
1080 1081 1082 |
# File 'lib/cisco_node_utils/interface.rb', line 1080 def default_pim_bfd config_get_default('interface', 'pim_bfd') end |
#default_pvlan_mapping ⇒ Object
1824 1825 1826 |
# File 'lib/cisco_node_utils/interface.rb', line 1824 def default_pvlan_mapping config_get_default('interface', 'pvlan_mapping') end |
#default_shutdown ⇒ Object
1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 |
# File 'lib/cisco_node_utils/interface.rb', line 1033 def default_shutdown case @name when ETHERNET def_sw = system_default_switchport def_shut = system_default_switchport_shutdown if def_sw && def_shut lookup = 'shutdown_ethernet_switchport_shutdown' elsif def_sw && !def_shut lookup = 'shutdown_ethernet_switchport_noshutdown' elsif !def_sw && def_shut lookup = 'shutdown_ethernet_noswitchport_shutdown' elsif !def_sw && !def_shut lookup = 'shutdown_ethernet_noswitchport_noshutdown' else fail "Error: def_sw #{def_sw}, def_shut #{def_shut}" end when /loopback/i lookup = 'shutdown_loopback' when PORTCHANNEL lookup = 'shutdown_ether_channel' when /Vlan/i lookup = 'shutdown_vlan' else lookup = 'shutdown_unknown' end config_get_default('interface', lookup) end |
#default_speed ⇒ Object
981 982 983 |
# File 'lib/cisco_node_utils/interface.rb', line 981 def default_speed config_get_default('interface', 'speed') end |
#default_storm_control_broadcast ⇒ Object
1097 1098 1099 |
# File 'lib/cisco_node_utils/interface.rb', line 1097 def default_storm_control_broadcast config_get_default('interface', 'storm_control_broadcast') end |
#default_storm_control_multicast ⇒ Object
1114 1115 1116 |
# File 'lib/cisco_node_utils/interface.rb', line 1114 def default_storm_control_multicast config_get_default('interface', 'storm_control_multicast') end |
#default_storm_control_unicast ⇒ Object
1131 1132 1133 |
# File 'lib/cisco_node_utils/interface.rb', line 1131 def default_storm_control_unicast config_get_default('interface', 'storm_control_unicast') end |
#default_stp_bpdufilter ⇒ Object
1151 1152 1153 |
# File 'lib/cisco_node_utils/interface.rb', line 1151 def default_stp_bpdufilter config_get_default('interface', 'stp_bpdufilter') end |
#default_stp_bpduguard ⇒ Object
1170 1171 1172 |
# File 'lib/cisco_node_utils/interface.rb', line 1170 def default_stp_bpduguard config_get_default('interface', 'stp_bpduguard') end |
#default_stp_cost ⇒ Object
1185 1186 1187 |
# File 'lib/cisco_node_utils/interface.rb', line 1185 def default_stp_cost config_get_default('interface', 'stp_cost') end |
#default_stp_guard ⇒ Object
1205 1206 1207 |
# File 'lib/cisco_node_utils/interface.rb', line 1205 def default_stp_guard config_get_default('interface', 'stp_guard') end |
#default_stp_link_type ⇒ Object
1219 1220 1221 |
# File 'lib/cisco_node_utils/interface.rb', line 1219 def default_stp_link_type config_get_default('interface', 'stp_link_type') end |
#default_stp_mst_cost ⇒ Object
1255 1256 1257 |
# File 'lib/cisco_node_utils/interface.rb', line 1255 def default_stp_mst_cost config_get_default('interface', 'stp_mst_cost') end |
#default_stp_mst_port_priority ⇒ Object
1277 1278 1279 |
# File 'lib/cisco_node_utils/interface.rb', line 1277 def default_stp_mst_port_priority config_get_default('interface', 'stp_mst_port_priority') end |
#default_stp_port_priority ⇒ Object
1233 1234 1235 |
# File 'lib/cisco_node_utils/interface.rb', line 1233 def default_stp_port_priority config_get_default('interface', 'stp_port_priority') end |
#default_stp_port_type ⇒ Object
1297 1298 1299 |
# File 'lib/cisco_node_utils/interface.rb', line 1297 def default_stp_port_type config_get_default('interface', 'stp_port_type') end |
#default_stp_vlan_cost ⇒ Object
1319 1320 1321 |
# File 'lib/cisco_node_utils/interface.rb', line 1319 def default_stp_vlan_cost config_get_default('interface', 'stp_vlan_cost') end |
#default_stp_vlan_port_priority ⇒ Object
1341 1342 1343 |
# File 'lib/cisco_node_utils/interface.rb', line 1341 def default_stp_vlan_port_priority config_get_default('interface', 'stp_vlan_port_priority') end |
#default_svi_autostate ⇒ Object
1962 1963 1964 |
# File 'lib/cisco_node_utils/interface.rb', line 1962 def default_svi_autostate system_default_svi_autostate end |
#default_svi_management ⇒ Object
1990 1991 1992 |
# File 'lib/cisco_node_utils/interface.rb', line 1990 def default_svi_management config_get_default('interface', 'svi_management') end |
#default_switchport_autostate_exclude ⇒ Object
1371 1372 1373 |
# File 'lib/cisco_node_utils/interface.rb', line 1371 def default_switchport_autostate_exclude config_get_default('interface', 'switchport_autostate_exclude') end |
#default_switchport_mode ⇒ Object
1438 1439 1440 1441 1442 1443 |
# File 'lib/cisco_node_utils/interface.rb', line 1438 def default_switchport_mode return nil if platform == :ios_xr return :disabled unless system_default_switchport IF_SWITCHPORT_MODE.key( config_get_default('interface', switchport_mode_lookup_string)) end |
#default_switchport_pvlan_host ⇒ Object
1516 1517 1518 |
# File 'lib/cisco_node_utils/interface.rb', line 1516 def default_switchport_pvlan_host config_get_default('interface', 'switchport_pvlan_host') end |
#default_switchport_pvlan_host_association ⇒ Object
1555 1556 1557 |
# File 'lib/cisco_node_utils/interface.rb', line 1555 def default_switchport_pvlan_host_association config_get_default('interface', 'switchport_pvlan_host_association') end |
#default_switchport_pvlan_mapping ⇒ Object
1570 1571 1572 |
# File 'lib/cisco_node_utils/interface.rb', line 1570 def default_switchport_pvlan_mapping config_get_default('interface', 'switchport_pvlan_mapping') end |
#default_switchport_pvlan_mapping_trunk ⇒ Object
1635 1636 1637 |
# File 'lib/cisco_node_utils/interface.rb', line 1635 def default_switchport_pvlan_mapping_trunk config_get_default('interface', 'switchport_pvlan_mapping_trunk') end |
#default_switchport_pvlan_promiscuous ⇒ Object
1533 1534 1535 |
# File 'lib/cisco_node_utils/interface.rb', line 1533 def default_switchport_pvlan_promiscuous config_get_default('interface', 'switchport_pvlan_promiscuous') end |
#default_switchport_pvlan_trunk_allowed_vlan ⇒ Object
1770 1771 1772 |
# File 'lib/cisco_node_utils/interface.rb', line 1770 def default_switchport_pvlan_trunk_allowed_vlan config_get_default('interface', 'switchport_pvlan_trunk_allowed_vlan') end |
#default_switchport_pvlan_trunk_association ⇒ Object
1709 1710 1711 |
# File 'lib/cisco_node_utils/interface.rb', line 1709 def default_switchport_pvlan_trunk_association config_get_default('interface', 'switchport_pvlan_trunk_association') end |
#default_switchport_pvlan_trunk_native_vlan ⇒ Object
1787 1788 1789 |
# File 'lib/cisco_node_utils/interface.rb', line 1787 def default_switchport_pvlan_trunk_native_vlan config_get_default('interface', 'switchport_pvlan_trunk_native_vlan') end |
#default_switchport_pvlan_trunk_promiscuous ⇒ Object
1726 1727 1728 |
# File 'lib/cisco_node_utils/interface.rb', line 1726 def default_switchport_pvlan_trunk_promiscuous config_get_default('interface', 'switchport_pvlan_trunk_promiscuous') end |
#default_switchport_pvlan_trunk_secondary ⇒ Object
1743 1744 1745 |
# File 'lib/cisco_node_utils/interface.rb', line 1743 def default_switchport_pvlan_trunk_secondary config_get_default('interface', 'switchport_pvlan_trunk_secondary') end |
#default_switchport_trunk_allowed_vlan ⇒ Object
1464 1465 1466 |
# File 'lib/cisco_node_utils/interface.rb', line 1464 def default_switchport_trunk_allowed_vlan config_get_default('interface', 'switchport_trunk_allowed_vlan') end |
#default_switchport_trunk_native_vlan ⇒ Object
1889 1890 1891 |
# File 'lib/cisco_node_utils/interface.rb', line 1889 def default_switchport_trunk_native_vlan config_get_default('interface', 'switchport_trunk_native_vlan') end |
#default_switchport_vtp ⇒ Object
1994 1995 1996 1997 |
# File 'lib/cisco_node_utils/interface.rb', line 1994 def default_switchport_vtp return nil unless switchport_vtp_mode_capable? config_get_default('interface', 'vtp') end |
#default_vlan_mapping ⇒ Object
Getter: Builds an array of vlan_mapping commands currently on the device.
cli: switchport vlan mapping 2 200
switchport vlan mapping 4 400
array: [[‘2’, ‘200’], [‘4’, ‘400’]]
1844 1845 1846 |
# File 'lib/cisco_node_utils/interface.rb', line 1844 def default_vlan_mapping config_get_default('interface', 'vlan_mapping') end |
#default_vlan_mapping_enable ⇒ Object
cli: switchport vlan mapping enable
1876 1877 1878 |
# File 'lib/cisco_node_utils/interface.rb', line 1876 def default_vlan_mapping_enable config_get_default('interface', 'vlan_mapping_enable') end |
#default_vpc_id ⇒ Object
2036 2037 2038 |
# File 'lib/cisco_node_utils/interface.rb', line 2036 def default_vpc_id config_get_default('interface', 'vpc_id') end |
#default_vpc_peer_link ⇒ Object
2051 2052 2053 |
# File 'lib/cisco_node_utils/interface.rb', line 2051 def default_vpc_peer_link config_get_default('interface', 'vpc_peer_link') end |
#default_vrf ⇒ Object
2081 2082 2083 |
# File 'lib/cisco_node_utils/interface.rb', line 2081 def default_vrf config_get_default('interface', 'vrf') end |
#description ⇒ Object
248 249 250 |
# File 'lib/cisco_node_utils/interface.rb', line 248 def description config_get('interface', 'description', @get_args) end |
#description=(desc) ⇒ Object
252 253 254 255 256 257 258 259 260 261 |
# File 'lib/cisco_node_utils/interface.rb', line 252 def description=(desc) fail TypeError unless desc.is_a?(String) if desc.strip.empty? config_set('interface', 'description', name: @name, state: 'no', desc: '') else config_set('interface', 'description', name: @name, state: '', desc: desc) end end |
#destroy ⇒ Object
182 183 184 185 186 187 188 |
# File 'lib/cisco_node_utils/interface.rb', line 182 def destroy if @name[/ethernet/] && !@name[/ethernet.*\.\d+/] config_set('interface', 'default', name: @name) else config_set('interface', 'destroy', name: @name) end end |
#duplex ⇒ Object
985 986 987 988 |
# File 'lib/cisco_node_utils/interface.rb', line 985 def duplex return nil if @name[/loop|vlan/i] config_get('interface', 'duplex', @get_args) end |
#duplex=(val) ⇒ Object
990 991 992 |
# File 'lib/cisco_node_utils/interface.rb', line 990 def duplex=(val) config_set('interface', 'duplex', name: @name, duplex: val) end |
#encapsulation_dot1q ⇒ Object
267 268 269 |
# File 'lib/cisco_node_utils/interface.rb', line 267 def encapsulation_dot1q config_get('interface', 'encapsulation_dot1q', @get_args) end |
#encapsulation_dot1q=(val) ⇒ Object
271 272 273 274 275 276 277 278 279 |
# File 'lib/cisco_node_utils/interface.rb', line 271 def encapsulation_dot1q=(val) if val.to_s.empty? config_set('interface', 'encapsulation_dot1q', name: @name, state: 'no', vlan: '') else config_set('interface', 'encapsulation_dot1q', name: @name, state: '', vlan: val) end end |
#fabric_forwarding_anycast_gateway ⇒ Object
293 294 295 |
# File 'lib/cisco_node_utils/interface.rb', line 293 def fabric_forwarding_anycast_gateway config_get('interface', 'fabric_forwarding_anycast_gateway', @get_args) end |
#fabric_forwarding_anycast_gateway=(state) ⇒ Object
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 |
# File 'lib/cisco_node_utils/interface.rb', line 297 def fabric_forwarding_anycast_gateway=(state) return if fabric_forwarding_anycast_gateway == state no_cmd = (state ? '' : 'no') config_set('interface', 'fabric_forwarding_anycast_gateway', name: @name, state: no_cmd) fail if fabric_forwarding_anycast_gateway.to_s != state.to_s rescue Cisco::CliError => e raise "#{e} 'fabric_forwarding_anycast_gateway' can only be " \ 'configured on a vlan interface' unless /vlan/.match(@name) anycast_gateway_mac = OverlayGlobal.new.anycast_gateway_mac if anycast_gateway_mac.nil? || anycast_gateway_mac.empty? raise "#{e} Anycast gateway mac must be configured " \ 'before configuring forwarding mode under interface' end raise end |
#fabricpath_feature ⇒ Object
285 286 287 |
# File 'lib/cisco_node_utils/interface.rb', line 285 def fabricpath_feature FabricpathGlobal.fabricpath_feature end |
#fabricpath_feature_set(fabricpath_set) ⇒ Object
289 290 291 |
# File 'lib/cisco_node_utils/interface.rb', line 289 def fabricpath_feature_set(fabricpath_set) FabricpathGlobal.fabricpath_feature_set(fabricpath_set) end |
#feature_lacp? ⇒ Boolean
883 884 885 |
# File 'lib/cisco_node_utils/interface.rb', line 883 def feature_lacp? config_get('interface', 'feature_lacp') end |
#feature_lacp_set(val) ⇒ Object
887 888 889 890 |
# File 'lib/cisco_node_utils/interface.rb', line 887 def feature_lacp_set(val) return if feature_lacp? == val config_set('interface', 'feature_lacp', state: val ? '' : 'no') end |
#feature_vlan? ⇒ Boolean
1966 1967 1968 |
# File 'lib/cisco_node_utils/interface.rb', line 1966 def feature_vlan? config_get('interface', 'feature_vlan') end |
#feature_vlan_set(val = true) ⇒ Object
1970 1971 1972 1973 1974 1975 |
# File 'lib/cisco_node_utils/interface.rb', line 1970 def feature_vlan_set(val=true) # 'feature interface-vlan' # TBD: Replace this with Feature.interface_vlan_enable return if feature_vlan? == val config_set('interface', 'feature_vlan', state: val ? '' : 'no') end |
#hsrp_bfd ⇒ Object
319 320 321 |
# File 'lib/cisco_node_utils/interface.rb', line 319 def hsrp_bfd config_get('interface', 'hsrp_bfd', @get_args) end |
#hsrp_bfd=(val) ⇒ Object
323 324 325 326 327 328 329 330 331 |
# File 'lib/cisco_node_utils/interface.rb', line 323 def hsrp_bfd=(val) return if val == hsrp_bfd state = val ? '' : 'no' if val Feature.hsrp_enable Feature.bfd_enable end config_set('interface', 'hsrp_bfd', name: @name, state: state) end |
#hsrp_delay ⇒ Object
hsrp delay minimum and reload are in the same CLI hsrp delay minimum 0 reload 0
339 340 341 342 |
# File 'lib/cisco_node_utils/interface.rb', line 339 def hsrp_delay match = config_get('interface', 'hsrp_delay', @get_args) match.nil? ? default_hsrp_delay : match.collect(&:to_i) end |
#hsrp_delay_minimum ⇒ Object
348 349 350 351 352 |
# File 'lib/cisco_node_utils/interface.rb', line 348 def hsrp_delay_minimum return nil if switchport_mode != :disabled || @name[/loop/i] minimum, _reload = hsrp_delay minimum.nil? ? default_hsrp_delay_minimum : minimum end |
#hsrp_delay_minimum=(val) ⇒ Object
hsrp delay minimum and reload are in the same CLI but both can be set independent of each other
356 357 358 359 360 |
# File 'lib/cisco_node_utils/interface.rb', line 356 def hsrp_delay_minimum=(val) Feature.hsrp_enable if val config_set('interface', 'hsrp_delay', name: @name, minimum: 'minimum', min: val, reload: '', rel: '') end |
#hsrp_delay_reload ⇒ Object
366 367 368 369 370 |
# File 'lib/cisco_node_utils/interface.rb', line 366 def hsrp_delay_reload return nil if switchport_mode != :disabled || @name[/loop/i] _minimum, reload = hsrp_delay reload.nil? ? default_hsrp_delay_reload : reload end |
#hsrp_delay_reload=(val) ⇒ Object
hsrp delay minimum and reload are in the same CLI but both can be set independent of each other
374 375 376 377 378 |
# File 'lib/cisco_node_utils/interface.rb', line 374 def hsrp_delay_reload=(val) Feature.hsrp_enable if val config_set('interface', 'hsrp_delay', name: @name, minimum: '', min: '', reload: 'reload', rel: val) end |
#hsrp_mac_refresh ⇒ Object
384 385 386 |
# File 'lib/cisco_node_utils/interface.rb', line 384 def hsrp_mac_refresh config_get('interface', 'hsrp_mac_refresh', @get_args) end |
#hsrp_mac_refresh=(val) ⇒ Object
388 389 390 391 392 393 394 |
# File 'lib/cisco_node_utils/interface.rb', line 388 def hsrp_mac_refresh=(val) state = val ? '' : 'no' time = val ? val : '' Feature.hsrp_enable if val config_set('interface', 'hsrp_mac_refresh', name: @name, state: state, timeout: time) end |
#hsrp_use_bia ⇒ Object
400 401 402 403 404 |
# File 'lib/cisco_node_utils/interface.rb', line 400 def hsrp_use_bia match = config_get('interface', 'hsrp_use_bia', @get_args) return default_hsrp_use_bia unless match match.include?('scope') ? :use_bia_intf : :use_bia end |
#hsrp_use_bia=(val) ⇒ Object
406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 |
# File 'lib/cisco_node_utils/interface.rb', line 406 def hsrp_use_bia=(val) # Return early if device already set to the correct value return if val == hsrp_use_bia # need to reset before set if val Feature.hsrp_enable if val == :use_bia config_set('interface', 'hsrp_use_bia', name: name, state: 'no', scope: ' scope interface') config_set('interface', 'hsrp_use_bia', name: name, state: '', scope: '') else config_set('interface', 'hsrp_use_bia', name: name, state: 'no', scope: '') config_set('interface', 'hsrp_use_bia', name: name, state: '', scope: ' scope interface') end else if hsrp_use_bia == :use_bia config_set('interface', 'hsrp_use_bia', name: name, state: 'no', scope: '') else config_set('interface', 'hsrp_use_bia', name: name, state: 'no', scope: ' scope interface') end end end |
#hsrp_version ⇒ Object
438 439 440 441 |
# File 'lib/cisco_node_utils/interface.rb', line 438 def hsrp_version return nil if switchport_mode != :disabled || @name[/loop/i] config_get('interface', 'hsrp_version', @get_args) end |
#hsrp_version=(val) ⇒ Object
443 444 445 446 |
# File 'lib/cisco_node_utils/interface.rb', line 443 def hsrp_version=(val) Feature.hsrp_enable if val config_set('interface', 'hsrp_version', name: name, ver: val) end |
#ipv4_acl_in ⇒ Object
452 453 454 |
# File 'lib/cisco_node_utils/interface.rb', line 452 def ipv4_acl_in config_get('interface', 'ipv4_acl_in', @get_args) end |
#ipv4_acl_in=(val) ⇒ Object
456 457 458 459 460 461 462 463 464 465 466 467 |
# File 'lib/cisco_node_utils/interface.rb', line 456 def ipv4_acl_in=(val) if val != '' state = '' else state = 'no' val = ipv4_acl_in end return unless val && val != '' config_set('interface', 'ipv4_acl_in', name: @name, state: state, acl: val) end |
#ipv4_acl_out ⇒ Object
473 474 475 |
# File 'lib/cisco_node_utils/interface.rb', line 473 def ipv4_acl_out config_get('interface', 'ipv4_acl_out', @get_args) end |
#ipv4_acl_out=(val) ⇒ Object
477 478 479 480 481 482 483 484 485 486 487 488 |
# File 'lib/cisco_node_utils/interface.rb', line 477 def ipv4_acl_out=(val) if val != '' state = '' else state = 'no' val = ipv4_acl_out end return unless val && val != '' config_set('interface', 'ipv4_acl_out', name: @name, state: state, acl: val) end |
#ipv4_addr_mask ⇒ Object
515 516 517 518 519 520 521 522 523 524 525 526 527 |
# File 'lib/cisco_node_utils/interface.rb', line 515 def ipv4_addr_mask val = config_get('interface', 'ipv4_addr_mask', @get_args) if val && platform == :ios_xr # IOS XR reports address as <address> <bitmask> [secondary] but we # want <address>/<length> [secondary] val.each_with_index do |entry, i| mask = entry[1].split(' ') mask[0] = Utils.bitmask_to_length(mask[0]) val[i][1] = mask.join(' ') end end val end |
#ipv4_addr_mask_set(addr, mask, secondary = false) ⇒ Object
494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 |
# File 'lib/cisco_node_utils/interface.rb', line 494 def ipv4_addr_mask_set(addr, mask, secondary=false) check_switchport(:disabled) sec = secondary ? 'secondary' : '' if addr.nil? || addr == default_ipv4_address state = 'no' if secondary return if ipv4_address_secondary == default_ipv4_address_secondary # We need address and mask to remove. am = "#{ipv4_address_secondary}/#{ipv4_netmask_length_secondary}" else return if ipv4_address == default_ipv4_address am = "#{ipv4_address}/#{ipv4_netmask_length}" end else state = '' am = "#{addr}/#{mask}" end config_set('interface', 'ipv4_addr_mask', name: @name, state: state, addr: am, secondary: sec) end |
#ipv4_address ⇒ Object
549 550 551 |
# File 'lib/cisco_node_utils/interface.rb', line 549 def ipv4_address select_ipv4_attribute(:v4_addr) end |
#ipv4_address_secondary ⇒ Object
553 554 555 |
# File 'lib/cisco_node_utils/interface.rb', line 553 def ipv4_address_secondary select_ipv4_attribute(:v4_addr_secondary) end |
#ipv4_arp_timeout ⇒ Object
590 591 592 |
# File 'lib/cisco_node_utils/interface.rb', line 590 def ipv4_arp_timeout config_get('interface', ipv4_arp_timeout_lookup_string, @get_args) end |
#ipv4_arp_timeout=(timeout) ⇒ Object
594 595 596 597 598 599 600 |
# File 'lib/cisco_node_utils/interface.rb', line 594 def ipv4_arp_timeout=(timeout) fail "'ipv4 arp timeout' can ony be configured on a vlan interface" unless /vlan/.match(@name) state = (timeout == default_ipv4_arp_timeout) ? 'no' : '' config_set('interface', 'ipv4_arp_timeout', name: @name, state: state, timeout: timeout) end |
#ipv4_arp_timeout_lookup_string ⇒ Object
581 582 583 584 585 586 587 588 |
# File 'lib/cisco_node_utils/interface.rb', line 581 def ipv4_arp_timeout_lookup_string case @name when /vlan/i return 'ipv4_arp_timeout' else return 'ipv4_arp_timeout_non_vlan_interfaces' end end |
#ipv4_dhcp_relay_addr ⇒ Object
606 607 608 |
# File 'lib/cisco_node_utils/interface.rb', line 606 def ipv4_dhcp_relay_addr config_get('interface', 'ipv4_dhcp_relay_addr', @get_args) end |
#ipv4_dhcp_relay_addr=(list) ⇒ Object
610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 |
# File 'lib/cisco_node_utils/interface.rb', line 610 def ipv4_dhcp_relay_addr=(list) cur_list = ipv4_dhcp_relay_addr # remove the current addresses first unless cur_list.empty? cur_list.each do |addr| config_set('interface', 'ipv4_dhcp_relay_addr', name: @name, state: 'no', addr: addr) end end Feature.dhcp_enable unless list.empty? list.each do |addr| config_set('interface', 'ipv4_dhcp_relay_addr', name: @name, state: '', addr: addr) end end |
#ipv4_dhcp_relay_info_trust ⇒ Object
630 631 632 633 |
# File 'lib/cisco_node_utils/interface.rb', line 630 def ipv4_dhcp_relay_info_trust return nil if @name[/loop/i] || switchport_mode != :disabled config_get('interface', 'ipv4_dhcp_relay_info_trust', @get_args) end |
#ipv4_dhcp_relay_info_trust=(state) ⇒ Object
635 636 637 638 639 640 |
# File 'lib/cisco_node_utils/interface.rb', line 635 def ipv4_dhcp_relay_info_trust=(state) return false if !state && !Feature.dhcp_enabled? Feature.dhcp_enable if state config_set('interface', 'ipv4_dhcp_relay_info_trust', name: @name, state: state ? '' : 'no') end |
#ipv4_dhcp_relay_src_addr_hsrp ⇒ Object
646 647 648 |
# File 'lib/cisco_node_utils/interface.rb', line 646 def ipv4_dhcp_relay_src_addr_hsrp config_get('interface', 'ipv4_dhcp_relay_src_addr_hsrp', @get_args) end |
#ipv4_dhcp_relay_src_addr_hsrp=(state) ⇒ Object
650 651 652 653 654 655 |
# File 'lib/cisco_node_utils/interface.rb', line 650 def ipv4_dhcp_relay_src_addr_hsrp=(state) return false if !state && !Feature.dhcp_enabled? Feature.dhcp_enable if state config_set('interface', 'ipv4_dhcp_relay_src_addr_hsrp', name: @name, state: state ? '' : 'no') end |
#ipv4_dhcp_relay_src_intf ⇒ Object
661 662 663 664 665 666 |
# File 'lib/cisco_node_utils/interface.rb', line 661 def ipv4_dhcp_relay_src_intf intf = config_get('interface', 'ipv4_dhcp_relay_src_intf', @get_args) # Normalize by downcasing and removing white space intf = intf.downcase.delete(' ') if intf intf end |
#ipv4_dhcp_relay_src_intf=(val) ⇒ Object
668 669 670 671 672 673 674 675 |
# File 'lib/cisco_node_utils/interface.rb', line 668 def ipv4_dhcp_relay_src_intf=(val) state = val == default_ipv4_dhcp_relay_src_intf ? 'no' : '' return false if state == 'no' && !Feature.dhcp_enabled? Feature.dhcp_enable if state.empty? intf = val == default_ipv4_dhcp_relay_src_intf ? '' : val config_set('interface', 'ipv4_dhcp_relay_src_intf', name: @name, state: state, intf: intf) end |
#ipv4_dhcp_relay_subnet_broadcast ⇒ Object
681 682 683 684 |
# File 'lib/cisco_node_utils/interface.rb', line 681 def ipv4_dhcp_relay_subnet_broadcast return nil if @name[/loop/i] || switchport_mode != :disabled config_get('interface', 'ipv4_dhcp_relay_subnet_broadcast', @get_args) end |
#ipv4_dhcp_relay_subnet_broadcast=(state) ⇒ Object
686 687 688 689 690 691 |
# File 'lib/cisco_node_utils/interface.rb', line 686 def ipv4_dhcp_relay_subnet_broadcast=(state) return false if !state && !Feature.dhcp_enabled? Feature.dhcp_enable if state config_set('interface', 'ipv4_dhcp_relay_subnet_broadcast', name: @name, state: state ? '' : 'no') end |
#ipv4_dhcp_smart_relay ⇒ Object
697 698 699 700 |
# File 'lib/cisco_node_utils/interface.rb', line 697 def ipv4_dhcp_smart_relay return nil if @name[/loop/i] || switchport_mode != :disabled config_get('interface', 'ipv4_dhcp_smart_relay', @get_args) end |
#ipv4_dhcp_smart_relay=(state) ⇒ Object
702 703 704 705 706 707 |
# File 'lib/cisco_node_utils/interface.rb', line 702 def ipv4_dhcp_smart_relay=(state) return false if !state && !Feature.dhcp_enabled? Feature.dhcp_enable if state config_set('interface', 'ipv4_dhcp_smart_relay', name: @name, state: state ? '' : 'no') end |
#ipv4_forwarding ⇒ Object
713 714 715 |
# File 'lib/cisco_node_utils/interface.rb', line 713 def ipv4_forwarding config_get('interface', 'ipv4_forwarding', @get_args) end |
#ipv4_forwarding=(state) ⇒ Object
717 718 719 720 721 |
# File 'lib/cisco_node_utils/interface.rb', line 717 def ipv4_forwarding=(state) return if state == ipv4_forwarding config_set('interface', 'ipv4_forwarding', name: @name, state: state ? '' : 'no') end |
#ipv4_netmask_length ⇒ Object
557 558 559 |
# File 'lib/cisco_node_utils/interface.rb', line 557 def ipv4_netmask_length select_ipv4_attribute(:v4_mask) end |
#ipv4_netmask_length_secondary ⇒ Object
561 562 563 |
# File 'lib/cisco_node_utils/interface.rb', line 561 def ipv4_netmask_length_secondary select_ipv4_attribute(:v4_mask_secondary) end |
#ipv4_pim_sparse_mode ⇒ Object
727 728 729 730 |
# File 'lib/cisco_node_utils/interface.rb', line 727 def ipv4_pim_sparse_mode return nil unless switchport_mode == :disabled config_get('interface', 'ipv4_pim_sparse_mode', @get_args) end |
#ipv4_pim_sparse_mode=(state) ⇒ Object
732 733 734 735 736 737 |
# File 'lib/cisco_node_utils/interface.rb', line 732 def ipv4_pim_sparse_mode=(state) check_switchport(:disabled) Feature.pim_enable unless platform == :ios_xr config_set('interface', 'ipv4_pim_sparse_mode', name: @name, state: state ? '' : 'no') end |
#ipv4_proxy_arp ⇒ Object
743 744 745 746 |
# File 'lib/cisco_node_utils/interface.rb', line 743 def ipv4_proxy_arp return nil if @name[/loop/i] || switchport_mode != :disabled config_get('interface', 'ipv4_proxy_arp', @get_args) end |
#ipv4_proxy_arp=(proxy_arp) ⇒ Object
748 749 750 751 752 |
# File 'lib/cisco_node_utils/interface.rb', line 748 def ipv4_proxy_arp=(proxy_arp) check_switchport(:disabled) no_cmd = (proxy_arp ? '' : 'no') config_set('interface', 'ipv4_proxy_arp', name: @name, state: no_cmd) end |
#ipv4_redirects ⇒ Object
767 768 769 770 |
# File 'lib/cisco_node_utils/interface.rb', line 767 def ipv4_redirects return nil unless switchport_mode == :disabled config_get('interface', ipv4_redirects_lookup_string, @get_args) end |
#ipv4_redirects=(redirects) ⇒ Object
772 773 774 775 776 777 |
# File 'lib/cisco_node_utils/interface.rb', line 772 def ipv4_redirects=(redirects) check_switchport(:disabled) no_cmd = (redirects ? '' : 'no') config_set('interface', ipv4_redirects_lookup_string, name: @name, state: no_cmd) end |
#ipv4_redirects_lookup_string ⇒ Object
758 759 760 761 762 763 764 765 |
# File 'lib/cisco_node_utils/interface.rb', line 758 def ipv4_redirects_lookup_string case @name when /loopback/i return 'ipv4_redirects_loopback' else return 'ipv4_redirects_other_interfaces' end end |
#ipv6_acl_in ⇒ Object
783 784 785 |
# File 'lib/cisco_node_utils/interface.rb', line 783 def ipv6_acl_in config_get('interface', 'ipv6_acl_in', @get_args) end |
#ipv6_acl_in=(val) ⇒ Object
787 788 789 790 791 792 793 794 795 796 797 |
# File 'lib/cisco_node_utils/interface.rb', line 787 def ipv6_acl_in=(val) if val != '' state = '' else state = 'no' val = ipv6_acl_in end return unless val && val != '' config_set('interface', 'ipv6_acl_in', name: @name, state: state, acl: val) end |
#ipv6_acl_out ⇒ Object
803 804 805 |
# File 'lib/cisco_node_utils/interface.rb', line 803 def ipv6_acl_out config_get('interface', 'ipv6_acl_out', @get_args) end |
#ipv6_acl_out=(val) ⇒ Object
807 808 809 810 811 812 813 814 815 816 817 |
# File 'lib/cisco_node_utils/interface.rb', line 807 def ipv6_acl_out=(val) if val != '' state = '' else state = 'no' val = ipv6_acl_out end return unless val && val != '' config_set('interface', 'ipv6_acl_out', name: @name, state: state, acl: val) end |
#ipv6_dhcp_relay_addr ⇒ Object
823 824 825 |
# File 'lib/cisco_node_utils/interface.rb', line 823 def ipv6_dhcp_relay_addr config_get('interface', 'ipv6_dhcp_relay_addr', @get_args) end |
#ipv6_dhcp_relay_addr=(list) ⇒ Object
827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 |
# File 'lib/cisco_node_utils/interface.rb', line 827 def ipv6_dhcp_relay_addr=(list) cur_list = ipv6_dhcp_relay_addr # remove the current addresses first unless cur_list.empty? cur_list.each do |addr| config_set('interface', 'ipv6_dhcp_relay_addr', name: @name, state: 'no', addr: addr) end end Feature.dhcp_enable unless list.empty? list.each do |addr| config_set('interface', 'ipv6_dhcp_relay_addr', name: @name, state: '', addr: addr) end end |
#ipv6_dhcp_relay_src_intf ⇒ Object
847 848 849 850 851 852 |
# File 'lib/cisco_node_utils/interface.rb', line 847 def ipv6_dhcp_relay_src_intf intf = config_get('interface', 'ipv6_dhcp_relay_src_intf', @get_args) # Normalize by downcasing and removing white space intf = intf.downcase.delete(' ') if intf intf end |
#ipv6_dhcp_relay_src_intf=(val) ⇒ Object
854 855 856 857 858 859 860 861 |
# File 'lib/cisco_node_utils/interface.rb', line 854 def ipv6_dhcp_relay_src_intf=(val) state = val == default_ipv6_dhcp_relay_src_intf ? 'no' : '' return false if state == 'no' && !Feature.dhcp_enabled? Feature.dhcp_enable if state.empty? intf = val == default_ipv6_dhcp_relay_src_intf ? '' : val config_set('interface', 'ipv6_dhcp_relay_src_intf', name: @name, state: state, intf: intf) end |
#ipv6_redirects ⇒ Object
867 868 869 870 |
# File 'lib/cisco_node_utils/interface.rb', line 867 def ipv6_redirects return nil if @name[/loop/i] || switchport_mode != :disabled config_get('interface', 'ipv6_redirects', @get_args) end |
#ipv6_redirects=(redirects) ⇒ Object
872 873 874 875 876 877 |
# File 'lib/cisco_node_utils/interface.rb', line 872 def ipv6_redirects=(redirects) check_switchport(:disabled) no_cmd = (redirects ? '' : 'no') config_set('interface', 'ipv6_redirects', name: @name, state: no_cmd) end |
#load_interval_counter_1_delay ⇒ Object
892 893 894 895 |
# File 'lib/cisco_node_utils/interface.rb', line 892 def load_interval_counter_1_delay return nil if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/] config_get('interface', 'load_interval_counter_1_delay', @get_args) end |
#load_interval_counter_1_delay=(val) ⇒ Object
897 898 899 900 901 902 |
# File 'lib/cisco_node_utils/interface.rb', line 897 def load_interval_counter_1_delay=(val) fail ArgumentError, 'Interface cannot be sub-intf or loopback' if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/] config_set('interface', 'load_interval_counter_1_delay', name: @name, delay: val) end |
#load_interval_counter_2_delay ⇒ Object
914 915 916 917 |
# File 'lib/cisco_node_utils/interface.rb', line 914 def load_interval_counter_2_delay return nil if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/] config_get('interface', 'load_interval_counter_2_delay', @get_args) end |
#load_interval_counter_2_delay=(val) ⇒ Object
919 920 921 922 923 924 |
# File 'lib/cisco_node_utils/interface.rb', line 919 def load_interval_counter_2_delay=(val) fail ArgumentError, 'Interface cannot be sub-intf or loopback' if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/] config_set('interface', 'load_interval_counter_2_delay', name: @name, delay: val) end |
#load_interval_counter_3_delay ⇒ Object
930 931 932 933 |
# File 'lib/cisco_node_utils/interface.rb', line 930 def load_interval_counter_3_delay return nil if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/] config_get('interface', 'load_interval_counter_3_delay', @get_args) end |
#load_interval_counter_3_delay=(val) ⇒ Object
935 936 937 938 939 940 941 942 |
# File 'lib/cisco_node_utils/interface.rb', line 935 def load_interval_counter_3_delay=(val) fail ArgumentError, 'Interface cannot be sub-intf or loopback' if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/] state = val ? '' : 'no' delay = val ? val : '' config_set('interface', 'load_interval_counter_3_delay', name: @name, state: state, delay: delay) end |
#mtu ⇒ Object
957 958 959 |
# File 'lib/cisco_node_utils/interface.rb', line 957 def mtu config_get('interface', mtu_lookup_string, @get_args) end |
#mtu=(val) ⇒ Object
961 962 963 964 965 966 |
# File 'lib/cisco_node_utils/interface.rb', line 961 def mtu=(val) return if mtu == val check_switchport(:disabled) config_set('interface', mtu_lookup_string, name: @name, state: '', mtu: val) end |
#mtu_lookup_string ⇒ Object
948 949 950 951 952 953 954 955 |
# File 'lib/cisco_node_utils/interface.rb', line 948 def mtu_lookup_string case @name when /loopback/i return 'mtu_loopback' else return 'mtu_other_interfaces' end end |
#negotiate_auto ⇒ Object
1009 1010 1011 1012 |
# File 'lib/cisco_node_utils/interface.rb', line 1009 def negotiate_auto return nil if @name[/loop|vlan/] config_get('interface', negotiate_auto_lookup_string, @get_args) end |
#negotiate_auto=(negotiate_auto) ⇒ Object
1014 1015 1016 1017 1018 |
# File 'lib/cisco_node_utils/interface.rb', line 1014 def negotiate_auto=(negotiate_auto) lookup = negotiate_auto_lookup_string no_cmd = (negotiate_auto ? '' : 'no') config_set('interface', lookup, name: @name, state: no_cmd) end |
#negotiate_auto_lookup_string ⇒ Object
998 999 1000 1001 1002 1003 1004 1005 1006 1007 |
# File 'lib/cisco_node_utils/interface.rb', line 998 def negotiate_auto_lookup_string case @name when ETHERNET return 'negotiate_auto_ethernet' when PORTCHANNEL return 'negotiate_auto_portchannel' else return 'negotiate_auto_other_interfaces' end end |
#pim_bfd ⇒ Object
1066 1067 1068 |
# File 'lib/cisco_node_utils/interface.rb', line 1066 def pim_bfd config_get('interface', 'pim_bfd', @get_args) end |
#pim_bfd=(val) ⇒ Object
1070 1071 1072 1073 1074 1075 1076 1077 1078 |
# File 'lib/cisco_node_utils/interface.rb', line 1070 def pim_bfd=(val) return if val == pim_bfd state = val ? '' : 'no' if val Feature.pim_enable Feature.bfd_enable end config_set('interface', 'pim_bfd', name: @name, state: state) end |
#pvlan_enable ⇒ Object
195 196 197 198 |
# File 'lib/cisco_node_utils/interface.rb', line 195 def pvlan_enable switchport_enable Feature.private_vlan_enable end |
#pvlan_mapping ⇒ Object
This is an SVI property. <state> private-vlan mapping <range> # ex. range = [‘2-4,9’] Always returns an array.
1795 1796 1797 1798 1799 |
# File 'lib/cisco_node_utils/interface.rb', line 1795 def pvlan_mapping range = config_get('interface', 'pvlan_mapping', @get_args) return default_pvlan_mapping if range.nil? range.empty? ? range : [range.delete(' ')] end |
#pvlan_mapping=(range) ⇒ Object
1801 1802 1803 1804 1805 1806 1807 1808 1809 |
# File 'lib/cisco_node_utils/interface.rb', line 1801 def pvlan_mapping=(range) feature_vlan_set Feature.private_vlan_enable is = Utils.dash_range_to_elements(pvlan_mapping) should = Utils.dash_range_to_elements(range) pvlan_mapping_delta(is, should) end |
#pvlan_mapping_delta(is, should) ⇒ Object
1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 |
# File 'lib/cisco_node_utils/interface.rb', line 1811 def pvlan_mapping_delta(is, should) delta_hash = Utils.delta_add_remove(should, is) Cisco::Logger.debug("pvlan_mapping_delta: #{delta_hash}") [:remove, :add].each do |action| delta_hash[action].each do |vlan| state = (action == :add) ? '' : 'no' cli_error_check( config_set('interface', 'pvlan_mapping', name: @name, state: state, vlan: vlan)) end end end |
#pvlan_trunk_association_delta(is, should) ⇒ Object
1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 |
# File 'lib/cisco_node_utils/interface.rb', line 1692 def pvlan_trunk_association_delta(is, should) delta_hash = Utils.delta_add_remove(should, is) Cisco::Logger.debug("pvlan_trunk_association_delta: #{delta_hash}") [:remove, :add].each do |action| delta_hash[action].each do |pri_and_sec| state = (action == :add) ? '' : 'no' pri, sec = pri_and_sec # Cli does not like removals that specify the secondary sec = '' if action[/remove/] cli_error_check( config_set('interface', 'switchport_pvlan_trunk_association', name: @name, state: state, pri: pri, sec: sec)) end end end |
#select_ipv4_attribute(attribute) ⇒ Object
529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 |
# File 'lib/cisco_node_utils/interface.rb', line 529 def select_ipv4_attribute(attribute) d = ipv4_addr_mask.flatten unless ipv4_addr_mask.nil? # (d)ata format after flatten: ['addr', 'mask', 'addr', 'mask secondary'] case attribute when :v4_addr v = d.nil? ? default_ipv4_address : d[0] when :v4_mask v = d.nil? ? default_ipv4_netmask_length : d[1].to_i when :v4_addr_secondary v = (d.nil? || d.size < 4) ? default_ipv4_address : d[2] when :v4_mask_secondary if d.nil? || d.size < 4 v = default_ipv4_netmask_length else v = d[3][0, 2].to_i end end v end |
#set_range_based_params(list, param_name) ⇒ Object
2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 |
# File 'lib/cisco_node_utils/interface.rb', line 2085 def set_range_based_params(list, param_name) list.each do |range, property_value| # if a particular range is set to default, use 'no' cmd if property_value == 'default' config_set('interface', param_name, name: @name, state: 'no', range: range, val: '') else config_set('interface', param_name, name: @name, state: '', range: range, val: property_value) end end end |
#shutdown ⇒ Object
1024 1025 1026 |
# File 'lib/cisco_node_utils/interface.rb', line 1024 def shutdown config_get('interface', 'shutdown', @get_args) end |
#shutdown=(state) ⇒ Object
1028 1029 1030 1031 |
# File 'lib/cisco_node_utils/interface.rb', line 1028 def shutdown=(state) no_cmd = (state ? '' : 'no') config_set('interface', 'shutdown', name: @name, state: no_cmd) end |
#speed ⇒ Object
972 973 974 975 |
# File 'lib/cisco_node_utils/interface.rb', line 972 def speed return nil if @name[/loop|vlan/i] config_get('interface', 'speed', @get_args) end |
#speed=(val) ⇒ Object
977 978 979 |
# File 'lib/cisco_node_utils/interface.rb', line 977 def speed=(val) config_set('interface', 'speed', name: @name, speed: val) end |
#storm_control_broadcast ⇒ Object
1084 1085 1086 1087 |
# File 'lib/cisco_node_utils/interface.rb', line 1084 def storm_control_broadcast return nil if @name[/loop|vlan/i] config_get('interface', 'storm_control_broadcast', @get_args) end |
#storm_control_broadcast=(val) ⇒ Object
1089 1090 1091 1092 1093 1094 1095 |
# File 'lib/cisco_node_utils/interface.rb', line 1089 def storm_control_broadcast=(val) return if val == storm_control_broadcast state = val == default_storm_control_broadcast ? 'no' : '' level = val == default_storm_control_broadcast ? '' : val config_set('interface', 'storm_control_broadcast', name: @name, state: state, level: level) end |
#storm_control_multicast ⇒ Object
1101 1102 1103 1104 |
# File 'lib/cisco_node_utils/interface.rb', line 1101 def storm_control_multicast return nil if @name[/loop|vlan/i] config_get('interface', 'storm_control_multicast', @get_args) end |
#storm_control_multicast=(val) ⇒ Object
1106 1107 1108 1109 1110 1111 1112 |
# File 'lib/cisco_node_utils/interface.rb', line 1106 def storm_control_multicast=(val) return if val == storm_control_multicast state = val == default_storm_control_multicast ? 'no' : '' level = val == default_storm_control_multicast ? '' : val config_set('interface', 'storm_control_multicast', name: @name, state: state, level: level) end |
#storm_control_unicast ⇒ Object
1118 1119 1120 1121 |
# File 'lib/cisco_node_utils/interface.rb', line 1118 def storm_control_unicast return nil if @name[/loop|vlan/i] config_get('interface', 'storm_control_unicast', @get_args) end |
#storm_control_unicast=(val) ⇒ Object
1123 1124 1125 1126 1127 1128 1129 |
# File 'lib/cisco_node_utils/interface.rb', line 1123 def storm_control_unicast=(val) return if val == storm_control_unicast state = val == default_storm_control_unicast ? 'no' : '' level = val == default_storm_control_unicast ? '' : val config_set('interface', 'storm_control_unicast', name: @name, state: state, level: level) end |
#stp_bpdufilter ⇒ Object
1135 1136 1137 |
# File 'lib/cisco_node_utils/interface.rb', line 1135 def stp_bpdufilter config_get('interface', 'stp_bpdufilter', @get_args) end |
#stp_bpdufilter=(val) ⇒ Object
1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 |
# File 'lib/cisco_node_utils/interface.rb', line 1139 def stp_bpdufilter=(val) check_switchport([:access, :trunk]) if val state = '' else state = 'no' val = '' end config_set('interface', 'stp_bpdufilter', name: @name, state: state, filter: val) end |
#stp_bpduguard ⇒ Object
1155 1156 1157 |
# File 'lib/cisco_node_utils/interface.rb', line 1155 def stp_bpduguard config_get('interface', 'stp_bpduguard', @get_args) end |
#stp_bpduguard=(val) ⇒ Object
1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 |
# File 'lib/cisco_node_utils/interface.rb', line 1159 def stp_bpduguard=(val) if val state = '' else state = 'no' val = '' end config_set('interface', 'stp_bpduguard', name: @name, state: state, guard: val) end |
#stp_cost ⇒ Object
1174 1175 1176 1177 1178 |
# File 'lib/cisco_node_utils/interface.rb', line 1174 def stp_cost return nil if switchport_mode == :disabled cost = config_get('interface', 'stp_cost', @get_args) cost == 'auto' ? cost : cost.to_i end |
#stp_cost=(val) ⇒ Object
1180 1181 1182 1183 |
# File 'lib/cisco_node_utils/interface.rb', line 1180 def stp_cost=(val) check_switchport([:access, :trunk]) config_set('interface', 'stp_cost', name: @name, cost: val) end |
#stp_guard ⇒ Object
1189 1190 1191 |
# File 'lib/cisco_node_utils/interface.rb', line 1189 def stp_guard config_get('interface', 'stp_guard', @get_args) end |
#stp_guard=(val) ⇒ Object
1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 |
# File 'lib/cisco_node_utils/interface.rb', line 1193 def stp_guard=(val) check_switchport([:access, :trunk]) if val state = '' else state = 'no' val = '' end config_set('interface', 'stp_guard', name: @name, state: state, guard: val) end |
#stp_link_type ⇒ Object
1209 1210 1211 1212 |
# File 'lib/cisco_node_utils/interface.rb', line 1209 def stp_link_type return nil if switchport_mode == :disabled config_get('interface', 'stp_link_type', @get_args) end |
#stp_link_type=(val) ⇒ Object
1214 1215 1216 1217 |
# File 'lib/cisco_node_utils/interface.rb', line 1214 def stp_link_type=(val) check_switchport([:access, :trunk]) config_set('interface', 'stp_link_type', name: @name, type: val) end |
#stp_mst_cost ⇒ Object
Getter: Builds an array of mst cost commands currently on the device.
cli: spanning-tree mst 0,2-4,6,8-12 cost 1000
spanning-tree mst 4000-4020 cost 2568
array: [[‘0,2-4,6,8-12’, ‘1000’], [‘4000-4020’, ‘2568’]]
1243 1244 1245 |
# File 'lib/cisco_node_utils/interface.rb', line 1243 def stp_mst_cost config_get('interface', 'stp_mst_cost', @get_args) end |
#stp_mst_cost=(list) ⇒ Object
1247 1248 1249 1250 1251 1252 1253 |
# File 'lib/cisco_node_utils/interface.rb', line 1247 def stp_mst_cost=(list) check_switchport([:access, :trunk]) config_set('interface', 'stp_mst_cost', name: @name, state: 'no', range: @smr, val: '') if list.empty? set_range_based_params(list, 'stp_mst_cost') end |
#stp_mst_port_priority ⇒ Object
Getter: Builds an array of mst port-priority commands currently on the device.
cli: spanning-tree mst 0,2-4,6,8-12 port-priority 64
spanning-tree mst 4000-4020 port-priority 160
array: [[‘0,2-4,6,8-12’, ‘64’], [‘4000-4020’, ‘160’]]
1265 1266 1267 |
# File 'lib/cisco_node_utils/interface.rb', line 1265 def stp_mst_port_priority config_get('interface', 'stp_mst_port_priority', @get_args) end |
#stp_mst_port_priority=(list) ⇒ Object
1269 1270 1271 1272 1273 1274 1275 |
# File 'lib/cisco_node_utils/interface.rb', line 1269 def stp_mst_port_priority=(list) check_switchport([:access, :trunk]) config_set('interface', 'stp_mst_port_priority', name: @name, state: 'no', range: @smr, val: '') if list.empty? set_range_based_params(list, 'stp_mst_port_priority') end |
#stp_port_priority ⇒ Object
1223 1224 1225 1226 |
# File 'lib/cisco_node_utils/interface.rb', line 1223 def stp_port_priority return nil if switchport_mode == :disabled config_get('interface', 'stp_port_priority', @get_args) end |
#stp_port_priority=(val) ⇒ Object
1228 1229 1230 1231 |
# File 'lib/cisco_node_utils/interface.rb', line 1228 def stp_port_priority=(val) check_switchport([:access, :trunk]) config_set('interface', 'stp_port_priority', name: @name, pp: val) end |
#stp_port_type ⇒ Object
1281 1282 1283 |
# File 'lib/cisco_node_utils/interface.rb', line 1281 def stp_port_type config_get('interface', 'stp_port_type', @get_args) end |
#stp_port_type=(val) ⇒ Object
1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 |
# File 'lib/cisco_node_utils/interface.rb', line 1285 def stp_port_type=(val) if val state = '' else return unless stp_port_type state = 'no' val = stp_port_type end config_set('interface', 'stp_port_type', name: @name, state: state, type: val) end |
#stp_vlan_cost ⇒ Object
Getter: Builds an array of vlan cost commands currently on the device.
cli: spanning-tree vlan 1-4,6,8-12 cost 1000
spanning-tree vlan 3000-3960 cost 2568
array: [[‘1-4,6,8-12’, ‘1000’], [‘3000-3960’, ‘2568’]]
1307 1308 1309 |
# File 'lib/cisco_node_utils/interface.rb', line 1307 def stp_vlan_cost config_get('interface', 'stp_vlan_cost', @get_args) end |
#stp_vlan_cost=(list) ⇒ Object
1311 1312 1313 1314 1315 1316 1317 |
# File 'lib/cisco_node_utils/interface.rb', line 1311 def stp_vlan_cost=(list) check_switchport([:access, :trunk]) config_set('interface', 'stp_vlan_cost', name: @name, state: 'no', range: @svr, val: '') if list.empty? set_range_based_params(list, 'stp_vlan_cost') end |
#stp_vlan_port_priority ⇒ Object
Getter: Builds an array of vlan port-priority commands currently on the device.
cli: spanning-tree vlan 1-4,6,8-12 port-priority 64
spanning-tree vlan 3000-3960 port-priority 160
array: [[‘1-4,6,8-12’, ‘64’], [‘3000-3960’, ‘160’]]
1329 1330 1331 |
# File 'lib/cisco_node_utils/interface.rb', line 1329 def stp_vlan_port_priority config_get('interface', 'stp_vlan_port_priority', @get_args) end |
#stp_vlan_port_priority=(list) ⇒ Object
1333 1334 1335 1336 1337 1338 1339 |
# File 'lib/cisco_node_utils/interface.rb', line 1333 def stp_vlan_port_priority=(list) check_switchport([:access, :trunk]) config_set('interface', 'stp_vlan_port_priority', name: @name, state: 'no', range: @svr, val: '') if list.empty? set_range_based_params(list, 'stp_vlan_port_priority') end |
#svi_autostate ⇒ Object
svi_autostate is exclusive to svi interfaces
1950 1951 1952 1953 |
# File 'lib/cisco_node_utils/interface.rb', line 1950 def svi_autostate return nil unless @name[/^vlan/i] config_get('interface', 'svi_autostate', @get_args) end |
#svi_autostate=(val) ⇒ Object
1955 1956 1957 1958 1959 1960 |
# File 'lib/cisco_node_utils/interface.rb', line 1955 def svi_autostate=(val) check_switchport(:disabled) svi_cmd_allowed?('autostate') config_set('interface', 'svi_autostate', name: @name, state: val ? '' : 'no') end |
#svi_cmd_allowed?(cmd) ⇒ Boolean
1944 1945 1946 1947 |
# File 'lib/cisco_node_utils/interface.rb', line 1944 def svi_cmd_allowed?(cmd) fail "[#{@name}] Invalid interface type for command [#{cmd}]" unless @name[/vlan/i] end |
#svi_management ⇒ Object
svi_management is exclusive to svi interfaces
1978 1979 1980 1981 |
# File 'lib/cisco_node_utils/interface.rb', line 1978 def svi_management return nil unless @name[/^vlan/i] config_get('interface', 'svi_management', @get_args) end |
#svi_management=(val) ⇒ Object
1983 1984 1985 1986 1987 1988 |
# File 'lib/cisco_node_utils/interface.rb', line 1983 def svi_management=(val) check_switchport(:disabled) svi_cmd_allowed?('management') config_set('interface', 'svi_management', name: @name, state: val ? '' : 'no') end |
#switchport ⇒ Object
1345 1346 1347 1348 |
# File 'lib/cisco_node_utils/interface.rb', line 1345 def switchport # This is "switchport", not "switchport mode" config_get('interface', 'switchport', @get_args) end |
#switchport_autostate_exclude ⇒ Object
switchport_autostate_exclude is exclusive to switchport interfaces
1355 1356 1357 1358 |
# File 'lib/cisco_node_utils/interface.rb', line 1355 def switchport_autostate_exclude return nil if switchport_mode == :disabled config_get('interface', 'switchport_autostate_exclude', @get_args) end |
#switchport_autostate_exclude=(val) ⇒ Object
1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 |
# File 'lib/cisco_node_utils/interface.rb', line 1360 def switchport_autostate_exclude=(val) if platform == :nexus # cannot configure autostate unless feature vlan is enabled fail('switchport mode must be configured before ' \ 'switchport autostate') unless switchport feature_vlan_set(true) end config_set('interface', 'switchport_autostate_exclude', name: @name, state: val ? '' : 'no') end |
#switchport_enable(val = true) ⇒ Object
1350 1351 1352 |
# File 'lib/cisco_node_utils/interface.rb', line 1350 def switchport_enable(val=true) config_set('interface', 'switchport', name: @name, state: val ? '' : 'no') end |
#switchport_enable_and_mode(mode_set) ⇒ Object
1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 |
# File 'lib/cisco_node_utils/interface.rb', line 1400 def switchport_enable_and_mode(mode_set) switchport_enable if :fabricpath == mode_set fabricpath_feature_set(:enabled) unless :enabled == fabricpath_feature elsif :fex_fabric == mode_set Feature.fex_enable end config_set('interface', switchport_mode_lookup_string, name: @name, state: '', mode: IF_SWITCHPORT_MODE[mode_set]) end |
#switchport_mode ⇒ Object
1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 |
# File 'lib/cisco_node_utils/interface.rb', line 1386 def switchport_mode return nil if platform == :ios_xr mode = config_get('interface', switchport_mode_lookup_string, @get_args) return mode.nil? ? :disabled : IF_SWITCHPORT_MODE.key(mode) rescue IndexError # Assume this is an interface that doesn't support switchport. # Do not raise exception since the providers will prefetch this property # regardless of interface type. # TODO: this should probably be nil instead return :disabled end |
#switchport_mode=(mode_set) ⇒ Object
1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 |
# File 'lib/cisco_node_utils/interface.rb', line 1412 def switchport_mode=(mode_set) # no system default switchport # int e1/1 # switchport # switchport mode [access|trunk|fex|...] fail ArgumentError unless IF_SWITCHPORT_MODE.keys.include? mode_set case mode_set when :disabled if switchport # Note: turn off switchport command, not switchport mode config_set('interface', 'switchport', name: @name, state: 'no') end when :default if :disabled == default_switchport_mode config_set('interface', switchport_mode_lookup_string, name: @name, state: 'no', mode: '') else switchport_enable_and_mode(mode_set) end else switchport_enable_and_mode(mode_set) end # case end |
#switchport_mode_lookup_string ⇒ Object
1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 |
# File 'lib/cisco_node_utils/interface.rb', line 1375 def switchport_mode_lookup_string case @name when ETHERNET return 'switchport_mode_ethernet' when PORTCHANNEL return 'switchport_mode_port_channel' else return 'switchport_mode_other_interfaces' end end |
#switchport_pvlan_host ⇒ Object
<state> switchport mode private-vlan host
1505 1506 1507 1508 |
# File 'lib/cisco_node_utils/interface.rb', line 1505 def switchport_pvlan_host return nil if switchport_mode == :disabled config_get('interface', 'switchport_pvlan_host', @get_args) end |
#switchport_pvlan_host=(state) ⇒ Object
1510 1511 1512 1513 1514 |
# File 'lib/cisco_node_utils/interface.rb', line 1510 def switchport_pvlan_host=(state) pvlan_enable config_set('interface', 'switchport_pvlan_host', name: @name, state: state ? '' : 'no') end |
#switchport_pvlan_host_association ⇒ Object
<state> switchport private-vlan host-association <pri> <sec> Note this is NOT a multiple, unlike trunk association.
1540 1541 1542 |
# File 'lib/cisco_node_utils/interface.rb', line 1540 def switchport_pvlan_host_association config_get('interface', 'switchport_pvlan_host_association', @get_args) end |
#switchport_pvlan_host_association=(pri_and_sec) ⇒ Object
Input: An array of primary and secondary vlans: [‘44’, ‘244’]
1545 1546 1547 1548 1549 1550 1551 1552 1553 |
# File 'lib/cisco_node_utils/interface.rb', line 1545 def switchport_pvlan_host_association=(pri_and_sec) pvlan_enable state = pri_and_sec.empty? ? 'no' : '' pri, sec = pri_and_sec cli_error_check( config_set('interface', 'switchport_pvlan_host_association', name: @name, state: state, pri: pri, sec: sec)) end |
#switchport_pvlan_mapping ⇒ Object
<state> switchport private-vlan mapping <primary> <vlan>
1561 1562 1563 |
# File 'lib/cisco_node_utils/interface.rb', line 1561 def switchport_pvlan_mapping config_get('interface', 'switchport_pvlan_mapping', @get_args) end |
#switchport_pvlan_mapping=(primary_and_range) ⇒ Object
Input: An array of primary vlan and range of vlans: [‘44’, ‘3-4,6’]
1566 1567 1568 |
# File 'lib/cisco_node_utils/interface.rb', line 1566 def switchport_pvlan_mapping=(primary_and_range) switchport_pvlan_mapping_delta(primary_and_range) end |
#switchport_pvlan_mapping_delta(primary_and_range) ⇒ Object
Find the is/should delta and add/remove commands as needed.
Inputs: primary_and_range: An array of primary vlan and range of vlans
1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 |
# File 'lib/cisco_node_utils/interface.rb', line 1579 def switchport_pvlan_mapping_delta(primary_and_range) # Enable switchport mode and feature private-vlan pvlan_enable primary, should_range = primary_and_range # primary changes require removing the entire command first is_range = switchport_pvlan_mapping_remove?(primary) # convert ranges to individual elements is = Utils.dash_range_to_elements(is_range) should = Utils.dash_range_to_elements(should_range) # create the delta hash and apply the changes delta_hash = Utils.delta_add_remove(should, is) Cisco::Logger.debug('switchport_pvlan_mapping_delta: '\ "#{primary}: #{delta_hash}") [:add, :remove].each do |action| delta_hash[action].each do |vlan| state = (action == :add) ? '' : 'no' cli_error_check( config_set('interface', 'switchport_pvlan_mapping', name: @name, state: state, primary: primary, vlan: vlan)) end end end |
#switchport_pvlan_mapping_remove?(should_primary) ⇒ Boolean
switchport_pvlan_mapping_remove? This is a helper to check if command needs to be removed entirely.
should_primary: the new primary vlan value
Returns: the current vlan range
1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 |
# File 'lib/cisco_node_utils/interface.rb', line 1611 def switchport_pvlan_mapping_remove?(should_primary) is_primary, is_range = switchport_pvlan_mapping if (is_primary != should_primary) && !is_primary.nil? cli_error_check( config_set('interface', 'switchport_pvlan_mapping', name: @name, state: 'no', primary: '', vlan: '')) is_range = [] end is_range end |
#switchport_pvlan_mapping_trunk ⇒ Object
<state> switchport private-vlan mapping trunk <primary> <vlan>
1625 1626 1627 |
# File 'lib/cisco_node_utils/interface.rb', line 1625 def switchport_pvlan_mapping_trunk config_get('interface', 'switchport_pvlan_mapping_trunk', @get_args) end |
#switchport_pvlan_mapping_trunk=(should) ⇒ Object
Input: A nested array of primary vlan and range of vlans:
- [‘44’, ‘3-4,6’], [‘99’, ‘199’]
1631 1632 1633 |
# File 'lib/cisco_node_utils/interface.rb', line 1631 def switchport_pvlan_mapping_trunk=(should) switchport_pvlan_mapping_trunk_delta(should) end |
#switchport_pvlan_mapping_trunk_delta(should) ⇒ Object
switchport_pvlan_mapping_trunk_delta(should)
Find the is/should delta and add/remove commands as needed. The ‘should’ value is a nested array of primary vlan and secondary ranges; e.g.:
[['44', '144-145'], ['99', '199-201']
1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 |
# File 'lib/cisco_node_utils/interface.rb', line 1647 def switchport_pvlan_mapping_trunk_delta(should) # Enable switchport mode and feature private-vlan pvlan_enable # Handle single-level arrays if found: [pri, range] -> [[pri,range]] should = [should] if !should.empty? && (Utils.depth(should) == 1) is = switchport_pvlan_mapping_trunk delta_hash = Utils.delta_add_remove(should, is, :updates_not_allowed) Cisco::Logger.debug("switchport_pvlan_mapping_trunk_delta: #{delta_hash}") [:remove, :add].each do |action| delta_hash[action].each do |pri_and_range| pri, range = pri_and_range if action == :add state = '' else state = 'no' range = '' end cli_error_check( config_set('interface', 'switchport_pvlan_mapping_trunk', name: @name, state: state, primary: pri, range: range)) end end end |
#switchport_pvlan_promiscuous ⇒ Object
<state> switchport mode private-vlan promiscuous
1522 1523 1524 1525 |
# File 'lib/cisco_node_utils/interface.rb', line 1522 def switchport_pvlan_promiscuous return nil if switchport_mode == :disabled config_get('interface', 'switchport_pvlan_promiscuous', @get_args) end |
#switchport_pvlan_promiscuous=(state) ⇒ Object
1527 1528 1529 1530 1531 |
# File 'lib/cisco_node_utils/interface.rb', line 1527 def switchport_pvlan_promiscuous=(state) pvlan_enable config_set('interface', 'switchport_pvlan_promiscuous', name: @name, state: state ? '' : 'no') end |
#switchport_pvlan_trunk_allowed_vlan ⇒ Object
<state> switchport private-vlan trunk allowed vlan <range> Note that range is handled as a string because the entire range is replaced instead of individually adding or removing vlans from the range.
1751 1752 1753 1754 1755 1756 1757 1758 |
# File 'lib/cisco_node_utils/interface.rb', line 1751 def switchport_pvlan_trunk_allowed_vlan return nil if switchport_mode == :disabled vlans = config_get('interface', 'switchport_pvlan_trunk_allowed_vlan', @get_args) vlans = vlans.join(',') if vlans.is_a?(Array) vlans = Utils.normalize_range_array(vlans, :string) unless vlans == 'none' vlans end |
#switchport_pvlan_trunk_allowed_vlan=(range) ⇒ Object
1760 1761 1762 1763 1764 1765 1766 1767 1768 |
# File 'lib/cisco_node_utils/interface.rb', line 1760 def switchport_pvlan_trunk_allowed_vlan=(range) pvlan_enable range = Utils.normalize_range_array(range, :string) unless range == default_switchport_pvlan_trunk_allowed_vlan config_set('interface', 'switchport_pvlan_trunk_allowed_vlan', name: @name, range: range) end |
#switchport_pvlan_trunk_association ⇒ Object
<state> switchport private-vlan association trunk <pri> <sec> Supports multiple.
1676 1677 1678 |
# File 'lib/cisco_node_utils/interface.rb', line 1676 def switchport_pvlan_trunk_association config_get('interface', 'switchport_pvlan_trunk_association', @get_args) end |
#switchport_pvlan_trunk_association=(should) ⇒ Object
Input: A nested array of primary and secondary vlans:
- [‘44’, ‘244’], [‘99’, ‘299’]
1682 1683 1684 1685 1686 1687 1688 1689 1690 |
# File 'lib/cisco_node_utils/interface.rb', line 1682 def switchport_pvlan_trunk_association=(should) pvlan_enable # Handle single-level arrays if found: [pri, sec] -> [[pri,sec]] should = [should] if !should.empty? && (Utils.depth(should) == 1) is = switchport_pvlan_trunk_association pvlan_trunk_association_delta(is, should) end |
#switchport_pvlan_trunk_native_vlan ⇒ Object
<state> switchport trunk native vlan <vlan>
1776 1777 1778 1779 |
# File 'lib/cisco_node_utils/interface.rb', line 1776 def switchport_pvlan_trunk_native_vlan return nil if switchport_mode == :disabled config_get('interface', 'switchport_pvlan_trunk_native_vlan', @get_args) end |
#switchport_pvlan_trunk_native_vlan=(vlan) ⇒ Object
1781 1782 1783 1784 1785 |
# File 'lib/cisco_node_utils/interface.rb', line 1781 def switchport_pvlan_trunk_native_vlan=(vlan) pvlan_enable config_set('interface', 'switchport_pvlan_trunk_native_vlan', name: @name, vlan: vlan) end |
#switchport_pvlan_trunk_promiscuous ⇒ Object
<state> switchport mode private-vlan trunk promiscuous
1715 1716 1717 1718 |
# File 'lib/cisco_node_utils/interface.rb', line 1715 def switchport_pvlan_trunk_promiscuous return nil if switchport_mode == :disabled config_get('interface', 'switchport_pvlan_trunk_promiscuous', @get_args) end |
#switchport_pvlan_trunk_promiscuous=(state) ⇒ Object
1720 1721 1722 1723 1724 |
# File 'lib/cisco_node_utils/interface.rb', line 1720 def switchport_pvlan_trunk_promiscuous=(state) pvlan_enable config_set('interface', 'switchport_pvlan_trunk_promiscuous', name: @name, state: state ? '' : 'no') end |
#switchport_pvlan_trunk_secondary ⇒ Object
<state> switchport mode private-vlan trunk secondary
1732 1733 1734 1735 |
# File 'lib/cisco_node_utils/interface.rb', line 1732 def switchport_pvlan_trunk_secondary return nil if switchport_mode == :disabled config_get('interface', 'switchport_pvlan_trunk_secondary', @get_args) end |
#switchport_pvlan_trunk_secondary=(state) ⇒ Object
1737 1738 1739 1740 1741 |
# File 'lib/cisco_node_utils/interface.rb', line 1737 def switchport_pvlan_trunk_secondary=(state) pvlan_enable config_set('interface', 'switchport_pvlan_trunk_secondary', name: @name, state: state ? '' : 'no') end |
#switchport_status?(status) ⇒ Boolean
2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 |
# File 'lib/cisco_node_utils/interface.rb', line 2003 def switchport_status?(status) case status when :disabled return true if switchport_mode == status || switchport_mode.nil? when :access, :trunk return switchport_mode == status when Array return status.include?(switchport_mode) else return false end end |
#switchport_trunk_allowed_vlan ⇒ Object
1445 1446 1447 1448 1449 1450 1451 1452 |
# File 'lib/cisco_node_utils/interface.rb', line 1445 def switchport_trunk_allowed_vlan return nil if switchport_mode == :disabled vlans = config_get('interface', 'switchport_trunk_allowed_vlan', @get_args) vlans = vlans.join(',') if vlans.is_a?(Array) vlans = Utils.normalize_range_array(vlans, :string) unless vlans == 'none' vlans end |
#switchport_trunk_allowed_vlan=(val) ⇒ Object
1454 1455 1456 1457 1458 1459 1460 1461 1462 |
# File 'lib/cisco_node_utils/interface.rb', line 1454 def switchport_trunk_allowed_vlan=(val) if val.nil? config_set('interface', 'switchport_trunk_allowed_vlan', name: @name, state: 'no', vlan: '') else config_set('interface', 'switchport_trunk_allowed_vlan', name: @name, state: '', vlan: val) end end |
#switchport_trunk_native_vlan ⇒ Object
1468 1469 1470 1471 |
# File 'lib/cisco_node_utils/interface.rb', line 1468 def switchport_trunk_native_vlan return nil if switchport_mode == :disabled config_get('interface', 'switchport_trunk_native_vlan', @get_args) end |
#switchport_trunk_native_vlan=(val) ⇒ Object
1473 1474 1475 1476 1477 1478 1479 1480 1481 |
# File 'lib/cisco_node_utils/interface.rb', line 1473 def switchport_trunk_native_vlan=(val) if val.nil? config_set('interface', 'switchport_trunk_native_vlan', name: @name, state: 'no', vlan: '') else config_set('interface', 'switchport_trunk_native_vlan', name: @name, state: '', vlan: val) end end |
#switchport_vtp ⇒ Object
1930 1931 1932 1933 |
# File 'lib/cisco_node_utils/interface.rb', line 1930 def switchport_vtp return nil unless switchport_vtp_mode_capable? config_get('interface', 'vtp', @get_args) end |
#switchport_vtp=(vtp_set) ⇒ Object
1935 1936 1937 1938 1939 1940 1941 1942 |
# File 'lib/cisco_node_utils/interface.rb', line 1935 def switchport_vtp=(vtp_set) # TODO: throw UnsupportedError instead of returning false? return false unless switchport_vtp_mode_capable? return false if !vtp_set && !Feature.vtp_enabled? Feature.vtp_enable if vtp_set no_cmd = (vtp_set) ? '' : 'no' config_set('interface', 'vtp', name: @name, state: no_cmd) end |
#switchport_vtp_feature? ⇒ Boolean
1999 2000 2001 |
# File 'lib/cisco_node_utils/interface.rb', line 1999 def switchport_vtp_feature? config_get('vtp', 'feature') end |
#switchport_vtp_mode_capable? ⇒ Boolean
1926 1927 1928 |
# File 'lib/cisco_node_utils/interface.rb', line 1926 def switchport_vtp_mode_capable? !switchport_mode.to_s.match(/(access|trunk)/).nil? end |
#system_default_svi_autostate ⇒ Object
1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 |
# File 'lib/cisco_node_utils/interface.rb', line 1911 def system_default_svi_autostate # This command is a user-configurable system default. # # This property behaves differently on an n7k vs ni(3|9)k and therefore # needs special handling. # N7K: When enabled, does not nvgen. # When disabled, does nvgen, but differently then n(3|9)k. # Return true for the disabled case, false otherwise. # N(3|9)K: When enabled, does nvgen. # When disabled, does nvgen. # Return true for the enabled case, false otherwise. result = config_get('interface', 'system_default_svi_autostate') /N7K/.match(node.product_id) ? !result : result end |
#system_default_switchport ⇒ Object
1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 |
# File 'lib/cisco_node_utils/interface.rb', line 1893 def system_default_switchport # This command is a user-configurable system default. # # Note: This is a simple boolean state but there is a bug on some # platforms that causes the cli to nvgen twice; this causes config_get to # raise an error when it encounters the multiple. Therefore we define it # as a multiple to avoid the raise and handle the array if necessary. # val = config_get('interface', 'system_default_switchport') return (val[0][/^no /] ? false : true) if val.is_a?(Array) val end |
#system_default_switchport_shutdown ⇒ Object
1906 1907 1908 1909 |
# File 'lib/cisco_node_utils/interface.rb', line 1906 def system_default_switchport_shutdown # This command is a user-configurable system default. config_get('interface', 'system_default_switchport_shutdown') end |
#to_s ⇒ Object
70 71 72 |
# File 'lib/cisco_node_utils/interface.rb', line 70 def to_s "interface #{name}" end |
#vlan_mapping ⇒ Object
1848 1849 1850 1851 1852 |
# File 'lib/cisco_node_utils/interface.rb', line 1848 def vlan_mapping match = config_get('interface', 'vlan_mapping', @get_args) match.each(&:compact!) unless match.nil? match end |
#vlan_mapping=(should_list) ⇒ Object
1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 |
# File 'lib/cisco_node_utils/interface.rb', line 1854 def vlan_mapping=(should_list) Feature.vni_enable # Process a hash of vlan_mapping cmds from delta_add_remove(). # The vlan_mapping cli does not allow commands to be updated, they must # first be removed if there is a change. delta_hash = Utils.delta_add_remove(should_list, vlan_mapping, :updates_not_allowed) return if delta_hash.values.flatten.empty? # Process :remove first to ensure "update" commands will not fail. [:remove, :add].each do |action| Cisco::Logger.debug("vlan_mapping delta #{@get_args}\n"\ "#{action}: #{delta_hash[action]}") delta_hash[action].each do |original, translated| state = (action == :add) ? '' : 'no' config_set('interface', 'vlan_mapping', name: @name, state: state, original: original, translated: translated) end end end |
#vlan_mapping_enable ⇒ Object
1880 1881 1882 |
# File 'lib/cisco_node_utils/interface.rb', line 1880 def vlan_mapping_enable config_get('interface', 'vlan_mapping_enable', @get_args) end |
#vlan_mapping_enable=(state) ⇒ Object
1884 1885 1886 1887 |
# File 'lib/cisco_node_utils/interface.rb', line 1884 def vlan_mapping_enable=(state) config_set('interface', 'vlan_mapping_enable', name: @name, state: state ? '' : 'no') end |
#vpc_id ⇒ Object
2022 2023 2024 |
# File 'lib/cisco_node_utils/interface.rb', line 2022 def vpc_id config_get('interface', 'vpc_id', @get_args) end |
#vpc_id=(num) ⇒ Object
2026 2027 2028 2029 2030 2031 2032 2033 2034 |
# File 'lib/cisco_node_utils/interface.rb', line 2026 def vpc_id=(num) if num config_set('interface', 'vpc_id', name: @name, state: '', id: num) else # 'no vpc' doesn't work for phy ports, so do a get num = vpc_id config_set('interface', 'vpc_id', name: @name, state: 'no', id: num) end end |
#vpc_peer_link ⇒ Object
2040 2041 2042 2043 |
# File 'lib/cisco_node_utils/interface.rb', line 2040 def vpc_peer_link return nil unless @name[/port-channel/i] && switchport_mode != :disabled config_get('interface', 'vpc_peer_link', @get_args) end |
#vpc_peer_link=(state) ⇒ Object
2045 2046 2047 2048 2049 |
# File 'lib/cisco_node_utils/interface.rb', line 2045 def vpc_peer_link=(state) return if vpc_peer_link == state no_cmd = (state ? '' : 'no') config_set('interface', 'vpc_peer_link', name: @name, state: no_cmd) end |
#vrf ⇒ Object
2055 2056 2057 |
# File 'lib/cisco_node_utils/interface.rb', line 2055 def vrf config_get('interface', 'vrf', @get_args) end |
#vrf=(v) ⇒ Object
2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 |
# File 'lib/cisco_node_utils/interface.rb', line 2059 def vrf=(v) fail TypeError unless v.is_a?(String) return if v == vrf # Changing the VRF can result in loss of IP address, so cache it addr_1 = ipv4_address mask_1 = ipv4_netmask_length addr_2 = ipv4_address_secondary mask_2 = ipv4_netmask_length_secondary # XR actually blocks you from changing the VRF if IP addr is present unless platform == :nexus ipv4_addr_mask_set(nil, nil, false) unless addr_1.nil? ipv4_addr_mask_set(nil, nil, true) unless addr_2.nil? end if v.empty? config_set('interface', 'vrf', name: @name, state: 'no', vrf: '') else config_set('interface', 'vrf', name: @name, state: '', vrf: v) end ipv4_addr_mask_set(addr_1, mask_1, false) unless addr_1.nil? ipv4_addr_mask_set(addr_2, mask_2, true) unless addr_2.nil? end |