Newer
Older
from cloudcontrol.common.client.loop import RPCStartHandler, MainLoop
from cloudcontrol.common.client.tags import Tag
from cloudcontrol.node.config import NodeConfigParser, configure_logging
from cloudcontrol.node.jobs import JobManager
logger = logging.getLogger(__name__)
def auth_done_cb(self, call_id, response=None, error=None):
RPCStartHandler.auth_done_cb(self, call_id, response, error)
# set handler according to which role was returned by the cc-server
if response == self.loop.role and response is not None:
# we don't need to reload the plugins
# but we need to register the objects and tags
self.loop.tag_db.rpc_register()
elif response == u'host':
# close previous plugins if needed
if self.loop.role is not None:
self.loop.close_plugins()
from cloudcontrol.node.host import Handler as HostHandler
self.loop.main_plugin = HostHandler(loop=self.loop)
self.loop.role = u'host'
# (re)-register the tags of the main loop
self.loop.tag_db.rpc_register()
self.loop.register_plugin(self.loop.main_plugin)
# close previous plugins if needed
if self.loop.role is not None:
self.loop.close_plugins()
# set libvirt environement variables
os.environ['LIBVIRT_DEBUG'] = '4'
# os.environ['LIBVIRT_LOG_FILTERS'] = ''
os.environ['LIBVIRT_LOG_OUTPUT'] = '4:stderr'
# we don't import those modules at the top because some dependancies
# may not be installed
from cloudcontrol.node.hypervisor import Handler as HypervisorHandler
self.loop.main_plugin = HypervisorHandler(
# (re)-register the tags of the main loop
self.loop.tag_db.rpc_register()
self.loop.register_plugin(self.loop.main_plugin)
logger.error('Failed authentication, role returned: %s', response)
logger.info('Successfully authenticated with role %s', str(response))
CONFIG_CLASS = NodeConfigParser
CONNECT_CLASS = NodeRPCStartHandler
DEFAULT_TAGS = (Tag(u'version', __version__),)
self.job_manager = JobManager(self)
configure_logging(self.config.logging_level, self.config.logging_output)
# stop running jobs
self.job_manager.stop()