aio_elin 0.0.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/config.rb +32 -32
- data/lib/aio/base/toolkit/excel_wps.rb +1 -0
- data/lib/aio/base/toolkit/hash.rb +95 -0
- data/lib/aio/base/toolkit/myers.rb +161 -0
- data/lib/aio/base/toolkit.rb +2 -0
- data/lib/aio/core/device/cmd_switch.rb +1 -1
- data/lib/aio/core/device/h3c.rb +2 -0
- data/lib/aio/core/device/maipu.rb +8 -0
- data/lib/aio/core/device/methods.rb +230 -228
- data/lib/aio/core/device/parent_device.rb +270 -267
- data/lib/aio/core/device_manager.rb +255 -202
- data/lib/aio/core/module/cmd.rb +155 -150
- data/lib/aio/core/module/compare.rb +39 -0
- data/lib/aio/core/module/output_style.rb +2 -0
- data/lib/aio/core/module.rb +1 -0
- data/lib/aio/core/module_loader.rb +11 -0
- data/lib/aio/core/parse/file.rb +12 -14
- data/lib/aio/core/parse/parser.rb +99 -87
- data/lib/aio/core/parse/parser_machine/has_device_state.rb +42 -42
- data/lib/aio/core/parse/parser_machine.rb +44 -44
- data/lib/aio/core/text/block.rb +88 -0
- data/lib/aio/core/text/compare.rb +109 -0
- data/lib/aio/core/text/context.rb +206 -206
- data/lib/aio/core/text/line_string.rb +17 -62
- data/lib/aio/core/text/match_string_info.rb +73 -0
- data/lib/aio/core/text/warning.rb +175 -175
- data/lib/aio/core/text.rb +3 -0
- data/lib/aio/core/warning/warning_summarize.rb +246 -229
- data/lib/aio/core.rb +3 -0
- data/lib/aio/ui/logger.rb +38 -0
- data/lib/aio/ui/verbose.rb +6 -2
- data/lib/aio/ui.rb +135 -134
- data/lib/modules/cmd/cisco/show_version.rb +84 -84
- data/lib/modules/cmd/h3c/display_cpu.rb +41 -41
- data/lib/modules/cmd/h3c/display_version.rb +43 -43
- data/lib/modules/cmd/maipu/show_clock.rb +32 -0
- data/lib/modules/cmd/maipu/show_cpu.rb +36 -0
- data/lib/modules/cmd/maipu/show_ip_interface_brief.rb +44 -0
- data/lib/modules/cmd/maipu/show_memory.rb +22 -22
- data/lib/modules/cmd/maipu/show_version.rb +40 -40
- data/lib/modules/input/style/compare_xml.rb +73 -73
- data/lib/modules/output/style/cmds.rb +3 -3
- data/lib/modules/output/style/compare_diff.rb +23 -0
- data/lib/modules/output/style/excel_table_office.rb +1 -0
- data/lib/modules/output/style/excel_table_wps.rb +1 -0
- data/lib/modules/output/style/summary_report.rb +2 -1
- data/lib/modules/special/style/compare.rb +153 -103
- data/lib/modules/special/style/compare_old.rb +121 -0
- data/lib/modules/special/style/compare_with_device_manager.rb +227 -0
- metadata +16 -3
@@ -1,179 +1,179 @@
|
|
1
1
|
# 此类只针对单台设备的告警信息
|
2
2
|
module Aio::Text
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
3
|
+
class Warning
|
4
|
+
|
5
|
+
attr_reader :warning_info
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@warning_info = {
|
9
|
+
:serious => {},
|
10
|
+
:ordinary => {},
|
11
|
+
:compare => Aio::Text::Compare.new,
|
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 Integer
|
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
178
|
end
|
179
179
|
|
data/lib/aio/core/text.rb
CHANGED