def _update_parent_instance(cls, instance): subtasks = instance.subtasks if len(subtasks): data = dict() if all( map(lambda s: s.status == consts.TASK_STATUSES.ready, subtasks)): data['status'] = consts.TASK_STATUSES.ready data['progress'] = 100 data['message'] = u'\n'.join( map(lambda s: s.message, filter(lambda s: s.message is not None, subtasks))) cls.update(instance, data) TaskHelper.update_action_log(instance) elif any( map(lambda s: s.status == consts.TASK_STATUSES.error, subtasks)): for subtask in subtasks: if subtask.status not in (consts.TASK_STATUSES.error, consts.TASK_STATUSES.ready): subtask.status = consts.TASK_STATUSES.error subtask.progress = 100 subtask.message = "Task aborted" data['status'] = consts.TASK_STATUSES.error data['progress'] = 100 data['message'] = u'\n'.join(list(set(map( lambda s: (s.message or ""), filter( lambda s: ( s.status == consts.TASK_STATUSES.error and not # TODO(aroma): make this check less ugly s.message == "Task aborted" ), subtasks))))) cls.update(instance, data) TaskHelper.update_action_log(instance) elif instance.status == consts.TASK_STATUSES.pending and any( map( lambda s: s.status in (consts.TASK_STATUSES.running, consts.TASK_STATUSES. ready), subtasks)): instance.status = consts.TASK_STATUSES.running else: subtasks_with_progress = filter( lambda s: s.progress is not None, subtasks) if subtasks_with_progress: instance.progress = \ TaskHelper.calculate_parent_task_progress( subtasks_with_progress ) else: instance.progress = 0
def _update_parent_instance(cls, instance): subtasks = instance.subtasks if len(subtasks): data = dict() if all(map(lambda s: s.status == consts.TASK_STATUSES.ready, subtasks)): data['status'] = consts.TASK_STATUSES.ready data['progress'] = 100 data['message'] = u'\n'.join(map( lambda s: s.message, filter( lambda s: s.message is not None, subtasks))) cls.update(instance, data) TaskHelper.update_action_log(instance) elif any(map(lambda s: s.status == consts.TASK_STATUSES.error, subtasks)): for subtask in subtasks: if subtask.status not in (consts.TASK_STATUSES.error, consts.TASK_STATUSES.ready): subtask.status = consts.TASK_STATUSES.error subtask.progress = 100 subtask.message = "Task aborted" data['status'] = consts.TASK_STATUSES.error data['progress'] = 100 data['message'] = u'\n'.join(list(set(map( lambda s: (s.message or ""), filter( lambda s: ( s.status == consts.TASK_STATUSES.error and not # TODO(aroma): make this check less ugly s.message == "Task aborted" ), subtasks))))) cls.update(instance, data) TaskHelper.update_action_log(instance) elif instance.status == consts.TASK_STATUSES.pending and any( map(lambda s: s.status in (consts.TASK_STATUSES.running, consts.TASK_STATUSES.ready), subtasks)): instance.status = consts.TASK_STATUSES.running else: subtasks_with_progress = filter( lambda s: s.progress is not None, subtasks ) if subtasks_with_progress: instance.progress = \ TaskHelper.calculate_parent_task_progress( subtasks_with_progress ) else: instance.progress = 0
def _update_parent_instance(cls, instance): subtasks = instance.subtasks if len(subtasks): data = dict() if all(map(lambda s: s.status == "ready", subtasks)): data["status"] = "ready" data["progress"] = 100 data["message"] = u"\n".join( map(lambda s: s.message, filter(lambda s: s.message is not None, subtasks)) ) cls.update(instance, data) elif any(map(lambda s: s.status in ("error",), subtasks)): for subtask in subtasks: if not subtask.status in ("error", "ready"): subtask.status = "error" subtask.progress = 100 subtask.message = "Task aborted" data["status"] = "error" data["progress"] = 100 data["message"] = u"\n".join( list( set( map( lambda s: (s.message or ""), filter( lambda s: ( s.status == "error" and not # TODO: make this check less ugly s.message == "Task aborted" ), subtasks, ), ) ) ) ) cls.update(instance, data) else: subtasks_with_progress = filter(lambda s: s.progress is not None, subtasks) if subtasks_with_progress: instance.progress = TaskHelper.calculate_parent_task_progress(subtasks_with_progress) else: instance.progress = 0
def _update_parent_instance(cls, instance): subtasks = instance.subtasks if len(subtasks): data = dict() if all(map(lambda s: s.status == 'ready', subtasks)): data['status'] = 'ready' data['progress'] = 100 data['message'] = u'\n'.join(map( lambda s: s.message, filter( lambda s: s.message is not None, subtasks))) cls.update(instance, data) TaskHelper.update_action_log(instance) elif any(map(lambda s: s.status in ('error',), subtasks)): for subtask in subtasks: if not subtask.status in ('error', 'ready'): subtask.status = 'error' subtask.progress = 100 subtask.message = 'Task aborted' data['status'] = 'error' data['progress'] = 100 data['message'] = u'\n'.join(list(set(map( lambda s: (s.message or ""), filter( lambda s: ( s.status == 'error' and not # TODO: make this check less ugly s.message == 'Task aborted' ), subtasks))))) cls.update(instance, data) TaskHelper.update_action_log(instance) else: subtasks_with_progress = filter( lambda s: s.progress is not None, subtasks ) if subtasks_with_progress: instance.progress = \ TaskHelper.calculate_parent_task_progress( subtasks_with_progress ) else: instance.progress = 0
def _update_parent_instance(cls, instance): subtasks = instance.subtasks if len(subtasks): data = dict() if all(map(lambda s: s.status == 'ready', subtasks)): sort_subtasks = sorted(subtasks, key=lambda s: s.timestamp, reverse=False) data['status'] = 'ready' data['progress'] = 100 data['message'] = u'\n'.join( map(lambda s: s.message, filter(lambda s: s.message is not None, sort_subtasks))) cls.update(instance, data) TaskHelper.update_action_log(instance) elif any(map(lambda s: s.status in ('error', ), subtasks)): for subtask in subtasks: if not subtask.status in ('error', 'ready'): subtask.status = 'error' subtask.progress = 100 subtask.message = 'Task aborted' data['status'] = 'error' data['progress'] = 100 data['message'] = u'\n'.join(list(set(map( lambda s: (s.message or ""), filter( lambda s: ( s.status == 'error' and not # TODO: make this check less ugly s.message == 'Task aborted' ), subtasks))))) cls.update(instance, data) TaskHelper.update_action_log(instance) else: subtasks_with_progress = filter( lambda s: s.progress is not None, subtasks) if subtasks_with_progress: instance.progress = \ TaskHelper.calculate_parent_task_progress( subtasks_with_progress ) else: instance.progress = 0