Example #1
0
 def __init__(self, cmd_accept, cmd_flow, compname='XX'):
     super(ProcessNotifyIn, self).__init__(compname)
     self.command_accept = cmd_accept
     self.command_reflow = cmd_flow
     cax = ''
     if isinstance(cmd_accept, tuple) or isinstance(cmd_accept, list):
         for ca in cmd_accept:
             cax = '{0}"{1}",'.format(cax, ca)
         self.checkSQL =\
             '''SELECT SQL_NO_CACHE `id`,`from`,`parameters`,`command`
                FROM `notify_in` WHERE `status`=0 AND `command` IN ({0})
                LIMIT 100'''.format(cax[:-1])
     else:            
         self.checkSQL =\
             '''SELECT SQL_NO_CACHE `id`,`from`,`parameters`
                FROM `notify_in`
                WHERE `status`=0 AND `command`="{0}" LIMIT 100'''.\
                format(cmd_accept)
     self.reflow_dict = None
     self._cmdReflow()
     self.acceptSQL = '''UPDATE `notify_in` SET `status`=1 WHERE `id`=%s'''
     self.errorSQL = '''UPDATE `notify_in` SET `status`=99 WHERE `id`=%s'''
     self.reflowSQL = '''UPDATE `notify_in` SET `command`=%s WHERE `id`=%s'''
     self.handler = []
     self.last_nin_id = None
     self.ll = LogLoad(self.comp_name, self.dbconn)
Example #2
0
class ProcessNotifyIn(AgentNotifier):
    '''Base class for E-Logic's component.
       Message flow is defined with "command_accept" & "command_reflow"
    '''
    def __init__(self, cmd_accept, cmd_flow, compname='XX'):
        super(ProcessNotifyIn, self).__init__(compname)
        self.command_accept = cmd_accept
        self.command_reflow = cmd_flow
        cax = ''
        if isinstance(cmd_accept, tuple) or isinstance(cmd_accept, list):
            for ca in cmd_accept:
                cax = '{0}"{1}",'.format(cax, ca)
            self.checkSQL =\
                '''SELECT SQL_NO_CACHE `id`,`from`,`parameters`,`command`
                   FROM `notify_in` WHERE `status`=0 AND `command` IN ({0})
                   LIMIT 100'''.format(cax[:-1])
        else:            
            self.checkSQL =\
                '''SELECT SQL_NO_CACHE `id`,`from`,`parameters`
                   FROM `notify_in`
                   WHERE `status`=0 AND `command`="{0}" LIMIT 100'''.\
                   format(cmd_accept)
        self.reflow_dict = None
        self._cmdReflow()
        self.acceptSQL = '''UPDATE `notify_in` SET `status`=1 WHERE `id`=%s'''
        self.errorSQL = '''UPDATE `notify_in` SET `status`=99 WHERE `id`=%s'''
        self.reflowSQL = '''UPDATE `notify_in` SET `command`=%s WHERE `id`=%s'''
        self.handler = []
        self.last_nin_id = None
        self.ll = LogLoad(self.comp_name, self.dbconn)
    
    def process(self):
        self.ll.logJobFound()
        cu = MySQLdb.cursors.DictCursor
        c = self.execSQL(cu, self.checkSQL)
        rows = c.fetchall()
        c.close()
        if len(rows) == 0:
            self.ll.logNoJob()
            return False
        self.ll.logJobFound()
        for r in rows:
            self.last_nin_id = r['id']
            try:
                if self.customProcess(r):
                    self.accept(r)
                else:
                    self.reflow(r)
            except CustomAction, a:
                a.action()
        self.finalProcess()
        self.dbconn.commit()
        self.ll.logNoJob()
        return True