Ejemplo n.º 1
0
Archivo: task.py Proyecto: M-o-a-T/moat
	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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
Archivo: task.py Proyecto: M-o-a-T/moat
	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)
Ejemplo n.º 5
0
Archivo: task.py Proyecto: M-o-a-T/moat
	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)
Ejemplo n.º 6
0
Archivo: conn.py Proyecto: smurfix/MoaT
	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)
Ejemplo n.º 7
0
Archivo: conn.py Proyecto: smurfix/MoaT
	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)
Ejemplo n.º 8
0
	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)
Ejemplo n.º 9
0
	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)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
Archivo: base.py Proyecto: M-o-a-T/moat
	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)
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
Archivo: dev.py Proyecto: M-o-a-T/moat
	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,))
Ejemplo n.º 15
0
    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, ))