Python 3: decode bytes before feeding them to jsonutils.loads()

urlopen(...).read() returns bytes in Python 3, so we cannot call
jsonutils.loads() on the output: we first have to decode() it.

Change-Id: I39504059a8c82347476dd88dfcbd060d58df13d0
This commit is contained in:
Cyril Roelandt
2014-03-06 15:44:10 +01:00
parent 644d148919
commit 30ce6d920f

View File

@@ -14,6 +14,7 @@
# under the License.
import logging
import six
from six.moves.urllib import request
import yaml
@@ -647,6 +648,8 @@ def do_resource_signal(hc, args):
data_url = template_utils.normalise_file_path_to_url(data_file)
data = request.urlopen(data_url).read()
if data:
if isinstance(data, six.binary_type):
data = data.decode('utf-8')
try:
data = jsonutils.loads(data)
except ValueError as ex: