summaryrefslogtreecommitdiffstats
path: root/dashboard/dashboard/common/elastic_access.py
blob: aaf776f7aa1e1f5c39882df4964c9b96716a5d93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import json
import urlparse

import urllib3

http = urllib3.PoolManager()


def _request(method, url, creds=None, body=None):
    headers = urllib3.make_headers(basic_auth=creds)
    return http.request(method, url, headers=headers, body=body)


def _post(url, creds=None, body=None):
    return _request('POST', url, creds=creds, body=body)


def _get(url, creds=None, body=None):
    return json.loads(_request('GET', url, creds=creds, body=body).data)


def delete_docs(url, creds=None, body=None):
    return _request('DELETE', url, creds=creds, body=body)


def publish_docs(url, creds=None, body=None):
    result = _post(url, creds=creds, body=(json.dumps(body)))
    return result.status, result.data


def _get_docs_nr(url, creds=None, body=None):
    res_data = _get('{}/_search?size=0'.format(url), creds=creds, body=body)
    print type(res_data), res_data
    return res_data['hits']['total']


def get_docs(url, creds=None, body=None, field='_source'):

    docs_nr = _get_docs_nr(url, creds=creds, body=body)
    res_data = _get('{}/_search?size={}'.format(url, docs_nr),
                    creds=creds, body=body)

    docs = []
    for hit in res_data['hits']['hits']:
        docs.append(hit[field])
    return docs


def publish_kibana(url, creds, type, id, body):
    url = urlparse.urljoin(url, '/.kibana/{}/{}'.format(type, id))
    publish_docs(url, creds, body)