Loading ccnode/node.py +3 −2 Original line number Diff line number Diff line Loading @@ -100,13 +100,14 @@ class AuthHandler(object): if response == u'host': logger.debug('Role host affected') from ccnode.host import Handler as HostHandler self.loop.role = HostHandler() self.loop.role = HostHandler(loop=self.loop.loop) elif response == u'hv': logger.debug('Role hypervisor affected') from ccnode.hypervisor import Handler as HypervisorHandler self.loop.role = HypervisorHandler( proxy=self.loop.proxy, hypervisor_name=self.loop.config.server_user, loop=self.loop.loop, ) else: logger.error('Failed authentication, role returned: %s', response) Loading Loading @@ -222,7 +223,7 @@ class MainLoop(object): # register handler self.rpc_handler.update(plugin.rpc_handler) plugin.start(self.loop) plugin.start() def unregister_plugin(self, plugin): try: Loading ccnode/plugins.py 0 → 100644 +53 −0 Original line number Diff line number Diff line """Plugins helpers for Cloud Control node.""" from itertools import chain, imap class Base(object): """Example skeleton plugin for cc-node. If you want to create your own plugin for the `cc-node` you may create an object that would quack just like this one or just inherit from this class. """ def __init__(self, *args, **kwargs): """ :param loop: pyev loop instance """ self.loop = kwargs.pop('loop') # plugins may define tags (see :mod:`ccnode.tags`) self.tag_db = dict( __main__=dict(), # subobjects tags go here ) # plugins may define handler functions that would be called by the # server self.rpc_handler = dict() # tag_db and rpc_handler can be implemented as properties if more logic # is needed def __hash__(self): """This method is used when registering a plugin in the main loop. By default, only one instance is allowed. Subclasses can overide this method to change this behaviour. """ return hash(self.__class__.__name__) def start(self): """Used to start pyev watchers.""" # start tags for tag in chain.from_iterable( imap(lambda d: d.itervalues(), self.tag_db.itervalues()), ): tag.start(self.loop) def stop(self): """Cleanup for plugins, can be used to clean pyev watchers.""" self.loop = None # TODO dependencies Loading
ccnode/node.py +3 −2 Original line number Diff line number Diff line Loading @@ -100,13 +100,14 @@ class AuthHandler(object): if response == u'host': logger.debug('Role host affected') from ccnode.host import Handler as HostHandler self.loop.role = HostHandler() self.loop.role = HostHandler(loop=self.loop.loop) elif response == u'hv': logger.debug('Role hypervisor affected') from ccnode.hypervisor import Handler as HypervisorHandler self.loop.role = HypervisorHandler( proxy=self.loop.proxy, hypervisor_name=self.loop.config.server_user, loop=self.loop.loop, ) else: logger.error('Failed authentication, role returned: %s', response) Loading Loading @@ -222,7 +223,7 @@ class MainLoop(object): # register handler self.rpc_handler.update(plugin.rpc_handler) plugin.start(self.loop) plugin.start() def unregister_plugin(self, plugin): try: Loading
ccnode/plugins.py 0 → 100644 +53 −0 Original line number Diff line number Diff line """Plugins helpers for Cloud Control node.""" from itertools import chain, imap class Base(object): """Example skeleton plugin for cc-node. If you want to create your own plugin for the `cc-node` you may create an object that would quack just like this one or just inherit from this class. """ def __init__(self, *args, **kwargs): """ :param loop: pyev loop instance """ self.loop = kwargs.pop('loop') # plugins may define tags (see :mod:`ccnode.tags`) self.tag_db = dict( __main__=dict(), # subobjects tags go here ) # plugins may define handler functions that would be called by the # server self.rpc_handler = dict() # tag_db and rpc_handler can be implemented as properties if more logic # is needed def __hash__(self): """This method is used when registering a plugin in the main loop. By default, only one instance is allowed. Subclasses can overide this method to change this behaviour. """ return hash(self.__class__.__name__) def start(self): """Used to start pyev watchers.""" # start tags for tag in chain.from_iterable( imap(lambda d: d.itervalues(), self.tag_db.itervalues()), ): tag.start(self.loop) def stop(self): """Cleanup for plugins, can be used to clean pyev watchers.""" self.loop = None # TODO dependencies