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
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")}
# 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