diff --git a/libbeat/scripts/generate_fields_docs.py b/libbeat/scripts/generate_fields_docs.py index d3381af4dd6c..001896baf075 100644 --- a/libbeat/scripts/generate_fields_docs.py +++ b/libbeat/scripts/generate_fields_docs.py @@ -1,6 +1,8 @@ -import yaml -import os import argparse +from collections import OrderedDict +import os + +import yaml def document_fields(output, section, sections, path): @@ -102,6 +104,19 @@ def fields_to_asciidoc(input, output, beat): print("fields.yml file is empty. fields.asciidoc cannot be generated.") return + # deduplicate fields, last one wins + for section in docs: + fields = OrderedDict() + for field in section["fields"]: + name = field["name"] + if name in fields: + assert field["type"] == fields[name]["type"], 'field "{}" redefined with different type "{}"'.format( + name, field["type"]) + fields[name].update(field) + else: + fields[name] = field + section["fields"] = list(fields.values()) + # Create sections from available fields sections = {} for v in docs: