item, data = self.yaml_validation(descriptor)
self.pyangbind_validation(item, data)
+ def validate_instantiation_level_descriptor(self, indata):
+ all_vdu_ids = set()
+ for vdu in indata.get("vdu", ()):
+ all_vdu_ids.add(vdu.get("id"))
+
+ for df in indata.get("df", ()):
+ for il in df.get("instantiation-level", ()):
+ for vl in il.get("vdu-level", ()):
+ vl_vdu_id = vl.get("vdu-id")
+ if vl_vdu_id and vl_vdu_id not in all_vdu_ids:
+ raise ValidationException(
+ "df[id='{}']:instantiation-level[id='{}']:vdu-level"
+ "vdu-id='{}' not defined in vdu".format(
+ df["id"],
+ il["id"],
+ vl_vdu_id,
+ )
+ )
+
+ def validate_vdu_profile_in_descriptor(self, indata):
+ all_vdu_ids = set()
+ for df in indata.get("df", ()):
+ if "vdu-profile" in df:
+ if not df.get("vdu-profile"):
+ if indata.get("vdu"):
+ raise ValidationException(
+ "no profiles are defined under vdu-profile section"
+ )
+ for vp in df["vdu-profile"]:
+ missing = None
+ if not vp.get("id"):
+ missing = "id"
+ if df.get("scaling-aspect"):
+ if not vp.get("min-number-of-instances"):
+ missing = "min-number-of-instances"
+ if "min-number-of-instances" in vp:
+ if not vp.get("min-number-of-instances"):
+ missing = "min-number-of-instances"
+ if "max-number-of-instances" in vp:
+ if not vp.get("max-number-of-instances"):
+ missing = "max-number-of-instances"
+ if missing:
+ raise ValidationException(
+ "{} key-value pair is missing in vdu-profile".format(
+ missing
+ )
+ )
+
+ for df in indata.get("df", ()):
+ for il in df.get("instantiation-level", ()):
+ for vl in il.get("vdu-level", ()):
+ all_vdu_ids.add(vl.get("vdu-id"))
+
+ for df in indata.get("df", ()):
+ for vp in df.get("vdu-profile", ()):
+ vp_vdu_id = vp.get("id")
+ if vp_vdu_id and vp_vdu_id not in all_vdu_ids:
+ raise ValidationException(
+ "df[id='{}']:vdu-profile:vdu-id='{}' not defined in vdu".format(
+ df["id"],
+ vp_vdu_id,
+ )
+ )