fixes: use isinstance, fix logging, use dict literal 81/27581/9
authorRoss Brattain <ross.b.brattain@intel.com>
Thu, 26 Jan 2017 00:39:59 +0000 (16:39 -0800)
committerRoss Brattain <ross.b.brattain@intel.com>
Wed, 8 Mar 2017 16:45:41 +0000 (08:45 -0800)
isinstance allows for matching with list and dict subclasses
as well and list and dict themselves

Use collections.Mapping for dict
We still have to use list, because iterable is too generic,
strings are iterable for example.

use dict literal for point

fix logging to use deferred interpolation

Change-Id: I4c9b27fd07b57139e86315e39f58d54cc18e402d
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
yardstick/dispatcher/influxdb.py

index d388d28..5a5af00 100644 (file)
@@ -13,6 +13,7 @@ import logging
 import os
 import time
 
+import collections
 import requests
 import six
 from oslo_config import cfg
@@ -79,15 +80,17 @@ class InfluxdbDispatcher(DispatchBase):
     def _dict_key_flatten(self, data):
         next_data = {}
 
-        if not [v for v in data.values()
-                if type(v) == dict or type(v) == list]:
+        # use list, because iterable is too generic
+        if not [v for v in data.values() if
+                isinstance(v, (collections.Mapping, list))]:
             return data
 
         for k, v in six.iteritems(data):
-            if type(v) == dict:
+            if isinstance(v, collections.Mapping):
                 for n_k, n_v in six.iteritems(v):
                     next_data["%s.%s" % (k, n_k)] = n_v
-            elif type(v) == list:
+            # use list because iterable is too generic
+            elif isinstance(v, list):
                 for index, item in enumerate(v):
                     next_data["%s%d" % (k, index)] = item
             else:
@@ -119,11 +122,12 @@ class InfluxdbDispatcher(DispatchBase):
 
     def _data_to_line_protocol(self, data):
         msg = {}
-        point = {}
-        point["measurement"] = self.tc
-        point["fields"] = self._dict_key_flatten(data["benchmark"]["data"])
-        point["time"] = self._get_nano_timestamp(data)
-        point["tags"] = self._get_extended_tags(data)
+        point = {
+            "measurement": self.tc,
+            "fields": self._dict_key_flatten(data["benchmark"]["data"]),
+            "time": self._get_nano_timestamp(data),
+            "tags": self._get_extended_tags(data),
+        }
         msg["points"] = [point]
         msg["tags"] = self.static_tags