-class PmJobsTopic():
- def __init__(self, host=None, port=None):
- self.url = 'http://{}:{}'.format(host, port)
- self.metric_list = ['cpu_utilization', 'average_memory_utilization', 'disk_read_ops',
- 'disk_write_ops', 'disk_read_bytes', 'disk_write_bytes', 'packets_dropped',
- 'packets_sent', 'packets_received']
+class PmJobsTopic:
+ def __init__(self, db, host=None, port=None):
+ self.db = db
+ self.url = "http://{}:{}".format(host, port)
+ self.nfvi_metric_list = [
+ "cpu_utilization",
+ "average_memory_utilization",
+ "disk_read_ops",
+ "disk_write_ops",
+ "disk_read_bytes",
+ "disk_write_bytes",
+ "packets_dropped",
+ "packets_sent",
+ "packets_received",
+ ]
+
+ def _get_vnf_metric_list(self, ns_id):
+ metric_list = self.nfvi_metric_list.copy()
+ vnfr_desc = self.db.get_list("vnfrs", {"nsr-id-ref": ns_id})
+ if not vnfr_desc:
+ raise EngineException(
+ "NS not found with id {}".format(ns_id), http_code=HTTPStatus.NOT_FOUND
+ )
+ else:
+ for vnfr in vnfr_desc:
+ vnfd_desc = self.db.get_one(
+ "vnfds",
+ {"_id": vnfr["vnfd-id"]},
+ fail_on_empty=True,
+ fail_on_more=False,
+ )
+ try:
+ configs = vnfd_desc.get("df")[0]["lcm-operations-configuration"][
+ "operate-vnf-op-config"
+ ]["day1-2"]
+ except Exception:
+ configs = []
+
+ for config in configs:
+ if "metrics" in config:
+ metric_list.extend(
+ [quote(metric["name"]) for metric in config["metrics"]]
+ )
+ metric_list = list(set(metric_list))
+ return metric_list