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

- Added support for cleanup-db (still so work to do)

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@3041 b32b6428-25c9-4566-ad07-03861ab6144f
parent 735cf540
No related branches found
No related tags found
No related merge requests found
......@@ -32,6 +32,7 @@ setup(
'xaal-dumper = xaal.tools.toolbox:dumper',
'xaal-log = xaal.tools.toolbox:log',
'xaal-querydb = xaal.tools.toolbox:query_db',
'xaal-cleandb = xaal.tools.toolbox:clean_db',
'xaal-send = xaal.tools.toolbox:send',
'xaal-tail = xaal.tools.toolbox:tail',
'xaal-pkgrun = xaal.tools.toolbox:pkgrun',
......
......@@ -201,7 +201,7 @@ class ToolboxHelper(object):
def setup_device(self):
# toolbox device
dev = Device("cli.experimental")
dev = Device("cli.basic")
dev.address = tools.get_random_uuid()
dev.info = f'Aiotoolbox CLI {self.name}'
self.device = dev
......@@ -294,6 +294,9 @@ class ToolboxHelper(object):
return False
return dev.ready()
#####################################################
# messages
#####################################################
def dump_msg(self,msg):
color = not self.options.no_color
color_value = self.color_for_msg(msg)
......@@ -723,7 +726,65 @@ def query_db():
eng.on_start(run)
helper.run_forever()
#####################################################
# cleanup db
#####################################################
def clean_db():
helper = ToolboxHelper()
helper.parse()
(eng,dev) = helper.setup_basic()
db_devices = []
def alive_callback(msg):
if (msg.source == dev.address) or (msg.is_alive() == False): return
if helper.get_device(msg.source) == None:
helper.parse_msg(msg)
#print(msg)
def devices_callback(msg):
if helper.is_db_reply(msg) and msg.action == 'get_devices':
r = msg.body.get('devices',[])
for k in r:
db_devices.append(k)
async def gather():
print("Gathering devices infos...")
await asyncio.sleep(2)
print("Done..")
missing = []
for k in db_devices:
dev = helper.get_device(tools.get_uuid(k))
if not dev:
missing.append(k)
for k in missing:
drop = input(f"Drop {k} from db server ? [Y|*]")
if drop == 'Y':
body = {"device": k,"map": None}
helper.request_action(helper.db_server,"update_keys_values",body)
await asyncio.sleep(0)
async def start():
await helper.find_db_server()
if helper.db_server:
eng.subscribe(alive_callback)
eng.subscribe(devices_callback)
helper.request_is_alive()
helper.request_db_devices(None, None)
await gather()
helper.quit()
else:
print("\nNo metadata server found")
#helper.quit()
eng.on_start(start)
helper.run_forever()
#helper.run_until_idle()
#####################################################
# send request
#####################################################
def send():
helper = ToolboxHelper()
helper.parser.add_option("-d",dest="target_address",help="target device address")
......@@ -763,7 +824,9 @@ def send():
eng.on_start(run)
helper.run_forever()
#####################################################
# tail msg
#####################################################
def tail():
helper = ToolboxHelper()
helper.parser.add_option("-f",dest="filter_address",help="only show given address")
......@@ -820,7 +883,9 @@ def tail():
eng.subscribe(tail_callback)
helper.run_forever()
#####################################################
# run pkg
#####################################################
def pkgrun():
helper = ToolboxHelper()
# redefine parser to add usage
......@@ -849,12 +914,15 @@ def pkgrun():
load_pkgs()
helper.run_forever()
#####################################################
# ipdb shell on steroid
#####################################################
def shell():
helper = ToolboxHelper()
helper.parse()
eng = helper.setup_engine()
eng.disable_msg_filter()
# load IPython
try:
import IPython
......@@ -864,12 +932,18 @@ def shell():
print("Please install IPython to use xAAL shell")
print("$ pip install ipython\n")
exit(1)
logging.getLogger("parso").setLevel(logging.WARNING)
logging.getLogger("blib2to3").setLevel(logging.WARNING)
# run the engine in background
jobs = backgroundjobs.BackgroundJobManager()
jobs.new(eng.run)
# imported modules for convenient use in the shell
from xaal.schemas import devices
from xaal.lib import Message, Attribute, Device
from xaal.monitor import Monitor
IPython.embed(banner1="============================== xAAL Shell ==============================",
banner2=f"* AsyncEngine running in background:\n* eng = {eng}\n\n",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment