Skip to content

Commit 87a3791

Browse files
committed
Merge branch 'release/v3.5.4'
2 parents 5cb7889 + 8166b24 commit 87a3791

File tree

11 files changed

+37
-15
lines changed

11 files changed

+37
-15
lines changed

application.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
default_enable_ssl = False
1414
default_ca_certs = None
1515
default_verify_certs = True
16+
default_client_key = None
17+
default_client_cert = None
1618
default_url = 'http://localhost:9200'
1719
is_gunicorn = "gunicorn" in os.environ.get("SERVER_SOFTWARE", "")
1820

@@ -24,6 +26,8 @@
2426
application.config['CA_CERTS'] = os.environ.get('HQ_CA_CERTS', default_ca_certs)
2527
application.config['HQ_VERIFY_CERTS'] = os.environ.get('HQ_VERIFY_CERTS', default_verify_certs)
2628
application.config['DEBUG'] = os.environ.get('HQ_DEBUG', default_debug)
29+
application.config['CLIENT_KEY'] = os.environ.get('CLIENT_KEY', default_client_key)
30+
application.config['CLIENT_CERT'] = os.environ.get('CLIENT_CERT', default_client_cert)
2731

2832
if os.environ.get('HQ_DEBUG') == 'True':
2933
config = find_config('logger_debug.json')
@@ -51,13 +55,19 @@
5155
'Path to CA file or directory [default %s]' % default_ca_certs)
5256
parser.add_option("-v", "--verify_certs", default=default_verify_certs,
5357
help='Set to False when using self-signed certs.')
58+
parser.add_option("-x", "--client_cert", default=default_client_cert,
59+
help='Set to path of the client cert file.')
60+
parser.add_option("-X", "--client_key", default=default_client_key,
61+
help='Set to path of the client key file.')
5462

5563
options, _ = parser.parse_args()
5664

5765
application.config['DEFAULT_URL'] = os.environ.get('HQ_DEFAULT_URL', options.url)
5866
application.config['ENABLE_SSL'] = os.environ.get('HQ_ENABLE_SSL', options.enable_ssl)
5967
application.config['CA_CERTS'] = os.environ.get('HQ_CA_CERTS', options.ca_certs)
6068
application.config['VERIFY_CERTS'] = os.environ.get('HQ_VERIFY_CERTS', options.verify_certs)
69+
application.config['CLIENT_KEY'] = os.environ.get('CLIENT_KEY', options.client_key)
70+
application.config['CLIENT_CERT'] = os.environ.get('CLIENT_CERT', options.client_cert)
6171

6272
if is_gunicorn:
6373
if options.debug:

docs/.doctrees/environment.pickle

0 Bytes
Binary file not shown.

elastichq/api/clusters.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,19 @@ def post(self):
114114
enable_ssl = current_app.config.get('ENABLE_SSL', False)
115115
ca_certs = current_app.config.get('CA_CERTS', None)
116116
verify_certs = current_app.config.get('VERIFY_CERTS', None)
117+
client_key = current_app.config.get('CLIENT_KEY', None)
118+
client_cert = current_app.config.get('CLIENT_CERT', None)
117119

120+
print(client_key)
121+
print(client_cert)
118122
response = ConnectionService().create_connection(ip=params['ip'], port=params.get('port', "9200"),
119123
scheme=scheme, username=params.get('username', None),
120124
password=params.get('password', None),
121125
fail_on_exception=True,
122126
enable_ssl=enable_ssl, ca_certs=ca_certs,
123-
verify_certs=verify_certs)
127+
verify_certs=verify_certs,
128+
client_key=client_key,
129+
client_cert=client_cert)
124130

125131
schema = ClusterDTO(many=False)
126132
result = schema.dump(response)

elastichq/config/settings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class TestSettings(BaseSettings):
6262
# static
6363
HQ_SITE_URL = 'http://elastichq.org'
6464
HQ_GH_URL = 'https://github.com/ElasticHQ/elasticsearch-HQ'
65-
API_VERSION = 'v3.5.3'
65+
API_VERSION = 'v3.5.4'
6666

