<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/openstack/python-glanceclient.git/glanceclient/tests/functional/test_http_headers.py, branch stable/queens</title>
<subtitle>opendev.org: openstack/python-glanceclient.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/openstack/python-glanceclient.git/'/>
<entry>
<title>v2: Content-Type: application/octet-stream header always added</title>
<updated>2017-05-19T19:02:00+00:00</updated>
<author>
<name>ckonstanski</name>
<email>ckonstanski@pippiandcarlos.com</email>
</author>
<published>2016-11-12T01:39:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/openstack/python-glanceclient.git/commit/?id=03900522d4816fe5dc2958fa1eb30ab447cc8ee5'/>
<id>03900522d4816fe5dc2958fa1eb30ab447cc8ee5</id>
<content type='text'>
The bug: any existing Content-Type header cannot be found because the
call to headers.get() fails. Therefore we end up with two Content-Type
headers because a new one (applicaion/octet-stream) gets added
unconditionally. The cause: the strings (keys and values) in the headers
dict are converted from unicode sequences of type &lt;str&gt; to utf-8
sequences of type &lt;bytes&gt;. This happens in safe_encode()
(oslo_utils/encodeutils.py:66). &lt;str&gt; != &lt;bytes&gt; even if they appear to
have the same characters.

Hence, for python 3.x, _set_common_request_kwargs() adds content-type
to header even if custom content-type is set in the request.

This results in unsupported media type exception when glance client
is used with keystoneauth and python 3.x

The fix: follow the directions in encode_headers().
It says to do this just before sending the request. Honor this principle;
do not encode headers and then perform more business logic on them.

Change-Id: Idf6079b32f70bc171f5016467048e917d42f296d
Closes-bug: #1641239
Co-Authored-By: Pushkar Umaranikar &lt;pushkar.umaranikar@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The bug: any existing Content-Type header cannot be found because the
call to headers.get() fails. Therefore we end up with two Content-Type
headers because a new one (applicaion/octet-stream) gets added
unconditionally. The cause: the strings (keys and values) in the headers
dict are converted from unicode sequences of type &lt;str&gt; to utf-8
sequences of type &lt;bytes&gt;. This happens in safe_encode()
(oslo_utils/encodeutils.py:66). &lt;str&gt; != &lt;bytes&gt; even if they appear to
have the same characters.

Hence, for python 3.x, _set_common_request_kwargs() adds content-type
to header even if custom content-type is set in the request.

This results in unsupported media type exception when glance client
is used with keystoneauth and python 3.x

The fix: follow the directions in encode_headers().
It says to do this just before sending the request. Honor this principle;
do not encode headers and then perform more business logic on them.

Change-Id: Idf6079b32f70bc171f5016467048e917d42f296d
Closes-bug: #1641239
Co-Authored-By: Pushkar Umaranikar &lt;pushkar.umaranikar@intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
