summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane/server
diff options
context:
space:
mode:
authorYaroslav Brustinov <ybrustin@cisco.com>2015-10-26 08:17:54 +0200
committerYaroslav Brustinov <ybrustin@cisco.com>2015-10-26 09:50:14 +0200
commitffab8fdc68245ff525780554774e3a7615500e28 (patch)
tree289212d60dfad029c51bb484819f703f55202967 /scripts/automation/trex_control_plane/server
parented13067343186b5dad0566962cd308445136f3b7 (diff)
API add: get_trex_log(), get_trex_daemon_log(), get_trex_version()
Diffstat (limited to 'scripts/automation/trex_control_plane/server')
-rwxr-xr-xscripts/automation/trex_control_plane/server/trex_server.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/scripts/automation/trex_control_plane/server/trex_server.py b/scripts/automation/trex_control_plane/server/trex_server.py
index e48f8963..ca53de81 100755
--- a/scripts/automation/trex_control_plane/server/trex_server.py
+++ b/scripts/automation/trex_control_plane/server/trex_server.py
@@ -59,6 +59,7 @@ class CTRexServer(object):
self.__check_trex_path_validity()
self.__check_files_path_validity()
self.trex = CTRex()
+ self.trex_version = None
self.trex_host = trex_host
self.trex_daemon_port = trex_daemon_port
self.trex_zmq_port = trex_zmq_port
@@ -66,6 +67,7 @@ class CTRexServer(object):
self.start_lock = threading.Lock()
self.__reservation = None
self.zmq_monitor = ZmqMonitorSession(self.trex, self.trex_zmq_port) # intiate single ZMQ monitor thread for server usage
+ logger.info(self.get_trex_version(base64 = False))
def add(self, x, y):
print "server function add ",x,y
@@ -116,6 +118,9 @@ class CTRexServer(object):
# set further functionality and peripherals to server instance
try:
self.server.register_function(self.add)
+ self.server.register_function(self.get_trex_log)
+ self.server.register_function(self.get_trex_daemon_log)
+ self.server.register_function(self.get_trex_version)
self.server.register_function(self.connectivity_check)
self.server.register_function(self.start_trex)
self.server.register_function(self.stop_trex)
@@ -140,6 +145,44 @@ class CTRexServer(object):
self.server.shutdown()
pass
+ # get files from Trex server and return their content (mainly for logs)
+ @staticmethod
+ def _pull_file(filepath):
+ try:
+ with open(filepath, 'rb') as f:
+ file_content = f.read()
+ return binascii.b2a_base64(file_content)
+ except Exception as e:
+ err_str = "Can't get requested file: {0}, possibly due to TRex that did not run".format(filepath)
+ logger.error('{0}, error: {1}'.format(err_str, e))
+ return Fault(-33, err_str)
+
+ # get Trex log /tmp/trex.txt
+ def get_trex_log(self):
+ logger.info("Processing get_trex_log() command.")
+ return self._pull_file('/tmp/trex.txt')
+
+ # get daemon log /var/log/trex/trex_daemon_server.log
+ def get_trex_daemon_log (self):
+ logger.info("Processing get_trex_daemon_log() command.")
+ return self._pull_file('/var/log/trex/trex_daemon_server.log')
+
+ # get Trex version from ./t-rex-64 --help (last 4 lines)
+ def get_trex_version (self, base64 = True):
+ try:
+ logger.info("Processing get_trex_version() command.")
+ if not self.trex_version:
+ help_print = os.popen('cd {path}; ./t-rex-64 --help'.format(path=self.TREX_PATH), 'r').read()
+ self.trex_version = binascii.b2a_base64('\n'.join(help_print.split('\n')[-5:-1]))
+ if base64:
+ return self.trex_version
+ else:
+ return binascii.a2b_base64(self.trex_version)
+ except Exception as e:
+ err_str = "Can't get trex version, error: {0}".format(e)
+ logger.error(err_str)
+ return Fault(-33, err_str)
+
def stop_handler (self, signum, frame):
logger.info("Daemon STOP request detected.")
if self.is_running():