def process_cron_triggers_v2(self, ctx): for t in triggers.get_next_cron_triggers(): LOG.debug("Processing cron trigger: %s" % t) # Setup admin context before schedule triggers. ctx = security.create_context(t.trust_id, t.project_id) auth_ctx.set_ctx(ctx) LOG.debug("Cron trigger security context: %s" % ctx) try: rpc.get_engine_client().start_workflow( t.workflow.name, t.workflow_input, description="Workflow execution created by cron trigger.", **t.workflow_params ) finally: if t.remaining_executions is not None and t.remaining_executions > 0: t.remaining_executions -= 1 if t.remaining_executions == 0: db_api_v2.delete_cron_trigger(t.name) else: # if remaining execution = None or > 0 next_time = triggers.get_next_execution_time(t.pattern, t.next_execution_time) db_api_v2.update_cron_trigger( t.name, {"next_execution_time": next_time, "remaining_executions": t.remaining_executions} ) auth_ctx.set_ctx(None)
def process_cron_triggers_v2(self, ctx): for t in triggers.get_next_cron_triggers(): LOG.debug("Processing cron trigger: %s" % t) # Setup admin context before schedule triggers. ctx = security.create_context(t.trust_id, t.project_id) auth_ctx.set_ctx(ctx) LOG.debug("Cron trigger security context: %s" % ctx) try: rpc.get_engine_client().start_workflow( t.workflow.name, t.workflow_input, description="workflow execution by cron trigger.", **t.workflow_params ) finally: if t.remaining_executions > 0: t.remaining_executions -= 1 if t.remaining_executions == 0: db_api_v2.delete_cron_trigger(t.name) else: # if remaining execution = None or > 0 next_time = triggers.get_next_execution_time( t.pattern, t.next_execution_time ) db_api_v2.update_cron_trigger( t.name, {'next_execution_time': next_time, 'remaining_executions': t.remaining_executions} ) auth_ctx.set_ctx(None)
def advance_cron_trigger(t): modified_count = 0 try: # If the cron trigger is defined with limited execution count. if t.remaining_executions is not None and t.remaining_executions > 0: t.remaining_executions -= 1 # If this is the last execution. if t.remaining_executions == 0: modified_count = triggers.delete_cron_trigger(t.name, trust_id=t.trust_id, delete_trust=False) else: # if remaining execution = None or > 0. # In case the we are lagging or if the api stopped for some time # we use the max of the current time or the next scheduled time. next_time = triggers.get_next_execution_time( t.pattern, max(datetime.datetime.utcnow(), t.next_execution_time)) # Update the cron trigger with next execution details # only if it wasn't already updated by a different process. updated, modified_count = db_api_v2.update_cron_trigger( t.name, { 'next_execution_time': next_time, 'remaining_executions': t.remaining_executions }, query_filter={'next_execution_time': t.next_execution_time}) except exc.DBEntityNotFoundError as e: # Cron trigger was probably already deleted by a different process. LOG.debug("Cron trigger named '%s' does not exist anymore: %s", t.name, str(e)) # Return True if this engine was able to modify the cron trigger in DB. return modified_count > 0
def advance_cron_trigger(ct): modified_count = 0 try: # If the cron trigger is defined with limited execution count. if (ct.remaining_executions is not None and ct.remaining_executions > 0): ct.remaining_executions -= 1 # If this is the last execution. if ct.remaining_executions == 0: modified_count = db_api_v2.delete_cron_trigger(ct.name) else: # if remaining execution = None or > 0. next_time = triggers.get_next_execution_time( ct.pattern, ct.next_execution_time) # Update the cron trigger with next execution details # only if it wasn't already updated by a different process. updated, modified_count = db_api_v2.update_cron_trigger( ct.name, { 'next_execution_time': next_time, 'remaining_executions': ct.remaining_executions }, query_filter={'next_execution_time': ct.next_execution_time}) except exc.NotFoundException as e: # Cron trigger was probably already deleted by a different process. LOG.debug("Cron trigger named '%s' does not exist anymore: %s", ct.name, str(e)) # Return True if this engine was able to modify the cron trigger in DB. return modified_count > 0
def advance_cron_trigger(t): modified_count = 0 try: # If the cron trigger is defined with limited execution count. if t.remaining_executions is not None and t.remaining_executions > 0: t.remaining_executions -= 1 # If this is the last execution. if t.remaining_executions == 0: modified_count = triggers.delete_cron_trigger( t.name, trust_id=t.trust_id, delete_trust=False ) else: # if remaining execution = None or > 0. # In case the we are lagging or if the api stopped for some time # we use the max of the current time or the next scheduled time. next_time = triggers.get_next_execution_time( t.pattern, max(datetime.datetime.utcnow(), t.next_execution_time) ) # Update the cron trigger with next execution details # only if it wasn't already updated by a different process. updated, modified_count = db_api_v2.update_cron_trigger( t.name, { 'next_execution_time': next_time, 'remaining_executions': t.remaining_executions }, query_filter={ 'next_execution_time': t.next_execution_time } ) except exc.DBEntityNotFoundError as e: # Cron trigger was probably already deleted by a different process. LOG.debug( "Cron trigger named '%s' does not exist anymore: %s", t.name, str(e) ) # Return True if this engine was able to modify the cron trigger in DB. return modified_count > 0
def advance_cron_trigger(ct): modified_count = 0 try: # If the cron trigger is defined with limited execution count. if (ct.remaining_executions is not None and ct.remaining_executions > 0): ct.remaining_executions -= 1 # If this is the last execution. if ct.remaining_executions == 0: modified_count = db_api_v2.delete_cron_trigger(ct.name) else: # if remaining execution = None or > 0. next_time = triggers.get_next_execution_time( ct.pattern, ct.next_execution_time ) # Update the cron trigger with next execution details # only if it wasn't already updated by a different process. updated, modified_count = db_api_v2.update_cron_trigger( ct.name, { 'next_execution_time': next_time, 'remaining_executions': ct.remaining_executions }, query_filter={ 'next_execution_time': ct.next_execution_time } ) except exc.NotFoundException as e: # Cron trigger was probably already deleted by a different process. LOG.debug( "Cron trigger named '%s' does not exist anymore: %s", ct.name, str(e) ) # Return True if this engine was able to modify the cron trigger in DB. return modified_count > 0