瀏覽代碼

[oozie] Add config option ssl_cert_ca_verify

This is helpful to test against self-signed oozie setups
Erick Tryzelaar 10 年之前
父節點
當前提交
019f926ef1
共有 2 個文件被更改,包括 14 次插入4 次删除
  1. 6 0
      desktop/libs/liboozie/src/liboozie/conf.py
  2. 8 4
      desktop/libs/liboozie/src/liboozie/oozie_api.py

+ 6 - 0
desktop/libs/liboozie/src/liboozie/conf.py

@@ -40,6 +40,12 @@ REMOTE_DEPLOYMENT_DIR = Config(
   help=_t("Location on HDFS where the workflows/coordinators are deployed when submitted by a non-owner."
           " Parameters are $TIME, $USER and $JOBID, e.g. /user/$USER/hue/deployments/$JOBID-$TIME"))
 
+SSL_CERT_CA_VERIFY=Config(
+  key="ssl_cert_ca_verify",
+  help="In secure mode (HTTPS), if SSL certificates from Oozie Rest APIs have to be verified against certificate authority",
+  default=True,
+  type=coerce_bool)
+
 
 def get_oozie_status(user):
   from liboozie.oozie_api import get_oozie

+ 8 - 4
desktop/libs/liboozie/src/liboozie/oozie_api.py

@@ -23,8 +23,7 @@ from desktop.conf import DEFAULT_USER
 from desktop.lib.rest.http_client import HttpClient
 from desktop.lib.rest.resource import Resource
 
-from liboozie.conf import SECURITY_ENABLED
-from liboozie.conf import OOZIE_URL
+from liboozie.conf import SECURITY_ENABLED, OOZIE_URL, SSL_CERT_CA_VERIFY
 from liboozie.types import WorkflowList, CoordinatorList, Coordinator, Workflow,\
   CoordinatorAction, WorkflowAction, BundleList, Bundle, BundleAction
 from liboozie.utils import config_gen
@@ -40,15 +39,20 @@ _XML_CONTENT_TYPE = 'application/xml;charset=UTF-8'
 def get_oozie(user, api_version=API_VERSION):
   oozie_url = OOZIE_URL.get()
   secure = SECURITY_ENABLED.get()
-  return OozieApi(oozie_url, user, security_enabled=secure, api_version=api_version)
+  ssl_cert_ca_verify = SSL_CERT_CA_VERIFY.get()
+  return OozieApi(oozie_url, user, security_enabled=secure, api_version=api_version, ssl_cert_ca_verify=ssl_cert_ca_verify)
 
 
 class OozieApi(object):
-  def __init__(self, oozie_url, user, security_enabled=False, api_version=API_VERSION):
+  def __init__(self, oozie_url, user, security_enabled=False, api_version=API_VERSION, ssl_cert_ca_verify=True):
     self._url = posixpath.join(oozie_url, api_version)
     self._client = HttpClient(self._url, logger=LOG)
+
     if security_enabled:
       self._client.set_kerberos_auth()
+
+    self._client.set_verify(ssl_cert_ca_verify)
+
     self._root = Resource(self._client)
     self._security_enabled = security_enabled
     # To store username info