mirror of
https://github.com/avatao-content/test-tutorial-framework
synced 2024-11-15 01:37:17 +00:00
Refactor TerminalCommands
This commit is contained in:
parent
ef2ab5d0bf
commit
e50a8732fc
@ -1,33 +1,29 @@
|
|||||||
import logging
|
import logging
|
||||||
from ast import literal_eval
|
from ast import literal_eval
|
||||||
|
|
||||||
from tfw.components import MessageSender, TerminalCommands
|
from tfw.components import MessageSender
|
||||||
from tfw.builtins import EventHandler, FSMAwareEventHandler, TFWServerUplinkConnector
|
from tfw.builtins import TFWServerUplinkConnector
|
||||||
|
from tfw.builtins import EventHandler, FSMAwareEventHandler, TerminalCommandsEventHandler
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class TerminalCallbackEventHandler(EventHandler):
|
class CenatorEventHandler(EventHandler):
|
||||||
"""
|
"""
|
||||||
Logs commands executed in terminal to messages and invokes an
|
Logs commands executed in terminal to messages and invokes an
|
||||||
additional callback function to handle special commands.
|
additional callback function to handle special commands.
|
||||||
!! Please remove from production code. !!
|
!! Please remove from production code. !!
|
||||||
"""
|
"""
|
||||||
def __init__(self, key, callback):
|
def __init__(self, key):
|
||||||
self.callback = callback
|
|
||||||
super().__init__(key)
|
super().__init__(key)
|
||||||
|
|
||||||
def handle_event(self, message):
|
def handle_event(self, message):
|
||||||
command = message['value']
|
command = message['value']
|
||||||
self.cenator(command)
|
|
||||||
self.callback(command)
|
|
||||||
|
|
||||||
def cenator(self, command):
|
|
||||||
LOG.debug('User executed command: "%s"', command)
|
LOG.debug('User executed command: "%s"', command)
|
||||||
MessageSender(self.server_connector).send('JOHN CENA', f'You\'ve executed "{command}"')
|
MessageSender(self.server_connector).send('JOHN CENA', f'You\'ve executed "{command}"')
|
||||||
|
|
||||||
|
|
||||||
class TestCommands(TerminalCommands):
|
class TestCommandsEventHandler(TerminalCommandsEventHandler):
|
||||||
"""
|
"""
|
||||||
Some example commands useful for debugging.
|
Some example commands useful for debugging.
|
||||||
!! Please remove from production code !! and inherit your own
|
!! Please remove from production code !! and inherit your own
|
||||||
@ -54,31 +50,6 @@ class TestCommands(TerminalCommands):
|
|||||||
else:
|
else:
|
||||||
TFWServerUplinkConnector().send_message(literal_eval(args[0]))
|
TFWServerUplinkConnector().send_message(literal_eval(args[0]))
|
||||||
|
|
||||||
def command_seppuku_tfw(self, *args):
|
|
||||||
"""
|
|
||||||
Restart tfw_server.py and event_handler_main.py.
|
|
||||||
This can speed up development when combined with mounting
|
|
||||||
volumes from host to container.
|
|
||||||
"""
|
|
||||||
seppuku = (
|
|
||||||
'nohup sh -c "supervisorctl restart tfwserver event_handler_main" &> /dev/null & '
|
|
||||||
'clear && echo "Committed seppuku! :)" && sleep infinity'
|
|
||||||
)
|
|
||||||
uplink = TFWServerUplinkConnector()
|
|
||||||
uplink.send_message({
|
|
||||||
'key': 'shell',
|
|
||||||
'data': {
|
|
||||||
'command': 'write',
|
|
||||||
'value': f'{seppuku}\n'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
uplink.send_message({
|
|
||||||
'key': 'dashboard',
|
|
||||||
'data': {
|
|
||||||
'command': 'reloadFrontend'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
class MessageFSMStepsEventHandler(FSMAwareEventHandler):
|
class MessageFSMStepsEventHandler(FSMAwareEventHandler):
|
||||||
"""
|
"""
|
||||||
|
@ -13,7 +13,7 @@ from tfw.logging import Log, Logger, LogFormatter, VerboseLogFormatter
|
|||||||
from tao.config import TAOENV
|
from tao.config import TAOENV
|
||||||
|
|
||||||
from custom_event_handlers import MessageFSMStepsEventHandler
|
from custom_event_handlers import MessageFSMStepsEventHandler
|
||||||
from custom_event_handlers import TerminalCallbackEventHandler, TestCommands
|
from custom_event_handlers import CenatorEventHandler, TestCommandsEventHandler
|
||||||
from signal_handling import setup_signal_handlers
|
from signal_handling import setup_signal_handlers
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@ -44,9 +44,10 @@ def main():
|
|||||||
terminal = TerminalEventHandler( # Web shell backend
|
terminal = TerminalEventHandler( # Web shell backend
|
||||||
key='shell'
|
key='shell'
|
||||||
)
|
)
|
||||||
commands = TerminalCallbackEventHandler( # Reacts to terminal commands
|
cenator = CenatorEventHandler('history.bash') # Reacts to terminal commands
|
||||||
'history.bash',
|
commands = TestCommandsEventHandler( # Catches special commands
|
||||||
TestCommands(bashrc=f'/home/{TAOENV.USER}/.bashrc').callback
|
key='history.bash',
|
||||||
|
bashrc=f'/home/{TAOENV.USER}/.bashrc'
|
||||||
)
|
)
|
||||||
processmanager = ProcessManagingEventHandler( # Handles 'deploy' button clicks
|
processmanager = ProcessManagingEventHandler( # Handles 'deploy' button clicks
|
||||||
key='processmanager',
|
key='processmanager',
|
||||||
|
Loading…
Reference in New Issue
Block a user