6767
ES_TEST_INDEX_NAME = 'cars'
6868

@@ -105,7 +105,7 @@ class ProdSettings(BaseSettings):
105105
# static
106106
HQ_SITE_URL = 'http://elastichq.org'
107107
HQ_GH_URL = 'https://github.com/ElasticHQ/elasticsearch-HQ'
108-
API_VERSION = '3.5.3'
108+
API_VERSION = '3.5.4'
109109
SERVER_NAME = None
110110

111111
# cluster settings: specific settings for each cluster and how HQ should handle it.

elastichq/service/ConnectionService.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ def ping(self, ip, port, scheme='http'):
3636
return False
3737

3838
def create_connection(self, ip, port, scheme='http', username=None, password=None, fail_on_exception=False,
39-
enable_ssl=False, ca_certs=None, verify_certs=True):
39+
enable_ssl=False, ca_certs=None, verify_certs=True, client_cert=None, client_key=None):
4040
"""
4141
Creates a connection with a cluster and place the connection inside of a connection pool, using the cluster_name as an alias.
42+
:param client_cert:
43+
:param client_key:
4244
:param verify_certs:
4345
:param ip:
4446
:param port:
@@ -60,17 +62,19 @@ def create_connection(self, ip, port, scheme='http', username=None, password=Non
6062
is_basic_auth = True
6163
password = urllib.parse.unquote(password)
6264

65+
client_cert_credentials = None if client_cert is None or client_key is None else (client_cert, client_key)
66+
6367
# determine version first
6468
if is_basic_auth is True:
6569
if enable_ssl:
6670
response = requests.get(scheme + "://" + ip + ":" + port, auth=(username, password),
67-
timeout=REQUEST_TIMEOUT, verify=ca_certs)
71+
timeout=REQUEST_TIMEOUT, verify=ca_certs, cert=client_cert_credentials)
6872
else:
6973
response = requests.get(scheme + "://" + ip + ":" + port, auth=(username, password),
7074
timeout=REQUEST_TIMEOUT)
7175
else:
7276
if enable_ssl:
73-
response = requests.get(scheme + "://" + ip + ":" + port, timeout=REQUEST_TIMEOUT, verify=ca_certs)
77+
response = requests.get(scheme + "://" + ip + ":" + port, timeout=REQUEST_TIMEOUT, verify=ca_certs, cert=client_cert_credentials)
7478
else:
7579
response = requests.get(scheme + "://" + ip + ":" + port, timeout=REQUEST_TIMEOUT)
7680

@@ -85,7 +89,8 @@ def create_connection(self, ip, port, scheme='http', username=None, password=Non
8589
if enable_ssl:
8690
conn = Elasticsearch(hosts=[scheme + "://" + ip + ":" + port], maxsize=5,
8791
use_ssl=True, verify_certs=verify_certs, ca_certs=ca_certs,
88-
version=content.get('version').get('number'), http_auth=(username, password))
92+
version=content.get('version').get('number'), http_auth=(username, password),
93+
client_cert=client_cert, client_key=client_key)
8994
else:
9095
conn = Elasticsearch(hosts=[scheme + "://" + ip + ":" + port], maxsize=5,
9196
version=content.get('version').get('number'), http_auth=(username, password))
@@ -94,7 +99,8 @@ def create_connection(self, ip, port, scheme='http', username=None, password=Non
9499
if enable_ssl:
95100
conn = Elasticsearch(hosts=[scheme + "://" + ip + ":" + port], maxsize=5,
96101
use_ssl=True, verify_certs=verify_certs, ca_certs=ca_certs,
97-
version=content.get('version').get('number'))
102+
version=content.get('version').get('number'),
103+
client_cert=client_cert, client_key=client_key)
98104
else:
99105
conn = Elasticsearch(hosts=[scheme + "://" + ip + ":" + port], maxsize=5,
100106
version=content.get('version').get('number'))

elastichq/static/commons.0c5d691bc33f1cc1a9c6.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)