示例#1
0
 def _initialize_checker_timer(self):
     checking_time = self._cfg_manager.get_value(CHECKING_TIME_NAME, DEFAULT_CHECKING_TIME)
     timer = threading.Timer(checking_time, self._renew_checker_timer)
     timer.setName(counter.next_name("ups-checker-timer"))
     timer.setDaemon(True)
     timer.start()
     _resource_manager.add_resource(timer)
示例#2
0
    def __init__(self, server, timeout):
        threading.Thread.__init__(self)
        self.setName(counter.next_name("MainRemoteFacadeServer"))
        self.setDaemon(True)

        self._server = server
        self._timeout = timeout
示例#3
0
 def _initialize_checker_timer(self):
     checking_time = self._cfg_manager.get_value(CHECKING_TIME_NAME, DEFAULT_CHECKING_TIME)
     timer = threading.Timer(checking_time, self._renew_checker_timer)
     timer.setName(counter.next_name("ups-checker-timer"))
     timer.setDaemon(True)
     timer.start()
     _resource_manager.add_resource(timer)
示例#4
0
    def __init__(self, server_creator, timeout, wsgi_server):
        threading.Thread.__init__(self)
        self.setName(counter.next_name("MainRemoteFacadeServer"))
        self.setDaemon(True)

        self._server_creator = server_creator
        self._timeout = timeout
        self._wsgi_server = wsgi_server
 def __init__(self):         
     super(ServerSocket, self).__init__()
     self.setName(counter.next_name("VoodooServerSocket"))
     self._stop_lock = threading.Lock()
     self._stopped = False
     self._handler = self._SocketHandler
     self._server = self._AvoidTimeoutThreadingServer(self._address, self._handler)
     self._server.socket.settimeout(MAX_TIMEOUT)
示例#6
0
 def __init__(self, condition, iterations, func, name):
     threading.Thread.__init__(self)
     self.setName(counter.next_name("RunningThread_%s" % self.name))
     self.condition     = condition
     self.func          = func
     self.times         = []
     self.iterations    = iterations
     self.waiting       = False
示例#7
0
 def __init__(self):
     super(ServerSocket, self).__init__()
     self.setName(counter.next_name("VoodooServerSocket"))
     self._stop_lock = threading.Lock()
     self._stopped = False
     self._handler = self._SocketHandler
     self._server = self._AvoidTimeoutThreadingServer(self._address, self._handler)
     self._server.socket.settimeout(MAX_TIMEOUT)
示例#8
0
 def __init__(self, condition, iterations, func, name):
     threading.Thread.__init__(self)
     self.setName(counter.next_name("RunningThread_%s" % self.name))
     self.condition = condition
     self.func = func
     self.times = []
     self.iterations = iterations
     self.waiting = False
示例#9
0
        def __init__(self,who,port):
            super(ServerXMLRPC,self).__init__()
            self.setName(counter.next_name("ServerXMLRPC"))
            self._register_xmlrpc_server(who,port)

            self._stop_lock = threading.Lock()
            self._stopped   = False
            self._port      = port
            self._who       = who
示例#10
0
        def __init__(self, who, port):
            super(ServerXMLRPC, self).__init__()
            self.setName(counter.next_name("ServerXMLRPC"))
            self._register_xmlrpc_server(who, port)

            self._stop_lock = threading.Lock()
            self._stopped = False
            self._port = port
            self._who = who
示例#11
0
 def __init__(self, server, configuration_manager, remote_facade_server):
     threading.Thread.__init__(self)
     self.setName(
         counter.next_name("RemoteFacadeServer_" + self.protocol_name))
     self.setDaemon(True)
     self._configuration_manager = configuration_manager
     self._stopped = False
     self._rfm = getattr(
         remote_facade_server, '_create_%s_remote_facade_manager' %
         self.protocol_name)(server, configuration_manager)
     self._rfs = remote_facade_server
示例#12
0
 def __init__(self, server, configuration_manager, remote_facade_server):
     threading.Thread.__init__(self)
     self.setName(counter.next_name("RemoteFacadeServer_" + self.protocol_name))
     self.setDaemon(True)
     self._configuration_manager = configuration_manager
     self._stopped               = False
     self._rfm                   = getattr(remote_facade_server,'_create_%s_remote_facade_manager' % self.protocol_name)(
                         server,
                         configuration_manager
                     )
     self._rfs                   = remote_facade_server
