3 months agoAllows to specify different Python base image when building images (#24634)
Jarek Potiuk [Fri, 24 Jun 2022 22:02:57 +0000 (00:02 +0200)] 
Allows to specify different Python base image when building images (#24634)

Today Python released new images that seems to break some of
our dependencies (at least on M1/ARM). This PR adds a workaround
possibility to add --python-image option to override the
default, latest image with any other version released previously
until we diagnose and fix the real issue.

3 months agoFix timestamp defaults for sensorinstance (#24638)
Daniel Standish [Fri, 24 Jun 2022 16:31:58 +0000 (09:31 -0700)] 
Fix timestamp defaults for sensorinstance (#24638)

Constant values were used where callables were intended.

3 months agoHave consistent types between the ORM and the migration files (#24044)
Ephraim Anierobi [Fri, 24 Jun 2022 15:51:01 +0000 (16:51 +0100)] 
Have consistent types between the ORM and the migration files (#24044)

We currently don't compare column types between ORM and the migration files. Some columns in the migration files have different types from the same columns in the ORM.
Here, I made effort to match the types in migration files with the
 types in ORM, using the migration files as the source of truth in most cases.

I couldn't convert the MySQL VARCHAR collation in db(utf8_bin) to use the one in ORM(utf8mb3_bin). It seems it's not possible to convert a collation of an already existing column in MySQL.

3 months agoExternalTaskSensor respects soft_fail if the external task enters a failed_state...
Andrew Gibbs [Fri, 24 Jun 2022 13:50:13 +0000 (14:50 +0100)] 
ExternalTaskSensor respects soft_fail if the external task enters a failed_state (#23647)

* Respecting soft_fail in ExternalTaskSensor when the upstream tasks are in the failed state (#19754)

- Changed behaviour of sensor to as above to respect soft_fail
- Added tests of new soft_fail behaviour (#19754)
- Added newsfragment and improved sensor docstring

3 months agoAdd %z for %(asctime)s to fix timezone for logs on UI (#24373)
Ko HanJong [Fri, 24 Jun 2022 13:17:24 +0000 (22:17 +0900)] 
Add %z for %(asctime)s to fix timezone for logs on UI (#24373)

3 months agoAdd --platform to breeze shell and start-airflow (#24626)
Tzu-ping Chung [Fri, 24 Jun 2022 10:12:14 +0000 (18:12 +0800)] 
Add --platform to breeze shell and start-airflow (#24626)

This allows Breeze to run images of another platform, such as AMD64 on
an ARM machine.

3 months agoAdd gcp_conn_id argument to GoogleDriveToLocalOperator (#24622)
aspain [Fri, 24 Jun 2022 09:40:05 +0000 (05:40 -0400)] 
Add gcp_conn_id argument to GoogleDriveToLocalOperator (#24622)

Co-authored-by: Tzu-ping Chung <>
3 months agoLimit azure-servicebus to not be used on ARM (#24635)
Jarek Potiuk [Fri, 24 Jun 2022 09:39:10 +0000 (11:39 +0200)] 
Limit azure-servicebus to not be used on ARM (#24635)

Azure service bus uses uamqp which does not build for ARM architecture
and we need to disable it as a dependency for ARM.

3 months agodocs: sqlalchemy link update (#24627)
Itay [Fri, 24 Jun 2022 08:12:22 +0000 (11:12 +0300)] 
docs: sqlalchemy link update (#24627)

following to this change:

3 months agoupdate `task-generated mapping` example (#23424)
aspain [Fri, 24 Jun 2022 04:28:54 +0000 (00:28 -0400)] 
update `task-generated mapping` example (#23424)

Co-authored-by: James Timmins <>
Co-authored-by: Tzu-ping Chung <>
3 months agoWe now need at least Flask-WTF 0.15 (#24621)
Ash Berlin-Taylor [Thu, 23 Jun 2022 19:58:07 +0000 (20:58 +0100)] 
We now need at least Flask-WTF 0.15 (#24621)

We upgraded flask and werkzeug in #24399, and updated the constraints,
but not everyone uses them (such as me in my local virtual environment
when developing) so the min version in setup.cfg has to match as well

3 months agoUpgrade FAB to 4.1.2 (#24619)
Jarek Potiuk [Thu, 23 Jun 2022 19:56:28 +0000 (21:56 +0200)] 
Upgrade FAB to 4.1.2 (#24619)

3 months agoLay the groundwork for migrating Airflow CLI to Rich+Click (#24590)
blag [Thu, 23 Jun 2022 16:28:17 +0000 (09:28 -0700)] 
Lay the groundwork for migrating Airflow CLI to Rich+Click (#24590)

This is the first PR of what will be a series of PRs breaking up #22613 into smaller, more reviewable chunks. The end result will be rewriting the existing `airflow` CLI to use Click instead of argparse. For motivation, please see #22708.

This PR installs Click, adds constraints to Rich_Click so we can rely on some nice features in recent versions of that, adds a new barebones `airflow-ng` console script, and tweaks some CLI internals to be more flexible between argparse and Click.

To see how this initial groundwork will be used by future PRs, see #22613, and to see how some of this will be used please see #24591.

3 months agoImplement Azure Service Bus Queue Operators (#24038)
Bharanidharan [Thu, 23 Jun 2022 15:52:47 +0000 (21:22 +0530)] 
Implement Azure Service Bus Queue Operators (#24038)

Implemented Azure Service Bus Queue based Operator's to create queue, send message to the queue and receive message(list of message or batch message) and delete queue in azure service
- Added `AzureServiceBusCreateQueueOperator`
- Added `AzureServiceBusSendMessageOperator`
- Added  `AzureServiceBusReceiveMessageOperator`
- Added `AzureServiceBusDeleteQueueOperator`
- Added Example DAG
- Added Documentation
- Added hooks and connection type in - provider yaml file
- Added unit Test case, doc strings

3 months agoUse sql_alchemy_conn for celery result backend when result_backend is not set (#24496)
Aakcht [Thu, 23 Jun 2022 15:34:21 +0000 (18:34 +0300)] 
Use sql_alchemy_conn for celery result backend when result_backend is not set (#24496)

3 months agoFix usage of `click.get_terminal_size()` (#24616)
Kaxil Naik [Thu, 23 Jun 2022 12:57:36 +0000 (13:57 +0100)] 
Fix usage of `click.get_terminal_size()` (#24616)

We were ignoring mypy error instead of fixing it.

click had removed `get_terminal_size` and recommend using `shutil.get_terminal_size`

3 months agoFix errors revealed on autoupgrade of breeze (#24612)
Jarek Potiuk [Thu, 23 Jun 2022 00:37:40 +0000 (02:37 +0200)] 
Fix errors revealed on autoupgrade of breeze (#24612)

Recent changes to Breeze cause it to fail in certain situations,
especially at self-upgrade (which was generated by today's
upgrade with rich-click).

There were two problems:

* docker volume inspect missed 'volume' and it caused sometimes
  failures in CI

* inputimeout dependency was missing after recent update to
  pre-commit venvs

3 months agoAdd note about image regeneration in June 2022 (#24524)
Jarek Potiuk [Thu, 23 Jun 2022 00:27:54 +0000 (02:27 +0200)] 
Add note about image regeneration in June 2022 (#24524)

The note is about image changes after refreshing are now better
organized (around date of the change) - this should be more useful
by the users who will look why their images have been refreshed.

Related to: #24516

3 months agoFix recording console for new rich-click 1.5 (#24611)
Jarek Potiuk [Wed, 22 Jun 2022 23:06:23 +0000 (01:06 +0200)] 
Fix recording console for new rich-click 1.5 (#24611)

3 months agoUpgrade FAB to 4.1.1 (#24399)
Jarek Potiuk [Wed, 22 Jun 2022 21:26:28 +0000 (23:26 +0200)] 
Upgrade FAB to 4.1.1 (#24399)

* Upgrade FAB to 4.1.1

The Flask Application Builder have been updated recently to
support a number of newer dependencies. This PR is the
attempt to migrate FAB to newer version.

This includes:

* update and setup.cfg upper and lower bounds to
  account for proper version of dependencies that
  FAB < 4.0.0 was blocking from upgrade
* added typed Flask application retrieval with a custom
  application fields available for MyPy typing checks.
* fix typing to account for typing hints added in multiple
  upgraded libraries optional values and content of request
  returned as Mapping
* switch to PyJWT 2.* by using non-deprecated "required" claim as
  list rather than separate fields
* add possibiliyt to install providers without constraints
  so that we could avoid errors on conflicting constraints when
  upgrade-to-newer-dependencies is used
* add pre-commit to check that 2.4+ only get_airflow_app is not
  used in providers
* avoid Bad Request in case the request sent to Flask 2.0 is not
  JSon content type
* switch imports of internal classes to direct packages
  where classes are available rather than from "airflow.models" to
  satisfy MyPY
* synchronize changes of FAB Security Manager 4.1.1 with our copy
  of the Security Manager.
* add error handling for a few "None" cases detected by MyPY
* corrected test cases that were broken by immutability of
  Flask 2 objects and better escaping done by Flask 2
* updated test cases to account for redirection to "path" rather
  than full URL by Flask2

Fixes: #22397

* fixup! Upgrade FAB to 4.1.1

3 months agoMigrate jsx files that affect run/task selection to tsx (#24509)
Brent Bovenzi [Wed, 22 Jun 2022 19:30:24 +0000 (15:30 -0400)] 
Migrate jsx files that affect run/task selection to tsx (#24509)

* convert all useSelection files to ts

Update grid data ts, remove some anys

* yarn, lint and tests

* convert statusbox to ts

* remove some anys, update instance tooltip

* fix types

* remove any, add comment for global vars

* fix url selection and grid/task defaults

* remove React.FC declarations

* specify tsconfig file path

* remove ts-loader

3 months agoUpdate breeze mypy check documentation (#24609)
Igor Tavares [Wed, 22 Jun 2022 19:28:27 +0000 (16:28 -0300)] 
Update breeze mypy check documentation (#24609)

3 months agoPatch sql_alchemy_conn if old Postgres schemes used (#24569)
Sergey Lyapustin [Wed, 22 Jun 2022 11:06:57 +0000 (13:06 +0200)] 
Patch sql_alchemy_conn if old Postgres schemes used (#24569)

3 months agoPattern parameter in S3ToSnowflakeOperator (#24571)
Andrey Anshin [Wed, 22 Jun 2022 07:49:02 +0000 (11:49 +0400)] 
Pattern parameter in S3ToSnowflakeOperator (#24571)

3 months agoRemove special serde logic for mapped op_kwargs (#23860)
Tzu-ping Chung [Wed, 22 Jun 2022 07:48:50 +0000 (15:48 +0800)] 
Remove special serde logic for mapped op_kwargs (#23860)

Co-authored-by: Daniel Standish <>
3 months agofix TestLocalTaskJob tests (#24432)
Andrey Anshin [Wed, 22 Jun 2022 06:15:49 +0000 (10:15 +0400)] 
fix TestLocalTaskJob tests (#24432)

3 months agoUpdate providers to use functools compat for ``cached_property`` (#24582)
Josh Fell [Wed, 22 Jun 2022 02:02:12 +0000 (22:02 -0400)] 
Update providers to use functools compat for ``cached_property`` (#24582)

3 months agoAmazon appflow (#24057)
Igor Tavares [Tue, 21 Jun 2022 23:14:46 +0000 (20:14 -0300)] 
Amazon appflow (#24057)

* Add Amazon AppFlow hook.

* Add Amazon AppFlow operators.

* Add Amazon AppFlow examples.

* Add Amazon Appflow docs.

* Apply comments/docs patterns.

* Removing the "private" attribute signal and more.

* Fix task_ids for example_appflow.

* Move datetime_to_epoch() to utils and more.

* Fix the AppflowBaseOperator name.

* Ignore AppflowBaseOperator during structure check.

* test_short_circuit refactor.

* Add get_airflow_version.

* Update airflow/providers/amazon/aws/hooks/

Co-authored-by: Josh Fell <>
* Update airflow/providers/amazon/aws/operators/

Co-authored-by: Josh Fell <>
* Update airflow/providers/amazon/aws/operators/

Co-authored-by: Josh Fell <>
* Update airflow/providers/amazon/aws/operators/

Co-authored-by: Josh Fell <>
* Update airflow/providers/amazon/aws/operators/

Co-authored-by: Josh Fell <>
* Update airflow/providers/amazon/aws/operators/

Co-authored-by: Josh Fell <>
* Addressing Josh's requests.

* Add cached_property to AppflowHook

* Update airflow/providers/amazon/aws/hooks/

Co-authored-by: Josh Fell <>
* Update airflow/providers/amazon/aws/operators/

Co-authored-by: Josh Fell <>
* Update airflow/providers/amazon/aws/operators/

Co-authored-by: Josh Fell <>
* Update Josh's comment.

* Update cached_property import.

* Fix mypy.

Co-authored-by: Josh Fell <>
3 months agoAdd DagWarning model, and a check for missing pools (#23317)
Daniel Standish [Tue, 21 Jun 2022 18:55:20 +0000 (11:55 -0700)] 
Add DagWarning model, and a check for missing pools (#23317)

We can use this to track (and surface to the user in the web UI) configuration problems that don't rise to the level of failing the dag parse, such tasks that reference nonexistent pools.

3 months agoAdd test_connection method to Trino hook (#24583)
Phani Kumar [Tue, 21 Jun 2022 18:09:15 +0000 (23:39 +0530)] 
Add test_connection method to Trino hook (#24583)

3 months agoFix occasional test failures where pid matches part of another PID (#24584)
Jarek Potiuk [Tue, 21 Jun 2022 17:52:27 +0000 (19:52 +0200)] 
Fix occasional test failures where pid matches part of another PID (#24584)

Solves problems that intermittently fail our builds:

  '135' is contained here:
    ith pid: 10135
  ?            +++

3 months agoSwitch to building images in parallell (#24580)
Jarek Potiuk [Tue, 21 Jun 2022 15:58:54 +0000 (17:58 +0200)] 
Switch to building images in parallell (#24580)

In the new Breeze, switching to using parallelism is a ... breeze.

This PR adds the capability of building the images in parallel in Breeze
locally - for breeze command, but also uses this capability to build the
images in parallel in our CI. Our builds are always executed on
powerful, big machines with lots of CPU and docker run in memory
filesystem with 32GB RAM, so it should be possible to run all builds in
parallel on a single machine rather then spin off parallel machines to
run the builds using the matrix strategy of Github Actions.

Generally speaking - this will either speed up or get 4x cost saving for
the build steps for all the "full test needed" PRs as well as all the
main builds.

There are a number of savings and improvements we can achieve this way:

1) less overhead for starting and runnning the machines
2) seems that with the new buildkit, the parallel builds are not
   suffering from some sequential locks (as it used to be, so
   we are basically do the same job using 25% resources for building
   the images.
3) we will stop having random "one image failed to build" cases - they
   will all either fail or succeed.
4) Less checks in the output
5) Production builds will additionally gain from single CI image
   pulled in order to perform the preparation of the packages
   and single package preparation step - it will save 4-5 minutes
   per image.

The disadvantage is a less clear output of such parallel build where
outputs from multiple builds will be interleaved in one CI output.

3 months agoUse found pod for deletion in KubernetesPodOperator (#22092)
Michael Petro [Tue, 21 Jun 2022 15:51:20 +0000 (11:51 -0400)] 
Use found pod for deletion in KubernetesPodOperator (#22092)

Due to bad user configuration, it's possible that pod creation fails because pod with name already exists.  Then in cleanup, the pod that was already there is deleted.  When we use find_pod it looks up based on more than name, so we are confident if we found a pod there it's safe to delete.

3 months agoAdded instructions on what to do if your command images are regenerated (#24581)
Jarek Potiuk [Tue, 21 Jun 2022 13:59:43 +0000 (15:59 +0200)] 
Added instructions on what to do if your command images are regenerated (#24581)

In case there are conflicting changes to breeze command in several
PRs, you might get conflicting images printed. in such case you
should run `breeze regenerate-command-images`

3 months agoFix typo (#24568)
Jon Crall [Tue, 21 Jun 2022 13:13:33 +0000 (09:13 -0400)] 
Fix typo (#24568)

3 months agoSwitch Markdown engine to markdown-it-py (#19702)
Torbjørn Vatn [Tue, 21 Jun 2022 09:24:13 +0000 (11:24 +0200)] 
Switch Markdown engine to markdown-it-py (#19702)

3 months agoChange requests intersphinx inventory to 'stable' (#24575)
Tzu-ping Chung [Tue, 21 Jun 2022 07:40:23 +0000 (15:40 +0800)] 
Change requests intersphinx inventory to 'stable' (#24575)

It was using 'master', but the URL is no longer available. We could use
'main', but 'stable' seems much more sensible.

3 months agoAdd `on_kill()` to kill Trino query if the task is killed (#24559)
Phani Kumar [Mon, 20 Jun 2022 18:39:02 +0000 (00:09 +0530)] 
Add `on_kill()` to kill Trino query if the task is killed (#24559)

This PR is a follow up to PR #24415.
It adds on_kill method to the TrinoOperator to kill Trino query if Airflow task is killed

3 months agoClarify that users should not use Maria DB (#24556)
Jarek Potiuk [Mon, 20 Jun 2022 12:45:16 +0000 (14:45 +0200)] 
Clarify that users should not use Maria DB (#24556)

3 months agoFix the error caused by passing unused context in JiraSensor.poke (#23352)
Kian Eliasi [Mon, 20 Jun 2022 09:23:19 +0000 (13:53 +0430)] 
Fix the error caused by passing unused context in JiraSensor.poke (#23352)

* Fix the error caused by passing unused context in JiraSensor.poke

The sample ticket object used in the test is mocked more realistically and the original field_checker_func is used.

3 months agoMigrate Google example DAG oracle_to_gcs to new design AIP-47 (#24542)
Chenglong Yan [Mon, 20 Jun 2022 09:05:35 +0000 (17:05 +0800)] 
Migrate Google example DAG oracle_to_gcs to new design AIP-47 (#24542)

related: #22447, #22430

3 months agoUpdate description of installing providers separately from core (#24454)
Jarek Potiuk [Mon, 20 Jun 2022 08:09:56 +0000 (10:09 +0200)] 
Update description of installing providers separately from core (#24454)

The description of how to install providers separately from the
core was wrong. It suggested installing main constraints, but
in fact we are not able to give any guarantees when installing
providers this way so no constraints can guarantee consistent
set of dependencies and the user is on their own in this case.

This PR corrects the installation docs.

3 months agoDoc: Add hyperlinks to Github PRs for Release Notes (#24532)
Kaxil Naik [Mon, 20 Jun 2022 05:46:39 +0000 (06:46 +0100)] 
Doc: Add hyperlinks to Github PRs for Release Notes (#24532)

Co-authored-by: Tzu-ping Chung <>
3 months agoAdd TrinoOperator (#24415)
Phani Kumar [Sun, 19 Jun 2022 23:08:14 +0000 (04:38 +0530)] 
Add TrinoOperator (#24415)

* Add TrinoOperator

* Enable multi query execution with TrinoOperator

3 months agoMigrate Google example DAG mysql_to_gcs to new design AIP-47 (#24540)
Chenglong Yan [Sun, 19 Jun 2022 22:56:08 +0000 (06:56 +0800)] 
Migrate Google example DAG mysql_to_gcs to new design AIP-47 (#24540)

related: #22447, #22430

3 months agoRe-serialize all DAGs on 'airflow db upgrade' (#24518)
Tzu-ping Chung [Sun, 19 Jun 2022 22:42:08 +0000 (06:42 +0800)] 
Re-serialize all DAGs on 'airflow db upgrade' (#24518)

3 months agoMake extra_args in S3Hook immutable between calls (#24527)
Andrey Anshin [Sun, 19 Jun 2022 22:41:36 +0000 (02:41 +0400)] 
Make extra_args in S3Hook immutable between calls (#24527)

3 months agoConvert sftp hook to use paramiko instead of pysftp (#24512)
Paul Williams [Sun, 19 Jun 2022 22:40:25 +0000 (18:40 -0400)] 
Convert sftp hook to use paramiko instead of pysftp (#24512)

3 months agoConvert SQS Sample DAG to System Test (#24513)
D. Ferruzzi [Sun, 19 Jun 2022 22:16:02 +0000 (15:16 -0700)] 
Convert SQS Sample DAG to System Test (#24513)

3 months agoMigrate Google search_ads DAG to new design AIP-47 (#24298)
Chenglong Yan [Sun, 19 Jun 2022 22:15:39 +0000 (06:15 +0800)] 
Migrate Google search_ads DAG to new design AIP-47 (#24298)

related: #22447, #22430

3 months agoClose the MySQL connections once operations are done. (#24508)
Pavel [Sun, 19 Jun 2022 22:15:01 +0000 (18:15 -0400)] 
Close the MySQL connections once operations are done. (#24508)

3 months agoGCSDeleteObjectsOperator empty prefix bug fix (#24353)
Daniel Lavedonio de Lima [Sun, 19 Jun 2022 22:07:56 +0000 (19:07 -0300)] 
GCSDeleteObjectsOperator empty prefix bug fix (#24353)

3 months agoMigrate Google gcs_to_sheets DAG to new design AIP-47 (#24501)
Chenglong Yan [Sun, 19 Jun 2022 22:06:46 +0000 (06:06 +0800)] 
Migrate Google gcs_to_sheets DAG to new design AIP-47 (#24501)

related: #22430, #22447

3 months agofix: RedshiftDataHook and RdsHook not use cached connection (#24387)
Andrey Anshin [Sun, 19 Jun 2022 21:32:51 +0000 (01:32 +0400)] 
fix: RedshiftDataHook and RdsHook not use cached connection (#24387)

3 months agoAdd missing types to FSHook (#24470)
Léni Marvaud [Sun, 19 Jun 2022 21:27:30 +0000 (23:27 +0200)] 
Add missing types to FSHook (#24470)

Fix mypy error :
error: Call to untyped function "FSHook" in typed context  [no-untyped-call]

When using :
fs_hook = FSHook(fs_conn_id)

3 months agoFix bugs in URI constructor for MySQL connection (#24320)
Maksim [Sun, 19 Jun 2022 21:25:59 +0000 (00:25 +0300)] 
Fix bugs in URI constructor for MySQL connection (#24320)

* Fix bugs in URI constructor for MySQL connection

* Update unit tests

3 months agoAdd DeprecationWarning for column_transformations parameter in AutoML (#24467)
Maksim [Sun, 19 Jun 2022 21:25:04 +0000 (00:25 +0300)] 
Add DeprecationWarning for column_transformations parameter in AutoML (#24467)

3 months agoUpdate flask-appbuilder authlib/oauth dependency (#24516)
Jarek Potiuk [Sun, 19 Jun 2022 19:28:19 +0000 (21:28 +0200)] 
Update flask-appbuilder authlib/oauth dependency (#24516)

The dependency we have for flask-appbuilder oauth authentication
(for github/google authentication) should follow the limits
that flask-appbuilder current version has. We added authlib there
but apparently FAB currently limits authlib to <= 1.0 - we should
follow fab rather than have our own dependency here.

This has been pointed out in

3 months agoPreserve original order of providers' connection extra fields in UI (#24425)
Andrey Anshin [Sun, 19 Jun 2022 18:32:27 +0000 (22:32 +0400)] 
Preserve original order of providers' connection extra fields in UI (#24425)

* Preserve original order of providers' connection extra fields

* Sort widgets before printed in cli command `airflow providers widgets`

3 months agoAdd verification steps when releasing the images. (#24520)
Jarek Potiuk [Sun, 19 Jun 2022 14:16:59 +0000 (16:16 +0200)] 
Add verification steps when releasing the images. (#24520)

After the images are pushed in CI we are running the verification
of the AMD image now.

This cannot be really done during building and pushing the image,
because we are using multi-platform images using remote builders
so the image is not even available locally, so we need to actually
pull the images after they are built in order to verify them.

This PR adds those features:
* ability to pull images for verification with --pull-flag
* ability to verify slim images (regular tests are skipped and
  we only expect the preinstalled providers to be available
* the steps to verify the images (both regular and slim) are
  added to the workflow

3 months agoAdd imports to deferring code samples (#24544)
Bas Harenslak [Sun, 19 Jun 2022 08:53:15 +0000 (10:53 +0200)] 
Add imports to deferring code samples (#24544)

3 months agoGet rid of TimedJSONWebSignatureSerializer (#24519)
Jarek Potiuk [Sat, 18 Jun 2022 21:08:51 +0000 (23:08 +0200)] 
Get rid of TimedJSONWebSignatureSerializer (#24519)

The TimedJSONWebSignatureSerializer has been deprecated from the
itsdangerous library and they recommended to use dedicated
libraries for it.

Since we are going to move to FAB 4+ with #22397 where newer version of
itsdangerous is used, we need to switch to another library.

We are already using PyJWT so the choice is obvious.

Additionally to switching, the following improvements were done:

* the use of JWT claims has been fixed to follow JWT standard.
  We were using "iat" header wrongly. The specification of JWT only
  expects the header to be there and be valid UTC timestamp, but the
  claim does not impact maturity of the signature - the signature
  is valid if iat is in the future.
  Instead "nbf" - "not before" claim should be used to verify if the
  request is not coming from the future. We now require all claims
  to be present in the request.

* rather than using salt/signing_context we switched to standard
  JWT "audience" claim (same end result)

* we have now much better diagnostics on the server side of the
  reason why request is forbidden - explicit error messages
  are printed in server logs and details of the exception. This
  is secure, we do not spill the information about the reason
  to the client, it's only available in server logs, so there is
  no risk attacker could use it.

* the JWTSigner is "use-agnostic". We should be able to use the
  same class for any other signatures (Internal API from AIP-44)
  with just different audience

* Short, 5 seconds default clock skew is allowed, to account for
  systems that have "almost" synchronized time

* more tests addded with proper time freezing testing both
  expiry and immaturity of the request

This change is not a breaking one because the JWT authentication
details are not "public API" - but in case someone reverse engineered
our claims and implemented their own log file retrieval, we
should add a change in our changelog - therefore newsfragment
is added.

3 months agoMove LOAD_DEFAULT_CONNECTIONS env var to database config section in CI (#24536)
Josh Fell [Sat, 18 Jun 2022 19:34:24 +0000 (15:34 -0400)] 
Move LOAD_DEFAULT_CONNECTIONS env var to database config section in CI (#24536)

3 months agoFix mapped task immutability after clear (#23667)
Ephraim Anierobi [Sat, 18 Jun 2022 07:32:38 +0000 (08:32 +0100)] 
Fix mapped task immutability after clear (#23667)

We should be able to detect if the structure of mapped task has changed
and verify the integrity.

This PR ensures this
Co-authored-by: Tzu-ping Chung <>
3 months agoUpdate `actual_file_to_check` with rendered `path` (#24451)
remem9527 [Fri, 17 Jun 2022 22:41:18 +0000 (18:41 -0400)] 
Update `actual_file_to_check` with rendered `path` (#24451)

3 months agoRename charts.css to chart.css (#24531)
Daniel Standish [Fri, 17 Jun 2022 21:00:35 +0000 (14:00 -0700)] 
Rename charts.css to chart.css (#24531)

Just a missed rename.

3 months agoRestore capability of reproducing CI failures using new Breeze (#24402)
Jarek Potiuk [Fri, 17 Jun 2022 20:08:10 +0000 (22:08 +0200)] 
Restore capability of reproducing CI failures using new Breeze (#24402)

The old breeze-legacy used to have a possibility of very easy
reproduction of CI failures by executing the right breeze command
that contained the commit hash of the PR being tested. This has
been broken for some time after we migrated to the new breeze,
but finally it was the time when it was needed again.

This PR brings back the capability by:

* addding --image-tag parameters for tests, shell and start-airflow
* if --image-tag is specified, then rather than building the
  image, it is pulled using the specified hash
* if --image-tag is specified, the local sources are not mounted
  to breeze when started, but the sources already embedded in the
  image are used ("skipped" set for --mount-sources).
* new "removed" command value is added to --mount-sources, it
  causes breeze command to remove the sources from the image (it
  is used when installing airflow during the tests for specified
  version (it's automatically used when --use-airflow-version
  is used).

3 months agoDon't rely on current ORM structure for db clean command (#23574)
Daniel Standish [Fri, 17 Jun 2022 19:46:16 +0000 (12:46 -0700)] 
Don't rely on current ORM structure for db clean command (#23574)

For command DB clean, by not relying on the ORM models, we will be able to use the command even when the metadatabase is not yet upgraded to the version of Airflow you have installed.

Additionally we archive all rows before deletion.

3 months agoRename grid.css to chart.css (#24529)
Ash Berlin-Taylor [Fri, 17 Jun 2022 17:39:14 +0000 (18:39 +0100)] 
Rename grid.css to chart.css (#24529)

Given it was no longer used in the new grid view and only the chart
pages, _and_ we want to have a new css file for the react grid
components it is better to rename this one now.

3 months agoDo not calculate grid root instances (#24528)
Brent Bovenzi [Fri, 17 Jun 2022 16:31:28 +0000 (12:31 -0400)] 
Do not calculate grid root instances (#24528)

* do not calculate grid root instances

* fix tests

3 months agoUpdate ui.rst (#24514)
Habibullah Oladepo [Fri, 17 Jun 2022 11:10:49 +0000 (12:10 +0100)] 
Update ui.rst (#24514)

Fix minor typos

3 months agoSeed log_template table (#24511)
Jed Cunningham [Fri, 17 Jun 2022 05:41:32 +0000 (23:41 -0600)] 
Seed log_template table (#24511)

Seed the log_template table with the default values pre 2.3.0 so log
retrieval still works post upgrade. This only worked previously if you
have the default in your config, now it works even if you don't.

3 months agoFix deprecated log_id_template value (#24506)
Jed Cunningham [Fri, 17 Jun 2022 01:49:40 +0000 (19:49 -0600)] 
Fix deprecated log_id_template value (#24506)

We had the wrong old default in our deprecated value upgrading logic, so
the 2.2.5 default wasn't actually being upgraded.

3 months agoFix toast messages (#24505)
Brent Bovenzi [Thu, 16 Jun 2022 20:36:21 +0000 (16:36 -0400)] 
Fix toast messages (#24505)

* update webpack-cli, eslint, stylelint, babel

* revert stylelint changes

* update more plugins

* update to webpack 5

* use portalProps to properly style toast msgs

3 months agoRestore tooltip animation (#24503)
Brent Bovenzi [Thu, 16 Jun 2022 19:19:56 +0000 (15:19 -0400)] 
Restore tooltip animation (#24503)

* update webpack-cli, eslint, stylelint, babel

* revert stylelint changes

* update more plugins

* update to webpack 5

* restore animation with framer-motion v6

3 months agoAdd indexes for CASCADE deletes for task_instance (#24488)
Daniel Standish [Thu, 16 Jun 2022 18:41:35 +0000 (11:41 -0700)] 
Add indexes for CASCADE deletes for task_instance (#24488)

When we add foreign keys with ON DELETE CASCADE, and we delete rows in the foreign table, the database needs to join back to the referencing table.  If there's no suitable index, then it can be slow to perform the deletes.

3 months agoUpgrade to webpack 5 (#24485)
Brent Bovenzi [Thu, 16 Jun 2022 18:35:32 +0000 (14:35 -0400)] 
Upgrade to webpack 5 (#24485)

* update webpack-cli, eslint, stylelint, babel

* revert stylelint changes

* update more plugins

* update to webpack 5

* remove all resolutions

3 months agoRemove internet explorer support (#24495)
Brent Bovenzi [Thu, 16 Jun 2022 16:35:44 +0000 (12:35 -0400)] 
Remove internet explorer support (#24495)

* remove internet explorer support

* remove from webpack

3 months agoCredit image used in (#24490)
Yasen Petrov [Thu, 16 Jun 2022 11:32:22 +0000 (13:32 +0200)] 
Credit image used in (#24490)

The image used in the example task documentation is [licensed under the Creative Commons license]( This change adds a mention of the author and a link to the license under the image.

3 months agoImprove production image release workflow (#24481)
Jarek Potiuk [Thu, 16 Jun 2022 08:50:19 +0000 (10:50 +0200)] 
Improve production image release workflow (#24481)

Few improvements:

* direct link to workflow in the docs
* "green" success screenshots (separate screenshot for rc)
* job and step names contain both Airflow version and python version
* running subsequent build with same version will cancel past
  in-progress build (in case you quickly make constraint fis for
  example and re-run)

3 months agoSmall cleanup of ``get_current_context()`` chapter (#24482)
Josh Fell [Thu, 16 Jun 2022 08:50:04 +0000 (04:50 -0400)] 
Small cleanup of ``get_current_context()`` chapter (#24482)

3 months agoReturn empty dict if Pod JSON encoding fails (#24478)
Daniel Standish [Wed, 15 Jun 2022 19:47:07 +0000 (12:47 -0700)] 
Return empty dict if Pod JSON encoding fails (#24478)

When UI unpickles executor_configs with outdated k8s objects it can run into the same issue as the scheduler does (see

Our JSON encoder therefore needs to suppress encoding errors arising from pod serialization, and fallback to a default value.

3 months agoUse `get_hostname` instead of `socket.getfqdn` (#24260)
Jed Cunningham [Wed, 15 Jun 2022 19:45:15 +0000 (13:45 -0600)] 
Use `get_hostname` instead of `socket.getfqdn` (#24260)

We allow users to configure a different function to determine the
hostname, so we should use that consistently when we need the hostname.

3 months agoFix semver compare number for `jobs check` command (#24480)
Daniel Standish [Wed, 15 Jun 2022 19:34:29 +0000 (12:34 -0700)] 
Fix semver compare number for `jobs check` command (#24480)

From what I can tell this command was added in 2.1.0 not 2.0.0.

3 months agoRemove framer-motion from custom tooltip (#24449)
Brent Bovenzi [Wed, 15 Jun 2022 19:17:22 +0000 (15:17 -0400)] 
Remove framer-motion from custom tooltip (#24449)

* remove framer-motion from custom tooltip

* remove framer-motion type declaration file

3 months agoRevert "Fix await_container_completion condition (#23883)" (#24474)
Jed Cunningham [Wed, 15 Jun 2022 16:22:49 +0000 (10:22 -0600)] 
Revert "Fix await_container_completion condition (#23883)" (#24474)

This reverts commit 42abbf0d61f94ec50026af0c0f95eb378e403042.

3 months agoUpdate release docs for Google and Oracle providers (#24461) providers-google/8.1.0 providers-google/8.1.0rc1 providers-oracle/3.1.0 providers-oracle/3.1.0rc1
Jarek Potiuk [Wed, 15 Jun 2022 12:05:36 +0000 (14:05 +0200)] 
Update release docs for Google and Oracle providers (#24461)

3 months agoSpeed up grid_data endpoint by 10x (#24284)
Ash Berlin-Taylor [Wed, 15 Jun 2022 12:02:23 +0000 (13:02 +0100)] 
Speed up grid_data endpoint by 10x (#24284)

* Speed up grid_data endpoint by 10x

These changes make the endpoint go from almost 20s down to 1.5s and the
changes are two fold:

1. Keep datetimes as objects for as long as possible

   Previously we were converting start/end dates for a task group to a
   string, and then in the parent parsing it back to a datetime to find
   the min and max of all the child nodes.

   The fix for that was to leave it as a datetime (or a
   pendulum.DateTime technically) and use the existing
   `AirflowJsonEncoder` class to "correctly" encode these objects on

2. Reduce the number of DB queries from 1 per task to 1.

   The removed `get_task_summaries` function was called for each task,
   and was making a query to the database to find info for the given

   The helper function now makes just a single DB query for all
   tasks/runs and constructs a dict to efficiently look up the ti by

* Add support for mapped tasks in the grid data

* Don't fail when not all tasks have a finish date.

Note that this possibly has incorrect behaviour, in that the end_date of
a TaskGroup is set to the max of all the children's end dates, even if
some are still running. (This is the existing behaviour and is not
changed or altered by this change - limiting it to just performance

3 months agoUse insert_job in the BigQueryToGCPOpertor and adjust links (#24416)
Łukasz Wyszomirski [Wed, 15 Jun 2022 09:45:08 +0000 (11:45 +0200)] 
Use insert_job in the BigQueryToGCPOpertor and adjust links (#24416)

* Use insert_job in the BigQueryToGCPOpertor and adjust links

3 months agoFirst attempt to have CI-controlled process of releasing PROD image (#24433)
Jarek Potiuk [Wed, 15 Jun 2022 09:42:41 +0000 (11:42 +0200)] 
First attempt to have CI-controlled process of releasing PROD image (#24433)

3 months agoDon't crash scheduler if exec config has old k8s objects (#24117)
Daniel Standish [Wed, 15 Jun 2022 04:30:53 +0000 (21:30 -0700)] 
Don't crash scheduler if exec config has old k8s objects (#24117)

From time to time k8s library objects change their attrs.  If executor config is stored with old version, and unpickled with new version, we can get attribute errors that can crash the scheduler (see

Here we update handling so that we fail the task but don't crash the scheduler.

3 months agoDocs: Fix default 2.2.5 log_id_template (#24455)
Jed Cunningham [Tue, 14 Jun 2022 23:30:09 +0000 (17:30 -0600)] 
Docs: Fix default 2.2.5 log_id_template (#24455)

I accidentally got the wrong default for 2.2.5 when documenting how
to fix elasticsearch remote logging after upgrading to 2.3.0+.

3 months agoAdd CI-friendly progress output for tests (#24236)
Jarek Potiuk [Tue, 14 Jun 2022 20:32:49 +0000 (22:32 +0200)] 
Add CI-friendly progress output for tests (#24236)

This is the first step to run breeze tests in parallel in CI.
This flag adds "limited progress" output when running tests
which means that the runnig tests will just print few lines with
percent progress and color status indication from last few
progress lines of Pytest output, but when it completes, the whole output is
printed in a CI group - colored depending on status.

The final version (wnen we implement parallel test execution) should
also defer writing the output to until all tests are completed, but
this should be a follow-up PR.

3 months agoConvert Cloudformation Sample DAG to System Test (#24447)
D. Ferruzzi [Tue, 14 Jun 2022 20:26:51 +0000 (13:26 -0700)] 
Convert Cloudformation Sample DAG to System Test (#24447)

3 months ago`TI.log_url` fix for `map_index` (#24335)
fritz-astronomer [Tue, 14 Jun 2022 20:15:49 +0000 (16:15 -0400)] 
`TI.log_url` fix for `map_index` (#24335)

3 months agoClarify "significant" newsfragment vs significant newsfragment _type_ (#24450)
Daniel Standish [Tue, 14 Jun 2022 20:08:52 +0000 (13:08 -0700)] 
Clarify "significant" newsfragment vs significant newsfragment _type_ (#24450)

Previously was tiny bit ambiguous and could make it appear that any newsfragment type could have summary + body.  Also I remove the word "simply" just because it's a pet peeve of mine.

3 months agoVendor in the bitnami chart (#24395)
Jarek Potiuk [Tue, 14 Jun 2022 16:07:47 +0000 (18:07 +0200)] 
Vendor in the bitnami chart (#24395)

After the Bitnami fiasco

We lost trust in bitnami index being good and reliable source
of charts. That's why we vendored-in the postgres chart needed for
our Helm chart.

Fixes: #24037

3 months agoUpdate errors.rst (#24412)
dojoscan [Tue, 14 Jun 2022 15:18:52 +0000 (17:18 +0200)] 
Update errors.rst (#24412)

Fix wording in some sentences

3 months agoUpgrade to react 18 and chakra 2 (#24430)
Brent Bovenzi [Tue, 14 Jun 2022 15:13:15 +0000 (17:13 +0200)] 
Upgrade to react 18 and chakra 2 (#24430)

* Upgrade to react 18 and chakra 2

* upgrade emotion cache

* fix framer-motion and (some) testing issues

3 months agoUpdate Oracle library to latest version (#24311)
Leonard Meerwood [Tue, 14 Jun 2022 11:24:07 +0000 (21:24 +1000)] 
Update Oracle library to latest version (#24311)