def task_clear(args): """Clears all task instances or only those matched by regex for a DAG(s)""" logging.basicConfig( level=settings.LOGGING_LEVEL, format=settings.SIMPLE_LOG_FORMAT) if args.dag_id and not args.subdir and not args.dag_regex and not args.task_regex: dags = get_dag_by_file_location(args.dag_id) else: # todo clear command only accepts a single dag_id. no reason for get_dags with 's' except regex? dags = get_dags(args.subdir, args.dag_id, use_regex=args.dag_regex) if args.task_regex: for idx, dag in enumerate(dags): dags[idx] = dag.sub_dag( task_regex=args.task_regex, include_downstream=args.downstream, include_upstream=args.upstream) DAG.clear_dags( dags, start_date=args.start_date, end_date=args.end_date, only_failed=args.only_failed, only_running=args.only_running, confirm_prompt=not args.yes, include_subdags=not args.exclude_subdags, include_parentdag=not args.exclude_parentdag, )
def dag_state(args): """ Returns the state of a DagRun at the command line. >>> airflow dags state tutorial 2015-01-01T00:00:00.000000 running """ if args.subdir: dag = get_dag(args.subdir, args.dag_id) else: dag = get_dag_by_file_location(args.dag_id) dr = DagRun.find(dag.dag_id, execution_date=args.execution_date) print(dr[0].state if len(dr) > 0 else None) # pylint: disable=len-as-condition
def dag_state(args): """ Returns the state (and conf if exists) of a DagRun at the command line. >>> airflow dags state tutorial 2015-01-01T00:00:00.000000 running >>> airflow dags state a_dag_with_conf_passed 2015-01-01T00:00:00.000000 failed, {"name": "bob", "age": "42"} """ if args.subdir: dag = get_dag(args.subdir, args.dag_id) else: dag = get_dag_by_file_location(args.dag_id) dr = DagRun.find(dag.dag_id, execution_date=args.execution_date) out = dr[0].state if dr else None confout = '' if out and dr[0].conf: confout = ', ' + json.dumps(dr[0].conf) print(str(out) + confout)