in footmark/ecs/connection.py [0:0]
def reboot_instances(self, **kwargs):
"""
Reboot the specified instances.
:type instance_ids: list
:param instance_ids: The instances to terminate and reboot
:type force: bool
:param force: Forces the instance to stop
"""
instance_ids = kwargs["instance_ids"]
kwargs = self.format_request_kwargs(**kwargs)
if instance_ids:
if isinstance(instance_ids, six.string_types):
instance_ids = [instance_ids]
for instance_id in instance_ids:
kwargs["instance_id"]= instance_id
try:
self.get_status_new(self.build_request_params(kwargs))
except ServerException as e:
if e.error_code == "IncorrectInstanceStatus":
target = self.describe_instances(instance_ids=[instance_id])
if target and str(target[0].status).lower() == "stopped":
self.start_instances(instance_ids=[instance_id])
raise e
while instance_ids:
for inst in self.describe_instances(instance_ids=instance_ids, page_size=100):
status = str(inst.status).lower()
if status == "running":
instance_ids.remove(inst.id)
if status == "stopped":
self.start_instances(instance_ids=[inst.id])
return True
return False