summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYaroslav Brustinov <ybrustin@cisco.com>2016-08-24 10:07:48 +0300
committerYaroslav Brustinov <ybrustin@cisco.com>2016-08-24 10:07:48 +0300
commita70d3f379e7551851cffffcdd77410210235c47c (patch)
tree1aa148ca6f506e2afe48d850e542931357a1357f
parent8634fdc567b948b35c2a87cea4679aff3995cba6 (diff)
better logger for master_daemon
verify root priveleges in dpdk_* scripts call to functions of show status instead of calling process
-rwxr-xr-xscripts/dpdk_nic_bind.py8
-rwxr-xr-xscripts/dpdk_setup_ports.py12
-rwxr-xr-xscripts/master_daemon.py42
3 files changed, 44 insertions, 18 deletions
diff --git a/scripts/dpdk_nic_bind.py b/scripts/dpdk_nic_bind.py
index d9df92e0..36f18adb 100755
--- a/scripts/dpdk_nic_bind.py
+++ b/scripts/dpdk_nic_bind.py
@@ -41,6 +41,7 @@ import texttable
sys.path.remove(text_tables_path)
import re
import termios
+import getpass
# The PCI device class for ETHERNET devices
ETHERNET_CLASS = "0200"
@@ -544,6 +545,8 @@ def show_status():
to the user what devices are bound to the igb_uio driver, the kernel driver
or to no driver'''
global dpdk_drivers
+ if not devices:
+ get_nic_details()
kernel_drv = []
dpdk_drv = []
no_drv = []
@@ -598,6 +601,8 @@ def show_table():
'''Function called when the script is passed the "--table" option.
Similar to show_status() function, but shows more info: NUMA etc.'''
global dpdk_drivers
+ if not devices:
+ get_nic_details()
dpdk_drv = []
for d in devices.keys():
if devices[d].get("Driver_str") in dpdk_drivers:
@@ -695,4 +700,7 @@ def main():
do_arg_actions()
if __name__ == "__main__":
+ if getpass.getuser() != 'root':
+ print('Please run this program as root/with sudo')
+ exit(1)
main()
diff --git a/scripts/dpdk_setup_ports.py b/scripts/dpdk_setup_ports.py
index 1bbf5b3a..84c44e4a 100755
--- a/scripts/dpdk_setup_ports.py
+++ b/scripts/dpdk_setup_ports.py
@@ -13,6 +13,7 @@ import shlex
import traceback
from collections import defaultdict, OrderedDict
from distutils.util import strtobool
+import getpass
class ConfigCreator(object):
mandatory_interface_fields = ['Slot_str', 'src_mac', 'dest_mac', 'Device_str', 'NUMA']
@@ -678,12 +679,12 @@ def main ():
process_options ()
if map_driver.args.show:
- res=os.system('%s dpdk_nic_bind.py --status' % sys.executable);
- return(res);
+ dpdk_nic_bind.show_status()
+ return
if map_driver.args.table:
- res=os.system('%s dpdk_nic_bind.py -t' % sys.executable);
- return(res);
+ dpdk_nic_bind.show_table()
+ return
obj =CIfMap(map_driver.cfg_file);
@@ -701,5 +702,8 @@ def main ():
exit(-1)
if __name__ == '__main__':
+ if getpass.getuser() != 'root':
+ print('Please run this program as root/with sudo')
+ exit(1)
main()
diff --git a/scripts/master_daemon.py b/scripts/master_daemon.py
index 21b94856..e4a2fd1c 100755
--- a/scripts/master_daemon.py
+++ b/scripts/master_daemon.py
@@ -10,6 +10,7 @@ from argparse import *
from time import time, sleep
from glob import glob
import signal
+from functools import partial
sys.path.append(os.path.join('automation', 'trex_control_plane', 'server'))
import CCustomLogger
@@ -102,26 +103,39 @@ def set_logger():
os.rename(logging_file, logging_file_bu)
CCustomLogger.setup_daemon_logger('Master daemon', logging_file)
+def log_usage(name, func, *args, **kwargs):
+ log_string = name
+ if args:
+ log_string += ', args: ' + repr(args)
+ if kwargs:
+ log_string += ', kwargs: ' + repr(kwargs)
+ logging.info(log_string)
+ return func(*args, **kwargs)
+
def start_master_daemon_func():
+ funcs_by_name = {}
+ # master_daemon functions
+ funcs_by_name['add'] = add
+ funcs_by_name['check_connectivity'] = check_connectivity
+ funcs_by_name['get_trex_path'] = get_trex_path
+ funcs_by_name['update_trex'] = update_trex
+ # trex_daemon_server
+ funcs_by_name['is_trex_daemon_running'] = trex_daemon_server.is_running
+ funcs_by_name['restart_trex_daemon'] = trex_daemon_server.restart
+ funcs_by_name['start_trex_daemon'] = trex_daemon_server.start
+ funcs_by_name['stop_trex_daemon'] = trex_daemon_server.stop
+ # stl rpc proxy
+ funcs_by_name['is_stl_rpc_proxy_running'] = stl_rpc_proxy.is_running
+ funcs_by_name['restart_stl_rpc_proxy'] = stl_rpc_proxy.restart
+ funcs_by_name['start_stl_rpc_proxy'] = stl_rpc_proxy.start
+ funcs_by_name['stop_stl_rpc_proxy'] = stl_rpc_proxy.stop
try:
set_logger()
register_socket(master_daemon.tag)
server = SimpleJSONRPCServer(('0.0.0.0', master_daemon.port))
logging.info('Started master daemon (port %s)' % master_daemon.port)
- server.register_function(add)
- server.register_function(check_connectivity)
- server.register_function(get_trex_path)
- server.register_function(update_trex)
- # trex_daemon_server
- server.register_function(trex_daemon_server.is_running, 'is_trex_daemon_running')
- server.register_function(trex_daemon_server.restart, 'restart_trex_daemon')
- server.register_function(trex_daemon_server.start, 'start_trex_daemon')
- server.register_function(trex_daemon_server.stop, 'stop_trex_daemon')
- # stl rpc proxy
- server.register_function(stl_rpc_proxy.is_running, 'is_stl_rpc_proxy_running')
- server.register_function(stl_rpc_proxy.restart, 'restart_stl_rpc_proxy')
- server.register_function(stl_rpc_proxy.start, 'start_stl_rpc_proxy')
- server.register_function(stl_rpc_proxy.stop, 'stop_stl_rpc_proxy')
+ for name, func in funcs_by_name.items():
+ server.register_function(partial(log_usage, name, func), name)
server.register_function(server.funcs.keys, 'get_methods') # should be last
signal.signal(signal.SIGTSTP, stop_handler) # ctrl+z
signal.signal(signal.SIGTERM, stop_handler) # kill