From: delacruzramo Date: Thu, 21 Nov 2019 10:09:16 +0000 (+0100) Subject: Fix bug 875: VIM gets deleted when the Instance is Running X-Git-Tag: v7.0.0rc1~1 X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=commitdiff_plain;h=35c998bd4ba1218c67b7c89f709b63f5268ed83c;ds=sidebyside Fix bug 875: VIM gets deleted when the Instance is Running Change-Id: I74f942e3ad17e1d61bbe507ddf6ad2e9755be66c Signed-off-by: delacruzramo --- diff --git a/osm_nbi/admin_topics.py b/osm_nbi/admin_topics.py index ada9c7b..5b37bf0 100644 --- a/osm_nbi/admin_topics.py +++ b/osm_nbi/admin_topics.py @@ -368,6 +368,21 @@ class VimAccountTopic(CommonVimWimSdn): config_to_encrypt = {"1.1": ("admin_password", "nsx_password", "vcenter_password"), "default": ("admin_password", "nsx_password", "vcenter_password", "vrops_password")} + def check_conflict_on_del(self, session, _id, db_content): + """ + Check if deletion can be done because of dependencies if it is not force. To override + :param session: contains "username", "admin", "force", "public", "project_id", "set_project" + :param _id: internal _id + :param db_content: The database content of this item _id + :return: None if ok or raises EngineException with the conflict + """ + if session["force"]: + return + # check if used by VNF + if self.db.get_list("vnfrs", {"vim-account-id": _id}): + raise EngineException("There is at least one VNF using this VIM account", http_code=HTTPStatus.CONFLICT) + super().check_conflict_on_del(session, _id, db_content) + class WimAccountTopic(CommonVimWimSdn): topic = "wim_accounts" diff --git a/osm_nbi/tests/test_admin_topics.py b/osm_nbi/tests/test_admin_topics.py index 5597979..04a64f1 100755 --- a/osm_nbi/tests/test_admin_topics.py +++ b/osm_nbi/tests/test_admin_topics.py @@ -716,6 +716,7 @@ class Test_CommonVimWimSdn(TestCase): ro_pid = str(uuid4()) rw_pid = str(uuid4()) cvws = {"_id": cid, "name": self.test_name} + self.db.get_list.return_value = [] with self.subTest(i=1): cvws["_admin"] = {"projects_read": [test_pid, ro_pid, rw_pid], "projects_write": [test_pid, rw_pid]} self.db.get_one.return_value = cvws @@ -729,7 +730,7 @@ class Test_CommonVimWimSdn(TestCase): "Wrong read-only projects update") self.assertEqual(self.db.set_one.call_args[1]["update_dict"]["_admin.projects_write"], [rw_pid], "Wrong read/write projects update") - with self.subTest(i=3): + with self.subTest(i=2): now = time() cvws["_admin"] = {"projects_read": [test_pid], "projects_write": [test_pid], "operations": []} self.db.get_one.return_value = cvws