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
self.mon_client = MonClient(config, loop=self.loop)
self.lcm_client = LcmClient(config, loop=self.loop)
- async def configure_scaling_groups(self, nsr_id: str):
+ async def configure_scaling_groups(self, nsr_id: str, vnf_member_index=None):
"""
Configures scaling groups for a network service. Creates records in DB. Creates alarms in MON.
:param nsr_id: Network service record id
try:
with database.db.atomic() as tx:
try:
- vnfrs = self.db_client.get_vnfrs(nsr_id)
+ if vnf_member_index is None:
+ vnfrs = self.db_client.get_vnfrs(nsr_id)
+ else:
+ vnfrs = []
+ vnfr = self.db_client.get_vnfr(nsr_id, vnf_member_index)
+ vnfrs.append(vnfr)
+ # vnfrs = self.db_client.get_vnfrs(nsr_id)
for vnfr in vnfrs:
log.debug("Processing vnfr: %s", vnfr)
vnfd = self.db_client.get_vnfd(vnfr["vnfd-id"])
operation=scaling_criteria[
"scale-in-relational-operation"
],
- action="scale_in"
+ action="scale_in",
)
)
alarm = ScalingAlarmRepository.create(
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: