for df in indata["df"]:
if "lcm-operations-configuration" in df and "operate-vnf-op-config" in df["lcm-operations-configuration"]:
configs = df["lcm-operations-configuration"]["operate-vnf-op-config"].get("day1-2", [])
- for config in configs:
- if config.get("juju"):
- if not self._validate_package_folders(storage_params, 'charms'):
- raise EngineException("Charm defined in vnf[id={}] but not present in "
- "package".format(indata["id"]))
+ vdus = df["vdu-profile"]
+ for vdu in vdus:
+ for config in configs:
+ if config["id"] == vdu["id"] and utils.find_in_list(
+ config.get("execution-environment-list", []),
+ lambda ee: "juju" in ee
+ ):
+ if not self._validate_package_folders(storage_params, 'charms'):
+ raise EngineException("Charm defined in vnf[id={}] but not present in "
+ "package".format(indata["id"]))
def _validate_vdu_cloud_init_in_package(self, storage_params, vdu, indata):
if not vdu.get("cloud-init-file"):
return
for day_1_2_config in deployment_flavor["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"]:
if day_1_2_config["id"] == indata["id"]:
- vnf_configuration = day_1_2_config
- if vnf_configuration.get("juju"):
+ if utils.find_in_list(
+ day_1_2_config.get("execution-environment-list", []),
+ lambda ee: "juju" in ee
+ ):
if not self._validate_package_folders(storage_params, 'charms'):
raise EngineException("Charm defined in vnf[id={}] but not present in "
"package".format(indata["id"]))
self.assertEqual(db_args[1]["_admin"]["projects_read"], [test_pid], "Wrong read-only project list")
self.assertEqual(db_args[1]["_admin"]["projects_write"], [test_pid], "Wrong read-write project list")
tmp1 = test_vnfd["vdu"][0]["cloud-init-file"]
- tmp2 = test_vnfd["df"][0]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"][0]["juju"]
+ tmp2 = test_vnfd["df"][
+ 0
+ ]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"][
+ 0
+ ]["execution-environment-list"][
+ 0
+ ]["juju"]
del test_vnfd["vdu"][0]["cloud-init-file"]
- del test_vnfd["df"][0]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"][0]["juju"]
+ del test_vnfd["df"][
+ 0
+ ]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"][
+ 0
+ ]["execution-environment-list"][
+ 0
+ ]["juju"]
try:
self.db.get_one.side_effect = [{"_id": did, "_admin": deepcopy(db_vnfd_content["_admin"])}, None]
self.topic.upload_content(fake_session, did, test_vnfd, {}, {"Content-Type": []})
compare_desc(self, test_vnfd, db_args[2], "VNFD")
finally:
test_vnfd["vdu"][0]["cloud-init-file"] = tmp1
- test_vnfd["df"][0]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"][0]["juju"] = tmp2
+ test_vnfd["df"][
+ 0
+ ]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"][
+ 0
+ ]["execution-environment-list"][
+ 0
+ ]["juju"] = tmp2
self.db.get_one.side_effect = lambda table, filter, fail_on_empty=None, fail_on_more=None: \
{"_id": did, "_admin": deepcopy(db_vnfd_content["_admin"])}
with self.subTest(i=2, t='Check Pyangbind Validation: additional properties'):
del test_vnfd["vdu"][0]["cloud-init-file"]
with self.assertRaises(EngineException, msg="Accepted non-existent charm in VNF configuration") as e:
self.topic.upload_content(fake_session, did, test_vnfd, {}, {"Content-Type": []})
+ print(str(e.exception))
self.assertEqual(e.exception.http_code, HTTPStatus.BAD_REQUEST, "Wrong HTTP status code")
self.assertIn(norm("{} defined in vnf[id={}] but not present in package".format("charm", test_vnfd["id"])),
norm(str(e.exception)), "Wrong exception text")
- del test_vnfd["df"][0]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"][0]["juju"]
+ del test_vnfd["df"][
+ 0
+ ]["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"][
+ 0
+ ]["execution-environment-list"][
+ 0
+ ]["juju"]
with self.subTest(i=6, t='Check Input Validation: mgmt-cp'):
tmp = test_vnfd["mgmt-cp"]
del test_vnfd["mgmt-cp"]