- metrics.append(metric)
- if "vnf-configuration" in vnfd and "metrics" in vnfd["vnf-configuration"]:
- try:
- vca_deployment_info = self.get_vca_deployment_info(
- nsr_id, vnf_member_index
- )
- except VcaDeploymentInfoNotFound as e:
- log.warning(repr(e))
- return metrics
- measures = self.loop.run_until_complete(
- self.n2vc.get_metrics(
- vca_deployment_info["model"], vca_deployment_info["application"]
- )
- )
- # Search for Mgmt VDU name, needed to query Prometheus based on alarm tags
- # TODO: check a better way to look for Mgmt VDU
- for vdur in vnfr["vdur"]:
- for interface in vdur["interfaces"]:
- if "mgmt-vnf" in interface:
- vdu_name = vdur["name"]
- break
- log.debug("Measures: %s", measures)
- for measure_list in measures.values():
- for measure in measure_list:
- log.debug("Measure: %s", measure)
- metric = VnfMetric(
- nsr_id,
- vnf_member_index,
- vdu_name,
- measure["key"],
- float(measure["value"]),
- tags,
- )
- metrics.append(metric)
+ except VcaDeploymentInfoNotFound as e:
+ log.warning(repr(e))
+ continue
+ # This avoids errors before application and model is not ready till they are occured
+ if vca_deployment_info.get("model") and vca_deployment_info.get("application"):
+ measures = self.loop.run_until_complete(
+ self.n2vc.get_metrics(
+ vca_deployment_info["model"],
+ vca_deployment_info["application"],
+ vca_id=vnfr.get("vca-id"),
+ )
+ )
+ log.debug("Measures: %s", measures)
+ for measure_list in measures.values():
+ for measure in measure_list:
+ log.debug("Measure: %s", measure)
+ metric = VnfMetric(
+ nsr_id,
+ vnf_member_index,
+ vdur["name"],
+ measure["key"],
+ float(measure["value"]),
+ tags,
+ )
+ metrics.append(metric)
+