diff --git a/components/analytics/docker-compose.analytics.yml b/components/analytics/docker-compose.analytics.yml index 58d3874d..16724879 100644 --- a/components/analytics/docker-compose.analytics.yml +++ b/components/analytics/docker-compose.analytics.yml @@ -8,7 +8,7 @@ services: build: context: ./components/analytics/elasticsearch args: - ELK_VERSION: 6.4.0 + ELK_VERSION: 6.8.21 volumes: - cvat_events:/usr/share/elasticsearch/data restart: always @@ -21,7 +21,7 @@ services: build: context: ./components/analytics/kibana args: - ELK_VERSION: 6.4.0 + ELK_VERSION: 6.8.21 depends_on: ['elasticsearch'] restart: always @@ -62,7 +62,7 @@ services: build: context: ./components/analytics/logstash args: - ELK_VERSION: 6.4.0 + ELK_VERSION: 6.8.21 http_proxy: ${http_proxy} https_proxy: ${https_proxy} environment: diff --git a/components/analytics/kibana/setup.py b/components/analytics/kibana/setup.py index f1877ffe..198edb2c 100644 --- a/components/analytics/kibana/setup.py +++ b/components/analytics/kibana/setup.py @@ -1,9 +1,13 @@ +# Copyright (C) 2021 Intel Corporation +# +# SPDX-License-Identifier: MIT + #/usr/bin/env python -import os import argparse -import requests import json +from time import sleep +import requests def import_resources(host, port, cfg_file): with open(cfg_file, 'r') as f: @@ -27,6 +31,19 @@ def import_saved_object(host, port, _type, _id, data): headers={'kbn-xsrf': 'true'}) request.raise_for_status() +def wait_for_status(host, port, status='green', max_attempts=10, delay=3): + for _ in range(max_attempts): + response = requests.get('http://{}:{}/api/status'.format(host, port)) + if response.status_code != 200: + sleep(delay) + continue + + response = response.json() + if status == response['status']['overall']['state']: + return True + + return False + if __name__ == '__main__': parser = argparse.ArgumentParser(description='import Kibana 6.x resources', formatter_class=argparse.ArgumentDefaultsHelpFormatter) @@ -37,4 +54,8 @@ if __name__ == '__main__': parser.add_argument('-H', '--host', metavar='HOST', default='kibana', help='host of Kibana instance') args = parser.parse_args() - import_resources(args.host, args.port, args.export_file) + + if wait_for_status(args.host, args.port): + import_resources(args.host, args.port, args.export_file) + else: + exit('Cannot setup Kibana objects')