From 59b3228dcb4ee2e19640a00c5b5cd8254b0c790c Mon Sep 17 00:00:00 2001 From: Nicolas ROCHE Date: Sat, 29 Feb 2020 13:20:49 +0100 Subject: [PATCH] python3: celery now handle text (#40288) --- hobo/agent/common/management/commands/hobo_deploy.py | 3 ++- hobo/agent/worker/services.py | 5 +++-- tests_multitenant/test_agent_worker.py | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/hobo/agent/common/management/commands/hobo_deploy.py b/hobo/agent/common/management/commands/hobo_deploy.py index c6eb0e7..aec0719 100644 --- a/hobo/agent/common/management/commands/hobo_deploy.py +++ b/hobo/agent/common/management/commands/hobo_deploy.py @@ -10,6 +10,7 @@ import tempfile from django.conf import settings from django.core.management.base import BaseCommand, CommandError from django.core.management import call_command, get_commands +from django.utils.encoding import force_text from django.utils.six.moves.urllib import parse as urlparse from tenant_schemas.utils import tenant_context @@ -26,7 +27,7 @@ def replace_file(path, content): fd, temp = tempfile.mkstemp(dir=dirname, prefix='.tmp-'+os.path.basename(path)+'-') f = os.fdopen(fd, 'w') - f.write(content) + f.write(force_text(content)) f.flush() os.fsync(f.fileno()) f.close() diff --git a/hobo/agent/worker/services.py b/hobo/agent/worker/services.py index 7fa8f7d..7976b05 100644 --- a/hobo/agent/worker/services.py +++ b/hobo/agent/worker/services.py @@ -23,6 +23,7 @@ import os import subprocess import sys +from django.utils.encoding import force_bytes from django.utils.six.moves.urllib import parse as urlparse from . import settings @@ -80,7 +81,7 @@ class BaseService(object): cmd = self.service_manage_cmd + ' hobo_deploy ' + self.base_url + ' -' cmd_process = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout, stderr = cmd_process.communicate(input=json.dumps(environment)) + stdout, stderr = cmd_process.communicate(input=force_bytes(json.dumps(environment))) if cmd_process.returncode != 0: raise RuntimeError('command "%s" failed: %r %r' % (cmd, stdout, stderr)) @@ -103,7 +104,7 @@ class BaseService(object): stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError: return - stdout, stderr = cmd_process.communicate(input=json.dumps(data)) + stdout, stderr = cmd_process.communicate(input=force_bytes(json.dumps(data))) if cmd_process.returncode != 0: raise RuntimeError('command "%s" failed: %r %r' % (cmd, stdout, stderr)) diff --git a/tests_multitenant/test_agent_worker.py b/tests_multitenant/test_agent_worker.py index 84aad37..f70ece6 100644 --- a/tests_multitenant/test_agent_worker.py +++ b/tests_multitenant/test_agent_worker.py @@ -6,6 +6,8 @@ import os import pytest import six +from django.utils.encoding import force_text + from hobo.agent.worker.services import deploy, notify from hobo.agent.worker import settings @@ -102,7 +104,7 @@ def test_deploy(mocked_subprocess, mocked_exists): mock_calls = mocked_communicate.mock_calls assert len(mock_calls) == 4 for i in range(0, len(mock_calls)): - assert json.loads(mock_calls[0][2]['input']) == ENVIRONMENT + assert json.loads(force_text(mock_calls[0][2]['input'])) == ENVIRONMENT mocked_opened.returncode = 1 with pytest.raises(RuntimeError, match='failed: '): @@ -147,7 +149,7 @@ def test_notify(mocked_subprocess, mocked_listdir, mocked_exists): # notification sent mock_calls = mocked_communicate.mock_calls assert len(mock_calls) == 1 - assert json.loads(mock_calls[0][2]['input'])['objects']['data'][0]['uuid'] == '12345' + assert json.loads(force_text(mock_calls[0][2]['input']))['objects']['data'][0]['uuid'] == '12345' mocked_opened.returncode = 1 with pytest.raises(RuntimeError, match='failed: '):