示例#1
0
    def get_schedule(self, workflow):
        """Get workflow schedule data from the store.

        Args:
            workflow: The name of the workflow whose schedule should be
                retrieved.
        Returns:
            The workflow schedule or None if it was not found.
        """
        name = Name(workflow=workflow)
        schedule_token_name = name.get_workflow_schedule_token_name()
        tokens = self._store.read_tokens(name_prefix=schedule_token_name)
        if tokens:
            for token in tokens:
                if token.name == schedule_token_name:
                    schedule = pickle.loads(token.data)
                    overrun_policy_help = OverrunPolicy.get_help(
                        schedule.overrun_policy)
                    return WorkflowScheduleData(
                        next_run_time=schedule.next_run_time,
                        recurrence_seconds=schedule.recurrence_seconds,
                        overrun_policy=schedule.overrun_policy,
                        overrun_policy_help=overrun_policy_help,
                        workflow=schedule.workflow,
                        parser_params=schedule.parser_params,
                        emails=schedule.emails,
                        max_running_instances=schedule.max_running_instances)
        return None
示例#2
0
 def format(self):
     result = copy.copy(self.__dict__)
     result['next_run_time'] = timestamp_to_str(self.next_run_time)
     result['overrun_policy'] = OverrunPolicy.to_string(self.overrun_policy)
     result['max_running_instances'] = str(self.max_running_instances)
     result['parser_params'] = str(self.parser_params)
     return result
示例#3
0
    def get_schedule(self, workflow):
        """Get workflow schedule data from the store.

        Args:
            workflow: The name of the workflow whose schedule should be
                retrieved.
        Returns:
            The workflow schedule or None if it was not found.
        """
        name = Name(workflow=workflow)
        schedule_token_name = name.get_workflow_schedule_token_name()
        tokens = self._store.read_tokens(name_prefix=schedule_token_name)
        if tokens:
            for token in tokens:
                if token.name == schedule_token_name:
                    schedule = pickle.loads(token.data)
                    overrun_policy_help = OverrunPolicy.get_help(
                        schedule.overrun_policy)
                    return WorkflowScheduleData(
                        next_run_time=schedule.next_run_time,
                        recurrence_seconds=schedule.recurrence_seconds,
                        overrun_policy=schedule.overrun_policy,
                        overrun_policy_help=overrun_policy_help,
                        workflow=schedule.workflow,
                        parser_params=schedule.parser_params,
                        emails=schedule.emails,
                        max_running_instances=schedule.max_running_instances)
        return None
示例#4
0
 def format(self):
     result = copy.copy(self.__dict__)
     result['next_run_time'] = timestamp_to_str(self.next_run_time)
     result['overrun_policy'] = OverrunPolicy.to_string(self.overrun_policy)
     result['max_running_instances'] = str(self.max_running_instances)
     result['parser_params'] = str(self.parser_params)
     return result
示例#5
0
 def get_schedules(self):
     """Get all workflow schedules data from the store."""
     tokens = self._store.read_tokens(
         name_prefix=Name.WORKFLOW_SCHEDULE_PREFIX)
     result = []
     for token in tokens:
         schedule = pickle.loads(token.data)
         overrun_policy_help = (
             OverrunPolicy.get_help(schedule.overrun_policy))
         result.append(WorkflowScheduleData(
             next_run_time=schedule.next_run_time,
             recurrence_seconds=schedule.recurrence_seconds,
             overrun_policy=schedule.overrun_policy,
             overrun_policy_help=overrun_policy_help,
             workflow=schedule.workflow,
             parser_params=schedule.parser_params,
             emails=schedule.emails,
             max_running_instances=schedule.max_running_instances))
     return result
示例#6
0
 def __str__(self):
     if self.next_run_time:
         next_run_time = timestamp_to_str(self.next_run_time)
     else:
         next_run_time = str(self.next_run_time)
     if self.recurrence_seconds:
         delta = datetime.timedelta(seconds=self.recurrence_seconds)
         recurrence = str(delta)
     else:
         recurrence = str(self.recurrence_seconds)
     if self.overrun_policy is not None:
         overrun_policy = OverrunPolicy.to_string(self.overrun_policy)
     else:
         overrun_policy = str(self.overrun_policy)
     return ('WorkflowSchedule(next_run_time=%s, recurrence=%s, '
             'overrun_policy=%s, parser_params=%s, workflow=%s, '
             'email=%s, max_running_instances=%s)' %
             (next_run_time, recurrence, overrun_policy, self.parser_params,
              self.workflow, self.emails, str(self.max_running_instances)))
