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

Added metadb on xaal-info, still some works to do before doing it on walker

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2805 b32b6428-25c9-4566-ad07-03861ab6144f
parent d5e301cd
No related branches found
No related tags found
No related merge requests found
......@@ -48,12 +48,14 @@ class DeviceInfo(object):
self.dev_type = None
self.description = None
self.attributes = None
self.db = None
def ready(self):
if self.address == None: return False
if self.dev_type == None: return False
if self.description == None: return False
if self.attributes == None: return False
if self.db == None: return False
return True
......@@ -90,6 +92,15 @@ class DeviceInfo(object):
for line in v:
tmp = tmp + colorize(Colors.ATTRIBUTS,line) + '\n'
r.append([k,tmp])
# metadata
if len(self.db.keys()) > 0:
r.append(['-'*22,'-'*46])
r.append(['Metadata',''])
r.append(['========',''])
for k,v in self.db.items():
v = colorize(Colors.DB,v)
r.append([k,v])
print(tabulate(r,tablefmt=TABLE_STYLE))
def normal_display(self):
......@@ -366,25 +377,45 @@ def info():
(_,args)=helper.parse()
(eng,dev) = helper.setup_basic()
# command line address
if len(args) !=1:
helper.error("empty address")
target = tools.get_uuid(args[0])
if target == None:
helper.error("Invalid address: %s" % args[0])
# color
color = helper.options.no_color or 'color'
def display_quit(dev):
if dev.ready():
dev.display(color)
helper.exit_event.set()
async def info_callback(msg,addr=target):
await asyncio.sleep(0)
if msg.source != addr:
return
target = helper.parse_msg(msg)
if msg.source != addr: return
found = helper.parse_msg(msg)
# Finish ?
if target.ready():
target.display(color)
helper.exit_event.set()
display_quit(found)
async def query_db_callback(msg):
if not match_dev_type(msg,db_type):return
if msg.is_alive():
eng.send_request(dev,[msg.source,],"get_keys_values",{'device':target})
# db server reply
elif msg.is_reply() and dev.address in msg.targets:
found = msg.body.get('device',None)
found_map = msg.body.get('map',None)
tmp = helper.get_device(found)
if not tmp:
tmp = DeviceInfo()
tmp.address = found
helper.add_device(tmp)
tmp.db = found_map
display_quit(tmp)
async def run():
eng.send_is_alive(dev,dev_types=[db_type,])
eng.send_is_alive(dev,[target,])
eng.send_get_description(dev,[target,])
eng.send_get_attributes(dev,[target,])
......@@ -393,6 +424,7 @@ def info():
helper.quit()
eng.subscribe(info_callback)
eng.subscribe(query_db_callback)
eng.on_start(run)
helper.engine_wait(2)
......@@ -415,6 +447,7 @@ def walker():
target = helper.parse_msg(msg)
if msg.is_alive():
if not target.ready():
target.db = {}
eng.send_get_description(target,[msg.source,])
eng.send_get_attributes(target,[msg.source,])
if target.ready():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment