summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xutil/ec3po/console.py17
-rw-r--r--util/ec3po/interpreter.py8
2 files changed, 25 insertions, 0 deletions
diff --git a/util/ec3po/console.py b/util/ec3po/console.py
index 2a426ac700..e75523e80b 100755
--- a/util/ec3po/console.py
+++ b/util/ec3po/console.py
@@ -86,6 +86,8 @@ class Console(object):
dbg_pipe: A multiprocessing.Connection object which represents the console's
read-only side of the debug pipe. This must be a unidirectional pipe
attached to the intepreter. EC debug messages use this pipe.
+ oobm_queue: A multiprocessing.Queue which is used for out of band management
+ for the interactive console.
input_buffer: A string representing the current input command.
input_buffer_pos: An integer representing the current position in the buffer
to insert a char.
@@ -127,6 +129,7 @@ class Console(object):
self.user_pty = user_pty
self.cmd_pipe = cmd_pipe
self.dbg_pipe = dbg_pipe
+ self.oobm_queue = multiprocessing.Queue()
self.input_buffer = ''
self.input_buffer_pos = 0
self.partial_cmd = ''
@@ -145,6 +148,7 @@ class Console(object):
string.append('user_pty: %s' % self.user_pty)
string.append('cmd_pipe: %s' % self.cmd_pipe)
string.append('dbg_pipe: %s' % self.dbg_pipe)
+ string.append('oobm_queue: %s' % self.oobm_queue)
string.append('input_buffer: %s' % self.input_buffer)
string.append('input_buffer_pos: %d' % self.input_buffer_pos)
string.append('esc_state: %d' % self.esc_state)
@@ -695,6 +699,19 @@ def StartLoop(console):
console.logger.debug('|DBG|->\'%s\'', data)
os.write(console.master_pty, data)
+ while not console.oobm_queue.empty():
+ console.logger.debug('OOBM queue ready for reading.')
+ cmd = console.oobm_queue.get()
+ console.logger.debug('cmd: %s', cmd)
+ if cmd.startswith('loglevel'):
+ console.logger.debug('Log level change request.')
+ new_log_level = int(cmd.split(' ')[1])
+ console.logger.logger.setLevel(new_log_level)
+ console.logger.info('Log level changed to %d.', new_log_level)
+
+ # Forward the request to the interpreter as well.
+ console.cmd_pipe.send(cmd)
+
finally:
# Close pipes.
console.dbg_pipe.close()
diff --git a/util/ec3po/interpreter.py b/util/ec3po/interpreter.py
index 23e896c640..4875d66b74 100644
--- a/util/ec3po/interpreter.py
+++ b/util/ec3po/interpreter.py
@@ -240,6 +240,14 @@ class Interpreter(object):
if len(command) == 0:
return
+ # Handle log level change requests.
+ if command.startswith('loglevel'):
+ self.logger.debug('Log level change request.')
+ new_log_level = int(command.split(' ')[1])
+ self.logger.logger.setLevel(new_log_level)
+ self.logger.info('Log level changed to %d.', new_log_level)
+ return
+
# Check for interrogation command.
if command == EC_SYN:
# User is requesting interrogation. Send SYN as is.