aboutsummaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorRoss Brattain <ross.b.brattain@intel.com>2016-12-05 16:11:54 -0500
committerRoss Brattain <ross.b.brattain@intel.com>2017-01-12 18:25:04 -0800
commitf036e9898a69f5041f9cde02e3652c29e2de1643 (patch)
tree36e5eea75811bb640bb30f442f5a3c617e945909 /api
parent5f0b3d417244397b2d5e61c7a6ddd145f1d25046 (diff)
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 <ross.b.brattain@intel.com>
Diffstat (limited to 'api')
-rw-r--r--api/base.py1
-rw-r--r--api/conf.py1
-rw-r--r--api/database/__init__.py1
-rw-r--r--api/database/models.py1
-rw-r--r--api/resources/env_action.py24
-rw-r--r--api/resources/release_action.py1
-rw-r--r--api/resources/results.py1
-rw-r--r--api/resources/samples_action.py1
-rw-r--r--api/server.py13
-rw-r--r--api/swagger/models.py1
-rw-r--r--api/urls.py1
-rw-r--r--api/utils/common.py18
-rw-r--r--api/utils/daemonthread.py1
-rw-r--r--api/utils/influx.py6
-rw-r--r--api/views.py7
15 files changed, 51 insertions, 27 deletions
diff --git a/api/base.py b/api/base.py
index 7671527d4..527008588 100644
--- a/api/base.py
+++ b/api/base.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 re
import importlib
import logging
diff --git a/api/conf.py b/api/conf.py
index 3d9d190a0..abaf34a1f 100644
--- a/api/conf.py
+++ b/api/conf.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
from pyroute2 import IPDB
diff --git a/api/database/__init__.py b/api/database/__init__.py
index 5b0bb05a2..d7cf4f9c4 100644
--- a/api/database/__init__.py
+++ b/api/database/__init__.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 logging
from sqlalchemy import create_engine
diff --git a/api/database/models.py b/api/database/models.py
index 2fc141c1f..2270de96b 100644
--- a/api/database/models.py
+++ b/api/database/models.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
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
diff --git a/api/resources/env_action.py b/api/resources/env_action.py
index 7e2487158..8955f3cb6 100644
--- a/api/resources/env_action.py
+++ b/api/resources/env_action.py
@@ -6,25 +6,27 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+from __future__ import absolute_import
+
+import errno
+import json
import logging
-import threading
+import os
import subprocess
+import threading
import time
import uuid
-import json
-import os
-import errno
-import ConfigParser
-from docker import Client
+from six.moves import configparser
-from yardstick.common import constants as config
-from yardstick.common import utils as yardstick_utils
-from yardstick.common.httpClient import HttpClient
from api import conf as api_conf
+from api.database.handler import AsyncTaskHandler
from api.utils import influx
from api.utils.common import result_handler
-from api.database.handler import AsyncTaskHandler
+from docker import Client
+from yardstick.common import constants as config
+from yardstick.common import utils as yardstick_utils
+from yardstick.common.httpClient import HttpClient
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
@@ -167,7 +169,7 @@ def _config_influxdb():
def _change_output_to_influxdb():
yardstick_utils.makedirs(config.YARDSTICK_CONFIG_DIR)
- parser = ConfigParser.ConfigParser()
+ parser = configparser.ConfigParser()
parser.read(config.YARDSTICK_CONFIG_SAMPLE_FILE)
parser.set('DEFAULT', 'dispatcher', 'influxdb')
diff --git a/api/resources/release_action.py b/api/resources/release_action.py
index d4dc246ef..c5aa20afc 100644
--- a/api/resources/release_action.py
+++ b/api/resources/release_action.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 uuid
import os
import logging
diff --git a/api/resources/results.py b/api/resources/results.py
index fd518958c..86fc25193 100644
--- a/api/resources/results.py
+++ b/api/resources/results.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 logging
import uuid
diff --git a/api/resources/samples_action.py b/api/resources/samples_action.py
index df6db17ee..490e48b25 100644
--- a/api/resources/samples_action.py
+++ b/api/resources/samples_action.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 uuid
import os
import logging
diff --git a/api/server.py b/api/server.py
index 8cce4de87..5bac1ba47 100644
--- a/api/server.py
+++ b/api/server.py
@@ -6,17 +6,20 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-import logging
-from itertools import ifilter
+from __future__ import absolute_import
+
import inspect
+import logging
+from functools import reduce
+from six.moves import filter
+from flasgger import Swagger
from flask import Flask
from flask_restful import Api
-from flasgger import Swagger
from api.database import Base
-from api.database import engine
from api.database import db_session
+from api.database import engine
from api.database import models
from api.urls import urlpatterns
from yardstick import _init_logging
@@ -44,7 +47,7 @@ def init_db():
pass
return False
- subclses = ifilter(func, inspect.getmembers(models, inspect.isclass))
+ subclses = filter(func, inspect.getmembers(models, inspect.isclass))
logger.debug('Import models: %s', [a[1] for a in subclses])
Base.metadata.create_all(bind=engine)
diff --git a/api/swagger/models.py b/api/swagger/models.py
index 9a0157e0e..d3c7a9b75 100644
--- a/api/swagger/models.py
+++ b/api/swagger/models.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
from flask_restful import fields
from flask_restful_swagger import swagger
diff --git a/api/urls.py b/api/urls.py
index 58df29142..04b7485f1 100644
--- a/api/urls.py
+++ b/api/urls.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
from api import views
from api.utils.common import Url
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
diff --git a/api/views.py b/api/views.py
index eb81145fc..0c39bfad0 100644
--- a/api/views.py
+++ b/api/views.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 logging
import os
@@ -36,6 +37,7 @@ class ReleaseAction(ApiResource):
class SamplesAction(ApiResource):
+
def post(self):
return self._dispatch_post()
@@ -43,7 +45,8 @@ class SamplesAction(ApiResource):
TestSuiteActionModel = models.TestSuiteActionModel
TestSuiteActionArgsModel = models.TestSuiteActionArgsModel
TestSuiteActionArgsOptsModel = models.TestSuiteActionArgsOptsModel
-TestSuiteActionArgsOptsTaskArgModel = models.TestSuiteActionArgsOptsTaskArgModel
+TestSuiteActionArgsOptsTaskArgModel = \
+ models.TestSuiteActionArgsOptsTaskArgModel
class TestsuitesAction(ApiResource):
@@ -56,11 +59,13 @@ ResultModel = models.ResultModel
class Results(ApiResource):
+
@swag_from(os.getcwd() + '/swagger/docs/results.yaml')
def get(self):
return self._dispatch_get()
class EnvAction(ApiResource):
+
def post(self):
return self._dispatch_post()