示例#7
0
 def get_schedules(self):
     """Get all workflow schedules data from the store."""
     tokens = self._store.read_tokens(
         name_prefix=Name.WORKFLOW_SCHEDULE_PREFIX)
     result = []
     for token in tokens:
         schedule = pickle.loads(token.data)
         overrun_policy_help = (OverrunPolicy.get_help(
             schedule.overrun_policy))
         result.append(
             WorkflowScheduleData(
                 next_run_time=schedule.next_run_time,
                 recurrence_seconds=schedule.recurrence_seconds,
                 overrun_policy=schedule.overrun_policy,
                 overrun_policy_help=overrun_policy_help,
                 workflow=schedule.workflow,
                 parser_params=schedule.parser_params,
                 emails=schedule.emails,
                 max_running_instances=schedule.max_running_instances))
     return result
示例#8
0
 def __str__(self):
     if self.next_run_time:
         next_run_time = timestamp_to_str(self.next_run_time)
     else:
         next_run_time = str(self.next_run_time)
     if self.recurrence_seconds:
         delta = datetime.timedelta(seconds=self.recurrence_seconds)
         recurrence = str(delta)
     else:
         recurrence = str(self.recurrence_seconds)
     if self.overrun_policy is not None:
         overrun_policy = OverrunPolicy.to_string(self.overrun_policy)
     else:
         overrun_policy = str(self.overrun_policy)
     return ('WorkflowSchedule(next_run_time=%s, recurrence=%s, '
             'overrun_policy=%s, parser_params=%s, workflow=%s, '
             'email=%s, max_running_instances=%s)' % (next_run_time,
                                                      recurrence,
                                                      overrun_policy,
                                                      self.parser_params,
                                                      self.workflow,
                                                      self.emails,
                                                      str(self.max_running_instances)))
 def get_schedule_token(self, workflow):
     schedule_config = self._repository.get_schedule(workflow)
     timestamp = schedule_to_timestamp(schedule_config.time,
                                       schedule_config.start_date)
     recurrence = recurrence_str_to_sec(schedule_config.recurrence)
     overrun_policy = OverrunPolicy.from_string(
         schedule_config.overrun_policy)
     schedule = WorkflowSchedule(
         next_run_time=timestamp,
         recurrence_seconds=recurrence,
         overrun_policy=overrun_policy,
         workflow=schedule_config.workflow,
         emails=schedule_config.emails,
         #TODO(mao): to make it flexible that allow users specify through UI
         max_running_instances=PinballConfig.DEFAULT_MAX_WORKFLOW_RUNNING_INSTANCES)
     schedule.advance_next_run_time()
     timestamp = schedule.next_run_time
     token_name = (
         Name(workflow=schedule_config.workflow
              ).get_workflow_schedule_token_name())
     return Token(name=token_name, owner='parser',
                  expirationTime=timestamp,
                  data=pickle.dumps(schedule))
 def get_schedule_token(self, workflow):
     schedule_config = self._repository.get_schedule(workflow)
     timestamp = schedule_to_timestamp(schedule_config.time,
                                       schedule_config.start_date)
     recurrence = recurrence_str_to_sec(schedule_config.recurrence)
     overrun_policy = OverrunPolicy.from_string(
         schedule_config.overrun_policy)
     schedule = WorkflowSchedule(
         next_run_time=timestamp,
         recurrence_seconds=recurrence,
         overrun_policy=overrun_policy,
         workflow=schedule_config.workflow,
         emails=schedule_config.emails,
         #TODO(mao): to make it flexible that allow users specify through UI
         max_running_instances=PinballConfig.
         DEFAULT_MAX_WORKFLOW_RUNNING_INSTANCES)
     schedule.advance_next_run_time()
     timestamp = schedule.next_run_time
     token_name = (Name(workflow=schedule_config.workflow).
                   get_workflow_schedule_token_name())
     return Token(name=token_name,
                  owner='parser',
                  expirationTime=timestamp,
                  data=pickle.dumps(schedule))