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)
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