summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane/stl/console/trex_console.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/automation/trex_control_plane/stl/console/trex_console.py')
-rwxr-xr-xscripts/automation/trex_control_plane/stl/console/trex_console.py81
1 files changed, 44 insertions, 37 deletions
diff --git a/scripts/automation/trex_control_plane/stl/console/trex_console.py b/scripts/automation/trex_control_plane/stl/console/trex_console.py
index 9dbe82c8..8c71065c 100755
--- a/scripts/automation/trex_control_plane/stl/console/trex_console.py
+++ b/scripts/automation/trex_control_plane/stl/console/trex_console.py
@@ -16,6 +16,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
+from __future__ import print_function
+
import subprocess
import cmd
import json
@@ -35,7 +37,7 @@ from trex_stl_lib.utils.common import user_input, get_current_user
from trex_stl_lib.utils import parsing_opts
-import trex_tui
+from . import trex_tui
from functools import wraps
@@ -48,9 +50,9 @@ class ConsoleLogger(LoggerApi):
def write (self, msg, newline = True):
if newline:
- print msg
+ print(msg)
else:
- print msg,
+ print(msg, end=' ')
def flush (self):
sys.stdout.flush()
@@ -66,20 +68,25 @@ class ConsoleLogger(LoggerApi):
def set_window_always_on_top (title):
# we need the GDK module, if not available - ignroe this command
try:
- import gtk.gdk
+ if sys.version_info < (3,0):
+ from gtk import gdk
+ else:
+ #from gi.repository import Gdk as gdk
+ return
+
except ImportError:
return
# search the window and set it as above
- root = gtk.gdk.get_default_root_window()
+ root = gdk.get_default_root_window()
for id in root.property_get('_NET_CLIENT_LIST')[2]:
- w = gtk.gdk.window_foreign_new(id)
+ w = gdk.window_foreign_new(id)
if w:
name = w.property_get('WM_NAME')[2]
if name == title:
w.set_keep_above(True)
- gtk.gdk.window_process_all_updates()
+ gdk.window_process_all_updates()
break
@@ -111,7 +118,7 @@ class TRexGeneralCmd(cmd.Cmd):
# make the directory available for every user
try:
original_umask = os.umask(0)
- os.makedirs(self._history_file_dir, mode = 0777)
+ os.makedirs(self._history_file_dir, mode = 0o777)
finally:
os.umask(original_umask)
@@ -124,14 +131,14 @@ class TRexGeneralCmd(cmd.Cmd):
length = readline.get_current_history_length()
- for i in xrange(1, length + 1):
+ for i in range(1, length + 1):
cmd = readline.get_history_item(i)
- print "{:<5} {:}".format(i, cmd)
+ print("{:<5} {:}".format(i, cmd))
def get_history_item (self, index):
length = readline.get_current_history_length()
if index > length:
- print format_text("please select an index between {0} and {1}".format(0, length))
+ print(format_text("please select an index between {0} and {1}".format(0, length)))
return None
return readline.get_history_item(index)
@@ -191,7 +198,7 @@ class TRexConsole(TRexGeneralCmd):
func_name = func_name[3:]
if not inst.stateless_client.is_connected():
- print format_text("\n'{0}' cannot be executed on offline mode\n".format(func_name), 'bold')
+ print(format_text("\n'{0}' cannot be executed on offline mode\n".format(func_name), 'bold'))
return
ret = f(*args)
@@ -209,11 +216,11 @@ class TRexConsole(TRexGeneralCmd):
func_name = func_name[3:]
if not inst.stateless_client.is_connected():
- print format_text("\n'{0}' cannot be executed on offline mode\n".format(func_name), 'bold')
+ print(format_text("\n'{0}' cannot be executed on offline mode\n".format(func_name), 'bold'))
return
if inst.stateless_client.is_all_ports_acquired():
- print format_text("\n'{0}' cannot be executed on read only mode\n".format(func_name), 'bold')
+ print(format_text("\n'{0}' cannot be executed on read only mode\n".format(func_name), 'bold'))
return
rc = f(*args)
@@ -266,7 +273,7 @@ class TRexConsole(TRexGeneralCmd):
return stop
def default(self, line):
- print "'{0}' is an unrecognized command. type 'help' or '?' for a list\n".format(line)
+ print("'{0}' is an unrecognized command. type 'help' or '?' for a list\n".format(line))
@staticmethod
def tree_autocomplete(text):
@@ -303,20 +310,20 @@ class TRexConsole(TRexGeneralCmd):
def do_verbose(self, line):
'''Shows or set verbose mode\n'''
if line == "":
- print "\nverbose is " + ("on\n" if self.verbose else "off\n")
+ print("\nverbose is " + ("on\n" if self.verbose else "off\n"))
elif line == "on":
self.verbose = True
self.stateless_client.set_verbose("high")
- print format_text("\nverbose set to on\n", 'green', 'bold')
+ print(format_text("\nverbose set to on\n", 'green', 'bold'))
elif line == "off":
self.verbose = False
self.stateless_client.set_verbose("normal")
- print format_text("\nverbose set to off\n", 'green', 'bold')
+ print(format_text("\nverbose set to off\n", 'green', 'bold'))
else:
- print format_text("\nplease specify 'on' or 'off'\n", 'bold')
+ print(format_text("\nplease specify 'on' or 'off'\n", 'bold'))
# show history
def help_history (self):
@@ -344,26 +351,26 @@ class TRexConsole(TRexGeneralCmd):
'''Maps ports topology\n'''
ports = self.stateless_client.get_acquired_ports()
if not ports:
- print "No ports acquired\n"
+ print("No ports acquired\n")
with self.stateless_client.logger.supress():
table = stl_map_ports(self.stateless_client, ports = ports)
- print format_text('\nAcquired ports topology:\n', 'bold', 'underline')
+ print(format_text('\nAcquired ports topology:\n', 'bold', 'underline'))
# bi-dir ports
- print format_text('Bi-directional ports:\n','underline')
+ print(format_text('Bi-directional ports:\n','underline'))
for port_a, port_b in table['bi']:
- print "port {0} <--> port {1}".format(port_a, port_b)
+ print("port {0} <--> port {1}".format(port_a, port_b))
- print ""
+ print("")
# unknown ports
- print format_text('Mapping unknown:\n','underline')
+ print(format_text('Mapping unknown:\n','underline'))
for port in table['unknown']:
- print "port {0}".format(port)
- print ""
+ print("port {0}".format(port))
+ print("")
@@ -394,7 +401,7 @@ class TRexConsole(TRexGeneralCmd):
if cmd == None:
return
- print "Executing '{0}'".format(cmd)
+ print("Executing '{0}'".format(cmd))
return self.onecmd(cmd)
@@ -541,11 +548,11 @@ class TRexConsole(TRexGeneralCmd):
events = self.stateless_client.get_events()
for ev in events:
- print ev
+ print(ev)
if opts.clear:
self.stateless_client.clear_events()
- print format_text("\n\nEvent log was cleared\n\n")
+ print(format_text("\n\nEvent log was cleared\n\n"))
def complete_profile(self, text, line, begidx, endidx):
@@ -571,7 +578,7 @@ class TRexConsole(TRexGeneralCmd):
if opts.xterm:
if not os.path.exists('/usr/bin/xterm'):
- print format_text("XTERM does not exists on this machine", 'bold')
+ print(format_text("XTERM does not exists on this machine", 'bold'))
return
info = self.stateless_client.get_connection_info()
@@ -616,8 +623,8 @@ class TRexConsole(TRexGeneralCmd):
func()
return
- print "\nSupported Console Commands:"
- print "----------------------------\n"
+ print("\nSupported Console Commands:")
+ print("----------------------------\n")
cmds = [x[3:] for x in self.get_names() if x.startswith("do_")]
hidden = ['EOF', 'q', 'exit', 'h', 'shell']
@@ -635,7 +642,7 @@ class TRexConsole(TRexGeneralCmd):
help = "*** Undocumented Function ***\n"
l=help.splitlines()
- print "{:<30} {:<30}".format(cmd + " - ",l[0] )
+ print("{:<30} {:<30}".format(cmd + " - ",l[0] ))
# a custorm cmdloop wrapper
def start(self):
@@ -647,7 +654,7 @@ class TRexConsole(TRexGeneralCmd):
if not readline.get_line_buffer():
raise KeyboardInterrupt
else:
- print ""
+ print("")
self.intro = None
continue
@@ -691,7 +698,7 @@ def run_script_file (self, filename, stateless_client):
stateless_client.logger.log(format_text("Executing line {0} : '{1}'\n".format(index, line)))
if not cmd in cmd_table:
- print "\n*** Error at line {0} : '{1}'\n".format(index, line)
+ print("\n*** Error at line {0} : '{1}'\n".format(index, line))
stateless_client.logger.log(format_text("unknown command '{0}'\n".format(cmd), 'bold'))
return False
@@ -828,7 +835,7 @@ def main():
console.start()
except KeyboardInterrupt as e:
- print "\n\n*** Caught Ctrl + C... Exiting...\n\n"
+ print("\n\n*** Caught Ctrl + C... Exiting...\n\n")
finally:
with stateless_client.logger.supress():