fix(mongodb): query now with filters to get just the VNFD referenced by the NSR. Bug 1463

Change-Id: I6da85baa7fc2d57760253849cb81790bee7d847f
Signed-off-by: bravof <fbravo@whitestack.com>
(cherry picked from commit 5ac541553bb3b751032b18dde0fa6113a789ba87)
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 @@
                                       {"_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 @@
             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.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 @@
             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: