aio_elin 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +675 -0
- data/README.md +9 -0
- data/config.rb +39 -0
- data/lib/aio/base/debug.rb +30 -0
- data/lib/aio/base/toolkit/array.rb +24 -0
- data/lib/aio/base/toolkit/date.rb +46 -0
- data/lib/aio/base/toolkit/deep_clone.rb +10 -0
- data/lib/aio/base/toolkit/diff.rb +104 -0
- data/lib/aio/base/toolkit/excel_office.rb +421 -0
- data/lib/aio/base/toolkit/excel_wps.rb +437 -0
- data/lib/aio/base/toolkit/excel_wps.rb.bak +299 -0
- data/lib/aio/base/toolkit/ipaddr.rb +28 -0
- data/lib/aio/base/toolkit/os.rb +26 -0
- data/lib/aio/base/toolkit/regexp.rb +32 -0
- data/lib/aio/base/toolkit/string.rb +28 -0
- data/lib/aio/base/toolkit/table.rb +441 -0
- data/lib/aio/base/toolkit/test_diff.rb +9 -0
- data/lib/aio/base/toolkit/test_excel.rb +118 -0
- data/lib/aio/base/toolkit/test_word.rb +58 -0
- data/lib/aio/base/toolkit/word_wps.rb +492 -0
- data/lib/aio/base/toolkit.rb +18 -0
- data/lib/aio/base.rb +10 -0
- data/lib/aio/core/device/cisco.rb +13 -0
- data/lib/aio/core/device/cmd_switch.rb +113 -0
- data/lib/aio/core/device/h3c.rb +12 -0
- data/lib/aio/core/device/huawei.rb +10 -0
- data/lib/aio/core/device/juniper.rb +10 -0
- data/lib/aio/core/device/maipu.rb +11 -0
- data/lib/aio/core/device/methods.rb +233 -0
- data/lib/aio/core/device/methods.rb.bak +199 -0
- data/lib/aio/core/device/parent_device.rb +275 -0
- data/lib/aio/core/device.rb +15 -0
- data/lib/aio/core/device_manager.rb +207 -0
- data/lib/aio/core/module/cmd.rb +160 -0
- data/lib/aio/core/module/description.rb +67 -0
- data/lib/aio/core/module/input_style.rb +98 -0
- data/lib/aio/core/module/output_style.rb +80 -0
- data/lib/aio/core/module/platform.rb +30 -0
- data/lib/aio/core/module/ranking.rb +24 -0
- data/lib/aio/core/module/special_style.rb +30 -0
- data/lib/aio/core/module/template.rb +13 -0
- data/lib/aio/core/module.rb +15 -0
- data/lib/aio/core/module_loader.rb +161 -0
- data/lib/aio/core/module_loader.rb.bak +148 -0
- data/lib/aio/core/module_manager.rb +112 -0
- data/lib/aio/core/module_manager.rb.bak +78 -0
- data/lib/aio/core/parse/file.rb +19 -0
- data/lib/aio/core/parse/parser.rb +91 -0
- data/lib/aio/core/parse/parser_machine/bak/has_cmd_state.rb +14 -0
- data/lib/aio/core/parse/parser_machine/bak/has_context_state.rb +11 -0
- data/lib/aio/core/parse/parser_machine/bak/no_cmd_state.rb +11 -0
- data/lib/aio/core/parse/parser_machine/bak/no_context_state.rb +11 -0
- data/lib/aio/core/parse/parser_machine/full_state.rb +12 -0
- data/lib/aio/core/parse/parser_machine/has_device_state.rb +44 -0
- data/lib/aio/core/parse/parser_machine/no_device_state.rb +12 -0
- data/lib/aio/core/parse/parser_machine/parent_state.rb +26 -0
- data/lib/aio/core/parse/parser_machine.rb +47 -0
- data/lib/aio/core/parse.rb +6 -0
- data/lib/aio/core/text/context.rb +211 -0
- data/lib/aio/core/text/line_string.rb +74 -0
- data/lib/aio/core/text/warning.rb +179 -0
- data/lib/aio/core/text.rb +7 -0
- data/lib/aio/core/warning/description.rb +47 -0
- data/lib/aio/core/warning/warning_summarize.rb +232 -0
- data/lib/aio/core/warning.rb +6 -0
- data/lib/aio/core.rb +32 -0
- data/lib/aio/license.rb +687 -0
- data/lib/aio/resource/cover_picture.png +0 -0
- data/lib/aio/resource/line.png +0 -0
- data/lib/aio/resource/logo.png +0 -0
- data/lib/aio/ui/banner.rb +85 -0
- data/lib/aio/ui/readable_text.rb +75 -0
- data/lib/aio/ui/verbose.rb +29 -0
- data/lib/aio/ui/version.rb +9 -0
- data/lib/aio/ui.rb +138 -0
- data/lib/aio.rb +13 -0
- data/lib/modules/cmd/cisco/show_clock.rb +32 -0
- data/lib/modules/cmd/cisco/show_cpu.rb +32 -0
- data/lib/modules/cmd/cisco/show_env.rb +71 -0
- data/lib/modules/cmd/cisco/show_failover.rb +39 -0
- data/lib/modules/cmd/cisco/show_interface_ip_brief.rb +24 -0
- data/lib/modules/cmd/cisco/show_interfaces.rb +177 -0
- data/lib/modules/cmd/cisco/show_inv.rb +43 -0
- data/lib/modules/cmd/cisco/show_ip_interface_brief.rb +42 -0
- data/lib/modules/cmd/cisco/show_ip_ospf_nei.rb +38 -0
- data/lib/modules/cmd/cisco/show_ip_route_summary.rb +81 -0
- data/lib/modules/cmd/cisco/show_memory.rb +27 -0
- data/lib/modules/cmd/cisco/show_process_cpu.rb +35 -0
- data/lib/modules/cmd/cisco/show_process_memory.rb +63 -0
- data/lib/modules/cmd/cisco/show_version.rb +97 -0
- data/lib/modules/cmd/h3c/display_clock.rb +32 -0
- data/lib/modules/cmd/h3c/display_cpu.rb +51 -0
- data/lib/modules/cmd/h3c/display_device_manuinfo.rb +45 -0
- data/lib/modules/cmd/h3c/display_fan.rb +91 -0
- data/lib/modules/cmd/h3c/display_interface.rb +203 -0
- data/lib/modules/cmd/h3c/display_ip_interface_brief.rb +34 -0
- data/lib/modules/cmd/h3c/display_ip_routing.rb +68 -0
- data/lib/modules/cmd/h3c/display_ip_routing_stat.rb +90 -0
- data/lib/modules/cmd/h3c/display_memory.rb +35 -0
- data/lib/modules/cmd/h3c/display_ospf_peer.rb +38 -0
- data/lib/modules/cmd/h3c/display_power.rb +90 -0
- data/lib/modules/cmd/h3c/display_version.rb +54 -0
- data/lib/modules/cmd/h3c/display_vrrp_verbose.rb +86 -0
- data/lib/modules/cmd/maipu/show_env.rb +34 -0
- data/lib/modules/cmd/maipu/show_ip_route.rb +74 -0
- data/lib/modules/cmd/maipu/show_ip_route_statistic.rb +36 -0
- data/lib/modules/cmd/maipu/show_memory.rb +31 -0
- data/lib/modules/cmd/maipu/show_system_fan.rb +66 -0
- data/lib/modules/cmd/maipu/show_system_power.rb +66 -0
- data/lib/modules/cmd/maipu/show_version.rb +50 -0
- data/lib/modules/description/style/crc.rb +22 -0
- data/lib/modules/description/style/input_errors.rb +22 -0
- data/lib/modules/description/style/overrun.rb +22 -0
- data/lib/modules/description/style/proc_ratio.rb +22 -0
- data/lib/modules/description/style/protocol.rb +22 -0
- data/lib/modules/description/style/register.rb +22 -0
- data/lib/modules/description/style/runts.rb +22 -0
- data/lib/modules/description/style/template.rb +22 -0
- data/lib/modules/description/style/total_output_drops.rb +22 -0
- data/lib/modules/input/style/compare_xml.rb +89 -0
- data/lib/modules/input/style/console.rb +222 -0
- data/lib/modules/input/style/console.rb.bak +114 -0
- data/lib/modules/input/style/xinhua_nat.rb +70 -0
- data/lib/modules/output/style/boc_day.rb +223 -0
- data/lib/modules/output/style/cmds.rb +77 -0
- data/lib/modules/output/style/compare_json.rb +26 -0
- data/lib/modules/output/style/compare_report.rb +31 -0
- data/lib/modules/output/style/compare_xml.rb +86 -0
- data/lib/modules/output/style/excel_table_office.rb +407 -0
- data/lib/modules/output/style/excel_table_wps.rb +400 -0
- data/lib/modules/output/style/summary_report.rb +563 -0
- data/lib/modules/special/style/compare.rb +110 -0
- metadata +176 -0
@@ -0,0 +1,179 @@
|
|
1
|
+
# 此类只针对单台设备的告警信息
|
2
|
+
module Aio::Text
|
3
|
+
class Warning
|
4
|
+
|
5
|
+
attr_reader :warning_info
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@warning_info = {
|
9
|
+
:serious => {},
|
10
|
+
:ordinary => {},
|
11
|
+
:compare => {},
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
def clear
|
16
|
+
@warning_info.each_pair { |_, v| v.clear }
|
17
|
+
end
|
18
|
+
|
19
|
+
# 判断是否需要添加警告
|
20
|
+
# info = iface
|
21
|
+
# sym = :errors
|
22
|
+
# mod = CMD模块self
|
23
|
+
# force 是否直接添加到warning_info中
|
24
|
+
# 如果是否,这相当于update
|
25
|
+
def warning(info, sym, level, mod, force=nil)
|
26
|
+
benchmark = mod.benchmark[sym]
|
27
|
+
var = info[sym]
|
28
|
+
|
29
|
+
# 支持有多个条件的基准值, 只要有一个符合标准就通过
|
30
|
+
if force.nil?
|
31
|
+
cond_num = benchmark.size - 1
|
32
|
+
i = 1
|
33
|
+
res = []
|
34
|
+
cond_num.times do
|
35
|
+
case benchmark[i]
|
36
|
+
when String
|
37
|
+
var = var.to_s
|
38
|
+
when Fixnum
|
39
|
+
var = var.to_i
|
40
|
+
when Float
|
41
|
+
var = var.to_f
|
42
|
+
end
|
43
|
+
# 还有种情况是正则的方式
|
44
|
+
|
45
|
+
var = var
|
46
|
+
ben = benchmark[i]
|
47
|
+
|
48
|
+
res << case benchmark[0]
|
49
|
+
when "=="
|
50
|
+
var == ben
|
51
|
+
when "=~"
|
52
|
+
var =~ Regexp.new(ben) ? true : false
|
53
|
+
when "!="
|
54
|
+
var != ben
|
55
|
+
when ">"
|
56
|
+
var > ben
|
57
|
+
when ">="
|
58
|
+
var >= ben
|
59
|
+
when "<"
|
60
|
+
var < ben
|
61
|
+
when "<="
|
62
|
+
var <= ben
|
63
|
+
end
|
64
|
+
|
65
|
+
i += 1
|
66
|
+
end
|
67
|
+
# 当 force 为假的时候,说明不需要加入到warning中,所以 res 为真
|
68
|
+
elsif force == false
|
69
|
+
res = [true]
|
70
|
+
|
71
|
+
# 当 force 为真的时候,说明需要加入到warning中,所以 res 为假
|
72
|
+
elsif force == true
|
73
|
+
res = [false]
|
74
|
+
end
|
75
|
+
|
76
|
+
unless res.include?(true)
|
77
|
+
if filter?(level, sym)
|
78
|
+
@warning_info[level][sym] ||= []
|
79
|
+
@warning_info[level][sym] << info
|
80
|
+
#pp "#{mod.ext_info[:device_name]} : #{level} : #{sym}"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def warning_serious(info, sym, mod, force=nil)
|
86
|
+
warning(info, sym, :serious, mod, force)
|
87
|
+
end
|
88
|
+
|
89
|
+
def warning_ordinary(info, sym, mod, force=nil)
|
90
|
+
warning(info, sym, :ordinary, mod, force)
|
91
|
+
end
|
92
|
+
|
93
|
+
def warning_compare(info)
|
94
|
+
@warning_info[:compare] = info
|
95
|
+
end
|
96
|
+
|
97
|
+
def warning_info_serious
|
98
|
+
@warning_info[:serious]
|
99
|
+
end
|
100
|
+
|
101
|
+
def warning_info_ordinary
|
102
|
+
@warning_info[:ordinary]
|
103
|
+
end
|
104
|
+
|
105
|
+
def warning_info_compare
|
106
|
+
@warning_info[:compare]
|
107
|
+
end
|
108
|
+
|
109
|
+
# 判断是否有警告信息
|
110
|
+
def has_warning?
|
111
|
+
return true unless warning_info_serious.empty?
|
112
|
+
return true unless warning_info_ordinary.empty?
|
113
|
+
return true unless warning_info_compare.empty?
|
114
|
+
return false
|
115
|
+
end
|
116
|
+
|
117
|
+
def has_warning_serious?
|
118
|
+
warning_info_serious.empty? ? false : true
|
119
|
+
end
|
120
|
+
|
121
|
+
def has_warning_ordinary?
|
122
|
+
warning_info_ordinary.empty? ? false : true
|
123
|
+
end
|
124
|
+
|
125
|
+
def has_warning_compare?
|
126
|
+
warning_info_compare.empty? ? false : true
|
127
|
+
end
|
128
|
+
|
129
|
+
# 警告数量
|
130
|
+
def serious_number
|
131
|
+
warning_info_serious.size
|
132
|
+
end
|
133
|
+
|
134
|
+
def ordinary_number
|
135
|
+
warning_info_ordinary.size
|
136
|
+
end
|
137
|
+
|
138
|
+
def compare_number
|
139
|
+
warning_info_compare.size
|
140
|
+
end
|
141
|
+
|
142
|
+
def total_number
|
143
|
+
serious_number + ordinary_number + compare_number
|
144
|
+
end
|
145
|
+
|
146
|
+
# 判断是否有指定的警告信息
|
147
|
+
# 不对compare 进行判断,因为compare 的格式还没有统一
|
148
|
+
def include_warning?(warn)
|
149
|
+
warn = warn[0].to_sym if warn.class == ::Array
|
150
|
+
return true if include_warning_serious?(warn)
|
151
|
+
return true if include_warning_ordinary?(warn)
|
152
|
+
#return true if include_warning_compare?(warn)
|
153
|
+
return false
|
154
|
+
end
|
155
|
+
|
156
|
+
def include_warning_serious?(warn)
|
157
|
+
warn = warn[0].to_sym if warn.class == ::Array
|
158
|
+
warning_info_serious.has_key?(warn) ? true : false
|
159
|
+
end
|
160
|
+
|
161
|
+
def include_warning_ordinary?(warn)
|
162
|
+
warn = warn[0].to_sym if warn.class == ::Array
|
163
|
+
warning_info_ordinary.has_key?(warn) ? true : false
|
164
|
+
end
|
165
|
+
|
166
|
+
# 与Aio::Config::Warning联动,如果里面有sym 的信息,则过滤
|
167
|
+
def filter?(level, sym)
|
168
|
+
case level
|
169
|
+
when :serious
|
170
|
+
warn = Aio::Config::Warning::Serious
|
171
|
+
when :ordinary
|
172
|
+
warn = Aio::Config::Warning::Ordinary
|
173
|
+
end
|
174
|
+
warn.include?(sym) ? false : true
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# 用于调用描述信息
|
2
|
+
module Aio::Warning
|
3
|
+
class Description
|
4
|
+
|
5
|
+
# Description模块
|
6
|
+
attr_accessor :modules
|
7
|
+
|
8
|
+
def initialize(module_manager)
|
9
|
+
@modules = {}
|
10
|
+
@parent_klass = Aio::Module::Description.new
|
11
|
+
modules_info = module_manager.get_modules_by_type("description")
|
12
|
+
tidy_modules(modules_info)
|
13
|
+
end
|
14
|
+
|
15
|
+
# 整理后的格式为
|
16
|
+
# modules = { :crc => klass }
|
17
|
+
def tidy_modules(module_info)
|
18
|
+
module_info.each_value do |info|
|
19
|
+
md = info[:klass]
|
20
|
+
self.modules[md.case] = md
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# 通过case获取模块的实例
|
25
|
+
def get_desc(sym)
|
26
|
+
modules.each_pair do |cs, klass|
|
27
|
+
case cs
|
28
|
+
when ::Array
|
29
|
+
if cs.include?(sym)
|
30
|
+
return klass
|
31
|
+
end
|
32
|
+
when ::Symbol
|
33
|
+
if cs == sym.to_sym
|
34
|
+
return klass
|
35
|
+
end
|
36
|
+
when ::String
|
37
|
+
if cs == sym.to_s
|
38
|
+
return klass
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
return @parent_klass.temp(sym)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,232 @@
|
|
1
|
+
# 用于收集汇总所有设备的警告信息
|
2
|
+
module Aio::Warning
|
3
|
+
class WarningSummarize
|
4
|
+
|
5
|
+
# 按结构保存警告信息
|
6
|
+
# summary = { :serious =>
|
7
|
+
# { :crc =>
|
8
|
+
# { device_name =>
|
9
|
+
# { :klass =>device_klass] ,
|
10
|
+
# :detail => device_klass.warning }} }
|
11
|
+
attr_reader :summary
|
12
|
+
|
13
|
+
# 设备的警告信息
|
14
|
+
# device_warning = { device_name => device_warning_klass }
|
15
|
+
attr_reader :device_warning
|
16
|
+
|
17
|
+
def initialize(device_manager)
|
18
|
+
@device_manager = device_manager
|
19
|
+
@description = Description.new(device_manager.module_manager)
|
20
|
+
clear
|
21
|
+
end
|
22
|
+
|
23
|
+
# 通过case获取描述模块的实例
|
24
|
+
def get_desc(sym)
|
25
|
+
@description.get_desc(sym)
|
26
|
+
end
|
27
|
+
|
28
|
+
# 整理警告信息
|
29
|
+
# 改变结构变成
|
30
|
+
def tidy_warning
|
31
|
+
# 清除原先 summary
|
32
|
+
clear
|
33
|
+
|
34
|
+
devices.each_pair do |device, klass|
|
35
|
+
warning_klass = klass.warning_klass
|
36
|
+
@device_warning[device] = klass.warning_klass
|
37
|
+
|
38
|
+
# 当有严重警告的时候
|
39
|
+
if warning_klass.has_warning_serious?
|
40
|
+
append_issue(warning_klass.warning_info_serious, :serious, device, klass)
|
41
|
+
end
|
42
|
+
|
43
|
+
# 当有一般信息的时候
|
44
|
+
if warning_klass.has_warning_ordinary?
|
45
|
+
append_issue(warning_klass.warning_info_ordinary, :ordinary, device, klass)
|
46
|
+
end
|
47
|
+
|
48
|
+
# 当有比较误差信息的时候
|
49
|
+
if warning_klass.has_warning_compare?
|
50
|
+
append_issue(warning_klass.warning_info_compare, :compare, device, klass)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
@summary
|
55
|
+
end
|
56
|
+
|
57
|
+
# 增加警告信息
|
58
|
+
def append_issue(warning_info, level, device, klass)
|
59
|
+
warning_info.each_pair do |issue, detail|
|
60
|
+
# 如果没有, 则加入Hash
|
61
|
+
unless summary[level].has_key?(issue)
|
62
|
+
summary[level][issue] = {}
|
63
|
+
end
|
64
|
+
|
65
|
+
summary[level][issue][device] = { :klass => klass, :detail => detail }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# 严重警告条数
|
70
|
+
def serious_number
|
71
|
+
number(summary[:serious])
|
72
|
+
end
|
73
|
+
|
74
|
+
# 一般警告信息条数
|
75
|
+
def ordinary_number
|
76
|
+
number(summary[:ordinary])
|
77
|
+
end
|
78
|
+
|
79
|
+
# 比较差异警告条数
|
80
|
+
def compare_number
|
81
|
+
number(summary[:compare])
|
82
|
+
end
|
83
|
+
|
84
|
+
# 全部警告条数
|
85
|
+
def total_number
|
86
|
+
serious_number + ordinary_number + compare_number
|
87
|
+
end
|
88
|
+
|
89
|
+
# 统计警告条目数
|
90
|
+
def number(hash)
|
91
|
+
num = 0
|
92
|
+
hash.each_value do |v|
|
93
|
+
num += v.size
|
94
|
+
end
|
95
|
+
|
96
|
+
return num
|
97
|
+
end
|
98
|
+
|
99
|
+
def has_serious?
|
100
|
+
serious_number > 0 ? true : false
|
101
|
+
end
|
102
|
+
|
103
|
+
def has_ordinary?
|
104
|
+
ordinary_number > 0 ? true : false
|
105
|
+
end
|
106
|
+
|
107
|
+
def has_compare?
|
108
|
+
compare_number > 0 ? true : false
|
109
|
+
end
|
110
|
+
|
111
|
+
# 按照权重,对 device_warning 排序
|
112
|
+
def device_warning_sort
|
113
|
+
arr = device_warning.to_a
|
114
|
+
arr.sort! do |x, y|
|
115
|
+
x1 = x[1]
|
116
|
+
y1 = y[1]
|
117
|
+
x_wgt = (x1.serious_number*5) + (x1.ordinary_number) + (x1.compare_number*3)
|
118
|
+
y_wgt = (y1.serious_number*5) + (y1.ordinary_number) + (y1.compare_number*3)
|
119
|
+
y_wgt <=> x_wgt
|
120
|
+
end
|
121
|
+
|
122
|
+
return arr
|
123
|
+
end
|
124
|
+
|
125
|
+
# 按照设备分类取到的严重警告数
|
126
|
+
def device_serious_sort
|
127
|
+
st = []
|
128
|
+
@device_warning.each_pair do |name, klass|
|
129
|
+
st << [name, klass.serious_number]
|
130
|
+
end
|
131
|
+
|
132
|
+
st.sort! do |x, y|
|
133
|
+
y[1] <=> x[1]
|
134
|
+
end
|
135
|
+
|
136
|
+
st.delete_if do |x|
|
137
|
+
x[0].empty? or x[1] == 0
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# 按照设备分类取到的一般警告数
|
142
|
+
def device_ordinary_sort
|
143
|
+
st = []
|
144
|
+
@device_warning.each_pair do |name, klass|
|
145
|
+
st << [name, klass.ordinary_number]
|
146
|
+
end
|
147
|
+
|
148
|
+
st.sort! do |x, y|
|
149
|
+
y[1] <=> x[1]
|
150
|
+
end
|
151
|
+
|
152
|
+
st.delete_if do |x|
|
153
|
+
x[0].empty? or x[1] == 0
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
# 发生频率高的问题
|
158
|
+
def problem_frequency
|
159
|
+
tmp = []
|
160
|
+
summary.each_value do |info|
|
161
|
+
info.each_pair do |prb, dvs|
|
162
|
+
tmp << [prb, dvs.size]
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
# 反向排序
|
167
|
+
tmp.sort { |x, y| x[1] <=> y[1] }.reverse
|
168
|
+
end
|
169
|
+
|
170
|
+
# 取得严重信息的描述列表
|
171
|
+
# 返回结构:
|
172
|
+
# :crc => { :description => CRC描述类,
|
173
|
+
# :devices => [[dev1, klass1], ...] }
|
174
|
+
def serious_description
|
175
|
+
res = {}
|
176
|
+
serious_info.each_pair do |prb, dvs_info|
|
177
|
+
res[prb] = { :description => @descripion.get(prb) }
|
178
|
+
tmp = []
|
179
|
+
dvs_info.each_pair do |device_name, info|
|
180
|
+
tmp << [device_name, info[:klass]]
|
181
|
+
end
|
182
|
+
res[prb][:devices] = tmp
|
183
|
+
end
|
184
|
+
|
185
|
+
return res
|
186
|
+
end
|
187
|
+
|
188
|
+
# 严重信息
|
189
|
+
def serious_info
|
190
|
+
summary[:serious]
|
191
|
+
end
|
192
|
+
|
193
|
+
def ordinary_info
|
194
|
+
summary[:ordinary]
|
195
|
+
end
|
196
|
+
|
197
|
+
def compare_info
|
198
|
+
summary[:compare]
|
199
|
+
end
|
200
|
+
|
201
|
+
private
|
202
|
+
|
203
|
+
# 清零变量
|
204
|
+
def clear
|
205
|
+
clear_summary
|
206
|
+
clear_device_warning
|
207
|
+
end
|
208
|
+
|
209
|
+
def clear_summary
|
210
|
+
@summary = {
|
211
|
+
:serious => {},
|
212
|
+
:ordinary => {},
|
213
|
+
:compare => {}
|
214
|
+
}
|
215
|
+
end
|
216
|
+
|
217
|
+
def clear_device_warning
|
218
|
+
@device_warning = {}
|
219
|
+
end
|
220
|
+
|
221
|
+
# 方便使用
|
222
|
+
def device_manager
|
223
|
+
@device_manager
|
224
|
+
end
|
225
|
+
|
226
|
+
# 方便使用 devices
|
227
|
+
def devices
|
228
|
+
device_manager.devices
|
229
|
+
end
|
230
|
+
|
231
|
+
end
|
232
|
+
end
|
data/lib/aio/core.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# All in this require
|
2
|
+
|
3
|
+
module Aio
|
4
|
+
|
5
|
+
# License
|
6
|
+
require "aio/license"
|
7
|
+
|
8
|
+
# UI
|
9
|
+
require "aio/ui"
|
10
|
+
|
11
|
+
# Base
|
12
|
+
require "aio/base"
|
13
|
+
|
14
|
+
# Text
|
15
|
+
require "aio/core/text"
|
16
|
+
|
17
|
+
# Module
|
18
|
+
require "aio/core/module"
|
19
|
+
require "aio/core/module_manager"
|
20
|
+
require "aio/core/module_loader"
|
21
|
+
|
22
|
+
# Warning
|
23
|
+
require "aio/core/warning"
|
24
|
+
|
25
|
+
# Device
|
26
|
+
require "aio/core/device"
|
27
|
+
require "aio/core/device_manager"
|
28
|
+
|
29
|
+
# Parse
|
30
|
+
require "aio/core/parse"
|
31
|
+
end
|
32
|
+
|