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: