@@ -8,66 +8,80 @@ class OpenSearchDescribeAction < AdminAction
8
8
def initialize ( config , action , path , myparams )
9
9
super ( config , action , path , myparams )
10
10
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$/
34
16
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
+ }
36
23
end
24
+ @reg = load_registry
25
+ end
37
26
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 )
45
29
end
46
30
47
31
def get_title
48
32
@title
49
33
end
50
34
51
35
def table_headers
52
- [ 'Field Name' , 'Type' , 'Statis ' ]
36
+ [ 'Field Name' , 'Type' , 'Description' , 'Note' , 'Source' , 'Status ']
53
37
end
54
38
55
39
def table_types
56
- [ 'name ' , '' , 'status' ]
40
+ [ '' , '' , '' , ' ', '' , 'status' ]
57
41
end
58
42
59
43
def perform_action
60
44
convert_json_to_table ( { } . to_json )
61
45
end
62
46
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
+
63
72
def table_rows ( _body )
64
73
rows = [ ]
65
- @fields . each do |val |
66
- name = val . fetch ( 'name' , '' )
67
- next if name =~ /\. keyword$/
74
+ oskeys = { }
68
75
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 ] )
71
85
end
72
86
rows
73
87
end
0 commit comments