summaryrefslogtreecommitdiffstats
path: root/api/resources
diff options
context:
space:
mode:
Diffstat (limited to 'api/resources')
-rw-r--r--api/resources/v1/env.py6
-rw-r--r--api/resources/v1/testsuites.py3
-rw-r--r--api/resources/v2/images.py69
3 files changed, 31 insertions, 47 deletions
diff --git a/api/resources/v1/env.py b/api/resources/v1/env.py
index 75c981a96..6c9eb8324 100644
--- a/api/resources/v1/env.py
+++ b/api/resources/v1/env.py
@@ -10,12 +10,16 @@ from __future__ import absolute_import
import errno
import logging
+
+import ipaddress
import os
import subprocess
import threading
import time
import uuid
import glob
+
+import six
import yaml
import collections
@@ -269,6 +273,8 @@ class V1Env(ApiResource):
LOG.info('Openrc file not found')
installer_ip = os.environ.get('INSTALLER_IP',
'192.168.200.2')
+ # validate installer_ip is a valid ipaddress
+ installer_ip = str(ipaddress.IPv4Address(six.u(installer_ip)))
installer_type = os.environ.get('INSTALLER_TYPE', 'compass')
LOG.info('Getting openrc file from %s', installer_type)
self._get_remote_rc_file(rc_file,
diff --git a/api/resources/v1/testsuites.py b/api/resources/v1/testsuites.py
index 5f72c2ea6..3e14670b4 100644
--- a/api/resources/v1/testsuites.py
+++ b/api/resources/v1/testsuites.py
@@ -20,6 +20,7 @@ from yardstick.common.utils import result_handler
from yardstick.benchmark.core import Param
from yardstick.benchmark.core.task import Task
from api.swagger import models
+from api.database.v1.handlers import TasksHandler
LOG = logging.getLogger(__name__)
LOG.setLevel(logging.DEBUG)
@@ -58,7 +59,7 @@ class V1Testsuite(ApiResource):
task_args.update(args.get('opts', {}))
param = Param(task_args)
- task_thread = TaskThread(Task().start, param)
+ task_thread = TaskThread(Task().start, param, TasksHandler())
task_thread.start()
return result_handler(consts.API_SUCCESS, {'task_id': task_id})
diff --git a/api/resources/v2/images.py b/api/resources/v2/images.py
index 0c36a0a26..c3e5ee73e 100644
--- a/api/resources/v2/images.py
+++ b/api/resources/v2/images.py
@@ -18,8 +18,7 @@ from api.database.v2.handlers import V2ImageHandler
from api.database.v2.handlers import V2EnvironmentHandler
from yardstick.common.utils import result_handler
from yardstick.common.utils import source_env
-from yardstick.common.utils import change_obj_to_dict
-from yardstick.common.openstack_utils import get_nova_client
+from yardstick.common import openstack_utils
from yardstick.common.openstack_utils import get_glance_client
from yardstick.common import constants as consts
@@ -47,39 +46,21 @@ class V2Images(ApiResource):
def get(self):
try:
source_env(consts.OPENRC)
- except Exception:
+ except OSError:
return result_handler(consts.API_ERROR, 'source openrc error')
- nova_client = get_nova_client()
- try:
- images_list = nova_client.images.list()
- except Exception:
+ image_list = openstack_utils.list_images()
+
+ if image_list is False:
return result_handler(consts.API_ERROR, 'get images error')
- else:
- images = {i.name: self.get_info(change_obj_to_dict(i)) for i in images_list}
+
+ images = {i.name: format_image_info(i) for i in image_list}
return result_handler(consts.API_SUCCESS, {'status': 1, 'images': images})
def post(self):
return self._dispatch_post()
- def get_info(self, data):
- try:
- size = data['OS-EXT-IMG-SIZE:size']
- except KeyError:
- size = None
- else:
- size = float(size) / 1024 / 1024
-
- result = {
- 'name': data.get('name', ''),
- 'discription': data.get('description', ''),
- 'size': size,
- 'status': data.get('status'),
- 'time': data.get('updated')
- }
- return result
-
def load_image(self, args):
try:
image_name = args['name']
@@ -268,7 +249,7 @@ class V2Images(ApiResource):
r = requests.head(url)
try:
file_size = int(r.headers['content-length'])
- except Exception:
+ except (TypeError, ValueError):
return
with open(path, 'wb') as f:
@@ -303,14 +284,13 @@ class V2Image(ApiResource):
except ValueError:
return result_handler(consts.API_ERROR, 'no such image id')
- nova_client = get_nova_client()
- images = nova_client.images.list()
+ images = openstack_utils.list_images()
try:
image = next((i for i in images if i.name == image.name))
except StopIteration:
pass
- return_image = self.get_info(change_obj_to_dict(image))
+ return_image = format_image_info(image)
return_image['id'] = image_id
return result_handler(consts.API_SUCCESS, {'image': return_image})
@@ -349,19 +329,16 @@ class V2Image(ApiResource):
return result_handler(consts.API_SUCCESS, {'image': image_id})
- def get_info(self, data):
- try:
- size = data['OS-EXT-IMG-SIZE:size']
- except KeyError:
- size = None
- else:
- size = float(size) / 1024 / 1024
-
- result = {
- 'name': data.get('name', ''),
- 'description': data.get('description', ''),
- 'size': size,
- 'status': data.get('status'),
- 'time': data.get('updated')
- }
- return result
+
+def format_image_info(image):
+ image_dict = {}
+
+ if image is None:
+ return image_dict
+
+ image_dict['name'] = image.name
+ image_dict['size'] = float(image.size) / 1024 / 1024
+ image_dict['status'] = image.status.upper()
+ image_dict['time'] = image.updated_at
+
+ return image_dict