示例#13
0
 def __init__(self, weblabdeusto_scheduler, period, create_client_func):
     threading.Thread.__init__(self)
     self.setName(next_name("ResultsRetriever"))
     self.session_maker = weblabdeusto_scheduler.session_maker
     self.resource_type_name = weblabdeusto_scheduler.resource_type_name
     self.server_route = weblabdeusto_scheduler.core_server_route
     self.server_url = weblabdeusto_scheduler.core_server_url  # Not required, but helpful for debugging
     self.completed_store = weblabdeusto_scheduler.completed_store
     self.post_reservation_data_manager = weblabdeusto_scheduler.post_reservation_data_manager
     self.period = period
     self.create_client_func = create_client_func
     self.stopped = False
示例#14
0
 def __init__(self, url_maps, protocol, username, password, experiment_name, category_name, program, initial_delay):
     threading.Thread.__init__(self)
     self.setName(counter.next_name("BotUser"))
     self.url, self.url_login = url_maps[protocol]
     self.protocol = protocol
     self.username = username
     self.password = password
     self.experiment_name = experiment_name
     self.experiment_category_name = category_name
     self.program = _Util.serialize(program)
     self.bot = Client.create_bot(protocol, url=self.url, url_login=self.url_login)
     self.initial_delay = initial_delay
 def __init__(self, weblabdeusto_scheduler, period, create_client_func):
     threading.Thread.__init__(self)
     self.setName(next_name("ResultsRetriever"))
     self.session_maker      = weblabdeusto_scheduler.session_maker
     self.resource_type_name = weblabdeusto_scheduler.resource_type_name
     self.server_route       = weblabdeusto_scheduler.core_server_route
     self.server_url         = weblabdeusto_scheduler.core_server_url # Not required, but helpful for debugging
     self.completed_store    = weblabdeusto_scheduler.completed_store
     self.post_reservation_data_manager = weblabdeusto_scheduler.post_reservation_data_manager
     self.period             = period
     self.create_client_func = create_client_func
     self.stopped            = False
    def __init__(self, weblabdeusto_scheduler, period, create_client_func):
        threading.Thread.__init__(self)
        self.setName(next_name("ResultsRetriever"))
        self.redis_maker        = weblabdeusto_scheduler.redis_maker
        self.resource_type_name = weblabdeusto_scheduler.resource_type_name
        self.server_route       = weblabdeusto_scheduler.core_server_route
        self.server_url         = weblabdeusto_scheduler.core_server_url # Not required, but helpful for debugging
        self.completed_store    = weblabdeusto_scheduler.completed_store
        self.post_reservation_data_manager = weblabdeusto_scheduler.post_reservation_data_manager
        self.period             = period
        self.create_client_func = create_client_func
        self.stopped            = False

        self.external_weblabdeusto_pending = weblabdeusto_scheduler.EXTERNAL_WEBLABDEUSTO_PENDING_RESULTS % (self.resource_type_name, self.server_route)
    def __init__(self, weblabdeusto_scheduler, period, create_client_func):
        threading.Thread.__init__(self)
        self.setName(next_name("ResultsRetriever"))
        self.redis_maker = weblabdeusto_scheduler.redis_maker
        self.resource_type_name = weblabdeusto_scheduler.resource_type_name
        self.server_route = weblabdeusto_scheduler.core_server_route
        self.server_url = weblabdeusto_scheduler.core_server_url  # Not required, but helpful for debugging
        self.completed_store = weblabdeusto_scheduler.completed_store
        self.post_reservation_data_manager = weblabdeusto_scheduler.post_reservation_data_manager
        self.period = period
        self.create_client_func = create_client_func
        self.stopped = False

        self.external_weblabdeusto_pending = weblabdeusto_scheduler.EXTERNAL_WEBLABDEUSTO_PENDING_RESULTS % (
            self.resource_type_name, self.server_route)
