summaryrefslogtreecommitdiff
path: root/osprofiler/drivers
diff options
context:
space:
mode:
authorIlya Shakhat <shakhat@gmail.com>2019-05-15 16:47:25 +0200
committerIlya Shakhat <shakhat@gmail.com>2019-05-16 12:03:00 +0200
commit0fcc65d0d5a9df40dc53fb611a6058e18a44c654 (patch)
tree8699630593a7a17f1ca309b85adb099b4e6afa59 /osprofiler/drivers
parent30049d6c901e9a36f8e1dd07bac3bdeadd20b550 (diff)
downloadosprofiler-0fcc65d0d5a9df40dc53fb611a6058e18a44c654.tar.gz
Automatic configuration of SQLAlchemy driver in DevStack
This patch adds a new type of collector "sqlalchemy". To enable it, add the following line into DevStack local.conf: OSPROFILER_COLLECTOR=sqlalchemy OSProfiler DevStack plugin creates database for traces and configures all services to use it. SQLAlchemy driver is extend to be able to list traces. Zuul job is added to run Tempest tests with sqlalchemy driver enabled. Change-Id: Ia943d311d78f6dfd2e6bb884c8dca725b3b2a36b
Diffstat (limited to 'osprofiler/drivers')
-rw-r--r--osprofiler/drivers/sqlalchemy_driver.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/osprofiler/drivers/sqlalchemy_driver.py b/osprofiler/drivers/sqlalchemy_driver.py
index a8cefcf..daab1d0 100644
--- a/osprofiler/drivers/sqlalchemy_driver.py
+++ b/osprofiler/drivers/sqlalchemy_driver.py
@@ -102,6 +102,23 @@ class SQLAlchemyDriver(base.Driver):
LOG.exception("Can not store osprofiler tracepoint {} "
"(base_id {})".format(trace_id, base_id))
+ def list_traces(self, fields=None):
+ try:
+ from sqlalchemy.sql import select
+ except ImportError:
+ raise exc.CommandError(
+ "To use this command, you should install 'SQLAlchemy'")
+ stmt = select([self._data_table])
+ seen_ids = set()
+ result = []
+ traces = self._conn.execute(stmt).fetchall()
+ for trace in traces:
+ if trace["base_id"] not in seen_ids:
+ seen_ids.add(trace["base_id"])
+ result.append({key: value for key, value in trace.items()
+ if key in fields})
+ return result
+
def get_report(self, base_id):
try:
from sqlalchemy.sql import select