Exemple #1
0
    async def do(self, args):
        tree = await self.root._get_tree()
        t = await self.setup(meta=True)
        if args:
            objs = []
            for a in args:
                m = import_string(a)
                if isinstance(m, py_types.ModuleType):
                    from moat.script.util import objects
                    n = 0
                    for c in objects(m,
                                     Task,
                                     filter=lambda x: getattr(
                                         x, 'taskdef', None) is not None):
                        await t.add_task(c, force=self.force)
                        n += 1
                    if self.root.verbose > (1 if n else 0):
                        print("%s: %s command%s found." %
                              (a, n if n else "no", "" if n == 1 else "s"),
                              file=self.stdout)
                else:
                    if not isinstance(m, Task):
                        raise CommandError("%s is not a task" % a)
                    await t.add_task(m, force=self.force)
        else:
            for c in task_types():
                await t.add_task(c, force=self.force)

            r = await tree.subdir(*TASKSCAN_DIR)
            from moat.task.collect import Collector
            await r.add_task(path=(),
                             taskdef=Collector.taskdef,
                             force=self.force)

        await t.wait()
Exemple #2
0
	async def do(self,args):
		tree = await self.root._get_tree()
		t = await self.setup(meta=True)
		if args:
			objs = []
			for a in args:
				m = import_string(a)
				if isinstance(m,py_types.ModuleType):
					from moat.script.util import objects
					n = 0
					for c in objects(m, Task, filter=lambda x:getattr(x,'taskdef',None) is not None):
						await t.add_task(c, force=self.force)
						n += 1
					if self.root.verbose > (1 if n else 0):
						print("%s: %s command%s found." % (a,n if n else "no", "" if n==1 else "s"), file=self.stdout)
				else:
					if not isinstance(m,Task):
						raise CommandError("%s is not a task"%a)
					await t.add_task(m, force=self.force)
		else:
			for c in task_types():
				await t.add_task(c, force=self.force)

			r = await tree.subdir(*TASKSCAN_DIR)
			from moat.task.collect import Collector
			await r.add_task(path=(),taskdef=Collector.taskdef, force=self.force)

		await t.wait()
Exemple #3
0
def devices():
    from moat.script.util import objects
    from moat.base import BaseDevice
    # we want all objects with a distinctive prefix
    return objects(__name__,
                   BaseDevice,
                   filter=lambda x: x.__dict__.get('prefix', None) is not None)
Exemple #4
0
def device_types():
	if not _device_types:
		from moat.script.util import objects
		for typ in objects(__name__,OnewireDevice):
			fam = typ.family
			if isinstance(fam,str):
				_device_types[fam] = typ
			else:
				for f in fam:
					_device_types[f] = typ
	return _device_types
Exemple #5
0
def device_types():
    if not _device_types:
        from moat.script.util import objects
        for typ in objects(__name__, OnewireDevice):
            fam = typ.family
            if isinstance(fam, str):
                _device_types[fam] = typ
            else:
                for f in fam:
                    _device_types[f] = typ
    return _device_types
Exemple #6
0
    async def start(self, bindto,port, root="default"):
        self.rootpath = root
        logger.info("Starting web server on %s:%s with /%s", bindto,port,root)

        await self.tree.lookup(*(WEBDEF_DIR))
        for cls in objects('moat.web', BaseExt):
            await cls.start(self.app)
        for view in objects('moat.web',BaseView):
            if view.path is not None:
                print(view)
                self.app.router.add_route('*', view.path, view)

        r = FakeReq('/')
        r = await self.app.router.resolve(r)
        if getattr(r,'_exception',None) is not None:
            self.app.router.add_get('/', hello)

        self.handler = self.app.make_handler()
        self.srv = await self.loop.create_server(self.handler, bindto,port)
        logger.debug('serving on %s', self.srv.sockets[0].getsockname())
Exemple #7
0
    async def start(self, bindto, port, root="default"):
        self.rootpath = root
        logger.info("Starting web server on %s:%s with /%s", bindto, port,
                    root)

        await self.tree.lookup(*(WEBDEF_DIR))
        for cls in objects('moat.web', BaseExt):
            await cls.start(self.app)
        for view in objects('moat.web', BaseView):
            if view.path is not None:
                print(view)
                self.app.router.add_route('*', view.path, view)

        r = FakeReq('/')
        r = await self.app.router.resolve(r)
        if getattr(r, '_exception', None) is not None:
            self.app.router.add_get('/', hello)

        self.handler = self.app.make_handler()
        self.srv = await self.loop.create_server(self.handler, bindto, port)
        logger.debug('serving on %s', self.srv.sockets[0].getsockname())
Exemple #8
0
    async def do(self, args):
        t = await self.setup()
        tree = await self.root._get_tree()
        t2 = await tree.subdir(TASKDEF_DIR)

        if args:
            objs = []
            for a in args:
                m = import_string(a)
                if isinstance(m, py_types.ModuleType):
                    try:
                        syms = m.__all__
                    except AttributeError:
                        syms = dir(m)
                    n = 0
                    for c in syms:
                        c = getattr(m, c, None)
                        if isinstance(c, type) and issubclass(
                                c, BaseModule) and c.prefix is not None:
                            objs.append(c)
                            n += 1
                    if self.root.verbose > (1 if n else 0):
                        print("%s: %s module%s found." %
                              (a, n if n else "no", "" if n == 1 else "s"),
                              file=self.stdout)

                    if self.tasks:
                        n = 0
                        for c in objects(m,
                                         Task,
                                         filter=lambda x: getattr(
                                             x, 'taskdef', None) is not None):
                            await t2.add_task(c, force=self.force)
                            n += 1
                        if self.root.verbose > (1 if n else 0):
                            print("%s: %s command%s found." %
                                  (a, n if n else "no", "" if n == 1 else "s"),
                                  file=self.stdout)

                else:
                    if not isinstance(m, BaseModule):
                        raise CommandError("%s is not a task" % a)
                    objs.append(m)
        else:
            objs = modules()

        tasks = await t.root.subdir(TASKDEF_DIR)
        for obj in objs:
            await t.add_module(obj, force=self.force)
            for ta in obj.task_types():
                await tasks.add_task(ta, force=self.force)
        await t.wait()
