Before creating an NS, check underlying NSD is not in DISABLED state 94/9494/2
authorFrank Bryden <frank.bryden@etsi.org>
Tue, 21 Jul 2020 14:25:32 +0000 (14:25 +0000)
committertierno <alfonso.tiernosepulveda@telefonica.com>
Tue, 4 Aug 2020 11:44:06 +0000 (13:44 +0200)
Change-Id: Ie31277a4c85092f3bd42b4f865d38d8e8049af7a
Signed-off-by: Frank Bryden <frank.bryden@etsi.org>
osm_nbi/instance_topics.py

index 7d7ef46..b4fae6a 100644 (file)
@@ -230,6 +230,12 @@ class NsrTopic(BaseTopic):
             nsd = self.db.get_one("nsds", _filter)
             del _filter["_id"]
 
             nsd = self.db.get_one("nsds", _filter)
             del _filter["_id"]
 
+            # check NSD is not disabled
+            step = "checking nsdOperationalState"
+            if nsd["_admin"]["operationalState"] == "DISABLED":
+                raise EngineException("nsd with id '{}' is DISABLED, and thus cannot be used to create "
+                                      "a network service".format(ns_request["nsdId"]), http_code=HTTPStatus.CONFLICT)
+
             nsr_id = str(uuid4())
 
             now = time()
             nsr_id = str(uuid4())
 
             now = time()
@@ -500,7 +506,7 @@ class NsrTopic(BaseTopic):
 
             return nsr_id, None
         except (ValidationError, EngineException, DbException, MsgException, FsException) as e:
 
             return nsr_id, None
         except (ValidationError, EngineException, DbException, MsgException, FsException) as e:
-            raise type(e)("{} while '{}".format(e, step), http_code=e.http_code)
+            raise type(e)("{} while '{}'".format(e, step), http_code=e.http_code)
 
     def edit(self, session, _id, indata=None, kwargs=None, content=None):
         raise EngineException("Method edit called directly", HTTPStatus.INTERNAL_SERVER_ERROR)
 
     def edit(self, session, _id, indata=None, kwargs=None, content=None):
         raise EngineException("Method edit called directly", HTTPStatus.INTERNAL_SERVER_ERROR)