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

Added querydb

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2804 b32b6428-25c9-4566-ad07-03861ab6144f
parent bf43364a
Branches
No related tags found
No related merge requests found
......@@ -31,10 +31,11 @@ setup(
'xaal-walker = xaal.aiotools.toolbox:walker',
'xaal-dumper = xaal.aiotools.toolbox:dumper',
'xaal-log = xaal.aiotools.toolbox:log',
'xaal-querydb = xaal.aiotools.toolbox:query_db',
'xaal-keygen = xaal.tools.keygen:main',
# 'xaal-tail = xaal.tools.tail:main',
# 'xaal-keygen = xaal.tools.keygen:main',
# 'xaal-querydb = xaal.tools.querydb:main',
# 'xaal-pkgrun = xaal.tools.pkgrun:main',
# 'xaal-uuidgen = xaal.tools.uuidgen:main',
# 'xaal-inspector = xaal.tools.inspector:main',
......
......@@ -23,7 +23,7 @@ TABLE_STYLE='psql'
LINE="="*78
helper = None
db_type = "metadatadb.basic"
class Colors(Enum):
DEFAULT = fore.WHITE
......@@ -36,6 +36,7 @@ class Colors(Enum):
DEV_TYPE = fore.LIGHT_BLUE
ADDR = fore.LIGHT_RED
INFO = fore.CYAN
DB = fore.SPRING_GREEN_1
def __str__(self):
return self.value
......@@ -137,7 +138,7 @@ class ToolboxHelper(object):
def setup_name(self):
name = sys.argv[0].split('/')[-1]
helpers.set_console_title(name)
#helpers.set_console_title(name)
self.name = name
return self.name
......@@ -467,3 +468,59 @@ def log():
eng.subscribe(log_callback)
eng.run()
#####################################################
# query db
#####################################################
def query_db():
helper = ToolboxHelper()
(options,args) = helper.parse()
(eng,dev) = helper.setup_basic()
if len(args) !=1:
helper.error("empty address")
target = tools.get_uuid(args[0])
if target == None:
helper.error("Invalid address: %s" % args[0])
# FIXME:
color = helper.options.no_color or 'color'
def query_db_callback(msg):
if not match_dev_type(msg,db_type):return
# new db server found
if msg.is_alive():
db_server = helper.parse_msg(msg)
eng.send_request(dev,[db_server.address,],"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)
if found == target:
r = []
r.append(['Metadata',''])
r.append(['============',''])
if color == 'color':
r.append(['Server:',colorize(Colors.ADDR,msg.source)])
else:
r.append(['Server:',msg.source])
for k,v in found_map.items():
if color == 'color':
v = colorize(Colors.DB,v)
r.append([k,v])
print(tabulate(r,tablefmt=TABLE_STYLE))
helper.exit_event.set()
async def run():
eng.send_is_alive(dev,dev_types=[db_type,])
# wait for device to complete
await helper.exit_event.wait()
helper.quit()
eng.subscribe(query_db_callback)
eng.on_start(run)
# idle detection
eng.new_task(helper.idle_detector())
helper.engine_wait(2)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment