Newer
Older
import logging
from sjrpc.client import SimpleRpcClient
from sjrpc.utils import ConnectionProxy
from sjrpc.core import RpcError
import handlers
Handle node initialization, connection to server, and authentication
def __init__(self, server, port, hypervisor, exec_cmd, force_xen=False,
cert=None):
self._scheduler_timer = None
self._handler = handlers.NodeHandler(self, hypervisor, exec_cmd,
force_xen)
self._manager = SimpleRpcClient.from_addr(server, port, enable_ssl=True,
default_handler=self._handler)
self._server = ConnectionProxy(self._manager)
logging.debug('Authenticating user %s' % login)
role = self._server.authentify(login, password)
self._scheduler_run()
if err.exception == 'AuthenticationError':
logging.warning('Authentication error')
else:
logging.warning('Unknown error while authenticating: %s' % err)
return False
except Exception as err:
logging.debug('Unhandled exception: `%s`' % err)
logging.warning('Bad role affected by server: %s' % role)
raise Exception()
# FIXME this will not cause a server restart, node stays dead
def _scheduler_run(self):
'''
'''
self._handler.scheduler_run()
# reset timer
del self._scheduler_timer
self._scheduler_timer = Timer(1, self._scheduler_run)
self._scheduler_timer.start()
def get_server(self):
'''
'''
return self._server
def get_manager(self):
def get_handler(self):
'''
'''
return self._handler