in source/lambda/shared/elb_load_monitor/elb_listener_rule.py [0:0]
def restore(self, source_group_arn: str, weight: int) -> None:
if source_group_arn not in self.forward_configs:
logger.debug('No target group ' + source_group_arn + ' found for rule ' + self.elb_rule_arn +
' nothing to restore')
return
remaining_weight = weight
for key in self.forward_configs.keys():
if key == source_group_arn:
continue
weight_to_shed = remaining_weight
current_weight = self.forward_configs.get(key)
# restore maximum weight possible from each target.
if (current_weight < remaining_weight):
weight_to_shed = current_weight
self.forward_configs[key] = current_weight - weight_to_shed
logger.debug('Restoring ' + str(weight_to_shed) +
' percent from ' + key + ' to ' + source_group_arn)
remaining_weight -= weight_to_shed
self.forward_configs[source_group_arn] = self.forward_configs.get(
source_group_arn) + weight - remaining_weight
logger.debug(
'Restored ' + str(self.forward_configs[source_group_arn]) + ' to ' + source_group_arn)
return