From: bravof Date: Mon, 8 Mar 2021 19:50:37 +0000 (-0300) Subject: fix(mongodb): query now with filters to get just the VNFD referenced by the NSR.... X-Git-Tag: v9.1.0~5 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=fae4c3f316387baf43ac65992012421dd237c2ff;p=osm%2FMON.git 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) --- 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/core/utils.py b/osm_mon/core/utils.py new file mode 100644 index 0000000..a4be33c --- /dev/null +++ b/osm_mon/core/utils.py @@ -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 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: diff --git a/osm_mon/dashboarder/utils.py b/osm_mon/dashboarder/utils.py deleted file mode 100644 index 7b13c9d..0000000 --- a/osm_mon/dashboarder/utils.py +++ /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