def get_lineage(request): response = {'status': -1, 'inputs': [], 'source_query': '', 'target_queries': [], 'targets': []} api = NavigatorApi() entity_id = request.REQUEST.get('id') if not entity_id: raise MetadataApiException("get_lineage requires an 'id' parameter") lineage = api.get_lineage(entity_id) entity_name = api.get_entity(entity_id)['originalName'].upper() response['id'] = entity_id # TODO: This is a cheat way to do to this for demo using filtering but we should really traverse relationships parent_operation = next((entity for entity in lineage['entities'] if entity.get('outputs', []) == [entity_name]), None) if parent_operation: response['inputs'] = [input.lower() for input in parent_operation['inputs']] response['source_query'] = parent_operation.get('queryText', '') children = [entity for entity in lineage['entities'] if entity.get('inputs') is not None and entity_name in entity.get('inputs')] if children is not None: response['target_queries'] = [child['queryText'] for child in children if child.get('queryText') is not None] outputs = [child['outputs'] for child in children if child.get('outputs') is not None] response['targets'] = [target.lower() for output in outputs for target in output] response['status'] = 0 return JsonResponse(response)
def get_lineage(request): response = {'status': -1, 'inputs': [], 'source_query': '', 'target_queries': [], 'targets': []} api = NavigatorApi() entity_id = request.REQUEST.get('id') if not entity_id: raise MetadataApiException("get_lineage requires an 'id' parameter") lineage = api.get_lineage(entity_id) entity_name = api.get_entity(entity_id)['originalName'].upper() response['id'] = entity_id # TODO: This is a cheat way to do to this for demo using filtering but we should really traverse relationships parent_operation = next((entity for entity in lineage['entities'] if entity.get('outputs', []) == [entity_name]), None) if parent_operation: response['inputs'] = [input.lower() for input in parent_operation['inputs']] response['source_query'] = parent_operation.get('queryText', '') children = [entity for entity in lineage['entities'] if entity.get('inputs') is not None and entity_name in entity.get('inputs')] if children is not None: response['target_queries'] = [child['queryText'] for child in children if child.get('queryText') is not None] outputs = [child['outputs'] for child in children if child.get('outputs') is not None] response['targets'] = [target.lower() for output in outputs for target in output] response['status'] = 0 return JsonResponse(response)
def get_entity(request): response = {'status': -1} api = NavigatorApi(request.user) entity_id = request.REQUEST.get('id') if not entity_id: raise MetadataApiException("get_entity requires an 'id' parameter") entity = api.get_entity(entity_id) response['entity'] = entity response['status'] = 0 return JsonResponse(response)
def get_entity(request): response = {'status': -1} api = NavigatorApi() entity_id = request.REQUEST.get('id') if not entity_id: raise MetadataApiException("get_entity requires an 'id' parameter") entity = api.get_entity(entity_id) response['entity'] = entity response['status'] = 0 return JsonResponse(response)