summaryrefslogtreecommitdiffstats
path: root/storperf/db/graphite_db.py
diff options
context:
space:
mode:
Diffstat (limited to 'storperf/db/graphite_db.py')
-rw-r--r--storperf/db/graphite_db.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/storperf/db/graphite_db.py b/storperf/db/graphite_db.py
index c44d2aa..8be91c8 100644
--- a/storperf/db/graphite_db.py
+++ b/storperf/db/graphite_db.py
@@ -1,4 +1,3 @@
-from storperf.db.job_db import JobDB
import calendar
import json
import logging
@@ -6,6 +5,8 @@ import time
import requests
+from storperf.db.job_db import JobDB
+
class GraphiteDB(object):
@@ -15,6 +16,27 @@ class GraphiteDB(object):
self._job_db = JobDB()
self.logger = logging.getLogger(__name__)
+ def fetch_series(self, workload, metric, io_type, time, duration):
+
+ series = []
+ end = time
+ start = end - duration
+
+ request = ("http://127.0.0.1:8000/render/?target="
+ "averageSeries(%s.*.jobs.1.%s.%s)"
+ "&format=json"
+ "&from=%s"
+ "&until=%s" %
+ (workload, io_type, metric,
+ start, end))
+ self.logger.debug("Calling %s" % (request))
+
+ response = requests.get(request)
+ if (response.status_code == 200):
+ series = self._series_results(json.loads(response.content))
+
+ return series
+
def fetch_averages(self, workload):
workload_executions = self._job_db.fetch_workloads(workload)
@@ -115,6 +137,18 @@ class GraphiteDB(object):
return average
+ def _series_results(self, results):
+
+ series = []
+
+ for item in results:
+ datapoints = item['datapoints']
+ for datapoint in datapoints:
+ if datapoint[0] is not None:
+ series.append([datapoint[1], datapoint[0]])
+
+ return series
+
def make_fullname_pattern(self, workload):
parts = workload.split('.')
wildcards_needed = 7 - len(parts)