|
@@ -56,6 +56,7 @@ class AtlasApi(Api):
|
|
|
|
|
|
|
|
CLASSIFICATION_RE = re.compile('(?:tag|tags|classification)\s*\:\s*(?:(?:\"([^"]+)\")|([^ ]+))\s*', re.IGNORECASE)
|
|
CLASSIFICATION_RE = re.compile('(?:tag|tags|classification)\s*\:\s*(?:(?:\"([^"]+)\")|([^ ]+))\s*', re.IGNORECASE)
|
|
|
TYPE_RE = re.compile('type\s*\:\s*([^ ]+)\s*', re.IGNORECASE)
|
|
TYPE_RE = re.compile('type\s*\:\s*([^ ]+)\s*', re.IGNORECASE)
|
|
|
|
|
+ OWNER_RE = re.compile('owner\s*\:\s*([^ ]+)\s*', re.IGNORECASE)
|
|
|
|
|
|
|
|
def __init__(self, user=None):
|
|
def __init__(self, user=None):
|
|
|
super(AtlasApi, self).__init__(user)
|
|
super(AtlasApi, self).__init__(user)
|
|
@@ -227,17 +228,23 @@ class AtlasApi(Api):
|
|
|
|
|
|
|
|
atlas_type = None
|
|
atlas_type = None
|
|
|
classification = None
|
|
classification = None
|
|
|
|
|
+ owner = None
|
|
|
|
|
|
|
|
# Take the first classification and type facets and ignore other as we can't search multiple in Atlas.
|
|
# Take the first classification and type facets and ignore other as we can't search multiple in Atlas.
|
|
|
classification_facets = self.CLASSIFICATION_RE.findall(query_s)
|
|
classification_facets = self.CLASSIFICATION_RE.findall(query_s)
|
|
|
- if len(classification_facets) > 0:
|
|
|
|
|
|
|
+ if classification_facets:
|
|
|
classification = classification_facets[0][0] or classification_facets[0][1]
|
|
classification = classification_facets[0][0] or classification_facets[0][1]
|
|
|
- print self.CLASSIFICATION_RE.sub('', query_s)
|
|
|
|
|
query_s = self.CLASSIFICATION_RE.sub('', query_s).strip()
|
|
query_s = self.CLASSIFICATION_RE.sub('', query_s).strip()
|
|
|
atlas_type = 'Asset' # Filtered below to just contain hive_db, hive_table or hive_column
|
|
atlas_type = 'Asset' # Filtered below to just contain hive_db, hive_table or hive_column
|
|
|
|
|
|
|
|
|
|
+ owner_facets = self.OWNER_RE.findall(query_s)
|
|
|
|
|
+ if owner_facets:
|
|
|
|
|
+ owner = owner_facets[0]
|
|
|
|
|
+ query_s = self.OWNER_RE.sub('', query_s).strip()
|
|
|
|
|
+ atlas_type = 'Asset'
|
|
|
|
|
+
|
|
|
type_facets = self.TYPE_RE.findall(query_s)
|
|
type_facets = self.TYPE_RE.findall(query_s)
|
|
|
- if len(type_facets) > 0:
|
|
|
|
|
|
|
+ if type_facets:
|
|
|
atlas_type = self.NAV_TO_ATLAS_TYPE[type_facets[0].lower()] or type_facets[0]
|
|
atlas_type = self.NAV_TO_ATLAS_TYPE[type_facets[0].lower()] or type_facets[0]
|
|
|
query_s = self.TYPE_RE.sub('', query_s).strip()
|
|
query_s = self.TYPE_RE.sub('', query_s).strip()
|
|
|
|
|
|
|
@@ -277,6 +284,13 @@ class AtlasApi(Api):
|
|
|
'attributeValue': '@' + get_catalog_search_cluster()
|
|
'attributeValue': '@' + get_catalog_search_cluster()
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
+ if owner:
|
|
|
|
|
+ data['entityFilters']['criterion'].append({
|
|
|
|
|
+ 'attributeName': 'owner',
|
|
|
|
|
+ 'operator': 'startsWith',
|
|
|
|
|
+ 'attributeValue': owner
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
atlas_response = self._root.post('/v2/search/basic', data=json.dumps(data), contenttype=_JSON_CONTENT_TYPE)
|
|
atlas_response = self._root.post('/v2/search/basic', data=json.dumps(data), contenttype=_JSON_CONTENT_TYPE)
|
|
|
|
|
|
|
|
# Adapt Atlas entities to Navigator structure in the results
|
|
# Adapt Atlas entities to Navigator structure in the results
|