Skip to content

Commit 6c6da35

Browse files
committed
document fields
1 parent 45aa330 commit 6c6da35

File tree

2 files changed

+199
-163
lines changed

2 files changed

+199
-163
lines changed

src-colladmin/actions/opensearch_describe_action.rb

Lines changed: 52 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,66 +8,80 @@ class OpenSearchDescribeAction < AdminAction
88
def initialize(config, action, path, myparams)
99
super(config, action, path, myparams)
1010
file = 'import/filebeat/fields.json'
11-
@title = "Merritt OpenSearch Fields (#{File.ctime(file).to_s[0..15]})"
12-
@fields = JSON.parse(File.read(file))
13-
# load_registry
14-
end
15-
16-
def load_registry
17-
reg = YAML.safe_load(File.read('import/filebeat/opensearch.registry.yml'), aliases: true)
18-
process_registry_node(LambdaBase.ssm_root_path.chop, reg)
19-
end
20-
21-
def process_registry_node(path, reg)
22-
if reg.key?('description')
23-
p = @parameters.fetch(path, SsmInfo.new(path))
24-
p.set_description(reg['description'])
25-
p.set_deprecated(reg.fetch('deprecated', ''))
26-
p.set_skip(reg.fetch('skip', false))
27-
@parameters[path] = p
28-
return
29-
end
30-
31-
reg.each_key do |k|
32-
r = reg[k]
33-
next unless r.instance_of?(::Hash)
11+
@title = "Merritt OpenSearch Fields (#{File.mtime(file).to_s[0..15]})"
12+
@fields = {}
13+
JSON.parse(File.read(file)).each do |val|
14+
name = val.fetch('name', '')
15+
next if name =~ /\.keyword$/
3416

35-
process_registry_node("#{path}/#{k}", r)
17+
type = val.fetch('type', '')
18+
@fields[name] = {
19+
name: name,
20+
type: type,
21+
status: 'PASS'
22+
}
3623
end
24+
@reg = load_registry
25+
end
3726

38-
return unless reg.fetch('skip', false)
39-
40-
@parameters.each_key do |pp|
41-
next unless pp =~ /^#{path}.*/
42-
43-
@parameters[pp].set_skip(true)
44-
end
27+
def load_registry
28+
YAML.safe_load(File.read('import/filebeat/opensearch.registry.yml'), aliases: true)
4529
end
4630

4731
def get_title
4832
@title
4933
end
5034

5135
def table_headers
52-
['Field Name', 'Type', 'Statis']
36+
['Field Name', 'Type', 'Description', 'Note', 'Source', 'Status']
5337
end
5438

5539
def table_types
56-
['name', '', 'status']
40+
['', '', '', '', '', 'status']
5741
end
5842

5943
def perform_action
6044
convert_json_to_table({}.to_json)
6145
end
6246

47+
def get_doc(freg, key, defval)
48+
v = freg.fetch(key, defval)
49+
# empty yaml is returned as nil
50+
v = defval if v.nil?
51+
v
52+
end
53+
54+
def process_key(k, defstat)
55+
f = @fields.fetch(k, {})
56+
freg = @reg.fetch(k, {})
57+
stat = 'PASS'
58+
stat = defstat if f.empty? || freg.empty?
59+
desc = get_doc(freg, 'description', '')
60+
source = get_doc(freg, 'source', '')
61+
note = get_doc(freg, 'note', '')
62+
[
63+
k,
64+
f.fetch(:type, ''),
65+
desc,
66+
note,
67+
source,
68+
stat
69+
]
70+
end
71+
6372
def table_rows(_body)
6473
rows = []
65-
@fields.each do |val|
66-
name = val.fetch('name', '')
67-
next if name =~ /\.keyword$/
74+
oskeys = {}
6875

69-
type = val.fetch('type', '')
70-
rows.append([name, type, 'PASS'])
76+
@fields.keys.each do |k|
77+
oskeys[k] = process_key(k, 'FAIL')
78+
end
79+
@reg.keys.each do |k|
80+
next if oskeys.key?(k)
81+
oskeys[k] = process_key(k, 'WARN')
82+
end
83+
oskeys.keys.sort.each do |k|
84+
rows.append(oskeys[k])
7185
end
7286
rows
7387
end

0 commit comments

Comments
 (0)