Skip to content
Snippets Groups Projects
Commit a37037b7 authored by jkerdreu's avatar jkerdreu
Browse files

Added pkgrun to toolbox..


git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2876 b32b6428-25c9-4566-ad07-03861ab6144f
parent 38c26e60
Branches
No related tags found
No related merge requests found
......@@ -34,8 +34,9 @@ setup(
'xaal-querydb = xaal.tools.toolbox:query_db',
'xaal-send = xaal.tools.toolbox:send',
'xaal-tail = xaal.tools.toolbox:tail',
'xaal-pkgrun = xaal.tools.toolbox:pkgrun',
'xaal-keygen = xaal.tools.keygen:main',
'xaal-pkgrun = xaal.tools.pkgrun:main',
#'xaal-pkgrun = xaal.tools.pkgrun:main',
'xaal-uuidgen = xaal.tools.uuidgen:main',
],
},
......
#!/usr/bin/env python
try:
from gevent import monkey;monkey.patch_all(thread=False)
except ModuleNotFoundError:
pass
import sys
import importlib
from xaal.lib import helpers
from xaal.lib import AsyncEngine as Engine
import logging
MY_NAME = "xaal-pkgrun"
logger = logging.getLogger(MY_NAME)
def load_pkgs(eng):
for k in sys.argv[1:]:
xaal_mod = 'xaal.' + k
try:
mod = importlib.import_module(xaal_mod)
except ModuleNotFoundError:
logger.critical("Unable to load module: %s" %xaal_mod )
continue
if hasattr(mod,'setup') == False:
logger.critical("Unable to setup %s" % xaal_mod)
continue
mod.setup(eng)
def run():
# some init stuffs
helpers.setup_console_logger()
#helpers.setup_file_logger(MY_NAME)
# Start the engine
eng = Engine()
eng.start()
load_pkgs(eng)
eng.run()
def main():
try:
run()
except KeyboardInterrupt:
print("Byebye")
if __name__ == '__main__':
main()
......@@ -4,30 +4,41 @@ The module use a lot of AsyncEngine features, so the code can be a bit tricky to
If you're looking for simples examples, please check the legacy tools instead.
"""
import asyncio
import shutil
from xaal.lib import AsyncEngine, Device,tools,helpers,config
import sys
if sys.argv[0].endswith('pkgrun'):
# right now, some package depends on geventn, so we need to import it here
# this is only needed for the pkgrun command
try:
from gevent import monkey;monkey.patch_all(thread=False)
#print("Loaded gevent")
except ModuleNotFoundError:
pass
# xAAL import
from xaal.lib import AsyncEngine, Device,tools,helpers,config
from xaal.lib.messages import MessageType
# General python import
import asyncio
import time
from enum import Enum
import importlib
import logging
import enum
import optparse
# colors & styles
from colored import fore, style
from tabulate import tabulate
import pprint
from optparse import OptionParser
from xaal.lib.messages import MessageType
import shutil # needed by the tail command
HIDE_ACTION=['get_attributes','get_description','get_keys_values','get_devices','is_alive']
TABLE_STYLE='psql'
LINE="="*78
DB_DEV_TYPE = "metadatadb.basic"
class Colors(Enum):
class Colors(enum.Enum):
DEFAULT = fore.WHITE
# ALIVE = fore.LIGHT_GRAY
# ATTRIBUTS = fore.LIGHT_YELLOW
......@@ -152,7 +163,6 @@ class DeviceInfo(object):
print(tabulate(r,tablefmt=TABLE_STYLE))
class ToolboxHelper(object):
def __init__(self) -> None:
self.name = None # cmdline name
......@@ -182,7 +192,7 @@ class ToolboxHelper(object):
return self.name
def setup_parser(self):
self.parser = OptionParser()
self.parser = optparse.OptionParser()
self.parser.add_option("-c" , dest="no_color",help="disable color",action="store_true", default=False)
self.parser.add_option("-l" , dest="debug",help="Enable logging",action="store_true",default=False)
self.parser.add_option("-a" , dest="mcast_addr",help="Multicast address",default=config.address)
......@@ -379,7 +389,6 @@ class ToolboxHelper(object):
return True
return False
#####################################################
# start/stop/idle/error
#####################################################
......@@ -555,8 +564,6 @@ def info():
# walker
#####################################################
def walker():
#helpers.setup_console_logger()
helper = ToolboxHelper()
helper.parser.add_option("-t",dest="filter_type",help="only show given device type")
helper.parse()
......@@ -597,7 +604,6 @@ def walker():
eng.on_start(start)
helper.run_until_idle()
#####################################################
# log
#####################################################
......@@ -739,7 +745,6 @@ def send():
# let's go
(eng,dev) = helper.setup_basic()
def action_callback(msg):
if msg.is_alive():return
if msg.source == target:
......@@ -761,7 +766,7 @@ def tail():
helper = ToolboxHelper()
helper.parser.add_option("-f",dest="filter_address",help="only show given address")
helper.parser.add_option("-t",dest="filter_type",help="only show given device type")
helper.parser.add_option("-m",dest="filter_mode",help="hide some messages:\n 1=alive, 2=core actions, 3=replies, 4=all except notif")
helper.parser.add_option("-m",dest="filter_mode",help="hide some messages:\n 1=alives, 2=core actions, 3=replies, 4=all except notif")
helper.parse()
target = helper.check_address(helper.options.filter_address)
......@@ -779,7 +784,6 @@ def tail():
color = not helper.options.no_color
eng=helper.setup_engine()
def tail_callback(msg):
if mode > 0 and msg.is_alive():return
if target and not match_address(msg,target):return
......@@ -788,15 +792,12 @@ def tail():
if mode > 2 and msg.is_reply(): return
if mode > 3 and msg.is_request(): return
color_value = helper.color_for_msg(msg)
schem = '**'
#import pdb;pdb.set_trace()
schem = '*'
if msg.msg_type == MessageType.REQUEST.value: schem = '>'
elif msg.msg_type == MessageType.REPLY.value: schem = '<'
elif msg.msg_type == MessageType.NOTIFY.value: schem = '='
targets = [tools.reduce_addr(addr) for addr in msg.targets]
tmp = shutil.get_terminal_size()[0] - (2 + 18 + 36 + 20 + 16 + 7)
if tmp < 50:
......@@ -818,4 +819,26 @@ def tail():
helper.run_forever()
def pkgrun():
helper = ToolboxHelper()
(_,args)=helper.parse()
eng = helper.setup_engine()
logger = logging.getLogger(helper.name)
def load_pkgs():
for k in args:
xaal_mod = 'xaal.' + k
try:
mod = importlib.import_module(xaal_mod)
except ModuleNotFoundError:
logger.critical("Unable to load module: %s" %xaal_mod )
continue
if hasattr(mod,'setup') == False:
logger.critical("Unable to setup %s" % xaal_mod)
continue
logger.info(f"{xaal_mod} loaded")
mod.setup(eng)
eng.on_start(load_pkgs)
helper.run_forever()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment