-
Anael Beutot authored
Support for registering/unregistering sub object to the cc-server. Support for tag lifecycle handling (libev), was previously managed by plugins.
Anael Beutot authoredSupport for registering/unregistering sub object to the cc-server. Support for tag lifecycle handling (libev), was previously managed by plugins.
plugins.py 1.34 KiB
"""Plugins helpers for Cloud Control node."""
from itertools import chain, imap
from ccnode.tags import TagDB
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: MainLoop instance
"""
#: MainLoop instance
self.main = kwargs.pop('loop')
# plugins may define tags (see :mod:`ccnode.tags`)
self.tag_db = TagDB(self.main, parent_db=self.main.tag_db)
# 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."""
pass
def stop(self):
"""Cleanup for plugins, can be used to clean pyev watchers."""
self.main = None
# TODO dependencies