Esempio n. 1
0
def sighandler_term(signum=None, frame=None):
    if _flags.sigterm_sent: return
    _flags.sigterm_sent = True
    background_job(suicide, daemon=True)()
    logging.info('got TERM signal, exiting')
    if config.db_update == 2:
        try:
            do_save()
        except:
            eva.core.log_traceback()
    core_shutdown()
    unlink_pid_file()
    logging.info('EVA core shut down')
Esempio n. 2
0
 def setValues(self, addr, values):
     super().setValues(addr, values)
     if not self.event_handlers_lock.acquire(
             timeout=eva.core.config.timeout):
         logging.critical('WatchBlock::setValues locking broken')
         eva.core.critical()
         return False
     try:
         if addr not in self.event_handlers:
             return
         for f in self.event_handlers[addr]:
             background_job(f)(addr, values)
     finally:
         self.event_handlers_lock.release()
Esempio n. 3
0
    def shutdown_core(self, **kwargs):
        """
        shutdown the controller

        Controller process will be exited and then (should be) restarted by
        watchdog. This allows to restart controller remotely.

        Args:
            k: .master
        """
        parse_api_params(kwargs)
        os.system('touch {}/{}_reload'.format(eva.core.dir_var,
                                              eva.core.product.code))
        background_job(eva.core.sighandler_term)()
        return True, api_result_accepted
Esempio n. 4
0
def start():
    eva.lm.extapi.start()
    Q.start()
    for i, r in dm_rules.items():
        DM.append_rule(r, do_sort=False)
    DM.sort()
    plc.start_processors()
    uc_pool.start()
    for i, v in remote_ucs.items():
        background_job(connect_remote_controller, daemon=True)(v)
    for i, v in lvars_by_full_id.items():
        v.start_processors()
    for i, v in cycles_by_id.copy().items():
        v.start(autostart=True)
    for i, r in jobs.items():
        try:
            r.schedule()
        except:
            eva.core.log_traceback()
    eva.lm.jobs.scheduler.start()
Esempio n. 5
0
def handle_event(item):
    oid = item.oid
    if oid in custom_event_handlers:
        for f in custom_event_handlers.get(oid):
            background_job(exec_event_handler)(f, item)
    return True