- for vdu_level in instantiation_level.get('vdu-level', ()):
- if vdu_level.get('vdu-id') == vdu_id:
- min_instance_count = int(vdu_level['number-of-instances'])
- if nb_scale_op > min_instance_count:
- alarm_uuid = await self.mon_client.create_alarm(
- metric_name=metric_name,
- ns_id=nsr_id,
- vdu_name=vdur['name'],
- vnf_member_index=vnfr['member-vnf-index-ref'],
- threshold=scaling_criteria['scale-in-threshold'],
- operation=scaling_criteria['scale-in-relational-operation']
+ min_instance_count = 1
+ for vdu_profile in df.get("vdu-profile", ()):
+ if vdu_profile.get("id") == vdu_id:
+ min_instance_count = int(
+ vdu_profile.get(
+ "min-number-of-instances ", 1
+ )
+ )
+ break
+ if nb_scale_op >= min_instance_count:
+ alarm_uuid = (
+ await self.mon_client.create_alarm(
+ metric_name=metric_name,
+ ns_id=nsr_id,
+ vdu_name=vdur["name"],
+ vnf_member_index=vnfr[
+ "member-vnf-index-ref"
+ ],
+ threshold=scaling_criteria[
+ "scale-in-threshold"
+ ],
+ operation=scaling_criteria[
+ "scale-in-relational-operation"
+ ],
+ action="scale_in",
+ )