Эх сурвалжийг харах

HUE-7248 [adls] Add support for password script

jdesjean 8 жил өмнө
parent
commit
9b2e71a

+ 2 - 0
desktop/conf.dist/hue.ini

@@ -1469,6 +1469,8 @@
       # Azure credentials
       ## client_id=
       ## client_secret=
+      # Execute this script to produce the ADLS client secret.
+      ## client_secret_script=/path/client_secret.sh
       ## tenant_id=
 
   [[adls_clusters]]

+ 2 - 0
desktop/conf/pseudo-distributed.ini.tmpl

@@ -1471,6 +1471,8 @@
       # Azure credentials
       ## client_id=
       ## client_secret=
+      # Execute this script to produce the ADLS client secret.
+      ## client_secret_script=/path/client_secret.sh
       ## tenant_id=
 
   [[adls_clusters]]

+ 3 - 3
desktop/libs/azure/src/azure/active_directory.py

@@ -18,7 +18,7 @@ from __future__ import absolute_import
 import logging
 
 from time import time
-from azure.conf import get_default_region, get_default_client_id, get_default_authentication_code, get_default_refresh_url
+from azure.conf import AZURE_ACCOUNTS, get_default_refresh_url
 from desktop.lib.rest import http_client, resource
 
 LOG = logging.getLogger(__name__)
@@ -50,8 +50,8 @@ class ActiveDirectory(object):
 
   @classmethod
   def from_config(cls, conf):
-    access_key_id = get_default_client_id()
-    secret_access_key = get_default_authentication_code()
+    access_key_id = AZURE_ACCOUNTS['default'].CLIENT_ID.get()
+    secret_access_key = AZURE_ACCOUNTS['default'].CLIENT_SECRET.get()
 
     if None in (access_key_id, secret_access_key):
       raise ValueError('Can\'t create azure client, credential is not configured')

+ 26 - 13
desktop/libs/azure/src/azure/conf.py

@@ -28,19 +28,11 @@ LOG = logging.getLogger(__name__)
 REFRESH_URL = 'https://login.microsoftonline.com/<tenant_id>/oauth2/token'
 
 
-def get_default_client_id():
-  """
-  Attempt to set AWS access key ID from script, else core-site, else None
-  """
-  client_id_script = AZURE_ACCOUNTS['default'].CLIENT_ID.get()
-  return client_id_script or get_adls_client_id()
-
-
-def get_default_authentication_code():
+def get_default_secret_key():
   """
   Attempt to set AWS secret key from script, else core-site, else None
   """
-  client_secret_script = AZURE_ACCOUNTS['default'].CLIENT_SECRET.get()
+  client_secret_script = AZURE_ACCOUNTS['default'].CLIENT_SECRET_SCRIPT.get()
   return client_secret_script or get_adls_authentication_code()
 
 def get_default_refresh_url():
@@ -77,9 +69,30 @@ AZURE_ACCOUNTS = UnspecifiedConfigSection(
   each=ConfigSection(
     help="Information about a single azure account",
     members=dict(
-      CLIENT_ID=Config("client_id", help="", default=None),
-      CLIENT_SECRET=Config("client_secret", help="", default=None),
-      TENANT_ID=Config("tenant_id", help="", default=None)
+      CLIENT_ID=Config(
+        key="client_id",
+        type=str,
+        default=None,
+        private=True,
+        help="https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-service-to-service-authenticate-rest-api"),
+      CLIENT_SECRET=Config(
+        key="client_secret",
+        type=str,
+        dynamic_default=get_default_secret_key,
+        private=True,
+        help="https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-service-to-service-authenticate-rest-api"),
+      CLIENT_SECRET_SCRIPT=Config(
+        key='client_secret_script',
+        default=None,
+        private=True,
+        type=coerce_password_from_script,
+        help=_("Execute this script to produce the ADLS client secret.")),
+      TENANT_ID=Config(
+        key="tenant_id",
+        type=str,
+        default=None,
+        private=True,
+        help="https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-service-to-service-authenticate-rest-api")
     )
   )
 )