__author__ = "Vijay R S <vijay.r@tataelxsi.co.in>"
-class PmJobsTopic():
+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']
+ 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)
+ 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)
- if vnfd_desc.get("vdu"):
- for vdu in vnfd_desc['vdu']:
- # Checks for vdu metric in vdu-configuration
- if 'vdu-configuration' in vdu and 'metrics' in vdu['vdu-configuration']:
- metric_list.extend([quote(metric['name'])
- for metric in vdu["vdu-configuration"]["metrics"]])
- # Checks for vnf metric in vnf-configutaion
- if 'vnf-configuration' in vnfd_desc and 'metrics' in vnfd_desc['vnf-configuration']:
- metric_list.extend([quote(metric['name']) for metric in vnfd_desc["vnf-configuration"]["metrics"]])
+ 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
async with aiohttp.ClientSession() as session:
data = []
for metlist in metrics_list:
- request_url = self.url+'/api/v1/query?query=osm_'+metlist+"{ns_id='"+ns_id+"'}"
+ request_url = (
+ self.url
+ + "/api/v1/query?query=osm_"
+ + metlist
+ + "{ns_id='"
+ + ns_id
+ + "'}"
+ )
async with session.get(request_url) as resp:
resp = await resp.json()
- resp = resp['data']['result']
+ resp = resp["data"]["result"]
if resp:
data.append(resp)
return data
except aiohttp.client_exceptions.ClientConnectorError as e:
raise EngineException("Connection to '{}'Failure: {}".format(self.url, e))
- def show(self, session, ns_id):
+ def show(self, session, ns_id, filter_q=None, api_req=False):
metrics_list = self._get_vnf_metric_list(ns_id)
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
- prom_metric = loop.run_until_complete(self._prom_metric_request(ns_id, metrics_list))
+ prom_metric = loop.run_until_complete(
+ self._prom_metric_request(ns_id, metrics_list)
+ )
metric = {}
metric_temp = []
for index_list in prom_metric:
for index in index_list:
- process_metric = {'performanceValue': {'performanceValue': {}}}
- process_metric['objectInstanceId'] = index['metric']['ns_id']
- process_metric['performanceMetric'] = index['metric']['__name__']
- process_metric['performanceValue']['timestamp'] = index['value'][0]
- process_metric['performanceValue']['performanceValue']['performanceValue'] = index['value'][1]
- process_metric['performanceValue']['performanceValue']['vnfMemberIndex'] \
- = index['metric']['vnf_member_index']
- if 'vdu_name' not in index['metric']:
+ process_metric = {"performanceValue": {"performanceValue": {}}}
+ process_metric["objectInstanceId"] = index["metric"]["ns_id"]
+ process_metric["performanceMetric"] = index["metric"]["__name__"]
+ process_metric["performanceValue"]["timestamp"] = index["value"][0]
+ process_metric["performanceValue"]["performanceValue"][
+ "performanceValue"
+ ] = index["value"][1]
+ process_metric["performanceValue"]["performanceValue"][
+ "vnfMemberIndex"
+ ] = index["metric"]["vnf_member_index"]
+ if "vdu_name" not in index["metric"]:
pass
else:
- process_metric['performanceValue']['performanceValue']['vduName'] = index['metric']['vdu_name']
+ process_metric["performanceValue"]["performanceValue"][
+ "vduName"
+ ] = index["metric"]["vdu_name"]
metric_temp.append(process_metric)
- metric['entries'] = metric_temp
+ metric["entries"] = metric_temp
return metric