import json
import Queue
-import traceback
import uuid
from flask import Flask
from flask_socketio import emit
from flask_socketio import SocketIO
-from fluentd import FluentLogHandler
from summarizer import NFVBenchSummarizer
from log import LOG
from utils import byteify
from utils import RunLock
-
# this global cannot reside in Ctx because of the @app and @socketio decorators
app = None
socketio = None
of this class and pass a runner object then invoke the run method
"""
- def __init__(self, http_root, runner, logger):
+ def __init__(self, http_root, runner, fluent_logger):
self.nfvbench_runner = runner
setup_flask(http_root)
- self.fluent_logger = logger
- self.result_fluent_logger = None
- if self.fluent_logger:
- self.result_fluent_logger = \
- FluentLogHandler("resultnfvbench",
- fluentd_ip=self.fluent_logger.sender.host,
- fluentd_port=self.fluent_logger.sender.port)
- self.result_fluent_logger.runlogdate = self.fluent_logger.runlogdate
+ self.fluent_logger = fluent_logger
def run(self, host='127.0.0.1', port=7556):
# remove unfilled values as we do not want them to override default values with None
config = {k: v for k, v in config.items() if v is not None}
with RunLock():
+ if self.fluent_logger:
+ self.fluent_logger.start_new_run()
results = self.nfvbench_runner.run(config, config)
except Exception as exc:
- print 'NFVbench runner exception:'
- traceback.print_exc()
results = result_json(STATUS_ERROR, str(exc))
- LOG.exception()
+ LOG.exception('NFVbench runner exception:')
if Ctx.request_from_socketio:
socketio.emit('run_end', results)
else:
# this might overwrite a previously unfetched result
Ctx.set_result(results)
- if self.fluent_logger:
- self.result_fluent_logger.runlogdate = self.fluent_logger.runlogdate
- summary = NFVBenchSummarizer(results['result'], self.result_fluent_logger)
+ summary = NFVBenchSummarizer(results['result'], self.fluent_logger)
LOG.info(str(summary))
Ctx.release()
if self.fluent_logger: