+
+
+def _create_task(task_id):
+ async_handler = AsyncTaskHandler()
+ task_dict = {
+ 'task_id': task_id,
+ 'status': 0
+ }
+ async_handler.insert(task_dict)
+
+
+def _update_task_status(task_id):
+ async_handler = AsyncTaskHandler()
+
+ task = async_handler.get_task_by_taskid(task_id)
+ async_handler.update_status(task, 1)
+
+
+def _update_task_error(task_id, error):
+ async_handler = AsyncTaskHandler()
+
+ task = async_handler.get_task_by_taskid(task_id)
+ async_handler.update_status(task, 2)
+ async_handler.update_error(task, error)
+
+
+def update_openrc(args):
+ try:
+ openrc_vars = args['openrc']
+ except KeyError:
+ return result_handler(consts.API_ERROR, 'openrc must be provided')
+ else:
+ if not isinstance(openrc_vars, collections.Mapping):
+ return result_handler(consts.API_ERROR, 'args should be a dict')
+
+ lines = ['export {}={}\n'.format(k, v) for k, v in openrc_vars.items()]
+ logger.debug('Writing: %s', ''.join(lines))
+
+ logger.info('Writing openrc: Writing')
+ common_utils.makedirs(consts.CONF_DIR)
+
+ with open(consts.OPENRC, 'w') as f:
+ f.writelines(lines)
+ logger.info('Writing openrc: Done')
+
+ logger.info('Source openrc: Sourcing')
+ try:
+ _source_file(consts.OPENRC)
+ except Exception as e:
+ logger.exception('Failed to source openrc')
+ return result_handler(consts.API_ERROR, str(e))
+ 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})