From c04372b8630169a3fcc4b52e8d2b935f110519a6 Mon Sep 17 00:00:00 2001 From: chenjiankun Date: Thu, 22 Jun 2017 13:00:40 +0000 Subject: Add API to upload pod.yaml file JIRA: YARDSTICK-687 We need a API to upload a pod.yaml file to /etc/yardstick/pod.yaml. API: /yardstick/env/action method: POST param: { 'action': 'upload_pod_file', 'file': file object } Change-Id: I3d25df364da10aaf34f995e948e1704235a40f6f Signed-off-by: chenjiankun --- api/resources/env_action.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'api/resources') diff --git a/api/resources/env_action.py b/api/resources/env_action.py index 42bef8529..3536559b7 100644 --- a/api/resources/env_action.py +++ b/api/resources/env_action.py @@ -16,12 +16,12 @@ import threading import time import uuid import glob +import yaml import collections from six.moves import configparser from oslo_serialization import jsonutils from docker import Client -from docker.utils import create_host_config from api.database.handler import AsyncTaskHandler from api.utils import influx @@ -343,3 +343,22 @@ def update_openrc(args): logger.info('Source openrc: Done') return result_handler(consts.API_SUCCESS, {'openrc': openrc_vars}) + + +def upload_pod_file(args): + try: + pod_file = args['file'] + except KeyError: + return result_handler(consts.API_ERROR, 'file must be provided') + + logger.info('Checking file') + data = yaml.load(pod_file.read()) + if not isinstance(data, collections.Mapping): + return result_handler(consts.API_ERROR, 'invalid yaml file') + + logger.info('Writing file') + with open(consts.POD_FILE, 'w') as f: + yaml.dump(data, f, default_flow_style=False) + logger.info('Writing finished') + + return result_handler(consts.API_SUCCESS, {'pod_info': data}) -- cgit 1.2.3-korg