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

author() click to toggle source
# File lib/aio/core/module/cmd.rb, line 80
def author;          self.cmd_info[:author];               end
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