97 lines
3.4 KiB
Python
97 lines
3.4 KiB
Python
# from elasticsearch import Elasticsearch, RequestsHttpConnection
|
|
# from elasticsearch import Elasticsearch
|
|
from chalicelib.core import log_tools
|
|
# import base64
|
|
import logging
|
|
|
|
logging.getLogger('elasticsearch').level = logging.ERROR
|
|
|
|
IN_TY = "elasticsearch"
|
|
|
|
|
|
def get_all(tenant_id):
|
|
return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY)
|
|
|
|
|
|
def get(project_id):
|
|
return log_tools.get(project_id=project_id, integration=IN_TY)
|
|
|
|
|
|
def update(tenant_id, project_id, changes):
|
|
options = {}
|
|
|
|
if "host" in changes:
|
|
options["host"] = changes["host"]
|
|
if "apiKeyId" in changes:
|
|
options["apiKeyId"] = changes["apiKeyId"]
|
|
if "apiKey" in changes:
|
|
options["apiKey"] = changes["apiKey"]
|
|
if "indexes" in changes:
|
|
options["indexes"] = changes["indexes"]
|
|
if "port" in changes:
|
|
options["port"] = changes["port"]
|
|
|
|
return log_tools.edit(project_id=project_id, integration=IN_TY, changes=options)
|
|
|
|
|
|
def add(tenant_id, project_id, host, api_key_id, api_key, indexes, port):
|
|
options = {
|
|
"host": host, "apiKeyId": api_key_id, "apiKey": api_key, "indexes": indexes, "port": port
|
|
}
|
|
return log_tools.add(project_id=project_id, integration=IN_TY, options=options)
|
|
|
|
|
|
def delete(tenant_id, project_id):
|
|
return log_tools.delete(project_id=project_id, integration=IN_TY)
|
|
|
|
|
|
def add_edit(tenant_id, project_id, data):
|
|
s = get(project_id)
|
|
if s is not None:
|
|
return update(tenant_id=tenant_id, project_id=project_id,
|
|
changes={"host": data["host"], "apiKeyId": data["apiKeyId"], "apiKey": data["apiKey"],
|
|
"indexes": data["indexes"], "port": data["port"]})
|
|
else:
|
|
return add(tenant_id=tenant_id,
|
|
project_id=project_id,
|
|
host=data["host"], api_key=data["apiKey"], api_key_id=data["apiKeyId"], indexes=data["indexes"],
|
|
port=data["port"])
|
|
|
|
|
|
# def __get_es_client(host, port, api_key_id, api_key, use_ssl=False, timeout=15):
|
|
# scheme = "http" if host.startswith("http") else "https"
|
|
# host = host.replace("http://", "").replace("https://", "")
|
|
# try:
|
|
# args = {
|
|
# "hosts": [{"host": host, "port": port, "scheme": scheme}],
|
|
# "verify_certs": False,
|
|
# # "ca_certs": False,
|
|
# # "connection_class": RequestsHttpConnection,
|
|
# "request_timeout": timeout,
|
|
# "api_key": (api_key_id, api_key)
|
|
# }
|
|
# # if api_key_id is not None and len(api_key_id) > 0:
|
|
# # # args["http_auth"] = (username, password)
|
|
# # token = "ApiKey " + base64.b64encode(f"{api_key_id}:{api_key}".encode("utf-8")).decode("utf-8")
|
|
# # args["headers"] = {"Authorization": token}
|
|
# es = Elasticsearch(
|
|
# **args
|
|
# )
|
|
# r = es.ping()
|
|
# if not r and not use_ssl:
|
|
# return __get_es_client(host, port, api_key_id, api_key, use_ssl=True, timeout=timeout)
|
|
# if not r:
|
|
# return None
|
|
# except Exception as err:
|
|
# print("================exception connecting to ES host:")
|
|
# print(err)
|
|
# return None
|
|
# return es
|
|
|
|
|
|
def ping(tenant_id, host, port, apiKeyId, apiKey):
|
|
# es = __get_es_client(host, port, apiKeyId, apiKey, timeout=3)
|
|
# if es is None:
|
|
# return {"state": False}
|
|
# return {"state": es.ping()}
|
|
return {"state": True}
|