Newer
Older
from threading import Timer, Lock
from time import sleep
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._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)
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
self._scheduler_timer = Timer(5, self._scheduler_run)
def _scheduler_run(self):
'''
'''
with self._scheduler_mutex:
self._handler.scheduler_run()
sleep(0.1)
self._scheduler_rearm()
def get_server(self):
'''
'''
return self._server
def get_manager(self):
def get_handler(self):
'''
'''
return self._handler