fix(mongodb): query now with filters to get just the VNFD referenced by the NSR.... 65/10465/1
authorbravof <fbravo@whitestack.com>
Mon, 8 Mar 2021 19:50:37 +0000 (16:50 -0300)
committerbravof <fbravo@whitestack.com>
Mon, 8 Mar 2021 19:50:37 +0000 (16:50 -0300)
Change-Id: I6da85baa7fc2d57760253849cb81790bee7d847f
Signed-off-by: bravof <fbravo@whitestack.com>
osm_mon/core/common_db.py
osm_mon/core/utils.py [new file with mode: 0644]
osm_mon/dashboarder/service.py
osm_mon/dashboarder/utils.py [deleted file]

index e43c6cd..ce44d4d 100644 (file)
@@ -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/core/utils.py b/osm_mon/core/utils.py
new file mode 100644 (file)
index 0000000..a4be33c
--- /dev/null
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2018 Whitestack, LLC
+# *************************************************************
+
+# This file is part of OSM Monitoring module
+# All Rights Reserved to Whitestack, LLC
+
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+
+#         http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: fbravo@whitestack.com or agarcia@whitestack.com
+##
+
+def find_in_list(the_list, condition_lambda):
+    for item in the_list:
+        if condition_lambda(item):
+            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
index 0dd3d90..79cccb4 100644 (file)
@@ -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:
diff --git a/osm_mon/dashboarder/utils.py b/osm_mon/dashboarder/utils.py
deleted file mode 100644 (file)
index 7b13c9d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright 2018 Whitestack, LLC
-# *************************************************************
-
-# This file is part of OSM Monitoring module
-# All Rights Reserved to Whitestack, LLC
-
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-
-#         http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-# For those usages not covered by the Apache License, Version 2.0 please
-# contact: fbravo@whitestack.com or agarcia@whitestack.com
-##
-
-def find_in_list(the_list, condition_lambda):
-    for item in the_list:
-        if condition_lambda(item):
-            return item
-    else:
-        return None