diff --git a/ansible/library/kolla_docker.py b/ansible/library/kolla_docker.py
index 1b9b1d4679..494ae5243f 100644
--- a/ansible/library/kolla_docker.py
+++ b/ansible/library/kolla_docker.py
@@ -434,7 +434,7 @@ class DockerWorker(object):
         image, tag = self.parse_image()
 
         statuses = [
-            json.loads(line.strip()) for line in self.dc.pull(
+            json.loads(line.strip().decode('utf-8')) for line in self.dc.pull(
                 repository=image, tag=tag, stream=True
             )
         ]
diff --git a/tests/test_kolla_docker.py b/tests/test_kolla_docker.py
index c9f055cc58..e3fc51525f 100644
--- a/tests/test_kolla_docker.py
+++ b/tests/test_kolla_docker.py
@@ -464,9 +464,9 @@ class TestImage(base.BaseTestCase):
              'auth_email': 'fake_mail@foogle.com'
              })
         self.dw.dc.pull.return_value = [
-            '{"status":"Pull complete","progressDetail":{},"id":"22f7"}\r\n',
-            '{"status":"Digest: sha256:47c3bdbcf99f0c1a36e4db"}\r\n',
-            '{"status":"Downloaded newer image for ubuntu:16.04"}\r\n'
+            b'{"status":"Pull complete","progressDetail":{},"id":"22f7"}\r\n',
+            b'{"status":"Digest: sha256:47c3bdbcf99f0c1a36e4db"}\r\n',
+            b'{"status":"Downloaded newer image for ubuntu:16.04"}\r\n'
         ]
 
         self.dw.pull_image()
@@ -480,9 +480,9 @@ class TestImage(base.BaseTestCase):
         self.dw = get_DockerWorker(
             {'image': 'myregistrydomain.com:5000/ubuntu:16.04'})
         self.dw.dc.pull.return_value = [
-            '{"status":"Pull complete","progressDetail":{},"id":"22f7"}\r\n',
-            '{"status":"Digest: sha256:47c3bdbf0c1a36e4db"}\r\n',
-            '{"status":"mage is up to date for ubuntu:16.04"}\r\n'
+            b'{"status":"Pull complete","progressDetail":{},"id":"22f7"}\r\n',
+            b'{"status":"Digest: sha256:47c3bdbf0c1a36e4db"}\r\n',
+            b'{"status":"mage is up to date for ubuntu:16.04"}\r\n'
         ]
 
         self.dw.pull_image()
@@ -496,7 +496,7 @@ class TestImage(base.BaseTestCase):
         self.dw = get_DockerWorker(
             {'image': 'myregistrydomain.com:5000/ubuntu:16.04'})
         self.dw.dc.pull.return_value = [
-            '{"status": "some random message"}\r\n']
+            b'{"status": "some random message"}\r\n']
 
         self.dw.pull_image()
         self.dw.dc.pull.assert_called_once_with(
@@ -512,7 +512,7 @@ class TestImage(base.BaseTestCase):
         self.dw = get_DockerWorker(
             {'image': 'unknown:16.04'})
         self.dw.dc.pull.return_value = [
-            '{"error": "image unknown not found"}\r\n']
+            b'{"error": "image unknown not found"}\r\n']
 
         self.dw.pull_image()
         self.dw.dc.pull.assert_called_once_with(
@@ -528,7 +528,7 @@ class TestImage(base.BaseTestCase):
         self.dw = get_DockerWorker(
             {'image': 'myregistrydomain.com:5000/ubuntu:16.04'})
         self.dw.dc.pull.return_value = [
-            '{"error": "unexpected error"}\r\n']
+            b'{"error": "unexpected error"}\r\n']
 
         self.dw.pull_image()
         self.dw.dc.pull.assert_called_once_with(