This is an automated email from the ASF dual-hosted git repository. jhtimmins pushed a change to branch v2-1-stable in repository https://gitbox.apache.org/repos/asf/airflow.git.
from d25854d Update changelog with Python 3.9 support. (#16918) new 6720544 Fix permissions for CodeQL workflows (#16660) new 71fec5d Remove upstart from docs (#16672) new 2b393ee Add preparation of images as part of RC preparation process (#16674) new d95a6bd Add --executor option to breeze kind-cluster deploy command (#15661) new 90b2ac6 Use different executors for Helm Chart tests in CI (#15791) new 172599e Change default airflow version in Dockerfile (#16714) new 9d528d4 Adding missing word to welcome message (#16726) new 4e174b3 Fix timing out tests for public GitHub Runners. (#16750) new 24fd4d7 Breeze should work with new docker-compose fallback (#16743) new 02c92c8 Switches to ghcr.io container registry (#16775) new 8fd4cf4 Removes coverage from kubernetes tests (#16794) new 236bb43 Remove legacy GitHub Packages (#16776) new 07e3789 Fix Airflow releasing guide (#16924) new ac98256 Avoid verification of images multiple times (#16928) new 324c342 Remove cache for kubernetes tests (#16927) new 8691ca0 Switch Breeze/CI to ghcr.io excusively (#16780) new 7fc74c1 Pulls latest images to build images in "Build Image" flow (#16948) new 85b3057 Fixed parsing issue of _docker.env file for docker-compose v2 (#16950) new 373007b Fixes passing variables via docker --env-file command (#16959) new 6263871 Fixes typo in the name of file for Breeze docker compose env (#16971) new b0a006c Move CI-integration images to ghcr.io (#16797) new 5f3b53f Errors out instead of trying to workaround buggy docker-compose v2 (#16989) new b954390 Fix release guide when copying artifacts (#17001) new e6ac8e9 Drop support for Airflow 1.10 in entrypoint_prod.sh and improve MSSQL compatibility (#17011) new d1cb4e4 Fix bug and small improvements in scripts/tools/list-integrations.py (#17004) new 6e8c5f6 Dev: Bump stale action to v4 (#17025) new 33b7bda Fixes "development" and "rc" cross dependencies between providers (#17023) new 2f20298 Updated clean-logs.sh (#16978) new 7829e33 Fixes detection of version 2 of docker-compose (#17062) new 3e2da93 Add SSH_PORT variable new b043f4b Converts the specification of branch for pushes to be flexible (#17065) new 16d1ff0 Support secret backends/airflow.cfg for celery broker in entrypoint_prod.sh (#17069) new 219e9b2 Fixes UI assets compilation from PROD image built from sources (#17086) new 0509113 Avoid logging in to GitHub Container Registry when not in CI (#17169) new f99a023 Do not fail-fast kubernetes tests (#17228) new 1491db2 Remove support for Airflow 1.10 cmds in entrypoint_prod.sh (#17248) new 28562ef Stop attempting to pull base python image when pulling commit hash (#17231) new f05a9e5 Do not use constraints when preparing venv for k8s tests on CI (#17290) new a3e9e2c Uses current sources when running k8s tests (#17289) new 3f584b2 Fix breeze kind-cluster deploy failing with ECONREFUSED (#17293) new c828c0c Fix typo in build_images (#17327) new 3f30eed Added print statements for clarity in provider yaml checks (#17322) new ac483d1 Adds compile_assets to INSTALL (#17377) new e183834 Moves SchedulerJob initialization to within daemon context (#17157) new 769779b Update best-practices.rst (#17357) new 32937fa Fix link (#17351) new 5a3a874 docs: fix inconsistencies in configuration docs (#17317) new 1419b22 Grammar and clarity pass on documentation (#17318) new 249721c Fix docs link for using SQLite as Metadata DB (#17308) new 9ccac6c More optimized lazy-loading of provider information (#17304) new b2f607c Doc: Strip unnecessary arguments from MariaDB JIRA URL (#17296) new a31e02c Fix typo in webserver.rst (#17288) new 549862e Switch back http provider after requests removes LGPL dependency (#16974) new a5dbded Remove SQLAlchemy <1.4 constraint (#16630) new 8da2998 Bump Jinja2 upper-bound from 2.12.0 to 4.0.0 (#16595) new 35109a1 Add type annotations to setup.py (#16658) new 77ce1c5 bump dnspython (#16698) new b766304 AIRFLOW-5529 Add Apache Drill provider. (#16884) new fc7042f Update alias for field_mask in Google Memmcache (#16975) new f729323 Updates to FlaskAppBuilder 3.3.2+ (#17208) new 6fad2cb Enhancement to bash scripts (#17098) new ae90a47 Do not pull CI image for ownership fixing on first, fresh breeze run (#17419) new 1d29e59 Increases timeout for helm chart builds (#17417) new db55756 Improve image building documentation for new users (#17409) new 78527e3 Optimizes structure of the Dockerfiles and use latest tools (#17418) new 7cf2a73 Add timeout when asking whether to rebuild image (#17412) new 70dc0e8 Improve diagnostics message when users have secret_key misconfigured (#17410) new 59798b7 Fix failing static checks in main (#17424) new 3facce1 Switches to "/" convention in ghcr.io images (#17356) new 9df9e10 Fixes some static check errors (#17432) new 37e4167 Disable Helm tests when branch is not main new 105a4a2 Attempt to reduce flakiness of PythonVirtualeEnv test_airflow_context (#17486) new ee26374 Install providers from sources in prod image only on main (#17458) new 785a9c1 Better diagnostics and self-healing of docker-compose (#17484) new 3c19796 Add back missing permissions to UserModelView controls. (#17431) new c99d5b9 Path correction in docs for airflow core (#17567) new c831429 fix: instance name env var (#16749) new 54b0ca3 Fix minor typo in configuration.py (#16832) new c4fbb43 fix(smart_sensor): Unbound variable errors (#14774) new 23ec589 Add State types for tasks and DAGs (#15285) new f5391a8 commiting dagPickle session when the airflow tasks run --ship-dag --interactive command is executed FIXES: 15748 (#15890) new ed6e0be Fail tasks in scheduler when executor reports they failed (#15929) new 2507b42 fix: change graph focus to top of view instead of center (#16484) new 79f78ad Redact conn secrets in webserver logs (#16579) new 42c5101 Fix ``AttributeError``: ``datetime.timezone`` object has no attribute ``name`` (#16599) new 1123d79 Set Process title for Worker when using ``LocalExecutor`` (#16623) new 11e33d1 Fix calculating duration in tree view (#16695) new 4d43618 Fix slow (cleared) tasks being be adopted by Celery worker. (#16718) new 10eacdc BugFix: Correctly handle custom `deps` and `task_group` during DAG Serialization (#16734) new ba75eb0 Fix unchecked indexing in _build_metrics (#16744) new 2b7c7cd Validate type of `priority_weight` during parsing (#16765) new e5ecace Don't check execution_date in refresh_from_db (#16809) new e87c538 Fixed task instance retrieval in XCom view (#16923) new ee6a287 Fix UPDATING.md (#16933) new 499aece Core: Enable the use of __init_subclass__ in subclasses of BaseOperator (#17027) new 78545e6 #16976 Add json.dumps() for templated fields objects: 'dict' and 'list' (#17082) new 32ee940 Adds more explanatory message when SecretsMasker is not configured (#17101) new fbbeba2 Switch test_backfill_job.py from unittest to pytest style (#17112) new 08f4f81 Fix: ``TaskInstance`` does not show ``queued_by_job_id`` & ``external_executor_id`` (#17179) new ee677e7 Do not seek error file when it is closed (#17187) new b0331ea Show serialization exceptions in DAG parsing log (#17277) new 1a0515f Fix CLI 'kubernetes cleanup-pods' which fails on invalid label key (#17298) new 87c999a Handle and log exceptions raised during task callback (#17347) new d07cd5d Optimize context sent for docker build (#17415) new bcec1df Add missing permissions to varimport (#17468) new ec41c72 Fixed broken json_client (#17529) new 050ae8f Rescue if a DagRun's DAG was removed from db (#17544) new 2a2853d Fix running tasks with default_impersonation config (#17229) new 6874020 Proper warning message when recorded PID is different from current PID (#17411) new 0300a54 Fix external elasticsearch logs link (#16357) new 1a422be Run mini scheduler in LocalTaskJob during task exit (#16289) new f951e3a Move DagFileProcessor and DagFileProcessorProcess out of scheduler_job.py (#16581) new 9119b98 Add 'queued' state to DagRun (#16401) new f8c82f5 Add 'queued' to DagRunState (#16854) new e00eadd Fix race condition with dagrun callbacks (#16741) new 6c59c29 Add Pytest fixture to create dag and dagrun and use it on local task job tests (#16889) new 2dbd99c Fix task retries when they receive sigkill and have retries and properly handle sigterm (#16301) new db7ecd0 Bump version to 2.1.3 new 31c0457 Update documentation regarding Python 3.9 support (#17611) new e93d273 Fix redacting secrets in context exceptions. (#17618) new 3ba97e4 Use dag_maker fixture in test_backfill_job.py (#17118) new a647963 Improve `dag_maker` fixture (#17324) new f922a11 Improve validation of Group id (#17578) new 612a067 Forces rebuilding the image for cache pushing new 130e2f4 Add Changelog updates for 2.1.3 The 125 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .dockerignore | 4 +- .github/boring-cyborg.yml | 2 +- .github/workflows/build-images.yml | 38 +- .github/workflows/ci.yml | 378 ++++---- .github/workflows/codeql-analysis.yml | 6 +- .github/workflows/stale.yml | 2 +- BREEZE.rst | 220 ++--- CHANGELOG.txt | 62 +- CI.rst | 387 +++----- CONTRIBUTING.rst | 30 +- CONTRIBUTORS_QUICK_START.rst | 2 - Dockerfile | 40 +- Dockerfile.ci | 52 +- IMAGES.rst | 246 +---- INSTALL | 29 +- MANIFEST.in | 1 - README.md | 162 ++-- TESTING.rst | 4 - UPDATING.md | 4 +- airflow/__init__.py | 6 +- airflow/api/client/json_client.py | 2 +- airflow/api_connexion/openapi/v1.yaml | 4 +- airflow/cli/commands/kubernetes_command.py | 12 +- airflow/cli/commands/scheduler_command.py | 16 +- airflow/cli/commands/task_command.py | 6 +- airflow/config_templates/config.yml | 14 +- airflow/config_templates/default_airflow.cfg | 14 +- airflow/configuration.py | 4 +- .../hooks => airflow/dag_processing}/__init__.py | 0 .../manager.py} | 0 airflow/dag_processing/processor.py | 650 ++++++++++++++ airflow/executors/local_executor.py | 4 + airflow/hooks/base.py | 5 +- airflow/jobs/local_task_job.py | 100 ++- airflow/jobs/scheduler_job.py | 818 ++--------------- ...3827b8_add_queued_at_column_to_dagrun_table.py} | 25 +- airflow/models/baseoperator.py | 11 +- airflow/models/dag.py | 14 +- airflow/models/dagbag.py | 1 + airflow/models/dagrun.py | 64 +- airflow/models/taskinstance.py | 89 +- .../{asana => apache/drill}/CHANGELOG.rst | 1 + .../providers/apache/drill}/__init__.py | 0 .../example_dags/example_drill_dag.py} | 34 +- .../providers/apache/drill/hooks}/__init__.py | 0 airflow/providers/apache/drill/hooks/drill.py | 89 ++ .../providers/apache/drill/operators}/__init__.py | 0 .../jdbc.py => apache/drill/operators/drill.py} | 47 +- .../apache/{sqoop => drill}/provider.yaml | 26 +- .../providers/elasticsearch/log/es_task_handler.py | 9 +- .../google/cloud/hooks/cloud_memorystore.py | 16 +- airflow/providers_manager.py | 62 +- airflow/sensors/smart_sensor.py | 1 + airflow/serialization/serialized_objects.py | 16 +- airflow/typing_compat.py | 2 +- airflow/ui/src/views/Docs.tsx | 1 + airflow/utils/cli.py | 3 +- airflow/utils/db.py | 10 + airflow/utils/helpers.py | 22 +- airflow/utils/log/file_task_handler.py | 10 + airflow/utils/log/log_reader.py | 7 +- airflow/utils/log/logging_mixin.py | 5 + airflow/utils/log/secrets_masker.py | 17 +- airflow/utils/state.py | 169 ++-- airflow/utils/task_group.py | 14 +- airflow/www/static/js/graph.js | 4 +- airflow/www/static/js/tree.js | 10 +- airflow/www/views.py | 163 ++-- breeze | 277 ++---- breeze-complete | 24 +- confirm | 6 +- dev/README_RELEASE_AIRFLOW.md | 33 +- dev/README_RELEASE_AIRFLOW_UPGRADE_CHECK.md | 5 +- dev/provider_packages/prepare_provider_packages.py | 21 +- dev/retag_docker_images.py | 72 +- .../commits.rst} | 12 +- .../connections/drill.rst} | 35 +- .../index.rst | 41 +- .../operators.rst} | 38 +- docs/apache-airflow-providers/index.rst | 5 + docs/apache-airflow/best-practices.rst | 4 +- docs/apache-airflow/concepts/scheduler.rst | 9 +- docs/apache-airflow/extra-packages-ref.rst | 4 +- .../howto/customize-dag-ui-page-instance-name.rst | 2 +- docs/apache-airflow/howto/index.rst | 1 - docs/apache-airflow/howto/run-with-upstart.rst | 44 - docs/apache-airflow/index.rst | 2 +- docs/apache-airflow/installation.rst | 7 +- .../logging-monitoring/check-health.rst | 8 +- docs/apache-airflow/logging-monitoring/errors.rst | 4 +- docs/apache-airflow/logging-monitoring/metrics.rst | 6 +- docs/apache-airflow/migrations-ref.rst | 4 +- docs/apache-airflow/security/webserver.rst | 4 +- docs/apache-airflow/start/docker-compose.yaml | 63 +- docs/apache-airflow/start/docker.rst | 33 +- docs/apache-airflow/start/index.rst | 2 +- docs/apache-airflow/timezone.rst | 20 +- docs/conf.py | 1 + docs/docker-stack/build-arg-ref.rst | 6 - docs/docker-stack/build.rst | 13 + .../extending/add-apt-packages/Dockerfile | 2 +- .../add-build-essential-extend/Dockerfile | 2 +- .../Dockerfile | 4 +- .../extending/add-pypi-packages/Dockerfile | 2 +- .../extending/embedding-dags/Dockerfile | 2 +- .../extending/writable-directory/Dockerfile | 2 +- docs/docker-stack/entrypoint.rst | 35 +- docs/integration-logos/apache/drill.png | Bin 0 -> 40173 bytes docs/spelling_wordlist.txt | 1 + images/CI.png | Bin 243004 -> 0 bytes images/ci/CI.png | Bin 243004 -> 0 bytes images/ci/pull_request_ci_flow.md5 | 2 +- images/ci/pull_request_ci_flow.mermaid | 110 ++- images/ci/pull_request_ci_flow.png | Bin 148327 -> 193138 bytes images/ci/push_ci_flow.md5 | 2 +- images/ci/push_ci_flow.mermaid | 106 ++- images/ci/push_ci_flow.png | Bin 160006 -> 200079 bytes images/ci/scheduled_ci_flow.md5 | 2 +- images/ci/scheduled_ci_flow.mermaid | 115 ++- images/ci/scheduled_ci_flow.png | Bin 197719 -> 171813 bytes kubernetes_tests/test_kubernetes_pod_operator.py | 4 +- .../test_kubernetes_pod_operator_backcompat.py | 5 +- scripts/ci/docker-compose/base.yml | 2 +- scripts/ci/docker-compose/integration-kerberos.yml | 2 +- scripts/ci/docker-compose/integration-openldap.yml | 2 +- scripts/ci/docker-compose/integration-trino.yml | 2 +- scripts/ci/docker-compose/local-prod.yml | 37 - .../ci/dockerfiles/apache-rat/build_and_push.sh | 11 +- scripts/ci/dockerfiles/bats/build_and_push.sh | 11 +- .../dockerfiles/krb5-kdc-server/build_and_push.sh | 11 +- scripts/ci/dockerfiles/stress/build_and_push.sh | 12 +- scripts/ci/dockerfiles/trino/Dockerfile | 2 +- scripts/ci/dockerfiles/trino/build_and_push.sh | 13 +- scripts/ci/images/ci_prepare_ci_image_on_ci.sh | 23 +- scripts/ci/images/ci_prepare_prod_image_on_ci.sh | 32 +- scripts/ci/images/ci_push_ci_images.sh | 2 +- .../ci_push_legacy_ci_images.sh} | 13 +- .../ci_push_legacy_prod_images.sh} | 13 +- scripts/ci/images/ci_push_production_images.sh | 2 +- .../images/ci_wait_for_and_verify_all_ci_images.sh | 2 + .../ci_wait_for_and_verify_all_prod_images.sh | 2 + .../ci/images/ci_wait_for_and_verify_ci_image.sh | 35 +- .../ci/images/ci_wait_for_and_verify_prod_image.sh | 37 +- scripts/ci/kubernetes/ci_run_kubernetes_tests.sh | 23 +- ...tup_cluster_and_deploy_airflow_to_kubernetes.sh | 1 + ..._cluster_and_run_kubernetes_tests_single_job.sh | 1 + ...lusters_and_run_kubernetes_tests_in_parallel.sh | 1 - scripts/ci/libraries/_build_images.sh | 259 +++--- scripts/ci/libraries/_initialization.sh | 68 +- scripts/ci/libraries/_kind.sh | 53 +- scripts/ci/libraries/_parallel.sh | 7 +- scripts/ci/libraries/_push_pull_remove_images.sh | 338 +++---- scripts/ci/libraries/_script_init.sh | 2 +- .../pre_commit_check_provider_yaml_files.py | 14 +- scripts/ci/selective_ci_checks.sh | 10 +- scripts/ci/static_checks/bats_tests.sh | 7 +- scripts/ci/static_checks/check_license.sh | 2 +- .../build_dockerhub.sh} | 22 +- scripts/ci/tools/ci_clear_tmp.sh | 34 - .../{ci_fix_ownership.sh => fix_ownership.sh} | 14 +- .../{ci_free_space_on_ci.sh => free_space.sh} | 0 scripts/ci/tools/prepare_prod_docker_images.sh | 2 +- scripts/docker/compile_www_assets.sh | 9 +- scripts/docker/install_additional_dependencies.sh | 5 +- scripts/docker/install_airflow.sh | 4 +- ...nstall_airflow_dependencies_from_branch_tip.sh} | 11 +- .../docker/install_from_docker_context_files.sh | 2 +- scripts/in_container/airflow_ci.cfg | 1 + scripts/in_container/entrypoint_ci.sh | 2 + .../prod/airflow_scheduler_autorestart.sh | 8 +- scripts/in_container/prod/clean-logs.sh | 8 +- scripts/in_container/prod/entrypoint_prod.sh | 53 +- scripts/in_container/run_clear_tmp.sh | 21 - scripts/in_container/run_tmux_welcome.sh | 2 +- scripts/tools/list-integrations.py | 12 +- scripts/upstart/README | 33 - scripts/upstart/airflow-flower.conf | 34 - scripts/upstart/airflow-scheduler.conf | 38 - scripts/upstart/airflow-webserver.conf | 34 - scripts/upstart/airflow-worker.conf | 34 - setup.cfg | 7 +- setup.py | 74 +- tests/api/common/experimental/test_mark_tasks.py | 4 +- .../endpoints/test_dag_run_endpoint.py | 14 +- tests/api_connexion/schemas/test_dag_run_schema.py | 3 + tests/cli/commands/test_kubernetes_command.py | 8 +- tests/cli/commands/test_task_command.py | 4 +- tests/conftest.py | 57 ++ .../zendesk/hooks => dag_processing}/__init__.py | 0 .../test_manager.py} | 26 +- tests/dag_processing/test_processor.py | 750 ++++++++++++++++ tests/executors/test_celery_executor.py | 2 + tests/jobs/test_backfill_job.py | 356 ++++---- tests/jobs/test_local_task_job.py | 552 ++++++++---- tests/jobs/test_scheduler_job.py | 994 ++++----------------- tests/kubernetes/pod.yaml | 2 +- tests/kubernetes/test_pod_generator.py | 4 +- tests/models/test_baseoperator.py | 31 + tests/models/test_cleartasks.py | 61 ++ tests/models/test_dag.py | 40 + tests/models/test_dagbag.py | 4 +- tests/models/test_dagrun.py | 25 +- tests/models/test_taskinstance.py | 241 ++--- tests/operators/test_python.py | 3 + .../apache/drill}/__init__.py | 0 .../apache/drill/hooks}/__init__.py | 0 tests/providers/apache/drill/hooks/test_drill.py | 84 ++ .../apache/drill/operators}/__init__.py | 0 .../drill/operators/test_drill.py} | 52 +- .../elasticsearch/log/test_es_task_handler.py | 10 + tests/sensors/test_external_task_sensor.py | 8 +- tests/serialization/test_dag_serialization.py | 101 +++ tests/test_utils/perf/perf_kit/python.py | 2 +- tests/test_utils/perf/perf_kit/sqlalchemy.py | 2 +- tests/utils/log/test_log_reader.py | 21 + tests/utils/log/test_secrets_masker.py | 76 ++ tests/utils/test_helpers.py | 76 +- tests/www/views/test_views_blocked.py | 84 ++ tests/www/views/test_views_custom_user_views.py | 199 +++++ tests/www/views/test_views_log.py | 16 +- tests/www/views/test_views_tasks.py | 29 +- tests/www/views/test_views_variable.py | 13 + 222 files changed, 5791 insertions(+), 5147 deletions(-) copy {tests/providers/zendesk/hooks => airflow/dag_processing}/__init__.py (100%) rename airflow/{utils/dag_processing.py => dag_processing/manager.py} (100%) create mode 100644 airflow/dag_processing/processor.py copy airflow/migrations/versions/{4446e08588_dagrun_start_end.py => 97cdd93827b8_add_queued_at_column_to_dagrun_table.py} (60%) copy airflow/providers/{asana => apache/drill}/CHANGELOG.rst (99%) copy {tests/www/api/experimental => airflow/providers/apache/drill}/__init__.py (100%) copy airflow/providers/apache/{pig/example_dags/example_pig.py => drill/example_dags/example_drill_dag.py} (60%) copy {tests/www/api/experimental => airflow/providers/apache/drill/hooks}/__init__.py (100%) create mode 100644 airflow/providers/apache/drill/hooks/drill.py copy {tests/www/api/experimental => airflow/providers/apache/drill/operators}/__init__.py (100%) copy airflow/providers/{jdbc/operators/jdbc.py => apache/drill/operators/drill.py} (57%) copy airflow/providers/apache/{sqoop => drill}/provider.yaml (63%) copy docs/{apache-airflow-providers-amazon/secrets-backends/index.rst => apache-airflow-providers-apache-drill/commits.rst} (84%) copy docs/{apache-airflow-providers-slack/connections/slack.rst => apache-airflow-providers-apache-drill/connections/drill.rst} (54%) copy docs/{apache-airflow-providers-openfaas => apache-airflow-providers-apache-drill}/index.rst (62%) copy docs/{apache-airflow-providers-google/operators/transfer/salesforce_to_gcs.rst => apache-airflow-providers-apache-drill/operators.rst} (53%) delete mode 100644 docs/apache-airflow/howto/run-with-upstart.rst copy docs/docker-stack/docker-examples/extending/{add-pypi-packages => add-providers}/Dockerfile (90%) create mode 100644 docs/integration-logos/apache/drill.png delete mode 100644 images/CI.png delete mode 100644 images/ci/CI.png delete mode 100644 scripts/ci/docker-compose/local-prod.yml copy scripts/ci/{pre_commit/pre_commit_ci_build.sh => images/ci_push_legacy_ci_images.sh} (71%) copy scripts/ci/{pre_commit/pre_commit_ci_build.sh => images/ci_push_legacy_prod_images.sh} (68%) rename scripts/ci/{images/ci_build_dockerhub.sh => tools/build_dockerhub.sh} (76%) delete mode 100755 scripts/ci/tools/ci_clear_tmp.sh rename scripts/ci/tools/{ci_fix_ownership.sh => fix_ownership.sh} (75%) rename scripts/ci/tools/{ci_free_space_on_ci.sh => free_space.sh} (100%) rename scripts/docker/{install_airflow_from_branch_tip.sh => install_airflow_dependencies_from_branch_tip.sh} (85%) delete mode 100755 scripts/in_container/run_clear_tmp.sh delete mode 100644 scripts/upstart/README delete mode 100644 scripts/upstart/airflow-flower.conf delete mode 100644 scripts/upstart/airflow-scheduler.conf delete mode 100644 scripts/upstart/airflow-webserver.conf delete mode 100644 scripts/upstart/airflow-worker.conf copy tests/{providers/zendesk/hooks => dag_processing}/__init__.py (100%) rename tests/{utils/test_dag_processing.py => dag_processing/test_manager.py} (98%) create mode 100644 tests/dag_processing/test_processor.py copy tests/{www/api/experimental => providers/apache/drill}/__init__.py (100%) copy tests/{www/api/experimental => providers/apache/drill/hooks}/__init__.py (100%) create mode 100644 tests/providers/apache/drill/hooks/test_drill.py copy tests/{www/api/experimental => providers/apache/drill/operators}/__init__.py (100%) copy tests/providers/{neo4j/operators/test_neo4j.py => apache/drill/operators/test_drill.py} (52%) create mode 100644 tests/www/views/test_views_blocked.py create mode 100644 tests/www/views/test_views_custom_user_views.py