Exemplo n.º 1
0
    def run(self):
        while self.guard:
            # check for break
            cur_time = current_time(self.params['db'], self.params['layer_code'], self.parent.time_zone)
            if self.parent.k_conf.break_params['breakenabled'] == '1':
                if self.parent.k_conf.break_params['breakfrom'] <= cur_time \
                        and self.parent.k_conf.break_params['breakto'] >= cur_time \
                        and self.parent.k_conf.status_server_queue == krconst.kr_statusserver_work:
                    self.parent.k_conf.status_server_queue = krconst.kr_statusserver_break
                    self.parent.log_server(krconst.kr_message_startbreake, krconst.log_info)
                    self.parent.stop_server(is_break=True)
                    self.dbplug = db.QueryDB(self.parent.k_conf)
                    if self.dbplug.connect:
                        self.dbplug.CloseConnection()
                else:
                    if (self.parent.k_conf.break_params['breakfrom'] > cur_time \
                            or self.parent.k_conf.break_params['breakto'] < cur_time) \
                            and self.parent.k_conf.status_server_queue == krconst.kr_statusserver_break:
                        self.parent.log_server(krconst.kr_message_stopbreake, krconst.log_info)
                        self.TryConnect()

            if self.parent.k_conf.status_server_queue in (krconst.kr_statusserver_work, krconst.kr_statusserver_lostconnect):
                if self.parent.k_conf.LostConnectDB:
                    self.parent.k_conf.status_server_queue = krconst.kr_statusserver_lostconnect
                    self.parent.stop_server()
                    # try to connect
                    self.TryConnect()
            #else:
            #    self.guard = False
            time.sleep(db_conf.kr_guard_timer)
            if self.guard and self.parent.k_conf.status_server_queue == krconst.kr_statusserver_work:
                # update status server
                self.parent.register_status_server('1')
Exemplo n.º 2
0
 def __init__(self, name_engine_db, group_name, db_user='******', db_pass='******'):
     self.group_name = None
     self.db_user = db_user
     self.db_pass = db_pass
     self.engine_conf = conf.KConfig(name_engine_db)
     ''' проверим в каком режиме должен работать сервер-задач  '''
     self.engine_conf.get_config_file()
     self.engine_conf.get_config_layer()
     if self.engine_conf.layers_work:
         self.engine_conf.get_config()
         if db_user:
             self.engine_conf.db_user = db_user
         if db_pass:
             self.engine_conf.db_pass = db_pass
         ''' Подключимся к Engine для получения параметров работы '''
         self.__db_engine = db.QueryDB(self.engine_conf)
         if self.__db_engine.connect:
             self.group_name = group_name
             layers_db = self.__layers_get_info(group_name)
             if layers_db:
                 self.__layers_start(layers_db, self.engine_conf, db_user, db_pass)
                 self.__subscribe_event()
             else:
                 print c.m_e_layer_get_layers % group_name
         else:
             print c.m_e_layer_not_db_engine % self.engine_conf.db_path
     else:
         print c.m_e_layer_config
Exemplo n.º 3
0
    def connect_db_server(self):
        """
            Подключение к БД
        """

        if not self.db:
            self.db = db.QueryDB(self.k_conf)
Exemplo n.º 4
0
 def run(self):
     if not self.dbplug:
         self.dbplug = db.QueryDB(self.parent.k_conf)
         if not self.dbplug.connect:
             ''' Ошибка открытия подключения к БД '''
             self.parent.log_server(krconst.kr_message_error_openconnect % self.params['name'], c.log_error)
         else:
             self.check_turn()
Exemplo n.º 5
0
 def connect_other_db(self, other_cfg):
     other_db = db.QueryDB(other_cfg)
     if other_db.connect:
         return other_db
     else:
         if other_db.db_message != '':
             self.log_file(other_db.db_message)
             self.result['result'] = krconst.plugin_error
         return None
Exemplo n.º 6
0
 def TryConnect(self):
     if not self.guard:
         return
     self.dbplug = db.QueryDB(self.parent.k_conf)
     if self.dbplug.connect:
         self.dbplug.CloseConnection()
         self.dbplug = None
         self.parent.k_conf.status_server_queue = krconst.kr_statusserver_work
         self.parent.start_server()
     else:
         if self.dbplug.db_message != '':
             self.parent.log_server(self.dbplug.db_message, krconst.log_error)
Exemplo n.º 7
0
    def engine_get_db(self, name_xml, layer_code=None, sql_text_add=None):
        """
        Получение всех слоев движка
        @param name_xml: наименвание секции для подключения к Engine
        @param layer_code: код слоя
        @param sql_text_add: добавочниый sql текст
        @return: список слоев
        """

        result = []

        self.log_file('Подключение к Engine', terms=1)
        engine_conf = kc.KConfig(name_xml)
        engine_conf.get_config_file()
        engine_conf.get_config_layer()
        engine_conf.get_config()
        db_engine = db.QueryDB(engine_conf)
        # todo Щеглов: нужна правильная проверка на коннект
        if db_engine.connect:
            self.log_file(
                'Подклчение к Engine прошло успешно',
                terms=1)
            # Получаем все слои и дополнительные параметры

            sql_text = '''select l.code, u.email,  LPAD(u.sa_uid, 9, '0') as sa_uid, u.login
                                        from engine_layers l
                                             left join engine_users u on l.owner_id = u.id_user
                                        where l.code <> 'GLOBAL' '''
            sql_params = []
            if layer_code:
                sql_text += ' and l.code=? '
                sql_params = [layer_code]
            if sql_text_add:
                sql_text += sql_text_add

            res = self.execute_sql(sql_text,
                                   sql_params=sql_params,
                                   db_local=db_engine,
                                   fetch='many')
            if res['status'] == c.kr_sql_error:
                self.log_file(
                    'Ошибка получения всех слоев',
                    terms=1)
            else:
                result = res['datalist']
        else:
            self.log_file('Ошибка подключения к Engine',
                          terms=1)
        return result, engine_conf