示例#18
0
    def __init__(self, func, otherself, args, kargs, resource_manager, logging):
        super(_ThreadedFunc,self).__init__(name = counter.next_name("_ThreadedFunc_for_" + func.__name__))
        self._self             = otherself
        self._args             = args
        self._kargs            = kargs
        self._func             = func
        self._resource_manager = resource_manager

        self.result            = None
        self.raised_exc        = None
        self.finished_ok       = False
        self.logging           = logging

        if self._resource_manager != None:
            self._resource_manager.add_resource(self)
    def __init__(self, scheduler, min_time_between_updates = 0.0, max_time_between_updates = 0.0):
        super(SchedulerTransactionsSynchronizer, self).__init__()
        self.setName(counter.next_name("SchedulerTransactionsSynchronizer"))
        self.setDaemon(True)
        self.scheduler = scheduler
        self.queue = Queue.Queue()
        self.stopped = False

        self.pending_elements = []
        self.pending_elements_condition = threading.Condition()

        self._latest_update = 0 # epoch
        self.period_lock = threading.Lock()
        self.min_time_between_updates = int(min_time_between_updates * 1000)
        self.max_time_between_updates = int(max_time_between_updates * 1000)
        self.next_period_between_updates = 0
示例#20
0
    def __init__(self, func, otherself, args, kargs, resource_manager,
                 logging):
        super(_ThreadedFunc, self).__init__()
        self.setName(counter.next_name("_ThreadedFunc_for_" + func.__name__))
        self._self = otherself
        self._args = args
        self._kargs = kargs
        self._func = func
        self._resource_manager = resource_manager

        self.result = None
        self.raised_exc = None
        self.finished_ok = False
        self.logging = logging

        if self._resource_manager != None:
            self._resource_manager.add_resource(self)
示例#21
0
    def __init__(self,
                 scheduler,
                 min_time_between_updates=0.0,
                 max_time_between_updates=0.0):
        super(SchedulerTransactionsSynchronizer, self).__init__()
        self.setName(counter.next_name("SchedulerTransactionsSynchronizer"))
        self.setDaemon(True)
        self.scheduler = scheduler
        self.queue = Queue.Queue()
        self.stopped = False

        self.pending_elements = []
        self.pending_elements_condition = threading.Condition()

        self._latest_update = 0  # epoch
        self.period_lock = threading.Lock()
        self.min_time_between_updates = int(min_time_between_updates * 1000)
        self.max_time_between_updates = int(max_time_between_updates * 1000)
        self.next_period_between_updates = 0
