Feature 10916 Remove VNF Instance from NS - NS Update
[osm/POL.git] / osm_policy_module / autoscaling / service.py
index a8c36e0..41731b4 100644 (file)
@@ -26,6 +26,8 @@ import asyncio
 import datetime
 import json
 import logging
+import operator
+import functools
 
 from osm_policy_module.common.common_db_client import CommonDbClient
 from osm_policy_module.common.lcm_client import LcmClient
@@ -245,15 +247,19 @@ class AutoscalingService:
         finally:
             database.db.close()
 
-    async def delete_scaling_groups(self, nsr_id: str):
+    async def delete_scaling_groups(self, nsr_id: str, vnf_member_index=None):
         log.debug("Deleting scaling groups for network service %s", nsr_id)
         database.db.connect()
         try:
             with database.db.atomic() as tx:
                 try:
-                    for scaling_group in ScalingGroupRepository.list(
-                        ScalingGroup.nsr_id == nsr_id
-                    ):
+                    if vnf_member_index is None:
+                        scale_conditions = ScalingGroup.nsr_id == nsr_id
+                    else:
+                        query_list = [ScalingGroup.nsr_id == nsr_id,
+                                      ScalingGroup.vnf_member_index == vnf_member_index]
+                        scale_conditions = functools.reduce(operator.and_, query_list)
+                    for scaling_group in ScalingGroupRepository.list(scale_conditions):
                         for scaling_policy in scaling_group.scaling_policies:
                             for scaling_criteria in scaling_policy.scaling_criterias:
                                 for alarm in scaling_criteria.scaling_alarms: