Skip to content

Commit 29aab64

Browse files
authored
Adds secrets backend/logging/auth information to provider yaml (#17625)
This is preparatory work to automatically generate summary of secret backends, logging handlers, API auth backends for all providers. It adds logging/secrets-backends/auth-backends sections in the provider.yaml and refactors the code a little to extract common initialization routines to a decorator as well as common sanity check that imports classes/modules and checks if community providers are using correct package prefix. The provider manager is also simplified by removing the unnecessary `_add` methods.
1 parent f38ebaf commit 29aab64

File tree

12 files changed

+327
-64
lines changed

12 files changed

+327
-64
lines changed

β€Žairflow/cli/cli_parser.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,6 +1267,24 @@ class GroupCommand(NamedTuple):
12671267
func=lazy_load_command('airflow.cli.commands.provider_command.connection_field_behaviours'),
12681268
args=(ARG_OUTPUT, ARG_VERBOSE),
12691269
),
1270+
ActionCommand(
1271+
name='logging',
1272+
help='Get information about task logging handlers provided',
1273+
func=lazy_load_command('airflow.cli.commands.provider_command.logging_list'),
1274+
args=(ARG_OUTPUT, ARG_VERBOSE),
1275+
),
1276+
ActionCommand(
1277+
name='secrets',
1278+
help='Get information about secrets backends provided',
1279+
func=lazy_load_command('airflow.cli.commands.provider_command.secrets_backends_list'),
1280+
args=(ARG_OUTPUT, ARG_VERBOSE),
1281+
),
1282+
ActionCommand(
1283+
name='auth',
1284+
help='Get information about API auth backends provided',
1285+
func=lazy_load_command('airflow.cli.commands.provider_command.auth_backend_list'),
1286+
args=(ARG_OUTPUT, ARG_VERBOSE),
1287+
),
12701288
)
12711289

12721290
USERS_COMMANDS = (

β€Žairflow/cli/commands/provider_command.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,39 @@ def extra_links_list(args):
113113
"extra_link_class_name": x,
114114
},
115115
)
116+
117+
118+
@suppress_logs_and_warning
119+
def logging_list(args):
120+
"""Lists all log task handlers at the command line"""
121+
AirflowConsole().print_as(
122+
data=list(ProvidersManager().logging_class_names),
123+
output=args.output,
124+
mapper=lambda x: {
125+
"logging_class_name": x,
126+
},
127+
)
128+
129+
130+
@suppress_logs_and_warning
131+
def secrets_backends_list(args):
132+
"""Lists all secrets backends at the command line"""
133+
AirflowConsole().print_as(
134+
data=list(ProvidersManager().secrets_backend_class_names),
135+
output=args.output,
136+
mapper=lambda x: {
137+
"secrets_backend_class_name": x,
138+
},
139+
)
140+
141+
142+
@suppress_logs_and_warning
143+
def auth_backend_list(args):
144+
"""Lists all API auth backend modules at the command line"""
145+
AirflowConsole().print_as(
146+
data=list(ProvidersManager().auth_backend_module_names),
147+
output=args.output,
148+
mapper=lambda x: {
149+
"api_auth_backand_module": x,
150+
},
151+
)

β€Žairflow/provider.yaml.schema.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,27 @@
210210
"additional-extras": {
211211
"type": "object",
212212
"description": "Additional extras that the provider should have"
213+
},
214+
"secrets-backends": {
215+
"type": "array",
216+
"description": "Secrets Backend class names",
217+
"items": {
218+
"type": "string"
219+
}
220+
},
221+
"logging": {
222+
"type": "array",
223+
"description": "Logging Task Handlers class names",
224+
"items": {
225+
"type": "string"
226+
}
227+
},
228+
"auth-backends": {
229+
"type": "array",
230+
"description": "API Auth Backend module names",
231+
"items": {
232+
"type": "string"
233+
}
213234
}
214235
},
215236
"additionalProperties": false,

β€Žairflow/provider_info.schema.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,27 @@
2727
"items": {
2828
"type": "string"
2929
}
30+
},
31+
"secrets-backends": {
32+
"type": "array",
33+
"description": "Secrets Backend class names",
34+
"items": {
35+
"type": "string"
36+
}
37+
},
38+
"logging": {
39+
"type": "array",
40+
"description": "Logging Task Handlers class names",
41+
"items": {
42+
"type": "string"
43+
}
44+
},
45+
"auth-backends": {
46+
"type": "array",
47+
"description": "API Auth Backend module names",
48+
"items": {
49+
"type": "string"
50+
}
3051
}
3152
},
3253
"required": [

β€Žairflow/providers/amazon/provider.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,3 +399,11 @@ hook-class-names:
399399
- airflow.providers.amazon.aws.hooks.s3.S3Hook
400400
- airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook
401401
- airflow.providers.amazon.aws.hooks.emr.EmrHook
402+
403+
secrets-backends:
404+
- airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
405+
- airflow.providers.amazon.aws.secrets.systems_manager.SystemsManagerParameterStoreBackend
406+
407+
logging:
408+
- airflow.providers.amazon.aws.log.s3_task_handler.S3TaskHandler
409+
- airflow.providers.amazon.aws.log.cloudwatch_task_handler.CloudwatchTaskHandler

β€Žairflow/providers/elasticsearch/provider.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,6 @@ hooks:
4646

4747
hook-class-names:
4848
- airflow.providers.elasticsearch.hooks.elasticsearch.ElasticsearchHook
49+
50+
logging:
51+
- airflow.providers.elasticsearch.log.es_task_handler.ElasticsearchTaskHandler

β€Žairflow/providers/google/provider.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,3 +757,13 @@ extra-links:
757757
additional-extras:
758758
apache.beam: apache-beam[gcp]
759759
leveldb: plyvel
760+
761+
secrets-backends:
762+
- airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend
763+
764+
auth-backends:
765+
- airflow.providers.google.common.auth_backend.google_openid
766+
767+
logging:
768+
- airflow.providers.google.cloud.log.gcs_task_handler.GCSTaskHandler
769+
- airflow.providers.google.cloud.log.stackdriver_task_handler.StackdriverTaskHandler

β€Žairflow/providers/hashicorp/provider.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,6 @@ hooks:
4343

4444
hook-class-names:
4545
- airflow.providers.hashicorp.hooks.vault.VaultHook
46+
47+
secrets-backends:
48+
- airflow.providers.hashicorp.secrets.vault.VaultBackend

β€Žairflow/providers/microsoft/azure/provider.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,9 @@ hook-class-names:
165165
- airflow.providers.microsoft.azure.hooks.wasb.WasbHook
166166
- airflow.providers.microsoft.azure.hooks.azure_data_factory.AzureDataFactoryHook
167167
- airflow.providers.microsoft.azure.hooks.azure_container_registry.AzureContainerRegistryHook
168+
169+
secrets-backends:
170+
- airflow.providers.microsoft.azure.secrets.azure_key_vault.AzureKeyVaultBackend
171+
172+
logging:
173+
- airflow.providers.microsoft.azure.log.wasb_task_handler.WasbTaskHandler

0 commit comments

Comments
 (0)