def reboot_instances()

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