From 17ea7e8e905951b5fe15e4b4aa04a8c5897f7774 Mon Sep 17 00:00:00 2001 From: rdaforno <reto.daforno@tik.ee.ethz.ch> Date: Mon, 13 Jan 2020 15:18:59 +0100 Subject: [PATCH] scripts fixed --- testmanagementserver/test_to_linkmap.py | 14 +++++++------- webserver/testmanagement/user.ini | 2 ++ webserver/user/include/libflocklab.php | 20 ++++++++++++++++---- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/testmanagementserver/test_to_linkmap.py b/testmanagementserver/test_to_linkmap.py index 6f2b403..3e6c139 100755 --- a/testmanagementserver/test_to_linkmap.py +++ b/testmanagementserver/test_to_linkmap.py @@ -7,7 +7,7 @@ __license__ = "GPL" import sys, os, getopt, tempfile, shutil, re, time, errno, io, logging, traceback, __main__, csv, tarfile from datetime import datetime -import struct import * +from struct import * # Import local libraries from lib.flocklab import SUCCESS import lib.flocklab as flocklab @@ -117,14 +117,14 @@ def TestToLinkmap(testid=None, cn=None, cur=None): # Process CSV file --- logger.debug("Processing CSV file...") - packetreader = csv.reader(open(_serial_service_file, 'rb'), delimiter=',') + packetreader = csv.reader(open(_serial_service_file, 'r'), delimiter=',') for packetinfo in packetreader: if re.search("^observer_id", packetinfo[1]): continue # nx_uint16_t num_messages; # nx_uint16_t sender_id; # nx_uint16_t num_received; - packet = packetinfo[4].decode('hex') + packet = bytes.fromhex(packetinfo[4]) data = unpack(">7xB%dx" % (len(packet) - 8), packet) if data[0] == 7: # link measurement @@ -176,7 +176,7 @@ def TestToLinkmap(testid=None, cn=None, cur=None): WHERE `a`.serv_tests_key = %s LIMIT 1 """ - cur.execute(sql, str(testid)) + cur.execute(sql % str(testid)) ret = cur.fetchall() platform_fk = ret[0][0] platform_name = ret[0][1] @@ -214,11 +214,11 @@ def TestToLinkmap(testid=None, cn=None, cur=None): # Store XML file in DB --- logger.debug("Storing XML file in DB...") - cur.execute("DELETE FROM `tbl_serv_web_link_measurements` WHERE `test_fk`=%s", str(testid)) + cur.execute("DELETE FROM `tbl_serv_web_link_measurements` WHERE `test_fk`=%s" % str(testid)) if platform_radio is None: - cur.execute("INSERT INTO `tbl_serv_web_link_measurements` (`test_fk`, `platform_fk`, `links`, `begin`, `end`) VALUES (%s,%s,%s,%s,%s)", (str(testid), platform_fk, linkmap.getvalue(), datetime.fromtimestamp(starttime), datetime.fromtimestamp(stoptime))) + cur.execute("INSERT INTO `tbl_serv_web_link_measurements` (`test_fk`, `platform_fk`, `links`, `begin`, `end`) VALUES (%s,%s,'%s','%s','%s')" % ((str(testid), platform_fk, linkmap.getvalue(), datetime.fromtimestamp(starttime), datetime.fromtimestamp(stoptime)))) else: - cur.execute("INSERT INTO `tbl_serv_web_link_measurements` (`test_fk`, `platform_fk`, `links`, `begin`, `end`, `radio`) VALUES (%s,%s,%s,%s,%s,%s)", (str(testid), platform_fk, linkmap.getvalue(), datetime.fromtimestamp(starttime), datetime.fromtimestamp(stoptime), platform_radio)) + cur.execute("INSERT INTO `tbl_serv_web_link_measurements` (`test_fk`, `platform_fk`, `links`, `begin`, `end`, `radio`) VALUES (%s,%s,'%s','%s','%s',%s)" % (str(testid), platform_fk, linkmap.getvalue(), datetime.fromtimestamp(starttime), datetime.fromtimestamp(stoptime), platform_radio)) cn.commit() # Remove temp dir --- diff --git a/webserver/testmanagement/user.ini b/webserver/testmanagement/user.ini index e8a9cf0..3460fbd 100644 --- a/webserver/testmanagement/user.ini +++ b/webserver/testmanagement/user.ini @@ -45,6 +45,8 @@ scheduler = /home/flocklab/testmanagementserver/flocklab_scheduler.py archivedir = /home/flocklab/test_archive sshflags = ;additional SSH flags logdir = /home/flocklab/logs ;log directory for web +tempdir = /home/flocklab/tmp +venvwrapper = /home/flocklab/tools/wrapper.sh ;activates python virtual environment (leave blank if no venv) ; viz [viz] diff --git a/webserver/user/include/libflocklab.php b/webserver/user/include/libflocklab.php index 7f43c66..cb60676 100644 --- a/webserver/user/include/libflocklab.php +++ b/webserver/user/include/libflocklab.php @@ -347,9 +347,20 @@ function validate_image($image, &$errors) { $imagefile = tempnam(sys_get_temp_dir(), 'flocklab'); file_put_contents($imagefile, $image['data']); $platform_list = get_available_platforms(); - $cmd = $CONFIG['targetimage']['imagevalidator']." --image=".$imagefile." --platform=". $platform_list[$image['platform']][0]['name']." --core=".$image['core']; + // copy image file to testmanagement server + $cmd = "ssh ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host']." 'mkdir ".$CONFIG['testmanagementserver']['tempdir']."'"; + exec($cmd); + $cmd = "scp ".$imagefile." ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host'].":".$CONFIG['testmanagementserver']['tempdir']; + exec($cmd, $output, $ret); + if ($ret) { + array_push($errors, "Failed to copy file '$test_config_file' to testmanagement server."); + return 1; + } + $cmd = "ssh ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host']." '".$CONFIG['testmanagementserver']['venvwrapper']." ".$CONFIG['targetimage']['imagevalidator']." --image=".$CONFIG['testmanagementserver']['tempdir']."/".basename($imagefile)." --platform=". $platform_list[$image['platform']][0]['name']." --core=".$image['core']."' 2>&1"; exec($cmd , $output, $ret); unlink($imagefile); + $cmd = "ssh ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host']." 'rm ".$CONFIG['testmanagementserver']['tempdir']."/".basename($imagefile)."'"; + exec($cmd); if ($ret != 0) { array_push($validate_image_errors, "The supplied file is not a valid image for this platform."); } @@ -437,14 +448,15 @@ function validate_test($test_config_file, &$errors) { return 1; } // execute XML validation script (runs in the virtual environment on the testmanagement server, therefore we need to use SSH here) - $cmd = "ssh ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host']." '".$CONFIG['tests']['testvalidator']." -x ".$CONFIG['testmanagementserver']['tempdir']."/".basename($test_config_file)." -s ".$CONFIG['xml']['schemapath']." -u " . $_SESSION['serv_users_key']."' 2>&1"; + $cmd = "ssh ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host']." '".$CONFIG['testmanagementserver']['venvwrapper']." ".$CONFIG['tests']['testvalidator']." -x ".$CONFIG['testmanagementserver']['tempdir']."/".basename($test_config_file)." -s ".$CONFIG['xml']['schemapath']." -u " . $_SESSION['serv_users_key']."' 2>&1"; exec($cmd, $output, $ret); if ($ret) { foreach ($output as $error) { array_push($errors, $error); } } - unlink($CONFIG['testmanagementserver']['tempdir']."/".basename($test_config_file)); + $cmd = "ssh ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host']." 'rm ".$CONFIG['testmanagementserver']['tempdir']."/".basename($test_config_file)."'"; + exec($cmd); return $ret == 0; } @@ -461,7 +473,7 @@ function validate_test($test_config_file, &$errors) { function trigger_scheduler() { global $CONFIG; // use SSH as a way to run the script under the user 'flocklab' on the testmanagement server - $cmd = "ssh ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host']." '".$CONFIG['testmanagementserver']['scheduler']." --debug' > /dev/null 2>&1 &"; + $cmd = "ssh ".$CONFIG['testmanagementserver']['user']."@".$CONFIG['testmanagementserver']['host']." '".$CONFIG['testmanagementserver']['venvwrapper']." ".$CONFIG['testmanagementserver']['scheduler']." --debug' > /dev/null 2>&1 &"; exec($cmd); } -- GitLab