Now, the vcaStatus is not overwritten when there are multiple KDUs
inside a KNF, or when there are both KNFs and VNFs inside an NS
Change-Id: I7f8f17d6cc5f5c519bc0895f23e0b8883979d33b
Signed-off-by: Pedro Escaleira <escaleira@av.it.pt>
Signed-off-by: 36970 <jegan.s@tataelxsi.co.in>
# DEBUG WITH PDB
import pdb
# DEBUG WITH PDB
import pdb
import asyncio
import yaml
import logging
import asyncio
import yaml
import logging
file=sys.stderr,
)
exit(1)
file=sys.stderr,
)
exit(1)
+ config_file = os.path.realpath(os.path.normpath(os.path.abspath(config_file)))
lcm = Lcm(config_file)
asyncio.run(lcm.start())
except (LcmException, getopt.GetoptError) as e:
lcm = Lcm(config_file)
asyncio.run(lcm.start())
except (LcmException, getopt.GetoptError) as e:
nsr = self.db.get_one(table="nsrs", q_filter=filter)
current_ns_status = nsr.get("nsState")
nsr = self.db.get_one(table="nsrs", q_filter=filter)
current_ns_status = nsr.get("nsState")
- # get vca status for NS
+ # First, we need to verify if the current vcaStatus is null, because if that is the case,
+ # MongoDB will not be able to create the fields used within the update key in the database
+ if not nsr.get("vcaStatus"):
+ # Write an empty dictionary to the vcaStatus field, it its value is null
+ self.update_db_2("nsrs", nsr_id, {"vcaStatus": dict()})
+
+ # Get vca status for NS
status_dict = await self.n2vc.get_status(
namespace="." + nsr_id, yaml_format=False, vca_id=vca_id
)
status_dict = await self.n2vc.get_status(
namespace="." + nsr_id, yaml_format=False, vca_id=vca_id
)
+ # Update the vcaStatus
+ db_key = f"vcaStatus.{nsr_id}.VNF"
- db_dict["vcaStatus"] = status_dict
+
+ db_dict[db_key] = status_dict[nsr_id]
+ await self.n2vc.update_vca_status(db_dict[db_key], vca_id=vca_id)
# update configurationStatus for this VCA
try:
# update configurationStatus for this VCA
try:
+ # First, we need to verify if the current vcaStatus is null, because if that is the case,
+ # MongoDB will not be able to create the fields used within the update key in the database
+ nsr = self.db.get_one(table="nsrs", q_filter=filter)
+ if not nsr.get("vcaStatus"):
+ # Write an empty dictionary to the vcaStatus field, it its value is null
+ self.update_db_2("nsrs", nsr_id, {"vcaStatus": dict()})
+
+ # Update the vcaStatus
+ db_key = f"vcaStatus.{nsr_id}.KNF"
- db_dict["vcaStatus"] = {nsr_id: vca_status}
+
+ db_dict[db_key] = vca_status
+
+ if cluster_type in ("juju-bundle", "juju"):
+ # TODO -> this should be done in a more uniform way, I think in N2VC, in order to update the K8s VCA
+ # status in a similar way between Juju Bundles and Helm Charts on this side
+ await self.k8sclusterjuju.update_vca_status(
+ db_dict[db_key],
+ kdu_instance,
+ vca_id=vca_id,
+ )
self.logger.debug(
f"Obtained VCA status for cluster type '{cluster_type}': {vca_status}"
self.logger.debug(
f"Obtained VCA status for cluster type '{cluster_type}': {vca_status}"
vca_id=vca_id,
cluster_type=cluster_type,
)
vca_id=vca_id,
cluster_type=cluster_type,
)
+ if db_nsr["_admin"]["deployed"]["VCA"]:
for vca_index, _ in enumerate(db_nsr["_admin"]["deployed"]["VCA"]):
table, filter = "nsrs", {"_id": nsr_id}
path = "_admin.deployed.VCA.{}.".format(vca_index)
for vca_index, _ in enumerate(db_nsr["_admin"]["deployed"]["VCA"]):
table, filter = "nsrs", {"_id": nsr_id}
path = "_admin.deployed.VCA.{}.".format(vca_index)
old_config_status = db_nsr["config-status"]
db_nsr_update = {
old_config_status = db_nsr["config-status"]
db_nsr_update = {
+ "operational-status": "healing",
"_admin.deployed.RO.operational-status": "healing",
}
self.update_db_2("nsrs", nsr_id, db_nsr_update)
"_admin.deployed.RO.operational-status": "healing",
}
self.update_db_2("nsrs", nsr_id, db_nsr_update)
task_instantiation_info=tasks_dict_info,
stage=stage,
)
task_instantiation_info=tasks_dict_info,
stage=stage,
)
except (
ROclient.ROClientException,
DbException,
except (
ROclient.ROClientException,
DbException,
)
finally:
error_list = list()
)
finally:
error_list = list()
+ if db_vnfrs_list and target_list:
+ for vnfrs in db_vnfrs_list:
+ for vnf_instance in target_list:
+ if vnfrs["_id"] == vnf_instance.get("vnfInstanceId"):
+ self.db.set_list(
+ "vnfrs",
+ {"_id": vnfrs["_id"]},
+ {"_admin.modified": time()},
+ )
if exc:
error_list.append(str(exc))
try:
if exc:
error_list.append(str(exc))
try:
deps = {[testenv]deps}
-r{toxinidir}/requirements-dev.txt
-r{toxinidir}/requirements-test.txt
deps = {[testenv]deps}
-r{toxinidir}/requirements-dev.txt
-r{toxinidir}/requirements-test.txt
commands =
pylint -E osm_lcm --extension-pkg-allow-list=pydantic # issue with pydantic (https://github.com/pydantic/pydantic/issues/1961)
commands =
pylint -E osm_lcm --extension-pkg-allow-list=pydantic # issue with pydantic (https://github.com/pydantic/pydantic/issues/1961)