class Aio::Module::Cmd::Maipu::ShowSystemFan

Public Class Methods

new() click to toggle source
Calls superclass method Aio::Module::Cmd::new
# File lib/modules/cmd/maipu/show_system_fan.rb, line 8
def initialize
        super({
                :cmd_full            => "show system fan",
                :cmd_short   => "sh sys fan",
                :author                      => "Elin",
                :description => "This is Maipu Command# show system fan",
                :ranking             => Ranking_1,
                :platform            => "all",
                :benchmark   => {
                        :fan_status         => ["==", "NORMAL", 'Normal'],
                        :fan_alarm          => ["<", 1]
                        }
        })
end

Public Instance Methods

parse() click to toggle source
# File lib/modules/cmd/maipu/show_system_fan.rb, line 23
def parse
        cont = self.context.dup
        useful[:fan] = {}
        
        cont.readline_range_loop(/System FAN Information/, reg_blank) do |cont_layer|
                parse_fan(cont_layer)
        end
end
parse_fan(context) click to toggle source
# File lib/modules/cmd/maipu/show_system_fan.rb, line 32
def parse_fan(context)
        fan = {}
        fan_id = nil
        context.readline_match_block(/System FAN Information\(Fan (?<fan_id>\d+) - (?<state>.*)\)/) do |block|
                fan_id = block[:fan_id]
                useful[:fan]["slot_#{fan_id}"] = fan
                block.update(fan, :fan_id)
                block.update(fan, :state)
        end

        if fan[:state] =~ /ONLINE/
                context.readline_match_block(/Status: (?<fan_status>.*)/) do |block|
                        block.warning_serious(fan, :fan_status, self)
                end
                context.readline_match_block(/Last-Alarm: (?<fan_alarm>\d+)/) do |block|
                        block.warning_serious(fan, :fan_alarm, self)
                end
                context.readline_match_block(/Serial No\.: (?<sn>.*)/) do |block|
                        block.update(fan, :sn)
                end
                context.readline_match_block(/Description: (?<description>.*)/) do |block|
                        block.update(fan, :description)
                end
        end

        context.readline_match_block(/STATISTICS: (?<in>\d+) IN, (?<out>\d+) OUT, (?<in_error>\d+) IERR, (?<out_error>\d+) OERR/) do |block|
                stat = {}
                fan[:statistics] = stat
                block.update(stat, :in)
                block.update(stat, :out)
                block.update(stat, :in_error)
                block.update(stat, :out_error)
        end
end