apache-airflow-providers-yandex 4.1.1rc1__tar.gz → 4.2.0rc1__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.
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/PKG-INFO +15 -33
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/README.rst +9 -27
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/changelog.rst +24 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/index.rst +8 -34
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/provider.yaml +5 -1
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/pyproject.toml +6 -6
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/__init__.py +1 -1
- {apache_airflow_providers_yandex-4.1.1rc1/tests/system → apache_airflow_providers_yandex-4.2.0rc1/src/airflow/providers}/__init__.py +1 -1
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/__init__.py +1 -1
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/hooks/yandex.py +1 -5
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/operators/dataproc.py +16 -4
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/version_compat.py +9 -0
- {apache_airflow_providers_yandex-4.1.1rc1/tests/unit → apache_airflow_providers_yandex-4.2.0rc1/tests/system}/__init__.py +1 -1
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/system/yandex/example_yandexcloud.py +6 -1
- {apache_airflow_providers_yandex-4.1.1rc1/src/airflow/providers → apache_airflow_providers_yandex-4.2.0rc1/tests/unit}/__init__.py +1 -1
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/hooks/test_dataproc.py +4 -3
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/hooks/test_yandex.py +2 -1
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/hooks/test_yq.py +2 -1
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/links/test_yq.py +9 -3
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/operators/test_dataproc.py +70 -2
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/operators/test_yq.py +3 -2
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/secrets/test_lockbox.py +3 -2
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/.latest-doc-only-change.txt +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/commits.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/configurations-ref.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/connections/yandexcloud.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/integration-logos/Yandex-Cloud.png +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/operators/dataproc.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/operators/index.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/operators/yq.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/secrets-backends/yandex-cloud-lockbox-secret-backend.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/LICENSE +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/get_provider_info.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/hooks/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/hooks/dataproc.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/hooks/yq.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/links/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/links/yq.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/operators/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/operators/yq.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/secrets/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/secrets/lockbox.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/utils/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/utils/credentials.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/utils/defaults.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/utils/fields.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/src/airflow/providers/yandex/utils/user_agent.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/system/yandex/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/system/yandex/example_yandexcloud_dataproc.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/system/yandex/example_yandexcloud_dataproc_lightweight.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/system/yandex/example_yandexcloud_yq.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/hooks/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/links/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/operators/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/secrets/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/utils/__init__.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/utils/test_credentials.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/utils/test_defaults.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/utils/test_fields.py +0 -0
- {apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/tests/unit/yandex/utils/test_user_agent.py +0 -0
{apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/PKG-INFO
RENAMED
@@ -1,11 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: apache-airflow-providers-yandex
|
3
|
-
Version: 4.
|
3
|
+
Version: 4.2.0rc1
|
4
4
|
Summary: Provider package apache-airflow-providers-yandex for Apache Airflow
|
5
5
|
Keywords: airflow-provider,yandex,airflow,integration
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
7
7
|
Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
|
8
|
-
Requires-Python:
|
8
|
+
Requires-Python: >=3.10,!=3.13
|
9
9
|
Description-Content-Type: text/x-rst
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
11
11
|
Classifier: Environment :: Console
|
@@ -20,12 +20,12 @@ Classifier: Programming Language :: Python :: 3.11
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
21
21
|
Classifier: Topic :: System :: Monitoring
|
22
22
|
Requires-Dist: apache-airflow>=2.10.0rc1
|
23
|
-
Requires-Dist: yandexcloud>=0.308.0
|
24
|
-
Requires-Dist: yandex-query-client>=0.1.4
|
23
|
+
Requires-Dist: yandexcloud>=0.308.0; python_version < '3.13'
|
24
|
+
Requires-Dist: yandex-query-client>=0.1.4; python_version < '3.13'
|
25
25
|
Requires-Dist: apache-airflow-providers-common-compat ; extra == "common-compat"
|
26
26
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
27
|
-
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-yandex/4.
|
28
|
-
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-yandex/4.
|
27
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-yandex/4.2.0/changelog.html
|
28
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-yandex/4.2.0
|
29
29
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
30
30
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
31
31
|
Project-URL: Source Code, https://github.com/apache/airflow
|
@@ -57,8 +57,9 @@ Provides-Extra: common-compat
|
|
57
57
|
|
58
58
|
Package ``apache-airflow-providers-yandex``
|
59
59
|
|
60
|
-
Release: ``4.
|
60
|
+
Release: ``4.2.0``
|
61
61
|
|
62
|
+
Release Date: ``|PypiReleaseDate|``
|
62
63
|
|
63
64
|
This package is for Yandex, including:
|
64
65
|
|
@@ -72,7 +73,7 @@ This is a provider package for ``yandex`` provider. All classes for this provide
|
|
72
73
|
are in ``airflow.providers.yandex`` python package.
|
73
74
|
|
74
75
|
You can find package information and changelog for the provider
|
75
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-yandex/4.
|
76
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-yandex/4.2.0/>`_.
|
76
77
|
|
77
78
|
Installation
|
78
79
|
------------
|
@@ -86,33 +87,14 @@ The package supports the following python versions: 3.10,3.11,3.12
|
|
86
87
|
Requirements
|
87
88
|
------------
|
88
89
|
|
89
|
-
=======================
|
90
|
+
======================= ======================================
|
90
91
|
PIP package Version required
|
91
|
-
=======================
|
92
|
+
======================= ======================================
|
92
93
|
``apache-airflow`` ``>=2.10.0``
|
93
|
-
``yandexcloud`` ``>=0.308.0``
|
94
|
-
``yandex-query-client`` ``>=0.1.4``
|
95
|
-
=======================
|
96
|
-
|
97
|
-
Cross provider package dependencies
|
98
|
-
-----------------------------------
|
99
|
-
|
100
|
-
Those are dependencies that might be needed in order to use all the features of the package.
|
101
|
-
You need to install the specified providers in order to use them.
|
102
|
-
|
103
|
-
You can install such cross-provider dependencies when installing from PyPI. For example:
|
104
|
-
|
105
|
-
.. code-block:: bash
|
106
|
-
|
107
|
-
pip install apache-airflow-providers-yandex[common.compat]
|
108
|
-
|
109
|
-
|
110
|
-
================================================================================================================== =================
|
111
|
-
Dependent package Extra
|
112
|
-
================================================================================================================== =================
|
113
|
-
`apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
|
114
|
-
================================================================================================================== =================
|
94
|
+
``yandexcloud`` ``>=0.308.0; python_version < "3.13"``
|
95
|
+
``yandex-query-client`` ``>=0.1.4; python_version < "3.13"``
|
96
|
+
======================= ======================================
|
115
97
|
|
116
98
|
The changelog for the provider package can be found in the
|
117
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-yandex/4.
|
99
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-yandex/4.2.0/changelog.html>`_.
|
118
100
|
|
{apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/README.rst
RENAMED
@@ -23,8 +23,9 @@
|
|
23
23
|
|
24
24
|
Package ``apache-airflow-providers-yandex``
|
25
25
|
|
26
|
-
Release: ``4.
|
26
|
+
Release: ``4.2.0``
|
27
27
|
|
28
|
+
Release Date: ``|PypiReleaseDate|``
|
28
29
|
|
29
30
|
This package is for Yandex, including:
|
30
31
|
|
@@ -38,7 +39,7 @@ This is a provider package for ``yandex`` provider. All classes for this provide
|
|
38
39
|
are in ``airflow.providers.yandex`` python package.
|
39
40
|
|
40
41
|
You can find package information and changelog for the provider
|
41
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-yandex/4.
|
42
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-yandex/4.2.0/>`_.
|
42
43
|
|
43
44
|
Installation
|
44
45
|
------------
|
@@ -52,32 +53,13 @@ The package supports the following python versions: 3.10,3.11,3.12
|
|
52
53
|
Requirements
|
53
54
|
------------
|
54
55
|
|
55
|
-
=======================
|
56
|
+
======================= ======================================
|
56
57
|
PIP package Version required
|
57
|
-
=======================
|
58
|
+
======================= ======================================
|
58
59
|
``apache-airflow`` ``>=2.10.0``
|
59
|
-
``yandexcloud`` ``>=0.308.0``
|
60
|
-
``yandex-query-client`` ``>=0.1.4``
|
61
|
-
=======================
|
62
|
-
|
63
|
-
Cross provider package dependencies
|
64
|
-
-----------------------------------
|
65
|
-
|
66
|
-
Those are dependencies that might be needed in order to use all the features of the package.
|
67
|
-
You need to install the specified providers in order to use them.
|
68
|
-
|
69
|
-
You can install such cross-provider dependencies when installing from PyPI. For example:
|
70
|
-
|
71
|
-
.. code-block:: bash
|
72
|
-
|
73
|
-
pip install apache-airflow-providers-yandex[common.compat]
|
74
|
-
|
75
|
-
|
76
|
-
================================================================================================================== =================
|
77
|
-
Dependent package Extra
|
78
|
-
================================================================================================================== =================
|
79
|
-
`apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
|
80
|
-
================================================================================================================== =================
|
60
|
+
``yandexcloud`` ``>=0.308.0; python_version < "3.13"``
|
61
|
+
``yandex-query-client`` ``>=0.1.4; python_version < "3.13"``
|
62
|
+
======================= ======================================
|
81
63
|
|
82
64
|
The changelog for the provider package can be found in the
|
83
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-yandex/4.
|
65
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-yandex/4.2.0/changelog.html>`_.
|
@@ -27,6 +27,30 @@
|
|
27
27
|
Changelog
|
28
28
|
---------
|
29
29
|
|
30
|
+
4.2.0
|
31
|
+
.....
|
32
|
+
|
33
|
+
Features
|
34
|
+
~~~~~~~~
|
35
|
+
|
36
|
+
* ``Add environment and oslogin for yandex dataproc create cluster (#52973)``
|
37
|
+
|
38
|
+
Misc
|
39
|
+
~~~~
|
40
|
+
|
41
|
+
* ``Fix unreachable code errors in yandex provider (#53453)``
|
42
|
+
* ``Add Python 3.13 support for Airflow. (#46891)``
|
43
|
+
* ``Remove type ignore across codebase after mypy upgrade (#53243)``
|
44
|
+
* ``Remove upper-binding for "python-requires" (#52980)``
|
45
|
+
* ``Temporarily switch to use >=,< pattern instead of '~=' (#52967)``
|
46
|
+
* ``Moving BaseHook usages to version_compat for yandex (#52963)``
|
47
|
+
|
48
|
+
.. Below changes are excluded from the changelog. Move them to
|
49
|
+
appropriate section above if needed. Do not delete the lines(!):
|
50
|
+
* ``Deprecate decorators from Core (#53629)``
|
51
|
+
* ``Cleanup type ignores in yandex provider where possible (#53251)``
|
52
|
+
* ``Make dag_version_id in TI non-nullable (#50825)``
|
53
|
+
|
30
54
|
4.1.1
|
31
55
|
.....
|
32
56
|
|
{apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/index.rst
RENAMED
@@ -81,7 +81,9 @@ This package is for Yandex, including:
|
|
81
81
|
- `Yandex.Cloud <https://cloud.yandex.com/>`__
|
82
82
|
|
83
83
|
|
84
|
-
Release: 4.
|
84
|
+
Release: 4.2.0
|
85
|
+
|
86
|
+
Release Date: ``|PypiReleaseDate|``
|
85
87
|
|
86
88
|
Provider package
|
87
89
|
----------------
|
@@ -101,38 +103,10 @@ Requirements
|
|
101
103
|
|
102
104
|
The minimum Apache Airflow version supported by this provider distribution is ``2.10.0``.
|
103
105
|
|
104
|
-
=======================
|
106
|
+
======================= ======================================
|
105
107
|
PIP package Version required
|
106
|
-
=======================
|
108
|
+
======================= ======================================
|
107
109
|
``apache-airflow`` ``>=2.10.0``
|
108
|
-
``yandexcloud`` ``>=0.308.0``
|
109
|
-
``yandex-query-client`` ``>=0.1.4``
|
110
|
-
=======================
|
111
|
-
|
112
|
-
Cross provider package dependencies
|
113
|
-
-----------------------------------
|
114
|
-
|
115
|
-
Those are dependencies that might be needed in order to use all the features of the package.
|
116
|
-
You need to install the specified provider distributions in order to use them.
|
117
|
-
|
118
|
-
You can install such cross-provider dependencies when installing from PyPI. For example:
|
119
|
-
|
120
|
-
.. code-block:: bash
|
121
|
-
|
122
|
-
pip install apache-airflow-providers-yandex[common.compat]
|
123
|
-
|
124
|
-
|
125
|
-
================================================================================================================== =================
|
126
|
-
Dependent package Extra
|
127
|
-
================================================================================================================== =================
|
128
|
-
`apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
|
129
|
-
================================================================================================================== =================
|
130
|
-
|
131
|
-
Downloading official packages
|
132
|
-
-----------------------------
|
133
|
-
|
134
|
-
You can download officially released packages and verify their checksums and signatures from the
|
135
|
-
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
136
|
-
|
137
|
-
* `The apache-airflow-providers-yandex 4.1.1 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_yandex-4.1.1.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_yandex-4.1.1.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_yandex-4.1.1.tar.gz.sha512>`__)
|
138
|
-
* `The apache-airflow-providers-yandex 4.1.1 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_yandex-4.1.1-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_yandex-4.1.1-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_yandex-4.1.1-py3-none-any.whl.sha512>`__)
|
110
|
+
``yandexcloud`` ``>=0.308.0; python_version < "3.13"``
|
111
|
+
``yandex-query-client`` ``>=0.1.4; python_version < "3.13"``
|
112
|
+
======================= ======================================
|
{apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/provider.yaml
RENAMED
@@ -23,12 +23,13 @@ description: |
|
|
23
23
|
|
24
24
|
- `Yandex.Cloud <https://cloud.yandex.com/>`__
|
25
25
|
state: ready
|
26
|
-
source-date-epoch:
|
26
|
+
source-date-epoch: 1753692100
|
27
27
|
# Note that those versions are maintained by release manager - do not update them manually
|
28
28
|
# with the exception of case where other provider in sources has >= new provider version.
|
29
29
|
# In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
|
30
30
|
# to be done in the same PR
|
31
31
|
versions:
|
32
|
+
- 4.2.0
|
32
33
|
- 4.1.1
|
33
34
|
- 4.1.0
|
34
35
|
- 4.0.3
|
@@ -60,6 +61,9 @@ versions:
|
|
60
61
|
- 1.0.1
|
61
62
|
- 1.0.0
|
62
63
|
|
64
|
+
excluded-python-versions:
|
65
|
+
- "3.13"
|
66
|
+
|
63
67
|
integrations:
|
64
68
|
- integration-name: Yandex.Cloud
|
65
69
|
external-doc-url: https://cloud.yandex.com/
|
{apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/pyproject.toml
RENAMED
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
25
25
|
|
26
26
|
[project]
|
27
27
|
name = "apache-airflow-providers-yandex"
|
28
|
-
version = "4.
|
28
|
+
version = "4.2.0rc1"
|
29
29
|
description = "Provider package apache-airflow-providers-yandex for Apache Airflow"
|
30
30
|
readme = "README.rst"
|
31
31
|
authors = [
|
@@ -49,7 +49,7 @@ classifiers = [
|
|
49
49
|
"Programming Language :: Python :: 3.12",
|
50
50
|
"Topic :: System :: Monitoring",
|
51
51
|
]
|
52
|
-
requires-python = "
|
52
|
+
requires-python = ">=3.10,!=3.13"
|
53
53
|
|
54
54
|
# The dependencies should be modified in place in the generated file.
|
55
55
|
# Any change in the dependencies is preserved when the file is regenerated
|
@@ -57,8 +57,8 @@ requires-python = "~=3.10"
|
|
57
57
|
# After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
|
58
58
|
dependencies = [
|
59
59
|
"apache-airflow>=2.10.0rc1",
|
60
|
-
"yandexcloud>=0.308.0",
|
61
|
-
"yandex-query-client>=0.1.4",
|
60
|
+
"yandexcloud>=0.308.0; python_version < '3.13'",
|
61
|
+
"yandex-query-client>=0.1.4; python_version < '3.13'",
|
62
62
|
]
|
63
63
|
|
64
64
|
# The optional dependencies should be modified in place in the generated file
|
@@ -103,8 +103,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
103
103
|
apache-airflow-providers-standard = {workspace = true}
|
104
104
|
|
105
105
|
[project.urls]
|
106
|
-
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-yandex/4.
|
107
|
-
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-yandex/4.
|
106
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-yandex/4.2.0"
|
107
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-yandex/4.2.0/changelog.html"
|
108
108
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
109
109
|
"Source Code" = "https://github.com/apache/airflow"
|
110
110
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
@@ -14,4 +14,4 @@
|
|
14
14
|
# KIND, either express or implied. See the License for the
|
15
15
|
# specific language governing permissions and limitations
|
16
16
|
# under the License.
|
17
|
-
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
17
|
+
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
@@ -14,4 +14,4 @@
|
|
14
14
|
# KIND, either express or implied. See the License for the
|
15
15
|
# specific language governing permissions and limitations
|
16
16
|
# under the License.
|
17
|
-
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
17
|
+
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
29
29
|
|
30
30
|
__all__ = ["__version__"]
|
31
31
|
|
32
|
-
__version__ = "4.
|
32
|
+
__version__ = "4.2.0"
|
33
33
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
35
35
|
"2.10.0"
|
@@ -28,11 +28,7 @@ from airflow.providers.yandex.utils.credentials import (
|
|
28
28
|
from airflow.providers.yandex.utils.defaults import conn_name_attr, conn_type, default_conn_name, hook_name
|
29
29
|
from airflow.providers.yandex.utils.fields import get_field_from_extras
|
30
30
|
from airflow.providers.yandex.utils.user_agent import provider_user_agent
|
31
|
-
|
32
|
-
try:
|
33
|
-
from airflow.sdk import BaseHook
|
34
|
-
except ImportError:
|
35
|
-
from airflow.hooks.base import BaseHook # type: ignore[attr-defined,no-redef]
|
31
|
+
from airflow.providers.yandex.version_compat import BaseHook
|
36
32
|
|
37
33
|
|
38
34
|
class YandexCloudBaseHook(BaseHook):
|
@@ -14,12 +14,15 @@
|
|
14
14
|
# KIND, either express or implied. See the License for the
|
15
15
|
# specific language governing permissions and limitations
|
16
16
|
# under the License.
|
17
|
+
|
17
18
|
from __future__ import annotations
|
18
19
|
|
19
20
|
from collections.abc import Iterable, Sequence
|
20
21
|
from dataclasses import dataclass
|
21
22
|
from typing import TYPE_CHECKING
|
22
23
|
|
24
|
+
import yandexcloud
|
25
|
+
|
23
26
|
from airflow.providers.yandex.hooks.dataproc import DataprocHook
|
24
27
|
from airflow.providers.yandex.version_compat import BaseOperator
|
25
28
|
|
@@ -54,6 +57,7 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
54
57
|
Currently there are ru-central1-a, ru-central1-b and ru-central1-c.
|
55
58
|
:param service_account_id: Service account id for the cluster.
|
56
59
|
Service account can be created inside the folder.
|
60
|
+
:param environment: Environment for the cluster. Possible options: PRODUCTION, PRESTABLE.
|
57
61
|
:param masternode_resource_preset: Resources preset (CPU+RAM configuration)
|
58
62
|
for the primary node of the cluster.
|
59
63
|
:param masternode_disk_size: Masternode storage size in GiB.
|
@@ -96,6 +100,7 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
96
100
|
Docs: https://cloud.yandex.com/docs/data-proc/concepts/logs
|
97
101
|
:param initialization_actions: Set of init-actions to run when cluster starts.
|
98
102
|
Docs: https://cloud.yandex.com/docs/data-proc/concepts/init-action
|
103
|
+
:param oslogin_enabled: Enable authorization via OS Login for cluster.
|
99
104
|
:param labels: Cluster labels as key:value pairs. No more than 64 per resource.
|
100
105
|
Docs: https://cloud.yandex.com/docs/resource-manager/concepts/labels
|
101
106
|
"""
|
@@ -109,10 +114,11 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
109
114
|
cluster_image_version: str | None = None,
|
110
115
|
ssh_public_keys: str | Iterable[str] | None = None,
|
111
116
|
subnet_id: str | None = None,
|
112
|
-
services: Iterable[str] = ("HDFS", "YARN", "MAPREDUCE", "HIVE", "SPARK"),
|
117
|
+
services: Iterable[str] | None = ("HDFS", "YARN", "MAPREDUCE", "HIVE", "SPARK"),
|
113
118
|
s3_bucket: str | None = None,
|
114
119
|
zone: str = "ru-central1-b",
|
115
120
|
service_account_id: str | None = None,
|
121
|
+
environment: str | None = None,
|
116
122
|
masternode_resource_preset: str | None = None,
|
117
123
|
masternode_disk_size: int | None = None,
|
118
124
|
masternode_disk_type: str | None = None,
|
@@ -138,6 +144,7 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
138
144
|
security_group_ids: Iterable[str] | None = None,
|
139
145
|
log_group_id: str | None = None,
|
140
146
|
initialization_actions: Iterable[InitializationAction] | None = None,
|
147
|
+
oslogin_enabled: bool = False,
|
141
148
|
labels: dict[str, str] | None = None,
|
142
149
|
**kwargs,
|
143
150
|
) -> None:
|
@@ -145,9 +152,6 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
145
152
|
if ssh_public_keys is None:
|
146
153
|
ssh_public_keys = []
|
147
154
|
|
148
|
-
if services is None:
|
149
|
-
services = []
|
150
|
-
|
151
155
|
self.folder_id = folder_id
|
152
156
|
self.yandex_conn_id = connection_id
|
153
157
|
self.cluster_name = cluster_name
|
@@ -159,6 +163,7 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
159
163
|
self.s3_bucket = s3_bucket
|
160
164
|
self.zone = zone
|
161
165
|
self.service_account_id = service_account_id
|
166
|
+
self.environment = environment
|
162
167
|
self.masternode_resource_preset = masternode_resource_preset
|
163
168
|
self.masternode_disk_size = masternode_disk_size
|
164
169
|
self.masternode_disk_type = masternode_disk_type
|
@@ -183,6 +188,7 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
183
188
|
self.security_group_ids = security_group_ids
|
184
189
|
self.log_group_id = log_group_id
|
185
190
|
self.initialization_actions = initialization_actions
|
191
|
+
self.oslogin_enabled = oslogin_enabled
|
186
192
|
self.labels = labels
|
187
193
|
|
188
194
|
self.hook: DataprocHook | None = None
|
@@ -191,6 +197,11 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
191
197
|
self.hook = DataprocHook(
|
192
198
|
yandex_conn_id=self.yandex_conn_id,
|
193
199
|
)
|
200
|
+
kwargs_depends_on_version = {}
|
201
|
+
if yandexcloud.__version__ >= "0.350.0":
|
202
|
+
kwargs_depends_on_version.update(
|
203
|
+
{"oslogin_enabled": self.oslogin_enabled, "environment": self.environment}
|
204
|
+
)
|
194
205
|
operation_result = self.hook.dataproc_client.create_cluster(
|
195
206
|
folder_id=self.folder_id,
|
196
207
|
cluster_name=self.cluster_name,
|
@@ -236,6 +247,7 @@ class DataprocCreateClusterOperator(BaseOperator):
|
|
236
247
|
]
|
237
248
|
if self.initialization_actions
|
238
249
|
else None,
|
250
|
+
**kwargs_depends_on_version,
|
239
251
|
)
|
240
252
|
cluster_id = operation_result.response.id
|
241
253
|
|
@@ -28,6 +28,13 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
|
|
28
28
|
|
29
29
|
|
30
30
|
AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
|
31
|
+
AIRFLOW_V_3_1_PLUS: bool = get_base_airflow_version_tuple() >= (3, 1, 0)
|
32
|
+
|
33
|
+
|
34
|
+
if AIRFLOW_V_3_1_PLUS:
|
35
|
+
from airflow.sdk import BaseHook
|
36
|
+
else:
|
37
|
+
from airflow.hooks.base import BaseHook # type: ignore[attr-defined,no-redef]
|
31
38
|
|
32
39
|
if AIRFLOW_V_3_0_PLUS:
|
33
40
|
from airflow.sdk import BaseOperator, BaseOperatorLink
|
@@ -41,6 +48,8 @@ else:
|
|
41
48
|
|
42
49
|
__all__ = [
|
43
50
|
"AIRFLOW_V_3_0_PLUS",
|
51
|
+
"AIRFLOW_V_3_1_PLUS",
|
52
|
+
"BaseHook",
|
44
53
|
"BaseOperator",
|
45
54
|
"BaseOperatorLink",
|
46
55
|
"Context",
|
@@ -14,4 +14,4 @@
|
|
14
14
|
# KIND, either express or implied. See the License for the
|
15
15
|
# specific language governing permissions and limitations
|
16
16
|
# under the License.
|
17
|
-
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
17
|
+
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
@@ -30,7 +30,12 @@ from google.protobuf.json_format import MessageToDict
|
|
30
30
|
from yandexcloud.operations import OperationError
|
31
31
|
|
32
32
|
from airflow import DAG
|
33
|
-
|
33
|
+
|
34
|
+
try:
|
35
|
+
from airflow.sdk import task
|
36
|
+
except ImportError:
|
37
|
+
# Airflow 2 path
|
38
|
+
from airflow.decorators import task # type: ignore[attr-defined,no-redef]
|
34
39
|
from airflow.providers.yandex.hooks.yandex import YandexCloudBaseHook
|
35
40
|
|
36
41
|
from tests_common.test_utils.system_tests import get_test_env_id
|
@@ -14,4 +14,4 @@
|
|
14
14
|
# KIND, either express or implied. See the License for the
|
15
15
|
# specific language governing permissions and limitations
|
16
16
|
# under the License.
|
17
|
-
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
17
|
+
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
@@ -21,6 +21,8 @@ from unittest import mock
|
|
21
21
|
|
22
22
|
import pytest
|
23
23
|
|
24
|
+
pytest.importorskip("yandexcloud")
|
25
|
+
|
24
26
|
try:
|
25
27
|
import importlib.util
|
26
28
|
|
@@ -30,10 +32,9 @@ try:
|
|
30
32
|
BASEHOOK_PATCH_PATH = "airflow.sdk.bases.hook.BaseHook"
|
31
33
|
except ImportError:
|
32
34
|
BASEHOOK_PATCH_PATH = "airflow.hooks.base.BaseHook"
|
33
|
-
yandexlcloud = pytest.importorskip("yandexcloud")
|
34
35
|
|
35
|
-
from airflow.models import Connection
|
36
|
-
from airflow.providers.yandex.hooks.dataproc import DataprocHook
|
36
|
+
from airflow.models import Connection
|
37
|
+
from airflow.providers.yandex.hooks.dataproc import DataprocHook
|
37
38
|
|
38
39
|
# Airflow connection with type "yandexcloud" must be created
|
39
40
|
CONNECTION_ID = "yandexcloud_default"
|
@@ -21,6 +21,8 @@ from unittest import mock
|
|
21
21
|
|
22
22
|
import pytest
|
23
23
|
|
24
|
+
pytest.importorskip("yandexcloud")
|
25
|
+
|
24
26
|
from airflow.providers.yandex.hooks.yandex import YandexCloudBaseHook
|
25
27
|
|
26
28
|
from tests_common.test_utils.config import conf_vars
|
@@ -34,7 +36,6 @@ try:
|
|
34
36
|
BASEHOOK_PATCH_PATH = "airflow.sdk.bases.hook.BaseHook"
|
35
37
|
except ImportError:
|
36
38
|
BASEHOOK_PATCH_PATH = "airflow.hooks.base.BaseHook"
|
37
|
-
yandexcloud = pytest.importorskip("yandexcloud")
|
38
39
|
|
39
40
|
|
40
41
|
class TestYandexHook:
|
@@ -25,7 +25,6 @@ import responses
|
|
25
25
|
from responses import matchers
|
26
26
|
|
27
27
|
from airflow.models import Connection
|
28
|
-
from airflow.providers.yandex.hooks.yq import YQHook
|
29
28
|
|
30
29
|
try:
|
31
30
|
import importlib.util
|
@@ -38,6 +37,8 @@ except ImportError:
|
|
38
37
|
BASEHOOK_PATCH_PATH = "airflow.hooks.base.BaseHook"
|
39
38
|
yandexcloud = pytest.importorskip("yandexcloud")
|
40
39
|
|
40
|
+
from airflow.providers.yandex.hooks.yq import YQHook
|
41
|
+
|
41
42
|
OAUTH_TOKEN = "my_oauth_token"
|
42
43
|
IAM_TOKEN = "my_iam_token"
|
43
44
|
SERVICE_ACCOUNT_AUTH_KEY_JSON = """{"id":"my_id", "service_account_id":"my_sa1", "private_key":"my_pk"}"""
|
@@ -29,7 +29,7 @@ from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS
|
|
29
29
|
if AIRFLOW_V_3_0_PLUS:
|
30
30
|
from airflow.sdk.execution_time.xcom import XCom
|
31
31
|
else:
|
32
|
-
from airflow.models import XCom
|
32
|
+
from airflow.models import XCom
|
33
33
|
|
34
34
|
yandexcloud = pytest.importorskip("yandexcloud")
|
35
35
|
|
@@ -52,7 +52,10 @@ def test_default_link():
|
|
52
52
|
link = YQLink()
|
53
53
|
|
54
54
|
op = MockOperator(task_id="test_task_id")
|
55
|
-
|
55
|
+
if AIRFLOW_V_3_0_PLUS:
|
56
|
+
ti = TaskInstance(task=op, run_id="run_id1", dag_version_id=mock.MagicMock())
|
57
|
+
else:
|
58
|
+
ti = TaskInstance(task=op, run_id="run_id1")
|
56
59
|
assert link.get_link(op, ti_key=ti.key) == "https://yq.cloud.yandex.ru"
|
57
60
|
|
58
61
|
|
@@ -62,5 +65,8 @@ def test_link():
|
|
62
65
|
link = YQLink()
|
63
66
|
|
64
67
|
op = MockOperator(task_id="test_task_id")
|
65
|
-
|
68
|
+
if AIRFLOW_V_3_0_PLUS:
|
69
|
+
ti = TaskInstance(task=op, run_id="run_id1", dag_version_id=mock.MagicMock())
|
70
|
+
else:
|
71
|
+
ti = TaskInstance(task=op, run_id="run_id1")
|
66
72
|
assert link.get_link(op, ti_key=ti.key) == "https://g.com"
|
@@ -21,6 +21,8 @@ from unittest.mock import MagicMock, call, patch
|
|
21
21
|
|
22
22
|
import pytest
|
23
23
|
|
24
|
+
yandexcloud = pytest.importorskip("yandexcloud")
|
25
|
+
|
24
26
|
from airflow.models.dag import DAG
|
25
27
|
from airflow.providers.yandex.operators.dataproc import (
|
26
28
|
DataprocCreateClusterOperator,
|
@@ -31,8 +33,6 @@ from airflow.providers.yandex.operators.dataproc import (
|
|
31
33
|
DataprocDeleteClusterOperator,
|
32
34
|
)
|
33
35
|
|
34
|
-
yandexcloud = pytest.importorskip("yandexcloud")
|
35
|
-
|
36
36
|
# Airflow connection with type "yandexcloud"
|
37
37
|
CONNECTION_ID = "yandexcloud_default"
|
38
38
|
|
@@ -93,6 +93,7 @@ class TestDataprocClusterCreateOperator:
|
|
93
93
|
@patch("airflow.providers.yandex.utils.credentials.get_credentials")
|
94
94
|
@patch(f"{BASEHOOK_PATCH_PATH}.get_connection")
|
95
95
|
@patch("yandexcloud._wrappers.dataproc.Dataproc.create_cluster")
|
96
|
+
@patch("yandexcloud.__version__", "0.308.0")
|
96
97
|
def test_create_cluster(self, mock_create_cluster, *_):
|
97
98
|
operator = DataprocCreateClusterOperator(
|
98
99
|
task_id="create_cluster",
|
@@ -154,6 +155,73 @@ class TestDataprocClusterCreateOperator:
|
|
154
155
|
]
|
155
156
|
)
|
156
157
|
|
158
|
+
@patch("airflow.providers.yandex.utils.credentials.get_credentials")
|
159
|
+
@patch(f"{BASEHOOK_PATCH_PATH}.get_connection")
|
160
|
+
@patch("yandexcloud._wrappers.dataproc.Dataproc.create_cluster")
|
161
|
+
@patch("yandexcloud.__version__", "0.350.0")
|
162
|
+
def test_create_cluster_with_350_sdk(self, mock_create_cluster, *_):
|
163
|
+
operator = DataprocCreateClusterOperator(
|
164
|
+
task_id="create_cluster",
|
165
|
+
ssh_public_keys=SSH_PUBLIC_KEYS,
|
166
|
+
folder_id=FOLDER_ID,
|
167
|
+
subnet_id=SUBNET_ID,
|
168
|
+
zone=AVAILABILITY_ZONE_ID,
|
169
|
+
connection_id=CONNECTION_ID,
|
170
|
+
s3_bucket=S3_BUCKET_NAME_FOR_LOGS,
|
171
|
+
cluster_image_version=CLUSTER_IMAGE_VERSION,
|
172
|
+
log_group_id=LOG_GROUP_ID,
|
173
|
+
)
|
174
|
+
context = {"task_instance": MagicMock()}
|
175
|
+
operator.execute(context)
|
176
|
+
mock_create_cluster.assert_called_once_with(
|
177
|
+
cluster_description="",
|
178
|
+
cluster_image_version="1.4",
|
179
|
+
cluster_name=None,
|
180
|
+
computenode_count=0,
|
181
|
+
computenode_disk_size=None,
|
182
|
+
computenode_disk_type=None,
|
183
|
+
computenode_resource_preset=None,
|
184
|
+
computenode_max_hosts_count=None,
|
185
|
+
computenode_measurement_duration=None,
|
186
|
+
computenode_warmup_duration=None,
|
187
|
+
computenode_stabilization_duration=None,
|
188
|
+
computenode_preemptible=False,
|
189
|
+
computenode_cpu_utilization_target=None,
|
190
|
+
computenode_decommission_timeout=None,
|
191
|
+
datanode_count=1,
|
192
|
+
datanode_disk_size=None,
|
193
|
+
datanode_disk_type=None,
|
194
|
+
datanode_resource_preset=None,
|
195
|
+
folder_id="my_folder_id",
|
196
|
+
masternode_disk_size=None,
|
197
|
+
masternode_disk_type=None,
|
198
|
+
masternode_resource_preset=None,
|
199
|
+
s3_bucket="my_bucket_name",
|
200
|
+
service_account_id=None,
|
201
|
+
services=("HDFS", "YARN", "MAPREDUCE", "HIVE", "SPARK"),
|
202
|
+
ssh_public_keys=[
|
203
|
+
"ssh-rsa AAA5B3NzaC1yc2EAA1ADA2ABA3AA4QCxO38tKA0XIs9ivPxt7AYdf3bgtAR1ow3Qkb9GPQ6wkFHQq"
|
204
|
+
"cFDe6faKCxH6iDRt2o4D8L8Bx6zN42uZSB0nf8jkIxFTcEU3mFSXEbWByg78ao3dMrAAj1tyr1H1pON6P0="
|
205
|
+
],
|
206
|
+
subnet_id="my_subnet_id",
|
207
|
+
zone="ru-central1-c",
|
208
|
+
log_group_id=LOG_GROUP_ID,
|
209
|
+
properties=None,
|
210
|
+
enable_ui_proxy=False,
|
211
|
+
host_group_ids=None,
|
212
|
+
security_group_ids=None,
|
213
|
+
labels=None,
|
214
|
+
initialization_actions=None,
|
215
|
+
environment=None,
|
216
|
+
oslogin_enabled=False,
|
217
|
+
)
|
218
|
+
context["task_instance"].xcom_push.assert_has_calls(
|
219
|
+
[
|
220
|
+
call(key="cluster_id", value=mock_create_cluster().response.id),
|
221
|
+
call(key="yandexcloud_connection_id", value=CONNECTION_ID),
|
222
|
+
]
|
223
|
+
)
|
224
|
+
|
157
225
|
@patch("airflow.providers.yandex.utils.credentials.get_credentials")
|
158
226
|
@patch(f"{BASEHOOK_PATCH_PATH}.get_connection")
|
159
227
|
@patch("yandexcloud._wrappers.dataproc.Dataproc.delete_cluster")
|
@@ -21,6 +21,9 @@ from datetime import datetime, timedelta
|
|
21
21
|
from unittest.mock import MagicMock, call, patch
|
22
22
|
|
23
23
|
import pytest
|
24
|
+
|
25
|
+
pytest.importorskip("yandexcloud")
|
26
|
+
|
24
27
|
import responses
|
25
28
|
from responses import matchers
|
26
29
|
|
@@ -30,8 +33,6 @@ from airflow.providers.yandex.operators.yq import YQExecuteQueryOperator
|
|
30
33
|
|
31
34
|
from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS
|
32
35
|
|
33
|
-
yandexcloud = pytest.importorskip("yandexcloud")
|
34
|
-
|
35
36
|
try:
|
36
37
|
import importlib.util
|
37
38
|
|
@@ -20,6 +20,9 @@ import json
|
|
20
20
|
from unittest.mock import MagicMock, Mock, patch
|
21
21
|
|
22
22
|
import pytest
|
23
|
+
|
24
|
+
yandexcloud = pytest.importorskip("yandexcloud")
|
25
|
+
|
23
26
|
import yandex.cloud.lockbox.v1.payload_pb2 as payload_pb
|
24
27
|
import yandex.cloud.lockbox.v1.secret_pb2 as secret_pb
|
25
28
|
import yandex.cloud.lockbox.v1.secret_service_pb2 as secret_service_pb
|
@@ -27,8 +30,6 @@ import yandex.cloud.lockbox.v1.secret_service_pb2 as secret_service_pb
|
|
27
30
|
from airflow.providers.yandex.secrets.lockbox import LockboxSecretBackend
|
28
31
|
from airflow.providers.yandex.utils.defaults import default_conn_name
|
29
32
|
|
30
|
-
yandexcloud = pytest.importorskip("yandexcloud")
|
31
|
-
|
32
33
|
|
33
34
|
class TestLockboxSecretBackend:
|
34
35
|
@patch("airflow.providers.yandex.secrets.lockbox.LockboxSecretBackend._get_secret_value")
|
File without changes
|
File without changes
|
{apache_airflow_providers_yandex-4.1.1rc1 → apache_airflow_providers_yandex-4.2.0rc1}/docs/conf.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|