示例#22
0
    def __init__(self, coord_address, locator, cfg_manager, dont_start=False, *args, **kwargs):
        super(UserProcessingServer, self).__init__(*args, **kwargs)

        log.log(UserProcessingServer, log.level.Info, "Starting Core Server...")

        self._stopping = False
        self._cfg_manager = cfg_manager
        self.config = cfg_manager
        self._locator = locator

        self.core_server_url = cfg_manager.get_doc_value(configuration_doc.CORE_SERVER_URL)

        if (
            cfg_manager.get_value(configuration_doc.CORE_UNIVERSAL_IDENTIFIER, "default") == "default"
            or cfg_manager.get_value(configuration_doc.CORE_UNIVERSAL_IDENTIFIER_HUMAN, "default") == "default"
        ):
            generated = uuid.uuid1()
            msg = (
                "Property %(property)s or %(property_human)s not configured. Please establish: %(property)s = '%(uuid)s' and %(property_human)s = 'server at university X'. Otherwise, when federating the experiment it could enter in an endless loop."
                % {
                    "property": configuration_doc.CORE_UNIVERSAL_IDENTIFIER,
                    "property_human": configuration_doc.CORE_UNIVERSAL_IDENTIFIER_HUMAN,
                    "uuid": generated,
                }
            )
            print msg
            print >> sys.stderr, msg
            log.log(UserProcessingServer, log.level.Error, msg)

        self.core_server_universal_id = cfg_manager.get_doc_value(configuration_doc.CORE_UNIVERSAL_IDENTIFIER)
        self.core_server_universal_id_human = cfg_manager.get_doc_value(
            configuration_doc.CORE_UNIVERSAL_IDENTIFIER_HUMAN
        )

        #
        # Create session managers
        #

        session_type_str = cfg_manager.get_doc_value(configuration_doc.WEBLAB_CORE_SERVER_SESSION_TYPE)
        if not hasattr(SessionType, session_type_str):
            raise coreExc.NotASessionTypeError("Not a session type: %s" % session_type_str)
        session_type = getattr(SessionType, session_type_str)

        session_pool_id = cfg_manager.get_doc_value(configuration_doc.WEBLAB_CORE_SERVER_SESSION_POOL_ID)
        self._session_manager = SessionManager.SessionManager(cfg_manager, session_type, session_pool_id)

        reservations_session_pool_id = cfg_manager.get_value(
            WEBLAB_CORE_SERVER_RESERVATIONS_SESSION_POOL_ID, "CoreServerReservations"
        )
        self._reservations_session_manager = SessionManager.SessionManager(
            cfg_manager, session_type, reservations_session_pool_id
        )

        #
        # Coordination
        #

        coordinator_implementation = cfg_manager.get_doc_value(configuration_doc.COORDINATOR_IMPL)
        self._coordinator = coordinator_create(coordinator_implementation, self._locator, cfg_manager)

        #
        # Database and information storage managers
        #

        self._db_manager = DatabaseGateway(cfg_manager)

        self._commands_store = TemporalInformationStore.CommandsTemporalInformationStore()

        self._temporal_information_retriever = TemporalInformationRetriever.TemporalInformationRetriever(
            cfg_manager,
            self._coordinator.initial_store,
            self._coordinator.finished_store,
            self._commands_store,
            self._coordinator.completed_store,
            self._db_manager,
        )
        self._temporal_information_retriever.start()

        #
        # Alive users
        #

        self._alive_users_collection = AliveUsersCollection.AliveUsersCollection(
            self._locator,
            self._cfg_manager,
            session_type,
            self._reservations_session_manager,
            self._coordinator,
            self._commands_store,
            self._coordinator.finished_reservations_store,
        )

        # Login Manager
        self._login_manager = LoginManager(self._db_manager, self)

        #
        # Initialize facade (comm) servers
        #

        self._server_route = cfg_manager.get_doc_value(configuration_doc.CORE_FACADE_SERVER_ROUTE)

        self.flask_server = WebLabFlaskServer(self, cfg_manager)

        self.dont_start = cfg_manager.get_value("dont_start", dont_start)
        if not self.dont_start:
            self.flask_server.start()

        self.app = self.flask_server.app

        #
        # Start checking times
        #
        checking_time = self._cfg_manager.get_value(CHECKING_TIME_NAME, DEFAULT_CHECKING_TIME)
        timer = threading.Timer(checking_time, self._renew_checker_timer)
        timer.setName(counter.next_name("ups-checker-timer"))
        timer.setDaemon(True)
        timer.start()
        _resource_manager.add_resource(timer)
示例#23
0
 def __init__(self, event_waiter, event):
     threading.Thread.__init__(self)
     self.setName(counter.next_name("EventWaitHolder"))
     self.event_waiter = event_waiter
     self.event = event
示例#24
0
 def __init__(self, banner, port):
     threading.Thread.__init__(self)
     self.setName(counter.next_name("Debugger"))
     self.banner = banner
     self.port   = port
示例#25
0
 def __init__(self, event_waiter, event):
     threading.Thread.__init__(self)
     self.setName(counter.next_name("EventWaitHolder"))
     self.event_waiter = event_waiter
     self.event        = event
