X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_mon%2Fcollector%2Fcollectors%2Fopenstack.py;h=30bab0cc435b03f735224f9d62b302e9792f1c19;hb=e71feff83ee0acd22eb2cfc8b57f9b0ad25e4651;hp=811014db7ef367b136ecfc92159bea9670931eea;hpb=0e34244e420bd68e6acb0cf6bb4383fedb662070;p=osm%2FMON.git diff --git a/osm_mon/collector/collectors/openstack.py b/osm_mon/collector/collectors/openstack.py index 811014d..30bab0c 100644 --- a/osm_mon/collector/collectors/openstack.py +++ b/osm_mon/collector/collectors/openstack.py @@ -22,17 +22,17 @@ import datetime import json import logging -import multiprocessing -import gnocchiclient.exceptions +from typing import List +import gnocchiclient.exceptions from gnocchiclient.v1 import client as gnocchi_client from keystoneauth1 import session from keystoneauth1.identity import v3 from osm_mon.collector.collectors.base_vim import BaseVimCollector from osm_mon.collector.metric import Metric -from osm_mon.common.common_db_client import CommonDbClient from osm_mon.core.auth import AuthManager +from osm_mon.core.common_db import CommonDbClient from osm_mon.core.settings import Config log = logging.getLogger(__name__) @@ -83,14 +83,15 @@ class OpenstackCollector(BaseVimCollector): cfg = Config.instance() return cfg.OS_DEFAULT_GRANULARITY - def collect(self, vnfr: dict, queue: multiprocessing.Queue): + def collect(self, vnfr: dict) -> List[Metric]: nsr_id = vnfr['nsr-id-ref'] vnf_member_index = vnfr['member-vnf-index-ref'] vnfd = self.common_db.get_vnfd(vnfr['vnfd-id']) + metrics = [] for vdur in vnfr['vdur']: # This avoids errors when vdur records have not been completely filled if 'name' not in vdur: - return None + continue vdu = next( filter(lambda vdu: vdu['id'] == vdur['vdu-id-ref'], vnfd['vdu']) ) @@ -98,16 +99,18 @@ class OpenstackCollector(BaseVimCollector): for param in vdu['monitoring-param']: metric_name = param['nfvi-metric'] gnocchi_metric_name = METRIC_MAPPINGS[metric_name] - start_date = datetime.datetime.now() - datetime.timedelta(seconds=self.granularity) + delta = 10 * self.granularity + start_date = datetime.datetime.now() - datetime.timedelta(seconds=delta) resource_id = self._get_resource_uuid(nsr_id, vnf_member_index, vdur['name']) try: - metrics = self.gnocchi_client.metric.get_measures(gnocchi_metric_name, - start=start_date, - resource_id=resource_id, - granularity=self.granularity) - if len(metrics): - metric = Metric(nsr_id, vnf_member_index, vdur['name'], metric_name, metrics[-1][2]) - queue.put(metric) + measures = self.gnocchi_client.metric.get_measures(gnocchi_metric_name, + start=start_date, + resource_id=resource_id, + granularity=self.granularity) + if len(measures): + metric = Metric(nsr_id, vnf_member_index, vdur['name'], metric_name, measures[-1][2]) + metrics.append(metric) except gnocchiclient.exceptions.NotFound as e: log.debug("No metric found: %s", e) pass + return metrics