diff options
author | Mark Beierl <mark.beierl@emc.com> | 2016-05-04 22:53:07 -0400 |
---|---|---|
committer | Mark Beierl <mark.beierl@emc.com> | 2016-05-06 14:13:52 -0400 |
commit | da56b4dac702713045aaeeedbab9234e1825ffe0 (patch) | |
tree | ae5594911e25458bada74916f01e82520b2f423c /storperf/db/graphite_db.py | |
parent | 05e863781ce6746fabec176d1fc5f7454f2cdd73 (diff) |
Add Stats report and Swagger UI
Add Swagger web ui at /swagger
Add ability to fetch read/write latency status via ReST ui
Can now delete where stack was removed from OpenStack but not from the
storperf DB
Change to use Floating IPs instead of private IP
Fix delete bug where there was no dependency on resources in
the resource group.
JIRA: STORPERF-19
JIRA: STORPERF-20
Change-Id: I1d9627d81f3c309b178a9b68cc306a4101c1a231
Signed-off-by: Mark Beierl <mark.beierl@emc.com>
Diffstat (limited to 'storperf/db/graphite_db.py')
-rw-r--r-- | storperf/db/graphite_db.py | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/storperf/db/graphite_db.py b/storperf/db/graphite_db.py index c62340c..8fef071 100644 --- a/storperf/db/graphite_db.py +++ b/storperf/db/graphite_db.py @@ -1,6 +1,8 @@ from storperf.db.job_db import JobDB +import calendar import json import logging +import time import requests @@ -41,18 +43,54 @@ class GraphiteDB(object): for io_type in ['read', 'write']: for workload_name, times in workload_names.iteritems(): workload_pattern = self.make_fullname_pattern(workload_name) + short_name = '.'.join(workload_name.split('.')[1:6]) + start = times[0] + end = times[1] + + if end is None: + end = str(calendar.timegm(time.gmtime())) + averages[short_name + ".duration"] = \ + (int(end) - int(start)) + + key = short_name + "." + io_type + request = ("http://127.0.0.1:8000/render/?target=" "averageSeries(%s.jobs.1.%s.lat.mean)" "&format=json" "&from=%s" "&until=%s" % - (workload_pattern, io_type, times[0], times[1])) + (workload_pattern, io_type, start, end)) + self.logger.debug("Calling %s" % (request)) + + response = requests.get(request) + if (response.status_code == 200): + averages[key + ".latency"] = \ + self._average_results(json.loads(response.content)) + + request = ("http://127.0.0.1:8000/render/?target=" + "averageSeries(%s.jobs.1.%s.bw)" + "&format=json" + "&from=%s" + "&until=%s" % + (workload_pattern, io_type, start, end)) + self.logger.debug("Calling %s" % (request)) + + response = requests.get(request) + if (response.status_code == 200): + averages[key + ".throughput"] = \ + self._average_results(json.loads(response.content)) + + request = ("http://127.0.0.1:8000/render/?target=" + "averageSeries(%s.jobs.1.%s.iops)" + "&format=json" + "&from=%s" + "&until=%s" % + (workload_pattern, io_type, start, end)) self.logger.debug("Calling %s" % (request)) response = requests.get(request) if (response.status_code == 200): - short_name = '.'.join(workload_name.split('.')[1:6]) - averages[short_name + "." + io_type] = \ + averages[key + ".iops"] = \ self._average_results(json.loads(response.content)) return averages |