From fae4c3f316387baf43ac65992012421dd237c2ff Mon Sep 17 00:00:00 2001 From: bravof Date: Mon, 8 Mar 2021 16:50:37 -0300 Subject: [PATCH] fix(mongodb): query now with filters to get just the VNFD referenced by the NSR. Bug 1463 Change-Id: I6da85baa7fc2d57760253849cb81790bee7d847f Signed-off-by: bravof (cherry picked from commit 5ac541553bb3b751032b18dde0fa6113a789ba87) --- osm_mon/core/common_db.py | 6 +++--- osm_mon/{dashboarder => core}/utils.py | 11 +++++++++++ osm_mon/dashboarder/service.py | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) rename osm_mon/{dashboarder => core}/utils.py (75%) diff --git a/osm_mon/core/common_db.py b/osm_mon/core/common_db.py index e43c6cd..ce44d4d 100644 --- a/osm_mon/core/common_db.py +++ b/osm_mon/core/common_db.py @@ -62,9 +62,9 @@ class CommonDbClient: {"_id": vnfd_id}) return vnfd - def get_vnfd_by_id(self, vnfd_id: str): - vnfd = self.common_db.get_one("vnfds", - {"id": vnfd_id}) + def get_vnfd_by_id(self, vnfd_id: str, filter: dict = {}): + filter["id"] = vnfd_id + vnfd = self.common_db.get_one("vnfds", filter) return vnfd def get_vnfd_by_name(self, vnfd_name: str): diff --git a/osm_mon/dashboarder/utils.py b/osm_mon/core/utils.py similarity index 75% rename from osm_mon/dashboarder/utils.py rename to osm_mon/core/utils.py index 7b13c9d..a4be33c 100644 --- a/osm_mon/dashboarder/utils.py +++ b/osm_mon/core/utils.py @@ -27,3 +27,14 @@ def find_in_list(the_list, condition_lambda): return item else: return None + + +def create_filter_from_nsr(the_nsr): + p_filter = {} + + if "projects_read" in the_nsr["_admin"]: + p_filter["_admin.projects_read.cont"] = the_nsr["_admin"]["projects_read"] + if "projects_write" in the_nsr["_admin"]: + p_filter["_admin.projects_write.cont"] = the_nsr["_admin"]["projects_write"] + + return p_filter diff --git a/osm_mon/dashboarder/service.py b/osm_mon/dashboarder/service.py index 0dd3d90..79cccb4 100644 --- a/osm_mon/dashboarder/service.py +++ b/osm_mon/dashboarder/service.py @@ -27,7 +27,7 @@ from osm_mon.core.config import Config from osm_mon.core.keystone import KeystoneConnection from osm_mon.dashboarder.backends.grafana import GrafanaBackend from osm_mon import __path__ as mon_path -from osm_mon.dashboarder.utils import find_in_list +from osm_mon.core.utils import find_in_list, create_filter_from_nsr log = logging.getLogger(__name__) @@ -91,7 +91,7 @@ class DashboarderService: vnfds_profiles = nsr['nsd']["df"][0]['vnf-profile'] for vnf_profile in vnfds_profiles: try: - vnfd = self.common_db.get_vnfd_by_id(vnf_profile['vnfd-id']) + vnfd = self.common_db.get_vnfd_by_id(vnf_profile['vnfd-id'], create_filter_from_nsr(nsr)) # If there are metrics, create dashboard (if exists) vdu_found = find_in_list(vnfd["vdu"], lambda a_vdu: "monitoring-parameter" in a_vdu) if vdu_found: -- 2.25.1