class Aio::Module::Cmd::H3C::DisplayInterface
Constants
- Reg_Bridge_Aggregation
- Reg_Ethernet
- Reg_Loopback
- Reg_Vlanif
Public Class Methods
new()
click to toggle source
Calls superclass method
Aio::Module::Cmd::new
# File lib/modules/cmd/h3c/display_interface.rb, line 9 def initialize super({ :cmd_full => "display interface", :cmd_short => "dis inter", :author => "Elin", :description => "This is H3C Command# display interface", :ranking => Ranking_1, :platform => "switch", :benchmark => { :duplex => ["=~", /full/], :input_errors => ["<", 10], :output_errors => ["<", 10], :runts => ["<", 10], :giants => ["<", 10], :throttles => ["<", 10], :crc => ["<", 1000], :frame => ["<", 10], :overruns => ["<", 10], :aborts => ["<", 10], :underruns => ["<", 10], :deferred => ["<", 10], :carrier => ["<", 10], :input_drops => ["<", 10], :output_drops => ["<", 10], :collisions => ["<", 10], :last_collisions => ["<", 10], :lost_carrier => ["<", 10], } }) end
Public Instance Methods
parse()
click to toggle source
# File lib/modules/cmd/h3c/display_interface.rb, line 45 def parse cont = self.context.dup useful[:interface] = {} loop do cont.readline_range(/.*/, reg_blank) do |cont_layer| switch_iface(cont_layer) end end end
parse_bridge(context)
click to toggle source
# File lib/modules/cmd/h3c/display_interface.rb, line 75 def parse_bridge(context) iface = {} iface_id = nil context.readline_match_block(/(?<iface_id>Bridge-Aggregation\d+) current state\s?:\s?(?<state>.*)/) do |block| iface_id = block[:iface_id] useful[:interface][iface_id] = iface block.update(iface, :iface_id) block.update(iface, :state) end context.readline_match_block(/IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: (?<mac>.*)/) do |block| block.update(iface, :mac) end context.readline_match_block(/Description: (?<description>.*)/) do |block| block.update(iface, :description) end context.readline_match_block(/(?<speed>.*) mode, (?<duplex>.*) mode/) do |block| block.update(iface, :speed) block.warning_serious(iface, :duplex, self) if iface[:state] =~ /UP/ end context.readline_match_block(/Port link-type: (?<link_type>.*)/) do |block| block.update(iface, :link_type) end same_line_1(context, iface, iface_id) if iface[:state] =~ /UP/ end
parse_eth(context)
click to toggle source
# File lib/modules/cmd/h3c/display_interface.rb, line 100 def parse_eth(context) iface = {} iface_id = nil context.readline_match_block(/(?<iface_id>.*) current state\s?:\s?(?<state>.*)/) do |block| iface_id = block[:iface_id].strip useful[:interface][iface_id] = iface block.update(iface, :iface_id) block.update(iface, :state) end return if iface.nil? context.readline_match_block(/Hardware Address: (?<mac>.*)/) do |block| block.update(iface, :mac) end context.readline_match_block(/Description: (?<description>.*)/) do |block| block.update(iface, :description) end context.readline_match_block(/(?<speed>.*) mode, (?<duplex>.*) mode/) do |block| block.update(iface, :speed) block.warning_serious(iface, :duplex, self) if iface[:state] =~ /UP/ end same_line_1(context, iface, iface_id) if iface[:state] =~ /UP/ end
parse_loopback(context)
click to toggle source
# File lib/modules/cmd/h3c/display_interface.rb, line 151 def parse_loopback(context) iface = {} iface_id = nil context.readline_match_block(/(?<iface_id>LoopBack\d+) current state\s?:\s?(?<state>.*)/) do |block| iface_id = block[:iface_id] useful[:interface][iface_id] = iface block.update(iface, :iface_id) block.update(iface, :state) end same_line_2(context, iface, iface_id) end
parse_vlanif(context)
click to toggle source
# File lib/modules/cmd/h3c/display_interface.rb, line 163 def parse_vlanif(context) iface = {} iface_id = nil context.readline_match_block(/(?<iface_id>.*) current state: (?<state>.*)/) do |block| iface_id = block[:iface_id] useful[:interface][iface_id] = iface block.update(iface, :iface_id) block.update(iface, :state) end same_line_2(context, iface, iface_id) end
same_line_1(context, iface, iface_id)
click to toggle source
# File lib/modules/cmd/h3c/display_interface.rb, line 123 def same_line_1(context, iface, iface_id) context.readline_match_block(/Input: (?<input_errors>\d+) input errors, (?<runts>\d+) runts, (?<giants>\d+) giants, (?<throttles>\d+) throttles/) do |block| ##### block.warning_ordinary(iface, :input_errors, self) block.warning_ordinary(iface, :runts, self) block.warning_ordinary(iface, :giants, self) block.warning_ordinary(iface, :throttles, self) end context.readline_match_block(/(?<crc>\d+) CRC, (?<frame>\d+) frame, - overruns, (?<aborts>\d+) aborts/) do |block| block.warning_serious(iface, :crc, self) block.warning_ordinary(iface, :frame, self) block.warning_ordinary(iface, :aborts, self) end context.readline_match_block(/Output: (?<output_errors>\d+) output errors, - underruns, - buffer failures/) do |block| block.warning_ordinary(iface, :output_errors, self) end context.readline_match_block(/(?<aborts>\d+) aborts, (?<deferred>\d+) deferred, (?<collisions>\d+) collisions, (?<last_collisions>\d+) late collisions/) do |block| block.warning_ordinary(iface, :aborts, self) block.warning_ordinary(iface, :deferred, self) block.warning_ordinary(iface, :collisions, self) block.warning_ordinary(iface, :last_collisions, self) end context.readline_match_block(/(?<lost_carrier>\d+) lost carrier/) do |block| block.warning_ordinary(iface, :lost_carrier, self) end end
same_line_2(context, iface, iface_id)
click to toggle source
# File lib/modules/cmd/h3c/display_interface.rb, line 175 def same_line_2(context, iface, iface_id) context.readline_match_block(/Line protocol current state: (?<proto_state>.*)/) do |block| block.update(iface, :proto_state) end context.readline_match_block(/Description: (?<description>.*)/) do |block| block.update(iface, :description) end context.readline_match_block(/Internet (?<addr>.*)/) do |block| if block[:addr] =~ /Address (.*) Primary/ block.update(iface, :ip_addr, $1) end end context.readline_match_block(/Hardware Address: (?<mac>.*)/) do |block| block.update(iface, :mac) end if iface[:state] =~ /UP/ context.readline_match_block(/input, \d+ bytes, (?<input_drops>\d+) drops/) do |block| block.warning_ordinary(iface, :input_drops, self) end context.readline_match_block(/output, \d+ bytes, (?<output_drops>\d+) drops/) do |block| block.warning_ordinary(iface, :output_drops, self) end end end
switch_iface(context)
click to toggle source
# File lib/modules/cmd/h3c/display_interface.rb, line 55 def switch_iface(context) i = 0 while(i < 5) if context[i] =~ /current/ break end i += 1 end case context[i] when Reg_Bridge_Aggregation parse_bridge(context) when Reg_Ethernet parse_eth(context) when Reg_Loopback parse_loopback(context) when Reg_Vlanif parse_vlanif(context) end end