Exemple #9
0
 async def stop(self):
     logger.info("Stopping web server")
     if self.srv is not None:
         self.srv.close()
         await self.srv.wait_closed()
     if self.app is not None:
         for cls in objects('moat.web', BaseExt):
             await cls.stop(self.app)
         await self.app.shutdown()
     if self.handler is not None:
         await self.handler.finish_connections(60.0)
     if self.app is not None:
         await self.app.cleanup()
Exemple #10
0
 async def stop(self):
     logger.info("Stopping web server")
     if self.srv is not None:
         self.srv.close()
         await self.srv.wait_closed()
     if self.app is not None:
         for cls in objects('moat.web', BaseExt):
             await cls.stop(self.app)
         await self.app.shutdown()
     if self.handler is not None:
         await self.handler.finish_connections(60.0)
     if self.app is not None:
         await self.app.cleanup()
Exemple #11
0
	async def do(self,args):
		t = await self.setup()
		tree = await self.root._get_tree()
		t2 = await tree.subdir(TASKDEF_DIR)

		if args:
			objs = []
			for a in args:
				m = import_string(a)
				if isinstance(m,py_types.ModuleType):
					try:
						syms = m.__all__
					except AttributeError:
						syms = dir(m)
					n = 0
					for c in syms:
						c = getattr(m,c,None)
						if isinstance(c,type) and issubclass(c,BaseModule) and c.prefix is not None:
							objs.append(c)
							n += 1
					if self.root.verbose > (1 if n else 0):
						print("%s: %s module%s found." % (a,n if n else "no", "" if n==1 else "s"), file=self.stdout)

					if self.tasks:
						n = 0
						for c in objects(m, Task, filter=lambda x:getattr(x,'taskdef',None) is not None):
							await t2.add_task(c, force=self.force)
							n += 1
						if self.root.verbose > (1 if n else 0):
							print("%s: %s command%s found." % (a,n if n else "no", "" if n==1 else "s"), file=self.stdout)

				else:
					if not isinstance(m,BaseModule):
						raise CommandError("%s is not a task"%a)
					objs.append(m)
		else:
			objs = modules()

		tasks = await t.root.subdir(TASKDEF_DIR)
		for obj in objs:
			await t.add_module(obj, force=self.force)
			for ta in obj.task_types():
				await tasks.add_task(ta, force=self.force)
		await t.wait()
Exemple #12
0
    async def do(self,args):
        tree = await self.root._get_tree()
        t = await self.setup(meta=True)
        if args:
            objs = []
            for a in args:
                m = import_string(a)
                if isinstance(m,types.ModuleType):
                    from moat.script.util import objects
                    n = 0
                    for c in objects(m, WebdefDir, filter=lambda x:getattr(x,'name',None) is not None):
                        await t.add_webdef(c, force=self.force)
                        n += 1
                    if self.root.verbose > (1 if n else 0):
                        print("%s: %s webdef%s found." % (a,n if n else "no", "" if n==1 else "s"), file=self.stdout)
                else:
                    if not isinstance(m,WebdefDir):
                        raise CommandError("%s is not a web definition"%a)
                    await t.add_webdef(m, force=self.force)
        else:
            for c in webdefs():
                await t.add_webdef(c, force=self.force)

        await t.wait()
Exemple #13
0
def types():
	"""Generator for all types known to MoaT. This accesses the code."""
	from .base import Type
	from moat.script.util import objects
	return objects(__name__, Type, filter=lambda x:x.name is not None)
Exemple #14
0
def devices():
	from moat.script.util import objects
	from moat.base import BaseDevice
	# we want all objects with a distinctive prefix
	return objects(__name__, BaseDevice, filter=lambda x:x.__dict__.get('prefix',None) is not None)
Exemple #15
0
def tasks():
    if not _tasks:
        for t in objects(__name__, ScanTask):
            _tasks[t.typ] = t
    return _tasks
Exemple #16
0
def modules(base="moat.ext"):
	from moat.script.util import objects

	# This filter ignores derived classes which do not set a prefix
	return objects(base, BaseModule, filter=lambda x:x.__dict__.get('prefix',None) is not None)
Exemple #17
0
def tasks():
	if not _tasks:
		for t in objects(__name__,ScanTask):
			_tasks[t.typ] = t
	return _tasks
Exemple #18
0
def webdefs():
	"""Generator for all web defs known to MoaT. This accesses the code."""
	from .base import WebdefDir
	from moat.script.util import objects
	return objects(__name__, WebdefDir, filter=lambda x:x.name is not None)
Exemple #19
0
def types():
    """Generator for all types known to MoaT. This accesses the code."""
    from .base import Type
    from moat.script.util import objects
    return objects(__name__, Type, filter=lambda x: x.name is not None)
Exemple #20
0
def webdefs():
    """Generator for all web defs known to MoaT. This accesses the code."""
    from .base import WebdefDir
    from moat.script.util import objects
    return objects(__name__, WebdefDir, filter=lambda x: x.name is not None)