Fix for Bug 1111 Reordering of format_out
[osm/NBI.git] / osm_nbi / instance_topics.py
index 7a6397a..f4d4c73 100644 (file)
@@ -230,6 +230,12 @@ class NsrTopic(BaseTopic):
             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()
@@ -256,7 +262,8 @@ class NsrTopic(BaseTopic):
                 "deploymentStatus": None,
                 "configurationStatus": None,
                 "vcaStatus": None,
-                "nsd": {k: v for k, v in nsd.items() if k in ("vld", "_id", "id", "constituent-vnfd", "name")},
+                "nsd": {k: v for k, v in nsd.items() if k in ("vld", "_id", "id", "constituent-vnfd", "name",
+                                                              "ns-configuration")},
                 "datacenter": ns_request["vimAccountId"],
                 "resource-orchestrator": "osmopenmano",
                 "description": ns_request.get("nsDescription", ""),
@@ -424,6 +431,7 @@ class NsrTopic(BaseTopic):
                         vdur["boot-data-drive"] = vdu["supplemental-boot-data"]["boot-data-drive"]
                     if vdu.get("pdu-type"):
                         vdur["pdu-type"] = vdu["pdu-type"]
+                        vdur["name"] = vdu["pdu-type"]
                     # TODO volumes: name, volume-id
                     for icp in vdu.get("internal-connection-point", ()):
                         vdu_icp = {
@@ -498,7 +506,7 @@ class NsrTopic(BaseTopic):
 
             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)
@@ -1263,6 +1271,12 @@ class NsiTopic(BaseTopic):
             nstd = self.db.get_one("nsts", _filter)
             del _filter["_id"]
 
+            # check NSD is not disabled
+            step = "checking operationalState"
+            if nstd["_admin"]["operationalState"] == "DISABLED":
+                raise EngineException("nst with id '{}' is DISABLED, and thus cannot be used to create "
+                                      "a network slice".format(slice_request["nstId"]), http_code=HTTPStatus.CONFLICT)
+
             nstd.pop("_admin", None)
             nstd_id = nstd.pop("_id", None)
             nsi_id = str(uuid4())