示例#26
0
    def __init__(self, coord_address, locator, cfg_manager, dont_start = False, *args, **kwargs):
        super(UserProcessingServer,self).__init__(*args, **kwargs)

        log.log( UserProcessingServer, log.level.Info, "Starting Core Server...")

        self._stopping = False
        self._cfg_manager    = cfg_manager
        self.config          = cfg_manager
        self._locator        = locator

        self.core_server_url = cfg_manager.get_doc_value(configuration_doc.CORE_SERVER_URL)

        if cfg_manager.get_value(configuration_doc.CORE_UNIVERSAL_IDENTIFIER, 'default') == 'default' or cfg_manager.get_value(configuration_doc.CORE_UNIVERSAL_IDENTIFIER_HUMAN, 'default') == 'default':
            generated = uuid.uuid1()
            msg = "Property %(property)s or %(property_human)s not configured. Please establish: %(property)s = '%(uuid)s' and %(property_human)s = 'server at university X'. Otherwise, when federating the experiment it could enter in an endless loop." % {
                'property'       : configuration_doc.CORE_UNIVERSAL_IDENTIFIER,
                'property_human' : configuration_doc.CORE_UNIVERSAL_IDENTIFIER_HUMAN,
                'uuid'           : generated
            }
            print(msg)
            print(msg, file = sys.stderr)
            log.log( UserProcessingServer, log.level.Error, msg)

        self.core_server_universal_id       = cfg_manager.get_doc_value(configuration_doc.CORE_UNIVERSAL_IDENTIFIER)
        self.core_server_universal_id_human = cfg_manager.get_doc_value(configuration_doc.CORE_UNIVERSAL_IDENTIFIER_HUMAN)

        #
        # Create session managers
        #

        session_type_str    = cfg_manager.get_doc_value(configuration_doc.WEBLAB_CORE_SERVER_SESSION_TYPE)
        if not hasattr(SessionType, session_type_str):
            raise coreExc.NotASessionTypeError( 'Not a session type: %s' % session_type_str )
        session_type = getattr(SessionType, session_type_str)

        session_pool_id       = cfg_manager.get_doc_value(configuration_doc.WEBLAB_CORE_SERVER_SESSION_POOL_ID)
        self._session_manager = SessionManager.SessionManager( cfg_manager, session_type, session_pool_id )

        reservations_session_pool_id = cfg_manager.get_value(WEBLAB_CORE_SERVER_RESERVATIONS_SESSION_POOL_ID, "CoreServerReservations")
        self._reservations_session_manager = SessionManager.SessionManager( cfg_manager, session_type, reservations_session_pool_id )

        #
        # Coordination
        #

        coordinator_implementation = cfg_manager.get_doc_value(configuration_doc.COORDINATOR_IMPL)
        self._coordinator    = coordinator_create(coordinator_implementation, self._locator, cfg_manager)

        #
        # Database and information storage managers
        #

        self._db_manager     = DatabaseGateway(cfg_manager)
        self.db = self._db_manager

        cfg_manager.client = DbConfig(self.db.client_configuration)
        cfg_manager.server = DbConfig(self.db.server_configuration)

        self._commands_store = TemporalInformationStore.CommandsTemporalInformationStore()

        self._temporal_information_retriever = TemporalInformationRetriever.TemporalInformationRetriever(cfg_manager, self._coordinator.initial_store, self._coordinator.finished_store, self._commands_store, self._coordinator.completed_store, self._db_manager)
        self._temporal_information_retriever.start()

        clean = cfg_manager.get('core_number') == 0
        if clean:
            self._location_retriever = LocationRetriever(cfg_manager, self._db_manager)
            self._location_retriever.start()
        else:
            self._location_retriever = None
        #
        # Alive users
        #

        self._alive_users_collection = AliveUsersCollection.AliveUsersCollection(
                self._locator, self._cfg_manager, session_type, self._reservations_session_manager, self._coordinator, self._commands_store, self._coordinator.finished_reservations_store)

        # Login Manager
        self._login_manager  = LoginManager(self._db_manager, self)

        #
        # Initialize facade (comm) servers
        #

        self._server_route   = cfg_manager.get_doc_value(configuration_doc.CORE_FACADE_SERVER_ROUTE)

        self.flask_server = WebLabFlaskServer(self, cfg_manager)
        self.babel = self.flask_server.babel

        self.dont_start = cfg_manager.get_value('dont_start', dont_start)
        if not self.dont_start:
            self.flask_server.start()

        self.app = self.flask_server.app

        #
        # Start checking times
        #
        checking_time = self._cfg_manager.get_value(CHECKING_TIME_NAME, DEFAULT_CHECKING_TIME)
        timer = threading.Timer(checking_time, self._renew_checker_timer)
        timer.setName(counter.next_name("ups-checker-timer"))
        timer.setDaemon(True)
        timer.start()
        _resource_manager.add_resource(timer)