b17d3e3575
- Fix the usage of custom macros on the spec file. - Fix RES7: different dependency names for python-PyYAML and python-MarkupSafe - Build both python2 and python3 binaries together. - Bugfix: errors in external pillar causes crash instead of report of them (bsc#1068446) - Fix 'user.present' when 'gid_from_name' is set but group does not exist. - Added: * bugfix-the-logic-according-to-the-exact-described-pu.patch * return-error-when-gid_from_name-and-group-does-not-e.patch - Fix "No service execution module loaded" issue (bsc#1065792) - Set SHELL environment variable Added: * fix-bsc-1065792.patch * set-shell-environment-variable-64.patch - Removed unnecessary logging on shutdown (bsc#1050003) - Renamed patch that adds grain fqdns Changed: * catching-error-when-pidfile-cannot-be-deleted Removed: * fix-for-pidfile-removal-logging Renamed: * add-fqdns-grains -> feat-add-grain-for-all-fqdns OBS-URL: https://build.opensuse.org/request/show/569868 OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:saltstack/salt?expand=0&rev=107
118 lines
4.0 KiB
Diff
118 lines
4.0 KiB
Diff
From b31d8f3898149209097e01bbeefbfb70b5a0c395 Mon Sep 17 00:00:00 2001
|
|
From: Michael Calmer <mc@suse.de>
|
|
Date: Fri, 15 Dec 2017 09:53:10 +0100
|
|
Subject: [PATCH] cherrypy read() reads bytes from the wire and write
|
|
them into contents var
|
|
|
|
adapt tests to reflect reality
|
|
|
|
When CherryPy run with python3 it reads "bytes" from the wire.
|
|
In case of python2 BytesIO == StringIO, so nothing should change.
|
|
|
|
This change will do the same to make unit tests reflect reality.
|
|
---
|
|
salt/netapi/rest_cherrypy/app.py | 25 +++++++------------------
|
|
tests/support/cptestcase.py | 6 ++++--
|
|
2 files changed, 11 insertions(+), 20 deletions(-)
|
|
|
|
diff --git a/salt/netapi/rest_cherrypy/app.py b/salt/netapi/rest_cherrypy/app.py
|
|
index 4099416a28..67e0bad07a 100644
|
|
--- a/salt/netapi/rest_cherrypy/app.py
|
|
+++ b/salt/netapi/rest_cherrypy/app.py
|
|
@@ -505,6 +505,7 @@ import salt
|
|
import salt.auth
|
|
import salt.utils
|
|
import salt.utils.event
|
|
+from salt.ext.six import BytesIO
|
|
|
|
# Import salt-api libs
|
|
import salt.netapi
|
|
@@ -830,18 +831,6 @@ def urlencoded_processor(entity):
|
|
|
|
:param entity: raw POST data
|
|
'''
|
|
- if six.PY3:
|
|
- # https://github.com/cherrypy/cherrypy/pull/1572
|
|
- contents = six.StringIO()
|
|
- entity.fp.read(fp_out=contents)
|
|
- contents.seek(0)
|
|
- body_str = contents.read()
|
|
- body_bytes = salt.utils.to_bytes(body_str)
|
|
- body_bytes = six.BytesIO(body_bytes)
|
|
- body_bytes.seek(0)
|
|
- # Patch fp
|
|
- entity.fp = body_bytes
|
|
- del contents
|
|
# First call out to CherryPy's default processor
|
|
cherrypy._cpreqbody.process_urlencoded(entity)
|
|
cherrypy._cpreqbody.process_urlencoded(entity)
|
|
@@ -860,10 +849,10 @@ def json_processor(entity):
|
|
body = entity.fp.read()
|
|
else:
|
|
# https://github.com/cherrypy/cherrypy/pull/1572
|
|
- contents = six.StringIO()
|
|
+ contents = BytesIO()
|
|
body = entity.fp.read(fp_out=contents)
|
|
contents.seek(0)
|
|
- body = contents.read()
|
|
+ body = salt.utils.to_unicode(contents.read())
|
|
del contents
|
|
try:
|
|
cherrypy.serving.request.unserialized_data = json.loads(body)
|
|
@@ -884,10 +873,10 @@ def yaml_processor(entity):
|
|
body = entity.fp.read()
|
|
else:
|
|
# https://github.com/cherrypy/cherrypy/pull/1572
|
|
- contents = six.StringIO()
|
|
+ contents = BytesIO()
|
|
body = entity.fp.read(fp_out=contents)
|
|
contents.seek(0)
|
|
- body = contents.read()
|
|
+ body = salt.utils.to_unicode(contents.read())
|
|
try:
|
|
cherrypy.serving.request.unserialized_data = yaml.safe_load(body)
|
|
except ValueError:
|
|
@@ -910,10 +899,10 @@ def text_processor(entity):
|
|
body = entity.fp.read()
|
|
else:
|
|
# https://github.com/cherrypy/cherrypy/pull/1572
|
|
- contents = six.StringIO()
|
|
+ contents = BytesIO()
|
|
body = entity.fp.read(fp_out=contents)
|
|
contents.seek(0)
|
|
- body = contents.read()
|
|
+ body = salt.utils.to_unicode(contents.read())
|
|
try:
|
|
cherrypy.serving.request.unserialized_data = json.loads(body)
|
|
except ValueError:
|
|
diff --git a/tests/support/cptestcase.py b/tests/support/cptestcase.py
|
|
index ea2845f46d..75785b8eb1 100644
|
|
--- a/tests/support/cptestcase.py
|
|
+++ b/tests/support/cptestcase.py
|
|
@@ -38,9 +38,11 @@ from tests.support.case import TestCase
|
|
# pylint: disable=import-error
|
|
import cherrypy # pylint: disable=3rd-party-module-not-gated
|
|
import salt.ext.six as six
|
|
-from salt.ext.six.moves import StringIO
|
|
+from salt.ext.six import BytesIO
|
|
# pylint: enable=import-error
|
|
|
|
+import salt.utils
|
|
+
|
|
# Not strictly speaking mandatory but just makes sense
|
|
cherrypy.config.update({'environment': "test_suite"})
|
|
|
|
@@ -92,7 +94,7 @@ class BaseCherryPyTestCase(TestCase):
|
|
fd = None
|
|
if body is not None:
|
|
h['content-length'] = '{0}'.format(len(body))
|
|
- fd = StringIO(body)
|
|
+ fd = BytesIO(salt.utils.to_bytes(body))
|
|
|
|
if headers is not None:
|
|
h.update(headers)
|
|
--
|
|
2.15.1
|
|
|
|
|