From f036e9898a69f5041f9cde02e3652c29e2de1643 Mon Sep 17 00:00:00 2001 From: Ross Brattain Date: Mon, 5 Dec 2016 16:11:54 -0500 Subject: Add support for Python 3 Porting to Python3 using Openstack guidelines: https://wiki.openstack.org/wiki/Python3 This passes unittests on Python 3.5 and passes opnfv_smoke suite Updates: use six for urlparse and urlopen fix exception.message attribute removal run unittests on python3 use unitest.mock on python 3 fix open mock for vsperf fix float division by using delta/eplison comparison use unicode in StringIO use plugin/sample_config.yaml relative path from test case fixed apexlake unittests upgraded to mock 2.0.0 to match python3 unittest.mock features fixed flake8 issues implement safe JSON decode with oslo_serialization.jsonutils.dump_as_bytes() implement safe unicode encode/decode with oslo_utils.encodeutils heat: convert pub key file from bytes to unicode pkg_resources returns raw bytes, in python3 we have to decode this to utf-8 unicode so JSON can encode it for heat template JIRA: YARDSTICK-452 Change-Id: Ib80dd1d0c0eb0592acd832b82f6a7f8f7c20bfda Signed-off-by: Ross Brattain --- api/utils/common.py | 18 ++++++++++-------- api/utils/daemonthread.py | 1 + api/utils/influx.py | 6 ++++-- 3 files changed, 15 insertions(+), 10 deletions(-) (limited to 'api/utils') diff --git a/api/utils/common.py b/api/utils/common.py index 6971c6dfe..1c800ce49 100644 --- a/api/utils/common.py +++ b/api/utils/common.py @@ -6,6 +6,7 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from __future__ import absolute_import import collections import logging @@ -13,18 +14,19 @@ from flask import jsonify from api.utils.daemonthread import DaemonThread from yardstick.cmd.cli import YardstickCLI +import six logger = logging.getLogger(__name__) -def translate_to_str(object): - if isinstance(object, collections.Mapping): - return {str(k): translate_to_str(v) for k, v in object.items()} - elif isinstance(object, list): - return [translate_to_str(ele) for ele in object] - elif isinstance(object, unicode): - return str(object) - return object +def translate_to_str(obj): + if isinstance(obj, collections.Mapping): + return {str(k): translate_to_str(v) for k, v in obj.items()} + elif isinstance(obj, list): + return [translate_to_str(ele) for ele in obj] + elif isinstance(obj, six.text_type): + return str(obj) + return obj def get_command_list(command_list, opts, args): diff --git a/api/utils/daemonthread.py b/api/utils/daemonthread.py index 19182c429..0049834eb 100644 --- a/api/utils/daemonthread.py +++ b/api/utils/daemonthread.py @@ -6,6 +6,7 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from __future__ import absolute_import import threading import os import errno diff --git a/api/utils/influx.py b/api/utils/influx.py index d4b070fb4..275c63a24 100644 --- a/api/utils/influx.py +++ b/api/utils/influx.py @@ -6,10 +6,12 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from __future__ import absolute_import + import logging -import ConfigParser -from urlparse import urlsplit +import six.moves.configparser as ConfigParser +from six.moves.urllib.parse import urlsplit from influxdb import InfluxDBClient from api import conf -- cgit 1.2.3-korg