Feature 11009 Ns Config Template as first class citizens in OSM - NBI
Change-Id: I20edf909b461edc73bebdf9bcad0d2a321b0818f
Signed-off-by: kayal2001 <kayalvizhi.v@tataelxsi.co.in>
diff --git a/osm_nbi/instance_topics.py b/osm_nbi/instance_topics.py
index 9d2da99..df4a1d1 100644
--- a/osm_nbi/instance_topics.py
+++ b/osm_nbi/instance_topics.py
@@ -119,6 +119,24 @@
"nsds", {"_id": used_nsd_id}, {"_admin.usageState": "NOT_IN_USE"}
)
+ # Set NS CONFIG TEMPLATE usageState
+ if nsr.get("instantiate_params", {}).get("nsConfigTemplateId"):
+ nsconfigtemplate_id = nsr.get("instantiate_params", {}).get(
+ "nsConfigTemplateId"
+ )
+ nsconfigtemplate_list = self.db.get_one(
+ "nsrs",
+ {"instantiate_params.nsConfigTemplateId": nsconfigtemplate_id},
+ fail_on_empty=False,
+ fail_on_more=False,
+ )
+ if not nsconfigtemplate_list:
+ self.db.set_one(
+ "ns_config_template",
+ {"_id": nsconfigtemplate_id},
+ {"_admin.usageState": "NOT_IN_USE"},
+ )
+
# Set VNFD usageState
used_vnfd_id_list = nsr.get("vnfd-id")
if used_vnfd_id_list:
@@ -324,6 +342,38 @@
nsd = self._get_nsd_from_db(ns_request["nsdId"], session)
ns_k8s_namespace = self._get_ns_k8s_namespace(nsd, ns_request, session)
+ # Uploading the instantiation parameters to ns_request from ns config template
+ if ns_request.get("nsConfigTemplateId"):
+ step = "getting ns_config_template is='{}' from database".format(
+ ns_request.get("nsConfigTemplateId")
+ )
+ ns_config_template_db = self._get_nsConfigTemplate_from_db(
+ ns_request.get("nsConfigTemplateId"), session
+ )
+ ns_config_params = ns_config_template_db.get("config")
+ for key, value in ns_config_params.items():
+ if key == "vnf":
+ ns_request["vnf"] = ns_config_params.get("vnf")
+ elif key == "additionalParamsForVnf":
+ ns_request["additionalParamsForVnf"] = ns_config_params.get(
+ "additionalParamsForVnf"
+ )
+ elif key == "additionalParamsForNs":
+ ns_request["additionalParamsForNs"] = ns_config_params.get(
+ "additionalParamsForNs"
+ )
+ elif key == "vld":
+ ns_request["vld"] = ns_config_params.get("vld")
+ step = "checking ns_config_templateOperationalState"
+ self._check_ns_config_template_operational_state(
+ ns_config_template_db, ns_request
+ )
+
+ step = "Updating NSCONFIG TEMPLATE usageState"
+ update_descriptor_usage_state(
+ ns_config_template_db, "ns_config_template", self.db
+ )
+
step = "checking nsdOperationalState"
self._check_nsd_operational_state(nsd, ns_request)
@@ -399,6 +449,14 @@
_filter["_id"] = nsd_id
return self.db.get_one("nsds", _filter)
+ def _get_nsConfigTemplate_from_db(self, nsConfigTemplate_id, session):
+ _filter = self._get_project_filter(session)
+ _filter["_id"] = nsConfigTemplate_id
+ ns_config_template_db = self.db.get_one(
+ "ns_config_template", _filter, fail_on_empty=False
+ )
+ return ns_config_template_db
+
def _get_vnfd_from_db(self, vnfd_id, session):
_filter = self._get_project_filter(session)
_filter["id"] = vnfd_id
@@ -427,6 +485,16 @@
http_code=HTTPStatus.CONFLICT,
)
+ def _check_ns_config_template_operational_state(
+ self, ns_config_template_db, ns_request
+ ):
+ if ns_config_template_db["_admin"]["operationalState"] == "DISABLED":
+ raise EngineException(
+ "ns_config_template with id '{}' is DISABLED, and thus cannot be used to create "
+ "a network service".format(ns_request["nsConfigTemplateId"]),
+ http_code=HTTPStatus.CONFLICT,
+ )
+
def _get_ns_k8s_namespace(self, nsd, ns_request, session):
additional_params, _ = self._format_additional_params(
ns_request, descriptor=nsd