elaunira-airflow-provider-r2index 0.2.0__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/PKG-INFO +1 -1
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/pyproject.toml +1 -1
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/src/elaunira/airflow/provider/r2index/hooks/r2index.py +8 -12
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/.gitignore +0 -0
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/LICENSE +0 -0
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/README.md +0 -0
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/src/elaunira/__init__.py +0 -0
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/src/elaunira/airflow/__init__.py +0 -0
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/src/elaunira/airflow/provider/__init__.py +0 -0
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/src/elaunira/airflow/provider/r2index/__init__.py +0 -0
- {elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/src/elaunira/airflow/provider/r2index/hooks/__init__.py +0 -0
{elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: elaunira-airflow-provider-r2index
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Airflow provider for Elaunira R2Index connections
|
|
5
5
|
Project-URL: Repository, https://github.com/elaunira/elaunira-airflow-provider-r2index
|
|
6
6
|
License-Expression: MIT
|
|
@@ -25,7 +25,7 @@ class R2IndexHook(BaseHook):
|
|
|
25
25
|
{
|
|
26
26
|
"vault_conn_id": "openbao_default",
|
|
27
27
|
"vault_namespace": "elaunira/production",
|
|
28
|
-
"
|
|
28
|
+
"vault_secrets_mapping": {
|
|
29
29
|
"r2index_api_url": "cloudflare/r2index#api-url",
|
|
30
30
|
"r2index_api_token": "cloudflare/r2index#api-token",
|
|
31
31
|
"r2_access_key_id": "cloudflare/r2/airflow#access-key-id",
|
|
@@ -37,7 +37,7 @@ class R2IndexHook(BaseHook):
|
|
|
37
37
|
The vault_conn_id references an Airflow HashiCorp Vault connection
|
|
38
38
|
configured with AppRole or other auth method.
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
vault_secrets_mapping format: "path#key" or "path" (uses config key as secret key)
|
|
41
41
|
Required keys:
|
|
42
42
|
- r2index_api_url
|
|
43
43
|
- r2index_api_token
|
|
@@ -87,7 +87,7 @@ class R2IndexHook(BaseHook):
|
|
|
87
87
|
"password": "API token for direct connection",
|
|
88
88
|
"vault_conn_id": "openbao-myservice",
|
|
89
89
|
"vault_namespace": "myservice/production",
|
|
90
|
-
"
|
|
90
|
+
"vault_secrets_mapping": '{"r2index_api_url": "cloudflare/r2index#api-url", ...}',
|
|
91
91
|
"r2_access_key_id": "Direct mode: R2 access key ID",
|
|
92
92
|
"r2_secret_access_key": "Direct mode: R2 secret access key",
|
|
93
93
|
"r2_endpoint_url": "https://account.r2.cloudflarestorage.com",
|
|
@@ -97,13 +97,9 @@ class R2IndexHook(BaseHook):
|
|
|
97
97
|
@classmethod
|
|
98
98
|
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
|
99
99
|
"""Define custom connection form widgets."""
|
|
100
|
-
from flask_appbuilder.fieldwidgets import
|
|
101
|
-
BS3PasswordFieldWidget,
|
|
102
|
-
BS3TextAreaFieldWidget,
|
|
103
|
-
BS3TextFieldWidget,
|
|
104
|
-
)
|
|
100
|
+
from flask_appbuilder.fieldwidgets import BS3PasswordFieldWidget, BS3TextFieldWidget
|
|
105
101
|
from flask_babel import lazy_gettext
|
|
106
|
-
from wtforms import PasswordField, StringField
|
|
102
|
+
from wtforms import PasswordField, StringField
|
|
107
103
|
|
|
108
104
|
return {
|
|
109
105
|
"vault_conn_id": StringField(
|
|
@@ -116,9 +112,9 @@ class R2IndexHook(BaseHook):
|
|
|
116
112
|
widget=BS3TextFieldWidget(),
|
|
117
113
|
description="OpenBao namespace (e.g., elaunira/production)",
|
|
118
114
|
),
|
|
119
|
-
"
|
|
115
|
+
"vault_secrets_mapping": StringField(
|
|
120
116
|
lazy_gettext("Vault Secrets (JSON)"),
|
|
121
|
-
widget=
|
|
117
|
+
widget=BS3TextFieldWidget(),
|
|
122
118
|
description="JSON mapping of config keys to secret paths",
|
|
123
119
|
),
|
|
124
120
|
"r2_access_key_id": StringField(
|
|
@@ -217,7 +213,7 @@ class R2IndexHook(BaseHook):
|
|
|
217
213
|
|
|
218
214
|
vault_conn_id = extra.get("vault_conn_id")
|
|
219
215
|
if vault_conn_id:
|
|
220
|
-
secrets_raw = extra.get("
|
|
216
|
+
secrets_raw = extra.get("vault_secrets_mapping")
|
|
221
217
|
if not secrets_raw:
|
|
222
218
|
return None
|
|
223
219
|
if isinstance(secrets_raw, str):
|
{elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
{elaunira_airflow_provider_r2index-0.2.0 → elaunira_airflow_provider_r2index-0.2.2}/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|