class Aio::Module::Cmd
Attributes
cmd_info[RW]
模块的信息
context[RW]
加载的欲解析的文本
device_info[RW]
加载设备的基本信息 :device_version :device_model
ext_info[RW]
获取一些额外的信息,有device提供
useful[RW]
解析后得到的有用信息 以Hash = { :case => info }
warning_klass[RW]
加载warning信息
Public Class Methods
new(info = {})
click to toggle source
# File lib/aio/core/module/cmd.rb, line 38 def initialize(info = {}) @cmd_info = info.dup @useful = {} set_defaults() end
Public Instance Methods
benchmark()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 83 def benchmark; self.cmd_info[:benchmark]; end
clear_useful()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 69 def clear_useful @useful = {} end
cmd_full()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 78 def cmd_full; self.cmd_info[:cmd_full]; end
cmd_short()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 79 def cmd_short; self.cmd_info[:cmd_short]; end
description()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 81 def description; self.cmd_info[:description]; end
division()
click to toggle source
将自己分裂出来一份,以免遭到覆盖
# File lib/aio/core/module/cmd.rb, line 45 def division self.class.new end
key_stand()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 86 def key_stand; self.cmd_info[:key_stand]; end
license()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 85 def license; self.cmd_info[:license]; end
parse()
click to toggle source
所有Cmd模块都必须重载此方法,用于解析命令
# File lib/aio/core/module/cmd.rb, line 74 def parse raise MethodError.new end
platform()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 84 def platform; self.cmd_info[:platform]; end
ranking()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 82 def ranking; self.cmd_info[:ranking]; end
set_defaults()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 49 def set_defaults self.cmd_info = { :cmd_full => 'No full name', :cmd_short => 'No short name', :author => nil, :description => 'No command description', :ranking => Ranking_1, # 用于确定设备类型 :key_stand => false, :benchmark => {}, # 平台,是 route, switch 还是 failware :platform => nil, :license => Aio::AIO_LICENSE, }.update(@cmd_info) end
type()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 65 def type Aio::Module::Cmd end
Protected Instance Methods
call_cmd(cmd_constant)
click to toggle source
直接调用平级CMD模块
# File lib/aio/core/module/cmd.rb, line 91 def call_cmd(cmd_constant) begin cmd_klass = cmd_constant.new cmd_klass.useful = @useful cmd_klass.context = @context cmd_klass.warning_klass = @warning_klass rescue Exception print_error "<call_cmd> 方法调用失败: #{cmd_constant}" end cmd_klass.parse end
device_model()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 137 def device_model device_info[:device_model] end
device_template()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 150 def device_template Object::const_get(device_info[:device_template]).instance end
device_version()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 128 def device_version device_info[:device_version] end
key_stand_cisco()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 103 def key_stand_cisco useful[:device_type] = "cisco" end
key_stand_h3c()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 111 def key_stand_h3c useful[:device_type] = "h3c" end
key_stand_huawei()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 107 def key_stand_huawei useful[:device_type] = "huawei" end
key_stand_juniper()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 119 def key_stand_juniper useful[:device_type] = "juniper" end
key_stand_maipu()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 115 def key_stand_maipu useful[:device_type] = "maipu" end
key_stand_model(model)
click to toggle source
确定设备型号
# File lib/aio/core/module/cmd.rb, line 133 def key_stand_model(model) useful[:device_model] = model end
key_stand_template(template)
click to toggle source
# File lib/aio/core/module/cmd.rb, line 141 def key_stand_template(template) begin template.instance rescue raise RuntimeError, "请使用Template类" end useful[:device_template] = template.to_s end
key_stand_version(ver)
click to toggle source
确定软件版本
# File lib/aio/core/module/cmd.rb, line 124 def key_stand_version(ver) useful[:device_version] = ver end
reg_blank()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 154 def reg_blank Aio::Base::Toolkit::Regexp.blank end
reg_separator()
click to toggle source
# File lib/aio/core/module/cmd.rb, line 158 def reg_separator if self.kind_of?(Cisco) return /^!$/ elsif self.kind_of?(H3C) return /^[#]$/ else reg_blank end end