def restore()

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