From 16088d9680798cdde3c91ee6f4d7fca65a1fe7b1 Mon Sep 17 00:00:00 2001 From: "j.du" Date: Tue, 27 Mar 2018 11:35:55 +0200 Subject: [PATCH 1/3] Add kerberos auth --- pydruid/config.py | 35 +++++++++++++++++++++++++++++++++++ pydruid/db/api.py | 3 ++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 pydruid/config.py diff --git a/pydruid/config.py b/pydruid/config.py new file mode 100644 index 00000000..a6da8b1b --- /dev/null +++ b/pydruid/config.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +"""The main config file for pydruid + +All configuration in this file can be overridden by providing a druid_config +in your PYTHONPATH as there is a ``from druid_config import *`` +at the end of this file. +""" + +import imp +import os +import sys + +REQUESTS_AUTH = None + +try: + if CONFIG_PATH_ENV_VAR in os.environ: + # Explicitly import config module that is not in pythonpath; useful + # for case where app is being executed via pex. + print('Loaded your LOCAL configuration at [{}]'.format( + os.environ[CONFIG_PATH_ENV_VAR])) + module = sys.modules[__name__] + override_conf = imp.load_source( + 'druid_config', + os.environ[CONFIG_PATH_ENV_VAR]) + for key in dir(override_conf): + if key.isupper(): + setattr(module, key, getattr(override_conf, key)) + else: + from druid_config import * # noqa + import druid_config + print('Loaded your LOCAL configuration at [{}]'.format( + druid_config.__file__)) +except ImportError: + pass + diff --git a/pydruid/db/api.py b/pydruid/db/api.py index 4d5902c0..3fd90e02 100644 --- a/pydruid/db/api.py +++ b/pydruid/db/api.py @@ -12,6 +12,7 @@ import requests from pydruid.db import exceptions +from pydruid.config import REQUESTS_AUTH class Type(object): @@ -260,7 +261,7 @@ def _stream_query(self, query): headers = {'Content-Type': 'application/json'} payload = {'query': query} - r = requests.post(self.url, stream=True, headers=headers, json=payload) + r = requests.post(self.url, stream=True, headers=headers, json=payload, auth=REQUESTS_AUTH) if r.encoding is None: r.encoding = 'utf-8' From 22de68ad92f1cd33e57cf73c2ad6925bc0a7d046 Mon Sep 17 00:00:00 2001 From: "j.du" Date: Tue, 27 Mar 2018 11:45:44 +0200 Subject: [PATCH 2/3] Add missing variable --- pydruid/config.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pydruid/config.py b/pydruid/config.py index a6da8b1b..8c643820 100644 --- a/pydruid/config.py +++ b/pydruid/config.py @@ -12,6 +12,8 @@ REQUESTS_AUTH = None +CONFIG_PATH_ENV_VAR = 'DRUID_CONFIG_PATH' + try: if CONFIG_PATH_ENV_VAR in os.environ: # Explicitly import config module that is not in pythonpath; useful From 6f9b96de9911a95c56fb5495aae3bce816859c4c Mon Sep 17 00:00:00 2001 From: "j.du" Date: Tue, 27 Mar 2018 13:23:37 +0200 Subject: [PATCH 3/3] Handle pep8. --- pydruid/config.py | 1 - pydruid/db/api.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pydruid/config.py b/pydruid/config.py index 8c643820..6d1142d4 100644 --- a/pydruid/config.py +++ b/pydruid/config.py @@ -34,4 +34,3 @@ druid_config.__file__)) except ImportError: pass - diff --git a/pydruid/db/api.py b/pydruid/db/api.py index 3fd90e02..a00815a2 100644 --- a/pydruid/db/api.py +++ b/pydruid/db/api.py @@ -261,7 +261,8 @@ def _stream_query(self, query): headers = {'Content-Type': 'application/json'} payload = {'query': query} - r = requests.post(self.url, stream=True, headers=headers, json=payload, auth=REQUESTS_AUTH) + r = requests.post(self.url, stream=True, headers=headers, json=payload, + auth=REQUESTS_AUTH) if r.encoding is None: r.encoding = 'utf-8'