From f307521331da8a46c30d475e8451bfa26b82d74b Mon Sep 17 00:00:00 2001 From: Remi Date: Fri, 17 Sep 2021 00:11:25 -0600 Subject: [PATCH] fix(ingest): allow ingestion of glossary terms without nodes (#3253) --- .../source/metadata/business_glossary.py | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/metadata-ingestion/src/datahub/ingestion/source/metadata/business_glossary.py b/metadata-ingestion/src/datahub/ingestion/source/metadata/business_glossary.py index ac5110185f..503a7edf29 100644 --- a/metadata-ingestion/src/datahub/ingestion/source/metadata/business_glossary.py +++ b/metadata-ingestion/src/datahub/ingestion/source/metadata/business_glossary.py @@ -62,7 +62,8 @@ class BusinessGlossarySourceConfig(ConfigModel): class BusinessGlossaryConfig(DefaultConfig): version: str - nodes: List[GlossaryNodeConfig] + nodes: Optional[List[GlossaryNodeConfig]] + terms: Optional[List[GlossaryTermConfig]] @validator("version") def version_must_be_1(cls, v): @@ -106,14 +107,26 @@ def get_mces( path: List[str] = [] root_owners = get_owners(glossary.owners) - for node in glossary.nodes: - events += get_mces_from_node( - node, - path + [node.name], - parentNode=None, - parentOwners=root_owners, - defaults=glossary, - ) + if glossary.nodes: + for node in glossary.nodes: + events += get_mces_from_node( + node, + path + [node.name], + parentNode=None, + parentOwners=root_owners, + defaults=glossary, + ) + + if glossary.terms: + for term in glossary.terms: + events += get_mces_from_term( + term, + path + [term.name], + parentNode=None, + parentOwnership=root_owners, + defaults=glossary, + ) + return events @@ -171,7 +184,7 @@ def get_mces_from_node( def get_mces_from_term( glossaryTerm: GlossaryTermConfig, path: List[str], - parentNode: str, + parentNode: Optional[str], parentOwnership: models.OwnershipClass, defaults: DefaultConfig, ) -> List[models.MetadataChangeEventClass]: