示例#1
0
    def CheckDownloadMonitorTable(self):

        log.info('CheckDownloadMonitorTable start...')

        # Check DSM Version
        ver = CommonUtil.GetDSMMajorVersion()
        if ver != "5":
            log.info("DSM Major Version : %s, Create Table pass", ver)
            return

        log.info("DSM Major Version : %s, DownloadStation Table Check", ver)

        ret = True
        if self.curs == None:
            ret = self.db_connect()

        if ret == True:
            table_query = "select count(*) from information_schema.tables where table_name = 'btdownload_event';"
            proc_query = "select count(*) from pg_proc where proname = 'process_btdownload_event';"
            trigger_query = "select count(*) from pg_trigger where tgname = 'btdownload_event';"

            try:
                # Check Table Exist
                self.curs.execute(table_query)
                rowitem = self.curs.fetchone()
                if rowitem[0] == 0:
                    log.info('monitor table is not exist.. try create table')
                    self.CreateMonitorTable()
                    self.bot.sendMessage(self.chat_id,
                                         'DS Download Monitor Table 등록')

                # Check Procedure Exist
                self.curs.execute(proc_query)
                rowitem = self.curs.fetchone()
                if rowitem[0] == 0:
                    log.info(
                        'monitor procedure is not exist.. try create procedure'
                    )
                    self.CreateMonitorProcedure()
                    self.bot.sendMessage(self.chat_id,
                                         'DS Download Monitor Procedure 등록')

                # Check Trigger Exist
                self.curs.execute(trigger_query)
                rowitem = self.curs.fetchone()
                if rowitem[0] == 0:
                    log.info(
                        'monitor trigger is not exist... try create trigger')
                    self.CreateMonitorTrigger()
                    self.bot.sendMessage(self.chat_id,
                                         'DS Download Monitor Trigger 등록')

            except psycopg2.IntegrityError as err:
                if err.pgcode != '23505':
                    log.error(
                        'CheckDownloadMonitorTable|DB IntegrityError : %s',
                        err)
                else:
                    log.error(
                        'CheckDownloadMonitorTable|DB Not Intergrity Error : %s',
                        err)
                self.curs.close()
                self.conn.close()
                self.curs = None
            except Exception as err:
                log.error('CheckDownloadMonitorTable|DB Exception : %s', err)
                self.curs.close()
                self.conn.close()
                self.curs = None
            except:
                log.error("CheckDownloadMonitorTable|psycopg except : " + e)
                self.curs.close()
                self.conn.close()
                self.curs = None

            log.info('CheckDownloadMonitorTable exit...')
            return