async def do(self,args): t = await self.setup(meta=False) if args: dirs = [] for a in args: try: dirs.append(await t.subdir(a, create=False)) except KeyError: raise CommandError("'%s' does not exist"%(a,)) else: dirs = [t] for tt in dirs: async for task in tt.tagged(TASK, depth=self.options.this): path = task.path[len(TASK_DIR):-1] if self.root.verbose == 2: print('*','/'.join(path), sep='\t',file=self.stdout) for k,v in r_show(task,''): print(k,v, sep='\t',file=self.stdout) elif self.root.verbose > 1: dump({'/'.join(path):r_dict(dict(task))}, stream=self.stdout) else: path = '/'.join(path) name = task.get('name','-') if name == path: name = "-" print(path,name,task.get('descr','-'), sep='\t',file=self.stdout)
async def do(self,args): t = await self.setup() if args: dirs = [] for a in args: try: dirs.append(await t.subdir(a, create=False)) except KeyError: raise CommandError("'%s' does not exist"%(a,)) else: dirs = [t] for tt in dirs: async for dev in tt.tagged(DEV, depth=self.options.this): path = dev.path[len(DEV_DIR):-1] if self.root.verbose == 2: print('*','/'.join(path), sep='\t',file=self.stdout) for k,v in r_show(dev,''): print(k,v, sep='\t',file=self.stdout) elif self.root.verbose > 1: dump({'/'.join(path):r_dict(dict(dev))}, stream=self.stdout) else: path = '/'.join(path) name = dev.get('name','-') val = dev.get('value','-') if name == path: name = "-" print(path,name,val, sep='\t',file=self.stdout)
def do_entry(self, dev, do_verbose=False): path = '/'.join(dev.path[len(DEV_DIR):-1]) if do_verbose or self.root.verbose > 2: safe_dump({path: r_dict(dev)}, stream=self.stdout) else: print(path, dev.__class__.name, dev.get('location', '-'), sep='\t', file=self.stdout)
async def do(self,args): await self.root.setup() etc = self.root.etcd tree = await self.root._get_tree() t = await tree.subdir(TASKSTATE_DIR) if args: dirs = [] for a in args: try: dirs.append(await t.subdir(a, create=False)) except KeyError: print("'%s' does not exist" % (a,), file=sys.stderr) else: dirs = [t] sel_running = self.options.running sel_error = self.options.error sel_completed = self.options.completed if not (self.options.completed or self.options.running or self.options.error): sel_running = sel_error = sel_completed = True for tt in dirs: async for task in tt.tagged(TASKSTATE, depth=self.options.this): path = task.path[len(TASKSTATE_DIR):-1] date = task.get('debug_time','-') state = task.state if state == 'run': if 'started' in task: date = task['started'] else: date = task['running'] elif state == 'crash': date = task['started'] else: date = task.get('stopped','?') if not isinstance(date,str): date = datetime.fromtimestamp(date).strftime('%Y-%m-%d %H:%M:%S') if sel_running if state == 'run' else (sel_completed if state == 'ok' else sel_error): if self.root.verbose == 2: print('*','/'.join(path), sep='\t', file=self.stdout) for k,v in task.items(): if isinstance(v,(float,int)) and 1000000000 < v < 10000000000: v = datetime.fromtimestamp(v).strftime('%Y-%m-%d %H:%M:%S') elif isinstance(v,str): v = v.strip() else: v = str(v) print(k,('\n\t' if '\n' in v else '')+v.replace('\n','\n\t'), sep='\t',file=self.stdout) elif self.root.verbose > 1: dump({'/'.join(path):r_dict(dict(task))}, stream=self.stdout) else: print('/'.join(path),state,date,task.get('message','-'), sep='\t', file=self.stdout)
async def do(self,args): t = await self.setup(meta=True) if args: if self.options.all: raise CommandError("Arguments and '-a' are mutually exclusive") dirs = [] for a in args: dirs.append(await t.subdir(a, create=False)) verbose = True else: dirs = [t] verbose = self.options.all for tt in dirs: async for task in tt.tagged(TASKDEF): path = task.path[len(TASKDEF_DIR):-1] if verbose: dump({path: r_dict(dict(task))}, stream=self.stdout) else: print('/'.join(path),task.get('summary',task.get('descr','??')), sep='\t',file=self.stdout)
async def do(self,args): await self.root.setup(self) tree = self.root.tree if args: dirs = args else: res = await tree.lookup('bus','onewire') dirs = res.keys() if self.root.verbose and not dirs: print("No servers known.", file=sys.stderr) for d in dirs: if self.root.verbose > 1: st = await tree.subdir('bus','onewire',d, recursive=True) safe_dump({d: r_dict(dict(st))}, stream=self.stdout) elif self.root.verbose: hp = await tree.subdir('bus','onewire',d,'server', recursive=True,create=False) print(d,hp['host'],hp['port'], sep='\t', file=self.stdout) else: print(d, file=self.stdout)
async def do(self,args): await self.root.setup(self) tree = self.root.tree if args: dirs = args else: dirs = [] res = await etc.get('/bus/onewire') for r in res.children: dirs.append(r.key.rsplit('/',1)[1]) for d in dirs: if self.root.verbose > 1: st = await tree.subdir('bus','onewire',d, create=False) safe_dump({d: r_dict(dict(st))}, stream=self.stdout) elif self.root.verbose: hp = await tree.subdir('bus','onewire',d,'server', recursive=True,create=False) print(d,hp['host'],hp['port'], sep='\t', file=self.stdout) else: print(d, file=self.stdout)
async def do(self,args): t = await self.setup() if args: if self.options.all: raise CommandError("Arguments and '-a' are mutually exclusive") dirs = [] for a in args: dirs.append(await t.subdir(a, create=False)) verbose = True else: dirs = [t] verbose = self.options.all for tt in dirs: async for web in tt.tagged(WEBSERVER): path = web.path[len(WEBSERVER_DIR):-1] if verbose: dump({path: r_dict(dict(web))}, stream=self.stdout) else: print('/'.join(path), web.get('host','-'), web.get('port',80), web.get('default','default'), web.get('descr',''), sep='\t',file=self.stdout)
async def do(self, args): t = await self.setup(meta=True) if args: if self.options.all: raise CommandError("Arguments and '-a' are mutually exclusive") dirs = [] for a in args: dirs.append(await t.subdir(a, create=False)) verbose = True else: dirs = [t] verbose = self.options.all for tt in dirs: async for task in tt.tagged(TASKDEF): path = task.path[len(TASKDEF_DIR):-1] if verbose: dump({path: r_dict(dict(task))}, stream=self.stdout) else: print('/'.join(path), task.get('summary', task.get('descr', '??')), sep='\t', file=self.stdout)
def do_entry(self,dev, do_verbose=False): path = '/'.join(dev.path[len(DEV_DIR):-1]) if do_verbose or self.root.verbose > 2: safe_dump({path: r_dict(dev)}, stream=self.stdout) else: print(path, dev.__class__.name, dev.get('location','-'), sep='\t',file=self.stdout)
async def do(self, args): await self.root.setup() etc = self.root.etcd tree = await self.root._get_tree() t = await tree.subdir(TASKSTATE_DIR) if args: dirs = [] for a in args: try: dirs.append(await t.subdir(a, create=False)) except KeyError: print("'%s' does not exist" % (a, ), file=sys.stderr) else: dirs = [t] sel_running = self.options.running sel_error = self.options.error sel_completed = self.options.completed if not (self.options.completed or self.options.running or self.options.error): sel_running = sel_error = sel_completed = True for tt in dirs: async for task in tt.tagged(TASKSTATE, depth=self.options.this): path = task.path[len(TASKSTATE_DIR):-1] date = task.get('debug_time', '-') state = task.state if state == 'run': if 'started' in task: date = task['started'] else: date = task['running'] elif state == 'crash': date = task['started'] else: date = task.get('stopped', '?') if not isinstance(date, str): date = datetime.fromtimestamp(date).strftime( '%Y-%m-%d %H:%M:%S') if sel_running if state == 'run' else ( sel_completed if state == 'ok' else sel_error): if self.root.verbose == 2: print('*', '/'.join(path), sep='\t', file=self.stdout) for k, v in task.items(): if isinstance( v, (float, int)) and 1000000000 < v < 10000000000: v = datetime.fromtimestamp(v).strftime( '%Y-%m-%d %H:%M:%S') elif isinstance(v, str): v = v.strip() else: v = str(v) print(k, ('\n\t' if '\n' in v else '') + v.replace('\n', '\n\t'), sep='\t', file=self.stdout) elif self.root.verbose > 1: dump({'/'.join(path): r_dict(dict(task))}, stream=self.stdout) else: print('/'.join(path), state, date, task.get('message', '-'), sep='\t', file=self.stdout)
async def do(self,args): await self.root.setup(self) tree = self.root.tree path = DEV_DIR+(OnewireDevice.prefix,) if not args: res = await tree.lookup(path) for r in res.children: typ = r.key[r.key.rindex('/')+1:] try: dt = device_types()[typ] except KeyError: dt = '?'+typ else: dt = dt.name rr = await tree.subdir(path,name=typ) num = len(list(rr.children)) print(typ,num,dt, sep='\t',file=self.stdout) else: types=EtcTypes() for arg in args: if len(arg) == 2: try: res = await etc.get(path+'/'+arg) except KeyError: print("Type '%s' not found." % (arg,), file=sys.stderr) else: try: dt = device_types()[arg] tname = dt.name except KeyError: dt = OnewireDevice tname = '?'+arg types = EtcTypes() dt.types(types) for r in res.children: dev = r.key[r.key.rindex('/')+1:] t = await etc.tree('/'.join((path,arg,dev,DEV)), types=types,static=True,create=False) print(arg+'.'+dev,t.get('path','?').replace(' ',':',1).replace(' ','/'),t.get('location','-'), sep='\t',file=self.stdout) elif '.' in arg: typ,dev = arg.split('.',1) try: dt = device_types()[typ] tname = dt.name except KeyError: dt = OnewireDevice tname = '?'+typ types = EtcTypes() dt.types(types) try: t = await etc.tree('/'.join((path,typ,dev,DEV)), types=types,static=True,create=False) except KeyError: print("Device '%s' not found." % (arg,), file=sys.stderr) else: if self.root.verbose > 1: safe_dump({arg: r_dict(t)}, stream=self.stdout) else: print(arg,tname,t.get('path','?').replace(' ',':',1).replace(' ','/'),t.get('location','-'), sep='\t',file=self.stdout) else: raise CommandError("'%s' unknown. Please specify either a device class or a device ID."%(arg,))
async def do(self, args): await self.root.setup(self) tree = self.root.tree path = DEV_DIR + (OnewireDevice.prefix, ) if not args: res = await tree.lookup(path) for r in res.children: typ = r.key[r.key.rindex('/') + 1:] try: dt = device_types()[typ] except KeyError: dt = '?' + typ else: dt = dt.name rr = await tree.subdir(path, name=typ) num = len(list(rr.children)) print(typ, num, dt, sep='\t', file=self.stdout) else: types = EtcTypes() for arg in args: if len(arg) == 2: try: res = await etc.get(path + '/' + arg) except KeyError: print("Type '%s' not found." % (arg, ), file=sys.stderr) else: try: dt = device_types()[arg] tname = dt.name except KeyError: dt = OnewireDevice tname = '?' + arg types = EtcTypes() dt.types(types) for r in res.children: dev = r.key[r.key.rindex('/') + 1:] t = await etc.tree('/'.join((path, arg, dev, DEV)), types=types, static=True, create=False) print(arg + '.' + dev, t.get('path', '?').replace(' ', ':', 1).replace(' ', '/'), t.get('location', '-'), sep='\t', file=self.stdout) elif '.' in arg: typ, dev = arg.split('.', 1) try: dt = device_types()[typ] tname = dt.name except KeyError: dt = OnewireDevice tname = '?' + typ types = EtcTypes() dt.types(types) try: t = await etc.tree('/'.join((path, typ, dev, DEV)), types=types, static=True, create=False) except KeyError: print("Device '%s' not found." % (arg, ), file=sys.stderr) else: if self.root.verbose > 1: safe_dump({arg: r_dict(t)}, stream=self.stdout) else: print(arg, tname, t.get('path', '?').replace(' ', ':', 1).replace(' ', '/'), t.get('location', '-'), sep='\t', file=self.stdout) else: raise CommandError( "'%s' unknown. Please specify either a device class or a device ID." % (arg, ))