From 53f14f77bf33b939a5c38d4af853f5a7f71e297a Mon Sep 17 00:00:00 2001 From: diodonfrost <diodon.frost@diodonfrost.me> Date: Mon, 24 Feb 2020 22:05:35 +0100 Subject: [PATCH] waiting for instances in running state before resuming autoscaling group --- package/scheduler/autoscaling_handler.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/package/scheduler/autoscaling_handler.py b/package/scheduler/autoscaling_handler.py index 6a781a88..43250503 100644 --- a/package/scheduler/autoscaling_handler.py +++ b/package/scheduler/autoscaling_handler.py @@ -65,6 +65,7 @@ def start(self, tag_key: str, tag_value: str) -> None: """ asg_list = self.list_groups(tag_key, tag_value) instance_list = self.list_instances(asg_list) + instance_running_ids = [] # Start autoscaling instance for ec2_instance in instance_list: @@ -73,6 +74,17 @@ def start(self, tag_key: str, tag_value: str) -> None: print("Start autoscaling instances {0}".format(ec2_instance)) except ClientError as exc: ec2_exception("instance", ec2_instance, exc) + else: + instance_running_ids.append(ec2_instance) + + try: + instance_waiter = self.ec2.get_waiter("instance_running") + instance_waiter.wait( + InstanceIds=instance_running_ids, + WaiterConfig={"Delay": 15, "MaxAttempts": 15}, + ) + except ClientError as exc: + ec2_exception("waiter", instance_waiter, exc) for asg_name in asg_list: try: