apache-airflow-providers-hashicorp 3.7.0rc1__py3-none-any.whl → 3.7.0rc2__py3-none-any.whl
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.
Potentially problematic release.
This version of apache-airflow-providers-hashicorp might be problematic. Click here for more details.
- airflow/providers/hashicorp/__init__.py +2 -2
- airflow/providers/hashicorp/_internal_client/vault_client.py +42 -15
- airflow/providers/hashicorp/get_provider_info.py +6 -2
- airflow/providers/hashicorp/hooks/vault.py +8 -7
- airflow/providers/hashicorp/secrets/vault.py +12 -7
- {apache_airflow_providers_hashicorp-3.7.0rc1.dist-info → apache_airflow_providers_hashicorp-3.7.0rc2.dist-info}/METADATA +8 -5
- apache_airflow_providers_hashicorp-3.7.0rc2.dist-info/RECORD +13 -0
- apache_airflow_providers_hashicorp-3.7.0rc1.dist-info/RECORD +0 -13
- {apache_airflow_providers_hashicorp-3.7.0rc1.dist-info → apache_airflow_providers_hashicorp-3.7.0rc2.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_hashicorp-3.7.0rc1.dist-info → apache_airflow_providers_hashicorp-3.7.0rc2.dist-info}/entry_points.txt +0 -0
|
@@ -35,8 +35,8 @@ except ImportError:
|
|
|
35
35
|
from airflow.version import version as airflow_version
|
|
36
36
|
|
|
37
37
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
38
|
-
"2.
|
|
38
|
+
"2.7.0"
|
|
39
39
|
):
|
|
40
40
|
raise RuntimeError(
|
|
41
|
-
f"The package `apache-airflow-providers-hashicorp:{__version__}` needs Apache Airflow 2.
|
|
41
|
+
f"The package `apache-airflow-providers-hashicorp:{__version__}` needs Apache Airflow 2.7.0+"
|
|
42
42
|
)
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
# under the License.
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
import os
|
|
19
20
|
from functools import cached_property
|
|
20
21
|
|
|
21
22
|
import hvac
|
|
@@ -73,6 +74,9 @@ class _VaultClient(LoggingMixin):
|
|
|
73
74
|
:param key_id: Key ID for Authentication (for ``aws_iam`` and ''azure`` auth_type).
|
|
74
75
|
:param secret_id: Secret ID for Authentication (for ``approle``, ``aws_iam`` and ``azure`` auth_types).
|
|
75
76
|
:param role_id: Role ID for Authentication (for ``approle``, ``aws_iam`` auth_types).
|
|
77
|
+
:param assume_role_kwargs: AWS assume role param.
|
|
78
|
+
See AWS STS Docs:
|
|
79
|
+
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts/client/assume_role.html
|
|
76
80
|
:param kubernetes_role: Role for Authentication (for ``kubernetes`` auth_type).
|
|
77
81
|
:param kubernetes_jwt_path: Path for kubernetes jwt token (for ``kubernetes`` auth_type, default:
|
|
78
82
|
``/var/run/secrets/kubernetes.io/serviceaccount/token``).
|
|
@@ -102,6 +106,7 @@ class _VaultClient(LoggingMixin):
|
|
|
102
106
|
password: str | None = None,
|
|
103
107
|
key_id: str | None = None,
|
|
104
108
|
secret_id: str | None = None,
|
|
109
|
+
assume_role_kwargs: dict | None = None,
|
|
105
110
|
role_id: str | None = None,
|
|
106
111
|
kubernetes_role: str | None = None,
|
|
107
112
|
kubernetes_jwt_path: str | None = "/var/run/secrets/kubernetes.io/serviceaccount/token",
|
|
@@ -125,7 +130,7 @@ class _VaultClient(LoggingMixin):
|
|
|
125
130
|
raise VaultError(
|
|
126
131
|
f"The auth_type is not supported: {auth_type}. It should be one of {VALID_AUTH_TYPES}"
|
|
127
132
|
)
|
|
128
|
-
if auth_type == "token" and not token and not token_path:
|
|
133
|
+
if auth_type == "token" and not token and not token_path and "VAULT_TOKEN" not in os.environ:
|
|
129
134
|
raise VaultError("The 'token' authentication type requires 'token' or 'token_path'")
|
|
130
135
|
if auth_type == "github" and not token and not token_path:
|
|
131
136
|
raise VaultError("The 'github' authentication type requires 'token' or 'token_path'")
|
|
@@ -151,7 +156,7 @@ class _VaultClient(LoggingMixin):
|
|
|
151
156
|
self.url = url
|
|
152
157
|
self.auth_type = auth_type
|
|
153
158
|
self.kwargs = kwargs
|
|
154
|
-
self.token = token
|
|
159
|
+
self.token = token or os.getenv("VAULT_TOKEN", None)
|
|
155
160
|
self.token_path = token_path
|
|
156
161
|
self.auth_mount_point = auth_mount_point
|
|
157
162
|
self.mount_point = mount_point
|
|
@@ -160,6 +165,7 @@ class _VaultClient(LoggingMixin):
|
|
|
160
165
|
self.key_id = key_id
|
|
161
166
|
self.secret_id = secret_id
|
|
162
167
|
self.role_id = role_id
|
|
168
|
+
self.assume_role_kwargs = assume_role_kwargs
|
|
163
169
|
self.kubernetes_role = kubernetes_role
|
|
164
170
|
self.kubernetes_jwt_path = kubernetes_jwt_path
|
|
165
171
|
self.gcp_key_path = gcp_key_path
|
|
@@ -317,15 +323,36 @@ class _VaultClient(LoggingMixin):
|
|
|
317
323
|
)
|
|
318
324
|
|
|
319
325
|
def _auth_aws_iam(self, _client: hvac.Client) -> None:
|
|
320
|
-
if self.
|
|
321
|
-
|
|
322
|
-
access_key
|
|
323
|
-
secret_key
|
|
324
|
-
role
|
|
325
|
-
|
|
326
|
-
)
|
|
326
|
+
if self.key_id and self.secret_id:
|
|
327
|
+
auth_args = {
|
|
328
|
+
"access_key": self.key_id,
|
|
329
|
+
"secret_key": self.secret_id,
|
|
330
|
+
"role": self.role_id,
|
|
331
|
+
}
|
|
327
332
|
else:
|
|
328
|
-
|
|
333
|
+
import boto3
|
|
334
|
+
|
|
335
|
+
if self.assume_role_kwargs:
|
|
336
|
+
sts_client = boto3.client("sts")
|
|
337
|
+
credentials = sts_client.assume_role(**self.assume_role_kwargs)
|
|
338
|
+
auth_args = {
|
|
339
|
+
"access_key": credentials["Credentials"]["AccessKeyId"],
|
|
340
|
+
"secret_key": credentials["Credentials"]["SecretAccessKey"],
|
|
341
|
+
"session_token": credentials["Credentials"]["SessionToken"],
|
|
342
|
+
}
|
|
343
|
+
else:
|
|
344
|
+
session = boto3.Session()
|
|
345
|
+
credentials = session.get_credentials()
|
|
346
|
+
auth_args = {
|
|
347
|
+
"access_key": credentials.access_key,
|
|
348
|
+
"secret_key": credentials.secret_key,
|
|
349
|
+
"session_token": credentials.token,
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
if self.auth_mount_point:
|
|
353
|
+
auth_args["mount_point"] = self.auth_mount_point
|
|
354
|
+
|
|
355
|
+
_client.auth.aws.iam_login(**auth_args)
|
|
329
356
|
|
|
330
357
|
def _auth_approle(self, _client: hvac.Client) -> None:
|
|
331
358
|
if self.auth_mount_point:
|
|
@@ -387,7 +414,7 @@ class _VaultClient(LoggingMixin):
|
|
|
387
414
|
|
|
388
415
|
def get_secret_metadata(self, secret_path: str) -> dict | None:
|
|
389
416
|
"""
|
|
390
|
-
|
|
417
|
+
Read secret metadata (including versions) from the engine. It is only valid for KV version 2.
|
|
391
418
|
|
|
392
419
|
:param secret_path: The path of the secret.
|
|
393
420
|
:return: secret metadata. This is a Dict containing metadata for the secret.
|
|
@@ -409,7 +436,7 @@ class _VaultClient(LoggingMixin):
|
|
|
409
436
|
self, secret_path: str, secret_version: int | None = None
|
|
410
437
|
) -> dict | None:
|
|
411
438
|
"""
|
|
412
|
-
|
|
439
|
+
Read secret including metadata. It is only valid for KV version 2.
|
|
413
440
|
|
|
414
441
|
See https://hvac.readthedocs.io/en/stable/usage/secrets_engines/kv_v2.html for details.
|
|
415
442
|
|
|
@@ -443,7 +470,7 @@ class _VaultClient(LoggingMixin):
|
|
|
443
470
|
self, secret_path: str, secret: dict, method: str | None = None, cas: int | None = None
|
|
444
471
|
) -> Response:
|
|
445
472
|
"""
|
|
446
|
-
|
|
473
|
+
Create or updates secret.
|
|
447
474
|
|
|
448
475
|
:param secret_path: The path of the secret.
|
|
449
476
|
:param secret: Secret to create or update for the path specified
|
|
@@ -467,10 +494,10 @@ class _VaultClient(LoggingMixin):
|
|
|
467
494
|
mount_point, secret_path = self._parse_secret_path(secret_path)
|
|
468
495
|
if self.kv_engine_version == 1:
|
|
469
496
|
response = self.client.secrets.kv.v1.create_or_update_secret(
|
|
470
|
-
|
|
497
|
+
path=secret_path, secret=secret, mount_point=mount_point, method=method
|
|
471
498
|
)
|
|
472
499
|
else:
|
|
473
500
|
response = self.client.secrets.kv.v2.create_or_update_secret(
|
|
474
|
-
|
|
501
|
+
path=secret_path, secret=secret, mount_point=mount_point, cas=cas
|
|
475
502
|
)
|
|
476
503
|
return response
|
|
@@ -28,9 +28,12 @@ def get_provider_info():
|
|
|
28
28
|
"name": "Hashicorp",
|
|
29
29
|
"description": "Hashicorp including `Hashicorp Vault <https://www.vaultproject.io/>`__\n",
|
|
30
30
|
"state": "ready",
|
|
31
|
-
"source-date-epoch":
|
|
31
|
+
"source-date-epoch": 1714476565,
|
|
32
32
|
"versions": [
|
|
33
33
|
"3.7.0",
|
|
34
|
+
"3.6.4",
|
|
35
|
+
"3.6.3",
|
|
36
|
+
"3.6.2",
|
|
34
37
|
"3.6.1",
|
|
35
38
|
"3.6.0",
|
|
36
39
|
"3.5.0",
|
|
@@ -55,7 +58,7 @@ def get_provider_info():
|
|
|
55
58
|
"1.0.1",
|
|
56
59
|
"1.0.0",
|
|
57
60
|
],
|
|
58
|
-
"dependencies": ["apache-airflow>=2.
|
|
61
|
+
"dependencies": ["apache-airflow>=2.7.0", "hvac>=1.1.0"],
|
|
59
62
|
"integrations": [
|
|
60
63
|
{
|
|
61
64
|
"integration-name": "Hashicorp Vault",
|
|
@@ -77,4 +80,5 @@ def get_provider_info():
|
|
|
77
80
|
}
|
|
78
81
|
],
|
|
79
82
|
"secrets-backends": ["airflow.providers.hashicorp.secrets.vault.VaultBackend"],
|
|
83
|
+
"additional-extras": [{"name": "boto3", "dependencies": ["boto3>=1.33.0"]}],
|
|
80
84
|
}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
# specific language governing permissions and limitations
|
|
16
16
|
# under the License.
|
|
17
17
|
"""Hook for HashiCorp Vault."""
|
|
18
|
+
|
|
18
19
|
from __future__ import annotations
|
|
19
20
|
|
|
20
21
|
import json
|
|
@@ -125,7 +126,7 @@ class VaultHook(BaseHook):
|
|
|
125
126
|
radius_port: int | None = None,
|
|
126
127
|
**kwargs,
|
|
127
128
|
):
|
|
128
|
-
super().__init__(
|
|
129
|
+
super().__init__()
|
|
129
130
|
self.connection = self.get_connection(vault_conn_id)
|
|
130
131
|
|
|
131
132
|
if not auth_type:
|
|
@@ -290,7 +291,7 @@ class VaultHook(BaseHook):
|
|
|
290
291
|
|
|
291
292
|
def get_conn(self) -> hvac.Client:
|
|
292
293
|
"""
|
|
293
|
-
|
|
294
|
+
Retrieve connection to Vault.
|
|
294
295
|
|
|
295
296
|
:return: connection used.
|
|
296
297
|
"""
|
|
@@ -313,7 +314,7 @@ class VaultHook(BaseHook):
|
|
|
313
314
|
|
|
314
315
|
def get_secret_metadata(self, secret_path: str) -> dict | None:
|
|
315
316
|
"""
|
|
316
|
-
|
|
317
|
+
Read secret metadata (including versions) from the engine. It is only valid for KV version 2.
|
|
317
318
|
|
|
318
319
|
:param secret_path: Path to read from
|
|
319
320
|
:return: secret metadata. This is a Dict containing metadata for the secret.
|
|
@@ -327,7 +328,7 @@ class VaultHook(BaseHook):
|
|
|
327
328
|
self, secret_path: str, secret_version: int | None = None
|
|
328
329
|
) -> dict | None:
|
|
329
330
|
"""
|
|
330
|
-
|
|
331
|
+
Read secret including metadata. It is only valid for KV version 2.
|
|
331
332
|
|
|
332
333
|
See https://hvac.readthedocs.io/en/stable/usage/secrets_engines/kv_v2.html for details.
|
|
333
334
|
|
|
@@ -345,7 +346,7 @@ class VaultHook(BaseHook):
|
|
|
345
346
|
self, secret_path: str, secret: dict, method: str | None = None, cas: int | None = None
|
|
346
347
|
) -> Response:
|
|
347
348
|
"""
|
|
348
|
-
|
|
349
|
+
Create or updates secret.
|
|
349
350
|
|
|
350
351
|
:param secret_path: Path to read from
|
|
351
352
|
:param secret: Secret to create or update for the path specified
|
|
@@ -368,7 +369,7 @@ class VaultHook(BaseHook):
|
|
|
368
369
|
|
|
369
370
|
@classmethod
|
|
370
371
|
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
|
371
|
-
"""
|
|
372
|
+
"""Return connection widgets to add to connection form."""
|
|
372
373
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
|
373
374
|
from flask_babel import lazy_gettext
|
|
374
375
|
from wtforms import BooleanField, IntegerField, StringField
|
|
@@ -405,7 +406,7 @@ class VaultHook(BaseHook):
|
|
|
405
406
|
|
|
406
407
|
@classmethod
|
|
407
408
|
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
|
408
|
-
"""
|
|
409
|
+
"""Return custom field behaviour."""
|
|
409
410
|
return {
|
|
410
411
|
"hidden_fields": ["extra"],
|
|
411
412
|
"relabeling": {},
|
|
@@ -16,11 +16,13 @@
|
|
|
16
16
|
# specific language governing permissions and limitations
|
|
17
17
|
# under the License.
|
|
18
18
|
"""Objects relating to sourcing connections & variables from Hashicorp Vault."""
|
|
19
|
+
|
|
19
20
|
from __future__ import annotations
|
|
20
21
|
|
|
21
|
-
import warnings
|
|
22
22
|
from typing import TYPE_CHECKING
|
|
23
23
|
|
|
24
|
+
from deprecated import deprecated
|
|
25
|
+
|
|
24
26
|
from airflow.exceptions import AirflowProviderDeprecationWarning
|
|
25
27
|
from airflow.providers.hashicorp._internal_client.vault_client import _VaultClient
|
|
26
28
|
from airflow.secrets import BaseSecretsBackend
|
|
@@ -72,6 +74,9 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
|
|
|
72
74
|
:param key_id: Key ID for Authentication (for ``aws_iam`` and ''azure`` auth_type).
|
|
73
75
|
:param secret_id: Secret ID for Authentication (for ``approle``, ``aws_iam`` and ``azure`` auth_types).
|
|
74
76
|
:param role_id: Role ID for Authentication (for ``approle``, ``aws_iam`` auth_types).
|
|
77
|
+
:param assume_role_kwargs: AWS assume role param.
|
|
78
|
+
See AWS STS Docs:
|
|
79
|
+
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts/client/assume_role.html
|
|
75
80
|
:param kubernetes_role: Role for Authentication (for ``kubernetes`` auth_type).
|
|
76
81
|
:param kubernetes_jwt_path: Path for kubernetes jwt token (for ``kubernetes`` auth_type, default:
|
|
77
82
|
``/var/run/secrets/kubernetes.io/serviceaccount/token``).
|
|
@@ -105,6 +110,7 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
|
|
|
105
110
|
key_id: str | None = None,
|
|
106
111
|
secret_id: str | None = None,
|
|
107
112
|
role_id: str | None = None,
|
|
113
|
+
assume_role_kwargs: dict | None = None,
|
|
108
114
|
kubernetes_role: str | None = None,
|
|
109
115
|
kubernetes_jwt_path: str = "/var/run/secrets/kubernetes.io/serviceaccount/token",
|
|
110
116
|
gcp_key_path: str | None = None,
|
|
@@ -145,6 +151,7 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
|
|
|
145
151
|
key_id=key_id,
|
|
146
152
|
secret_id=secret_id,
|
|
147
153
|
role_id=role_id,
|
|
154
|
+
assume_role_kwargs=assume_role_kwargs,
|
|
148
155
|
kubernetes_role=kubernetes_role,
|
|
149
156
|
kubernetes_jwt_path=kubernetes_jwt_path,
|
|
150
157
|
gcp_key_path=gcp_key_path,
|
|
@@ -184,6 +191,10 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
|
|
|
184
191
|
secret_path=(mount_point + "/" if mount_point else "") + secret_path
|
|
185
192
|
)
|
|
186
193
|
|
|
194
|
+
@deprecated(
|
|
195
|
+
reason="Method `VaultBackend.get_conn_uri` is deprecated and will be removed in a future release.",
|
|
196
|
+
category=AirflowProviderDeprecationWarning,
|
|
197
|
+
)
|
|
187
198
|
def get_conn_uri(self, conn_id: str) -> str | None:
|
|
188
199
|
"""
|
|
189
200
|
Get serialized representation of connection.
|
|
@@ -193,12 +204,6 @@ class VaultBackend(BaseSecretsBackend, LoggingMixin):
|
|
|
193
204
|
"""
|
|
194
205
|
# Since VaultBackend implements `get_connection`, `get_conn_uri` is not used. So we
|
|
195
206
|
# don't need to implement (or direct users to use) method `get_conn_value` instead
|
|
196
|
-
warnings.warn(
|
|
197
|
-
f"Method `{self.__class__.__name__}.get_conn_uri` is deprecated and will be removed "
|
|
198
|
-
"in a future release.",
|
|
199
|
-
AirflowProviderDeprecationWarning,
|
|
200
|
-
stacklevel=2,
|
|
201
|
-
)
|
|
202
207
|
response = self.get_response(conn_id)
|
|
203
208
|
return response.get("conn_uri") if response else None
|
|
204
209
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: apache-airflow-providers-hashicorp
|
|
3
|
-
Version: 3.7.
|
|
3
|
+
Version: 3.7.0rc2
|
|
4
4
|
Summary: Provider package apache-airflow-providers-hashicorp for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,hashicorp,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
@@ -19,9 +19,11 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.9
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
23
|
Classifier: Topic :: System :: Monitoring
|
|
23
|
-
Requires-Dist: apache-airflow>=2.
|
|
24
|
+
Requires-Dist: apache-airflow>=2.7.0rc0
|
|
24
25
|
Requires-Dist: hvac>=1.1.0
|
|
26
|
+
Requires-Dist: boto3>=1.33.0 ; extra == "boto3"
|
|
25
27
|
Requires-Dist: apache-airflow-providers-google ; extra == "google"
|
|
26
28
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
27
29
|
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-hashicorp/3.7.0/changelog.html
|
|
@@ -30,6 +32,7 @@ Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
|
30
32
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
31
33
|
Project-URL: Twitter, https://twitter.com/ApacheAirflow
|
|
32
34
|
Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
35
|
+
Provides-Extra: boto3
|
|
33
36
|
Provides-Extra: google
|
|
34
37
|
|
|
35
38
|
|
|
@@ -76,7 +79,7 @@ Provides-Extra: google
|
|
|
76
79
|
|
|
77
80
|
Package ``apache-airflow-providers-hashicorp``
|
|
78
81
|
|
|
79
|
-
Release: ``3.7.0.
|
|
82
|
+
Release: ``3.7.0.rc2``
|
|
80
83
|
|
|
81
84
|
|
|
82
85
|
Hashicorp including `Hashicorp Vault <https://www.vaultproject.io/>`__
|
|
@@ -98,7 +101,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
|
|
|
98
101
|
for the minimum Airflow version supported) via
|
|
99
102
|
``pip install apache-airflow-providers-hashicorp``
|
|
100
103
|
|
|
101
|
-
The package supports the following python versions: 3.8,3.9,3.10,3.11
|
|
104
|
+
The package supports the following python versions: 3.8,3.9,3.10,3.11,3.12
|
|
102
105
|
|
|
103
106
|
Requirements
|
|
104
107
|
------------
|
|
@@ -106,7 +109,7 @@ Requirements
|
|
|
106
109
|
================== ==================
|
|
107
110
|
PIP package Version required
|
|
108
111
|
================== ==================
|
|
109
|
-
``apache-airflow`` ``>=2.
|
|
112
|
+
``apache-airflow`` ``>=2.7.0``
|
|
110
113
|
``hvac`` ``>=1.1.0``
|
|
111
114
|
================== ==================
|
|
112
115
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
airflow/providers/hashicorp/LICENSE,sha256=ywUBpKZc7Jb96rVt5I3IDbg7dIJAbUSHkuoDcF3jbH4,13569
|
|
2
|
+
airflow/providers/hashicorp/__init__.py,sha256=7tzswygZ8TCQhYXDblarFr8anGBhJOxGq5NpnXCxHWA,1584
|
|
3
|
+
airflow/providers/hashicorp/get_provider_info.py,sha256=cc57L-afbIWFV3nw_G1i-5XMo-lklVjplGR4Btm-xMA,2887
|
|
4
|
+
airflow/providers/hashicorp/_internal_client/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
5
|
+
airflow/providers/hashicorp/_internal_client/vault_client.py,sha256=-56JrdsuVmGRadQ2a4EudeIViFNbFfZtMSGC-Tn4IQA,22534
|
|
6
|
+
airflow/providers/hashicorp/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
7
|
+
airflow/providers/hashicorp/hooks/vault.py,sha256=FWz-aA2otpMox1jdoXCapY6yWqV-vYmC3ycnW5YYRwA,18790
|
|
8
|
+
airflow/providers/hashicorp/secrets/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
9
|
+
airflow/providers/hashicorp/secrets/vault.py,sha256=_jxZqLbHnqp047Rza5e5HA5cm7ZR2TRg7O1GKGWFpuA,12245
|
|
10
|
+
apache_airflow_providers_hashicorp-3.7.0rc2.dist-info/entry_points.txt,sha256=M338G3KvFSRu5IqEFm5Qheg_myVuQbsN_2EbAwcgqk4,105
|
|
11
|
+
apache_airflow_providers_hashicorp-3.7.0rc2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
12
|
+
apache_airflow_providers_hashicorp-3.7.0rc2.dist-info/METADATA,sha256=Ax3cwgZSVRxyPJYLHBwIoYY6iwZbPsiCDx70A9sKEuQ,5941
|
|
13
|
+
apache_airflow_providers_hashicorp-3.7.0rc2.dist-info/RECORD,,
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
airflow/providers/hashicorp/LICENSE,sha256=ywUBpKZc7Jb96rVt5I3IDbg7dIJAbUSHkuoDcF3jbH4,13569
|
|
2
|
-
airflow/providers/hashicorp/__init__.py,sha256=1CtuffEMtYeOhmGacOG_85MO775PQm92MAbonrKVScA,1584
|
|
3
|
-
airflow/providers/hashicorp/get_provider_info.py,sha256=wEd4Hu8aa7mO5W9b9UxyldvQuugr4cfTr1bRlzxoxCc,2739
|
|
4
|
-
airflow/providers/hashicorp/_internal_client/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
5
|
-
airflow/providers/hashicorp/_internal_client/vault_client.py,sha256=Jbhv3vBsfb9qCK_3oT9WQRzRJq2FIAGYX2a39xie4pk,21372
|
|
6
|
-
airflow/providers/hashicorp/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
7
|
-
airflow/providers/hashicorp/hooks/vault.py,sha256=xLeX8SjvKZ_2DuOj2gr1sEg3jH4Nm4JzOSNL53ln1Es,18838
|
|
8
|
-
airflow/providers/hashicorp/secrets/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
9
|
-
airflow/providers/hashicorp/secrets/vault.py,sha256=Z9b-A2gk4bgFijBlYmNWvUcf1RUTXnH7m82x2sORU_Q,11992
|
|
10
|
-
apache_airflow_providers_hashicorp-3.7.0rc1.dist-info/entry_points.txt,sha256=M338G3KvFSRu5IqEFm5Qheg_myVuQbsN_2EbAwcgqk4,105
|
|
11
|
-
apache_airflow_providers_hashicorp-3.7.0rc1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
12
|
-
apache_airflow_providers_hashicorp-3.7.0rc1.dist-info/METADATA,sha256=oMYJWF5GFr8SHxjf-312nhmyNSNdnuJbBYUB3bBwytQ,5817
|
|
13
|
-
apache_airflow_providers_hashicorp-3.7.0rc1.dist-info/RECORD,,
|
|
File without changes
|