Merge "Import "traffic_profile" modules only once"
[yardstick.git] / yardstick / network_services / collector / subscriber.py
index db52e0b..7e18302 100644 (file)
@@ -23,18 +23,6 @@ LOG = logging.getLogger(__name__)
 class Collector(object):
     """Class that handles dictionary of results in yardstick-plot format."""
 
-    @staticmethod
-    def make_resource_profile(node, timeout):
-        # node dict works as mgmt dict
-        # don't need port names, there is no way we can
-        # tell what port is used on the compute node
-        collectd_options = node["collectd"]
-        plugins = collectd_options.get("plugins", {})
-        interval = collectd_options.get("interval")
-
-        # use default cores = None to MatchAllCores
-        return ResourceProfile(node, plugins=plugins, interval=interval, timeout=timeout)
-
     def __init__(self, vnfs, nodes, traffic_profile, timeout=3600):
         super(Collector, self).__init__()
         self.traffic_profile = traffic_profile
@@ -42,7 +30,7 @@ class Collector(object):
         self.nodes = nodes
         self.timeout = timeout
         self.bin_path = get_nsb_option('bin_path', '')
-        self.resource_profiles = {node_name: self.make_resource_profile(node, self.timeout)
+        self.resource_profiles = {node_name: ResourceProfile.make_from_node(node, self.timeout)
                                   for node_name, node in self.nodes.items()
                                   if node.get("collectd")}
 
@@ -74,11 +62,13 @@ class Collector(object):
             # Result example:
             # {"VNF1: { "tput" : [1000, 999] }, "VNF2": { "latency": 100 }}
             LOG.debug("collect KPI for %s", node_name)
-            if not resource.check_if_sa_running("collectd")[0]:
+            if resource.check_if_system_agent_running("collectd")[0] != 0:
                 continue
 
             try:
                 results[node_name] = {"core": resource.amqp_collect_nfvi_kpi()}
-            except Exception:
-                LOG.exception("")
+                LOG.debug("%s collect KPIs %s", node_name, results[node_name]['core'])
+            # NOTE(elfoley): catch a more specific error
+            except Exception as exc:  # pylint: disable=broad-except
+                LOG.exception(exc)
         return results