This is an automated email from the ASF dual-hosted git repository. potiuk pushed a commit to branch v2-8-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 384d062e40a6cb13e421d5061292fb42088c9a6a Author: Vincent <97131062+vincb...@users.noreply.github.com> AuthorDate: Wed Jan 3 13:02:36 2024 -0500 Fix security manager inheritance in fab provider (#36538) (cherry picked from commit 2093b6f3b94be9fae5d61042a9c280d9a835687b) --- airflow/auth/managers/fab/fab_auth_manager.py | 14 ++--- ...output_sbom_generate-providers-requirements.svg | 68 ++++++++++++---------- ...output_sbom_generate-providers-requirements.txt | 2 +- generated/provider_dependencies.json | 9 +++ tests/auth/managers/fab/test_fab_auth_manager.py | 30 +++++++++- 5 files changed, 81 insertions(+), 42 deletions(-) diff --git a/airflow/auth/managers/fab/fab_auth_manager.py b/airflow/auth/managers/fab/fab_auth_manager.py index 5224509039..e05abc97d3 100644 --- a/airflow/auth/managers/fab/fab_auth_manager.py +++ b/airflow/auth/managers/fab/fab_auth_manager.py @@ -222,10 +222,10 @@ class FabAuthManager(BaseAuthManager): entity (e.g. DAG runs). 2. ``dag_access`` is provided which means the user wants to access a sub entity of the DAG (e.g. DAG runs). - a. If ``method`` is GET, then check the user has READ permissions on the DAG and the sub entity. - b. Else, check the user has EDIT permissions on the DAG and ``method`` on the sub entity. - However, if no specific DAG is targeted, just check the sub entity. + a. If ``method`` is GET, then check the user has READ permissions on the DAG and the sub entity. + b. Else, check the user has EDIT permissions on the DAG and ``method`` on the sub entity. However, + if no specific DAG is targeted, just check the sub entity. :param method: The method to authorize. :param access_entity: The dag access entity. @@ -335,19 +335,19 @@ class FabAuthManager(BaseAuthManager): def security_manager(self) -> FabAirflowSecurityManagerOverride: """Return the security manager specific to FAB.""" from airflow.auth.managers.fab.security_manager.override import FabAirflowSecurityManagerOverride - from airflow.www.security import AirflowSecurityManager + from airflow.www.security_manager import AirflowSecurityManagerV2 sm_from_config = self.appbuilder.get_app.config.get("SECURITY_MANAGER_CLASS") if sm_from_config: - if not issubclass(sm_from_config, AirflowSecurityManager): + if not issubclass(sm_from_config, AirflowSecurityManagerV2): raise Exception( - """Your CUSTOM_SECURITY_MANAGER must extend FabAirflowSecurityManagerOverride, + """Your CUSTOM_SECURITY_MANAGER must extend AirflowSecurityManagerV2, not FAB's own security manager.""" ) if not issubclass(sm_from_config, FabAirflowSecurityManagerOverride): warnings.warn( "Please make your custom security manager inherit from " - "FabAirflowSecurityManagerOverride instead of AirflowSecurityManager.", + "FabAirflowSecurityManagerOverride instead of FabAirflowSecurityManagerOverride.", DeprecationWarning, ) return sm_from_config(self.appbuilder) diff --git a/dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg b/dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg index eb022ae634..cb90b20960 100644 --- a/dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg +++ b/dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg @@ -1,4 +1,4 @@ -<svg class="rich-terminal" viewBox="0 0 1482 1026.0" xmlns="http://www.w3.org/2000/svg"> +<svg class="rich-terminal" viewBox="0 0 1482 1050.4" xmlns="http://www.w3.org/2000/svg"> <!-- Generated with Rich https://www.textualize.io --> <style> @@ -43,7 +43,7 @@ <defs> <clipPath id="breeze-sbom-generate-providers-requirements-clip-terminal"> - <rect x="0" y="0" width="1463.0" height="975.0" /> + <rect x="0" y="0" width="1463.0" height="999.4" /> </clipPath> <clipPath id="breeze-sbom-generate-providers-requirements-line-0"> <rect x="0" y="1.5" width="1464" height="24.65"/> @@ -162,9 +162,12 @@ <clipPath id="breeze-sbom-generate-providers-requirements-line-38"> <rect x="0" y="928.7" width="1464" height="24.65"/> </clipPath> +<clipPath id="breeze-sbom-generate-providers-requirements-line-39"> + <rect x="0" y="953.1" width="1464" height="24.65"/> + </clipPath> </defs> - <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1024" rx="8"/><text class="breeze-sbom-generate-providers-requirements-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: sbom generate-providers-requirements</text> + <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1048.4" rx="8"/><text class="breeze-sbom-generate-providers-requirements-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: sbom generate-providers-requirements</text> <g transform="translate(26,22)"> <circle cx="0" cy="0" r="7" fill="#ff5f57"/> <circle cx="22" cy="0" r="7" fill="#febc2e"/> @@ -185,35 +188,36 @@ </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-8)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-8)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="215.2" textLength="109.8" clip-path="url(#breeze-sbom-generate-pr [...] </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-9)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="239.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-9)">(airbyte | alibaba | amazon | apache.beam | apache.cassandra | apache.drill | apach [...] </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-10)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="264" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-10)">apache.flink | apache.hdfs | apache.hive | apache.impala | apache.kafka | apache.kylin |&# [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-11)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="288.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-11)">apache.livy | apache.pig | apache.pinot | apache.spark | apprise | arangodb | asa [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="312.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">atlassian.jira | celery | cloudant | cncf.kubernetes | cohere | common.io | commo [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="337.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">daskexecutor | databricks | datadog | dbt.cloud | dingding | discord | docker [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="361.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">| exasol | facebook | ftp | github | google | grpc | hashicorp | h [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="386" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">| jenkins | microsoft.azure | microsoft.mssql | microsoft.psrp | microsoft.winrm | mongo&# [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="410.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">mysql | neo4j | odbc | openai | openfaas | openlineage | opensearch | o [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="434.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">pagerduty | papermill | pgvector | pinecone | plexus | postgres | presto |&# [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="459.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">| samba | segment | sendgrid | sftp | singularity | slack | smtp |  [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="483.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">tableau | tabular | telegram | trino | vertica | weaviate | yandex | ze [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-20)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-20)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="508" textLength="109.8" clip-path="url(#breeze-sbom-generate-provid [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-21)">│</text><text class="breeze-sbom-generate-providers-requirements-r1" x="292.8" y="532.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-21)">value to account for the most recent version of the provider     & [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-22)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="556.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-22)">(TEXT)                       [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-23)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-23)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="581.2" textLength="73.2" clip-path="url(#breeze-sbom-generate-p [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="605.6" textLength="1464" clip-path="url(#breeze-sbom-generate-providers-requirements-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-generate-providers-requirements-r1" x="1464" y="605.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-24)"> -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="630" textLength="24.4" clip-path="url(#breeze-sbom-generate-providers-requirements-line-25)">╭─</text><text class="breeze-sbom-generate-providers-requirements-r5" x="24.4" y="630" textLength="219.6" clip-path="url(#breeze-sbom-generate-providers-requirements-line-25)"> Parallel running </text><text class="breeze-sbom-generate-providers-requirements-r5" x="244" y="630" textLength="1195.6" clip-path [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-26)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-26)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="654.4" textLength="48.8" clip-path="url(#breeze-sbom-generate-p [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-27)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-27)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="678.8" textLength="146.4" clip-path="url(#breeze-sbom-generate- [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-28)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="378.2" y="703.2" textLength="915" clip-path="url(#breeze-sbom-generate-providers-requirements-line-28)">(INTEGER RANGE)                     [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-29)">│</text><text class="breeze-sbom-generate-providers-requirements-r5" x="378.2" y="727.6" textLength="915" clip-path="url(#breeze-sbom-generate-providers-requirements-line-29)">[default: 4; 1<=x<=8]                   [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-30)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-30)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="752" textLength="61" clip-path="url(#breeze-sbom-generate-providers [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-31)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-31)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="776.4" textLength="73.2" clip-path="url(#breeze-sbom-generate-p [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-32)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-32)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="800.8" textLength="97.6" clip-path="url(#breeze-sbom-generate-p [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="825.2" textLength="1464" clip-path="url(#breeze-sbom-generate-providers-requirements-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-generate-providers-requirements-r1" x="1464" y="825.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-33)"> -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="849.6" textLength="24.4" clip-path="url(#breeze-sbom-generate-providers-requirements-line-34)">╭─</text><text class="breeze-sbom-generate-providers-requirements-r5" x="24.4" y="849.6" textLength="195.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-34)"> Common options </text><text class="breeze-sbom-generate-providers-requirements-r5" x="219.6" y="849.6" textLength="1220" clip- [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-35)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-35)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="874" textLength="97.6" clip-path="url(#breeze-sbom-generate-provide [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-36)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-36)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="898.4" textLength="48.8" clip-path="url(#breeze-sbom-generate-p [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-37)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-37)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="922.8" textLength="85.4" clip-path="url(#breeze-sbom-generate-p [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-38)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-38)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="947.2" textLength="61" clip-path="url(#breeze-sbom-generate-pro [...] -</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="971.6" textLength="1464" clip-path="url(#breeze-sbom-generate-providers-requirements-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-generate-providers-requirements-r1" x="1464" y="971.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-39)"> +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-11)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="288.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-11)">apache.livy | apache.pig | apache.pinot | apache.spark | apache.sqoop | apprise |  [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="312.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">asana | atlassian.jira | celery | cloudant | cncf.kubernetes | cohere | common.io [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="337.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">| daskexecutor | databricks | datadog | dbt.cloud | dingding | discord | doc [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="361.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">elasticsearch | exasol | facebook | ftp | github | google | grpc | hash [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="386" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">influxdb | jdbc | jenkins | microsoft.azure | microsoft.mssql | microsoft.psrp |  [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="410.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">microsoft.winrm | mongo | mysql | neo4j | odbc | openai | openfaas | op [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="434.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">| opsgenie | oracle | pagerduty | papermill | pgvector | pinecone | plexus&# [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="459.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">| redis | salesforce | samba | segment | sendgrid | sftp | singularity  [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="483.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">snowflake | sqlite | ssh | tableau | tabular | telegram | trino | verti [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-20)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="508" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-20)">| zendesk)                      [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-21)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-21)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="532.4" textLength="109.8" clip-path="url(#breeze-sbom-generate- [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-22)">│</text><text class="breeze-sbom-generate-providers-requirements-r1" x="292.8" y="556.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-22)">value to account for the most recent version of the provider     & [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-23)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="581.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-23)">(TEXT)                       [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-24)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-24)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="605.6" textLength="73.2" clip-path="url(#breeze-sbom-generate-p [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="630" textLength="1464" clip-path="url(#breeze-sbom-generate-providers-requirements-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-generate-providers-requirements-r1" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-25)"> +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="654.4" textLength="24.4" clip-path="url(#breeze-sbom-generate-providers-requirements-line-26)">╭─</text><text class="breeze-sbom-generate-providers-requirements-r5" x="24.4" y="654.4" textLength="219.6" clip-path="url(#breeze-sbom-generate-providers-requirements-line-26)"> Parallel running </text><text class="breeze-sbom-generate-providers-requirements-r5" x="244" y="654.4" textLength="1195.6" cli [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-27)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-27)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="678.8" textLength="48.8" clip-path="url(#breeze-sbom-generate-p [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-28)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-28)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="703.2" textLength="146.4" clip-path="url(#breeze-sbom-generate- [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-29)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="378.2" y="727.6" textLength="915" clip-path="url(#breeze-sbom-generate-providers-requirements-line-29)">(INTEGER RANGE)                     [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-30)">│</text><text class="breeze-sbom-generate-providers-requirements-r5" x="378.2" y="752" textLength="915" clip-path="url(#breeze-sbom-generate-providers-requirements-line-30)">[default: 4; 1<=x<=8]                   [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-31)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-31)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="776.4" textLength="61" clip-path="url(#breeze-sbom-generate-pro [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-32)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-32)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="800.8" textLength="73.2" clip-path="url(#breeze-sbom-generate-p [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-33)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-33)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-sbom-generate-p [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="849.6" textLength="1464" clip-path="url(#breeze-sbom-generate-providers-requirements-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-generate-providers-requirements-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-34)"> +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="874" textLength="24.4" clip-path="url(#breeze-sbom-generate-providers-requirements-line-35)">╭─</text><text class="breeze-sbom-generate-providers-requirements-r5" x="24.4" y="874" textLength="195.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-35)"> Common options </text><text class="breeze-sbom-generate-providers-requirements-r5" x="219.6" y="874" textLength="1220" clip-path=" [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-36)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-36)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="898.4" textLength="97.6" clip-path="url(#breeze-sbom-generate-p [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-37)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-37)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="922.8" textLength="48.8" clip-path="url(#breeze-sbom-generate-p [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-38)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-38)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="947.2" textLength="85.4" clip-path="url(#breeze-sbom-generate-p [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-39)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-39)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="971.6" textLength="61" clip-path="url(#breeze-sbom-generate-pro [...] +</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="996" textLength="1464" clip-path="url(#breeze-sbom-generate-providers-requirements-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-generate-providers-requirements-r1" x="1464" y="996" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-40)"> </text> </g> </g> diff --git a/dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt b/dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt index 1bccc287fd..1af97158bb 100644 --- a/dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt +++ b/dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt @@ -1 +1 @@ -8e780d198e498e436d7ea11ba5ca1212 +344968a060e00ace19738cca47d70641 diff --git a/generated/provider_dependencies.json b/generated/provider_dependencies.json index 7af7c90bfc..6d65a6b754 100644 --- a/generated/provider_dependencies.json +++ b/generated/provider_dependencies.json @@ -243,6 +243,15 @@ "excluded-python-versions": [], "state": "ready" }, + "apache.sqoop": { + "deps": [ + "apache-airflow>=2.6.0" + ], + "devel-deps": [], + "cross-providers-deps": [], + "excluded-python-versions": [], + "state": "suspended" + }, "apprise": { "deps": [ "apache-airflow>=2.6.0", diff --git a/tests/auth/managers/fab/test_fab_auth_manager.py b/tests/auth/managers/fab/test_fab_auth_manager.py index 74d20ab13b..36271b1199 100644 --- a/tests/auth/managers/fab/test_fab_auth_manager.py +++ b/tests/auth/managers/fab/test_fab_auth_manager.py @@ -65,8 +65,12 @@ def auth_manager(): @pytest.fixture -def auth_manager_with_appbuilder(): - flask_app = Flask(__name__) +def flask_app(): + return Flask(__name__) + + +@pytest.fixture +def auth_manager_with_appbuilder(flask_app): appbuilder = init_appbuilder(flask_app) return FabAuthManager(appbuilder) @@ -357,6 +361,28 @@ class TestFabAuthManager: def test_security_manager_return_fab_security_manager_override(self, auth_manager_with_appbuilder): assert isinstance(auth_manager_with_appbuilder.security_manager, FabAirflowSecurityManagerOverride) + @pytest.mark.db_test + def test_security_manager_return_custom_provided(self, flask_app, auth_manager_with_appbuilder): + class TestSecurityManager(FabAirflowSecurityManagerOverride): + pass + + flask_app.config["SECURITY_MANAGER_CLASS"] = TestSecurityManager + assert isinstance(auth_manager_with_appbuilder.security_manager, TestSecurityManager) + + @pytest.mark.db_test + def test_security_manager_wrong_inheritance_raise_exception( + self, flask_app, auth_manager_with_appbuilder + ): + class TestSecurityManager: + pass + + flask_app.config["SECURITY_MANAGER_CLASS"] = TestSecurityManager + + with pytest.raises( + Exception, match="Your CUSTOM_SECURITY_MANAGER must extend AirflowSecurityManagerV2." + ): + auth_manager_with_appbuilder.security_manager + @pytest.mark.db_test def test_get_url_login_when_auth_view_not_defined(self, auth_manager_with_appbuilder): with pytest.raises(AirflowException, match="`auth_view` not defined in the security manager."):