From 4ac123951f5571d44ec01b680941b95203653c64 Mon Sep 17 00:00:00 2001 From: Emma Foley Date: Tue, 18 Dec 2018 18:26:23 +0000 Subject: Add ability to get data from different DBs in influx In order to get data from Barometer, the influx helper need to be updated to recognise different DBs. This patch adds an optional arg to specify which database to use. By default, the configured dispatcher for Yardstick is used. Limitation: The new change hard codes barometer DB name to be used, and assumes that it is in the same instance of Influx as the Yardstick dispatcher. This can be extended later to make it configurable, however, a new config option would have to be introduced. JIRA: YARDSTICK-1593 Change-Id: Idee9c3491d6bf7b549e014edd9ff031312cf0ec2 Signed-off-by: Emma Foley --- api/utils/influx.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'api') diff --git a/api/utils/influx.py b/api/utils/influx.py index f391ad972..8f3604745 100644 --- a/api/utils/influx.py +++ b/api/utils/influx.py @@ -1,5 +1,6 @@ ############################################################################## # Copyright (c) 2016 Huawei Technologies Co.,Ltd and others. +# Copyright (c) 2019 Intel Corporation # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -22,25 +23,27 @@ from yardstick import dispatcher logger = logging.getLogger(__name__) - -def get_data_db_client(): +def get_data_db_client(db=None): parser = ConfigParser.ConfigParser() try: parser.read(consts.CONF_FILE) - return _get_influxdb_client(parser) + return _get_influxdb_client(parser, db) except ConfigParser.NoOptionError: logger.error('Can not find the key') raise - -def _get_influxdb_client(parser): +def _get_influxdb_client(parser, db=None): if dispatcher.INFLUXDB not in parser.get('DEFAULT', 'dispatcher'): raise exceptions.InfluxDBConfigurationMissing() ip = _get_ip(parser.get('dispatcher_influxdb', 'target')) user = parser.get('dispatcher_influxdb', 'username') password = parser.get('dispatcher_influxdb', 'password') - db_name = parser.get('dispatcher_influxdb', 'db_name') + if db is None: + db_name = parser.get('dispatcher_influxdb', 'db_name') + else: + db_name = db + return influxdb_client.InfluxDBClient(ip, consts.INFLUXDB_PORT, user, password, db_name) @@ -49,9 +52,9 @@ def _get_ip(url): return urlsplit(url).hostname -def query(query_sql): +def query(query_sql, db=None): try: - client = get_data_db_client() + client = get_data_db_client(db) logger.debug('Start to query: %s', query_sql) return list(client.query(query_sql).get_points()) except RuntimeError: -- cgit 1.2.3-korg