Parcourir la source

[catalog] Selecting one atlas server if there are multiple listed out under atlas.rest.address #1931. (#1931)

Mahesh Balakrishnan il y a 4 ans
Parent
commit
28e3c2e554
1 fichiers modifiés avec 20 ajouts et 1 suppressions
  1. 20 1
      desktop/libs/metadata/src/metadata/catalog/atlas_client.py

+ 20 - 1
desktop/libs/metadata/src/metadata/catalog/atlas_client.py

@@ -20,6 +20,7 @@ import json
 import logging
 import re
 import sys
+import requests
 
 from desktop.lib.exceptions_renderable import raise_popup_exception
 from desktop.lib.rest import resource
@@ -65,7 +66,25 @@ class AtlasApi(Api):
   def __init__(self, user=None):
     super(AtlasApi, self).__init__(user)
 
-    self._api_url = CATALOG.API_URL.get().strip('/') + "/api/atlas"
+    self._api_url = None
+
+    # Checking which server is active server if there are multiple else use the one thats listed
+    atlas_servers = CATALOG.API_URL.get().replace("%20", "").replace("['", "").replace("']", "").replace("'", "").split(',')
+
+    for atlas_server in atlas_servers:
+      atlas_url = atlas_server + 'api/atlas/admin/status'
+      response = requests.get(atlas_url)
+      atlas_is_active = response.json()
+
+      if "ACTIVE" in atlas_is_active["Status"]:
+        LOG.debug('Setting Atlas API endpoint to: %s' % atlas_server)
+        self._api_url = atlas_server.strip().strip('/') + "/api/atlas"
+        break
+
+    if self._api_url is None:
+      self._api_url = CATALOG.API_URL.get()
+      LOG.warning('No Atlas server available for use, defaulting to %s' % self._api_url)
+
     self._username = CATALOG.SERVER_USER.get()
     self._password = CATALOG.SERVER_PASSWORD.get()