diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/base.py | 11 | ||||
-rw-r--r-- | api/resources/env_action.py | 21 |
2 files changed, 29 insertions, 3 deletions
diff --git a/api/base.py b/api/base.py index 527008588..6fa2777ce 100644 --- a/api/base.py +++ b/api/base.py @@ -23,9 +23,16 @@ logger.setLevel(logging.DEBUG) class ApiResource(Resource): def _post_args(self): - params = common_utils.translate_to_str(request.json) - action = params.get('action', '') + data = request.json if request.json else {} + params = common_utils.translate_to_str(data) + action = params.get('action', request.form.get('action', '')) args = params.get('args', {}) + + try: + args['file'] = request.files['file'] + except KeyError: + pass + logger.debug('Input args is: action: %s, args: %s', action, args) return action, args 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}) |