##############################################################################
# Copyright (c) 2016 Huawei Technologies Co.,Ltd and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
import logging
import threading
import time
from docker import Client
from yardstick.common import constants as config
from yardstick.common import utils as yardstick_utils
from api import conf as api_conf
from api.utils import common as common_utils
from api.utils import influx
logger = logging.getLogger(__name__)
def createInfluxDBContainer(args):
try:
container = _create_influxdb_container()
_config_output_file()
thread = threading.Thread(target=_config_influxdb)
thread.start()
return common_utils.result_handler('success', container)
except Exception as e:
message = 'Failed to create influxdb container: %s' % e
return common_utils.error_handler(message)
def _create_influxdb_container():
client = Client(base_url=config.DOCKER_URL)
ports = [8083, 8086]
port_bindings = {k: k for k in ports}
host_config = client.create_host_config(port_bindings=port_bindings)
container = client.create_container(image='tutum/influxdb',
ports=ports,
detach=True,
tty=True,
host_config=host_config)
client.start(container)
return container
def _config_influxdb():
time.sleep(20)
try:
client = influx.get_data_db_client()
client.create_user(config.USER, config.PASSWORD, config.DATABASE)
client.create_database(config.DATABASE)
logger.info('Success to config influxDB')
except Exception as e:
logger.debug('Failed to config influxDB: %s', e)
def _config_output_file():
yardstick_utils.makedirs('/etc/yardstick')
with open('/etc/yardstick/yardstick.conf', 'w') as f:
f.write("""\
[DEFAULT]
debug = False
dispatcher = influxdb
[dispatcher_file]
file_path = /tmp/yardstick.out
[dispatcher_http]
timeout = 5
# target = http://127.0.0.1:8000/results
[dispatcher_influxdb]
timeout = 5
target = http://%s:8086
db_name = yardstick
username = root
password = root
"""
% api_conf.GATEWAY_IP)