You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2018/11/01 20:24:16 UTC
[GitHub] ashb closed pull request #2204: [AIRFLOW-1057] fix class name that
is changed at docker package version 2.0.0
ashb closed pull request #2204: [AIRFLOW-1057] fix class name that is changed at docker package version 2.0.0
URL: https://github.com/apache/incubator-airflow/pull/2204
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/airflow/operators/docker_operator.py b/airflow/operators/docker_operator.py
index 2fd7484bae..d0e109e150 100644
--- a/airflow/operators/docker_operator.py
+++ b/airflow/operators/docker_operator.py
@@ -14,12 +14,17 @@
import json
import logging
+import ast
from airflow.exceptions import AirflowException
from airflow.models import BaseOperator
from airflow.utils.decorators import apply_defaults
from airflow.utils.file import TemporaryDirectory
-from docker import Client, tls
-import ast
+from docker import tls
+try:
+ from docker import APIClient
+except ImportError:
+ # prior to version 2.0.0 of the module docker, the API client was called Client
+ from docker import Client as APIClient
class DockerOperator(BaseOperator):
@@ -142,7 +147,7 @@ def execute(self, context):
)
self.docker_url = self.docker_url.replace('tcp://', 'https://')
- self.cli = Client(base_url=self.docker_url, version=self.api_version, tls=tls_config)
+ self.cli = APIClient(base_url=self.docker_url, version=self.api_version, tls=tls_config)
if ':' not in self.image:
image = self.image + ':latest'
diff --git a/setup.py b/setup.py
index a582499d1a..adeab6b62f 100644
--- a/setup.py
+++ b/setup.py
@@ -122,7 +122,7 @@ def write_version(filename=os.path.join(*['airflow',
'sphinx-rtd-theme>=0.1.6',
'Sphinx-PyPI-upload>=0.2.1'
]
-docker = ['docker-py>=1.6.0']
+docker = ['docker>=2.0.0']
druid = ['pydruid>=0.2.1']
emr = ['boto3>=1.0.0']
gcp_api = [
diff --git a/tests/operators/docker_operator.py b/tests/operators/docker_operator.py
index 2554aaa76d..d93698abb8 100644
--- a/tests/operators/docker_operator.py
+++ b/tests/operators/docker_operator.py
@@ -17,10 +17,15 @@
try:
from airflow.operators.docker_operator import DockerOperator
- from docker.client import Client
except ImportError:
pass
+try:
+ from docker import APIClient
+except ImportError:
+ # prior to version 2.0.0 of the module docker, the API client was called Client
+ from docker import Client as APIClient
+
from airflow.exceptions import AirflowException
try:
@@ -35,12 +40,12 @@
class DockerOperatorTestCase(unittest.TestCase):
@unittest.skipIf(mock is None, 'mock package not present')
@mock.patch('airflow.utils.file.mkdtemp')
- @mock.patch('airflow.operators.docker_operator.Client')
+ @mock.patch('airflow.operators.docker_operator.APIClient')
def test_execute(self, client_class_mock, mkdtemp_mock):
host_config = mock.Mock()
mkdtemp_mock.return_value = '/mkdtemp'
- client_mock = mock.Mock(spec=Client)
+ client_mock = mock.Mock(spec=APIClient)
client_mock.create_container.return_value = {'Id': 'some_id'}
client_mock.create_host_config.return_value = host_config
client_mock.images.return_value = []
@@ -76,9 +81,9 @@ def test_execute(self, client_class_mock, mkdtemp_mock):
@unittest.skipIf(mock is None, 'mock package not present')
@mock.patch('airflow.operators.docker_operator.tls.TLSConfig')
- @mock.patch('airflow.operators.docker_operator.Client')
+ @mock.patch('airflow.operators.docker_operator.APIClient')
def test_execute_tls(self, client_class_mock, tls_class_mock):
- client_mock = mock.Mock(spec=Client)
+ client_mock = mock.Mock(spec=APIClient)
client_mock.create_container.return_value = {'Id': 'some_id'}
client_mock.create_host_config.return_value = mock.Mock()
client_mock.images.return_value = []
@@ -103,9 +108,9 @@ def test_execute_tls(self, client_class_mock, tls_class_mock):
version=None)
@unittest.skipIf(mock is None, 'mock package not present')
- @mock.patch('airflow.operators.docker_operator.Client')
+ @mock.patch('airflow.operators.docker_operator.APIClient')
def test_execute_unicode_logs(self, client_class_mock):
- client_mock = mock.Mock(spec=Client)
+ client_mock = mock.Mock(spec=APIClient)
client_mock.create_container.return_value = {'Id': 'some_id'}
client_mock.create_host_config.return_value = mock.Mock()
client_mock.images.return_value = []
@@ -126,9 +131,9 @@ def test_execute_unicode_logs(self, client_class_mock):
print_exception_mock.assert_not_called()
@unittest.skipIf(mock is None, 'mock package not present')
- @mock.patch('airflow.operators.docker_operator.Client')
+ @mock.patch('airflow.operators.docker_operator.APIClient')
def test_execute_container_fails(self, client_class_mock):
- client_mock = mock.Mock(spec=Client)
+ client_mock = mock.Mock(spec=APIClient)
client_mock.create_container.return_value = {'Id': 'some_id'}
client_mock.create_host_config.return_value = mock.Mock()
client_mock.images.return_value = []
@@ -145,7 +150,7 @@ def test_execute_container_fails(self, client_class_mock):
@unittest.skipIf(mock is None, 'mock package not present')
def test_on_kill(self):
- client_mock = mock.Mock(spec=Client)
+ client_mock = mock.Mock(spec=APIClient)
operator = DockerOperator(image='ubuntu', owner='unittest', task_id='unittest')
operator.cli = client_mock
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services