class Aio::Module::Cmd::Cisco::ShowEnv

Public Class Methods

new() click to toggle source
Calls superclass method Aio::Module::Cmd::new
# File lib/modules/cmd/cisco/show_env.rb, line 8
def initialize
  super({
    :cmd_full         => "show environment",
    :cmd_short        => "sh env",
    :author                   => "Elin",
    :description      => "This is Cisco Command# show environment",
    :ranking          => Ranking_1,
    :platform         => "all",
    :benchmark        => {
      :power_status   => ["==", "Normal"],
      :fan_status             => ["=~", "OK"],
      :cpu_status             => ["==", "Normal"],
    }
  })
end

Public Instance Methods

parse() click to toggle source
# File lib/modules/cmd/cisco/show_env.rb, line 24
def parse
  cont = self.context.dup

  # 是有版本区别的,要分开对待
  case device_template
  when Template_1, Template_2
    parse_tmp_1(cont)
  when Template_4
    parse_tmp_2(cont)
  end
end
parse_tmp_1(cont) click to toggle source
# File lib/modules/cmd/cisco/show_env.rb, line 36
def parse_tmp_1(cont)
  useful[:power] = {}
  cont.readline_match_block(/SYSTEM POWER SUPPLY STATUS/) {|b|b}
  cont.readline_match_block(/==========================/) {|b|b}
  cont.readline_range_loop(/Internal Power/, reg_blank) do |cont_layer|
    power = {}
    cont_layer.readline_match_block(/Internal Power Supply (?<power_id>\d+) Type: (?<type>.*)/) do |block|
      power_id = block[:power_id]
      useful[:power]["slot_#{power_id}"] = power
      block.update(power, :power_id)
      block.update(power, :type)
    end
    cont_layer.readline_match_block(/Output Status: (?<power_status>.*)/) do |block|
      block.warning_serious(power, :power_status, self)
    end
  end

  useful[:fan] = {}
  cont.readline_match_block(/SYSTEM FAN STATUS/) {|b|b}
  cont.readline_match_block(/=================/) {|b|b}
  cont.readline_match_block_loop(/Fan (?<fan_id>\d+) (?<fan_status>.*)/, reg_blank) do |block|
    fan = {}
    fan_id = block[:fan_id]
    useful[:fan]["slot_#{fan_id}"] = fan
    block.update(fan, :fan_id)
    block.warning_serious(fan, :fan_status, self)
  end

  cont.readline_match_block(/SYSTEM TEMPERATURE STATUS/) {|b|b}
  cont.readline_match_block(/=========================/) {|b|b}
  cont.readline_match_block(/CPU temperature: (?<cpu_temperature>\d+) Celsius, (?<cpu_status>.*)/) do |block|
    useful[:temperature] = {}
    block.update(useful[:temperature], :cpu_temperature)
    block.warning_serious(useful[:temperature], :cpu_status, self)
  end
end
parse_tmp_2(cont) click to toggle source
# File lib/modules/cmd/cisco/show_env.rb, line 73
def parse_tmp_2(cont)
  useful[:fan] = {}
  cont.readline_match_block(/Main Power Supply is AC/) {|b|b}
  cont.readline_match_block(reg_blank) {|b|b}
  cont.readline_match_block_loop(/Fan (?<fan_id>\d+) (?<fan_status>.*)/, reg_blank) do |block|
    fan = {}
    fan_id = block[:fan_id]
    useful[:fan]["slot_#{fan_id}"] = fan
    block.update(fan, :fan_id)
    block.warning_serious(fan, :fan_status, self)
  end
end