if not nsrs_list:
self.db.set_one("vnfds", {"_id": used_vnfd_id}, {"_admin.usageState": "NOT_IN_USE"})
+ # delete extra ro_nsrs used for internal RO module
+ self.db.del_one("ro_nsrs", q_filter={"_id": _id}, fail_on_empty=False)
+
@staticmethod
def _format_ns_request(ns_request):
formated_request = copy(ns_request)
"_id": nsr_id,
# "input-parameter": xpath, value,
"ssh-authorized-key": ns_request.get("ssh_keys"), # TODO remove
+ "vld": nsd.get("vld") or [],
+ "flavor": [],
+ "image": [],
}
ns_request["nsr_id"] = nsr_id
if ns_request and ns_request.get("config-units"):
# "vim-id", "flavor-id", "image-id", "management-ip" # filled by LCM
"internal-connection-point": [],
"interfaces": [],
- "additionalParams": additional_params
+ "additionalParams": additional_params,
+ "vdu-name": vdu["name"],
}
if vdu_params and vdu_params.get("config-units"):
vdur["config-units"] = vdu_params["config-units"]
if vdu.get("pdu-type"):
vdur["pdu-type"] = vdu["pdu-type"]
vdur["name"] = vdu["pdu-type"]
+
+ # flavor
+ flavor_data = copy(vdu.get("vm-flavor", {}))
+ flavor_data["guest-epa"] = vdu.get("guest-epa")
+ f = next((f for f in nsr_descriptor["flavor"] if
+ all(f.get(k) == flavor_data[k] for k in flavor_data)), None)
+ if not f:
+ flavor_data["vim_info"] = []
+ flavor_data["name"] = vdu["id"][:56] + "-flv"
+ flavor_data["id"] = str(len(nsr_descriptor["flavor"]))
+ nsr_descriptor["flavor"].append(flavor_data)
+ f = flavor_data
+ vdur["ns-flavor-id"] = f["id"]
+
+ # image
+ if vdu.get("image"):
+ image_data = {"image": vdu["image"], "image_checksum": vdu.get("image_checksum")}
+ img = next((f for f in nsr_descriptor["image"] if
+ all(f.get(k) == image_data[k] for k in image_data)), None)
+ if not img:
+ image_data["vim_info"] = []
+ image_data["id"] = str(len(nsr_descriptor["image"]))
+ nsr_descriptor["image"].append(image_data)
+ img = image_data
+ vdur["ns-image-id"] = img["id"]
+
# TODO volumes: name, volume-id
for icp in vdu.get("internal-connection-point", ()):
vdu_icp = {
vdu_iface["mgmt-vnf"] = True
if iface.get("mgmt-interface"):
vdu_iface["mgmt-interface"] = True # TODO change to mgmt-vdu
+ if iface.get("virtual-interface"):
+ if iface["virtual-interface"].get("type"):
+ iface["type"] = iface["virtual-interface"]["type"]
+ if iface["virtual-interface"].get("vpci"):
+ iface["vpci"] = iface["virtual-interface"]["vpci"]
+ if iface["virtual-interface"].get("bandwidth"):
+ iface["bandwidth"] = iface["virtual-interface"]["bandwidth"]
# look for network where this interface is connected
if iface.get("external-connection-point-ref"):
else:
continue
break
-
- vdur["interfaces"].append(vdu_iface)
+ if iface.get("position") is not None:
+ vdur["interfaces"].insert(iface["position"], vdu_iface)
+ else:
+ vdur["interfaces"].append(vdu_iface)
count = vdu.get("count", 1)
if count is None:
count = 1
vdur["_id"] = str(uuid4())
vdur["count-index"] = index
+ vdur["id"] = "{}-{}".format(vdur["vdu-id-ref"], index)
vnfr_descriptor["vdur"].append(vdur)
step = "creating vnfr vnfd-id='{}' constituent-vnfd='{}' at database".format(
self.db.set_one = Mock()
self.nsr_topic.delete(session, self.nsr_id)
- db_args = self.db.del_one.call_args[0]
+ db_args_ro_nsrs = self.db.del_one.call_args_list[1][0]
+ db_args = self.db.del_one.call_args_list[0][0]
msg_args = self.msg.write.call_args[0]
self.assertEqual(msg_args[0], self.nsr_topic.topic_msg, "Wrong message topic")
self.assertEqual(msg_args[1], "deleted", "Wrong message action")
self.assertEqual(msg_args[2], {"_id": self.nsr_id}, "Wrong message content")
+ self.assertEqual(db_args_ro_nsrs[0], "ro_nsrs", "Wrong DB topic")
self.assertEqual(db_args[0], self.nsr_topic.topic, "Wrong DB topic")
self.assertEqual(db_args[1]["_id"], self.nsr_id, "Wrong DB ID")
self.assertEqual(db_args[1]["_admin.projects_read.cont"], [p_id], "Wrong DB filter")
self.fs.file_delete.reset_mock()
self.nsr_topic.delete(session_force, self.nsr_id)
- db_args = self.db.del_one.call_args[0]
+ db_args_ro_nsrs = self.db.del_one.call_args_list[1][0]
+ db_args = self.db.del_one.call_args_list[0][0]
msg_args = self.msg.write.call_args[0]
self.assertEqual(msg_args[0], self.nsr_topic.topic_msg, "Wrong message topic")
self.assertEqual(msg_args[1], "deleted", "Wrong message action")
self.assertEqual(msg_args[2], {"_id": self.nsr_id}, "Wrong message content")
+ self.assertEqual(db_args_ro_nsrs[0], "ro_nsrs", "Wrong DB topic")
self.assertEqual(db_args[0], self.nsr_topic.topic, "Wrong DB topic")
self.assertEqual(db_args[1]["_id"], self.nsr_id, "Wrong DB ID")
self.db.set_one.assert_not_called()