def CreateJobInstance(scheduler_api, yaml_job):
  """Build a proto format job instance  matching the input YAML based job.

  Args:
    scheduler_api: api_lib.scheduler.<Alpha|Beta|GA>ApiAdapter, Cloud Scheduler
      API needed for doing jobs based operations.
    yaml_job: A parsed yaml_job entry read from the 'cron.yaml' file.
  Returns:
    An cloudscheduler.<ver>.cloudscheduler_<ver>_messages.Job instance.
  """
  messages = scheduler_api.messages
  if yaml_job.retry_parameters:
    retry_config = messages.RetryConfig(
        maxBackoffDuration=convertors.ConvertBackoffSeconds(
            yaml_job.retry_parameters.max_backoff_seconds),
        maxDoublings=yaml_job.retry_parameters.max_doublings,
        maxRetryDuration=convertors.ConvertTaskAgeLimit(
            yaml_job.retry_parameters.job_age_limit),
        minBackoffDuration=convertors.ConvertBackoffSeconds(
            yaml_job.retry_parameters.min_backoff_seconds),
        retryCount=yaml_job.retry_parameters.job_retry_limit
    )
  else:
    retry_config = None
  return messages.Job(
      appEngineHttpTarget=messages.AppEngineHttpTarget(
          httpMethod=messages.AppEngineHttpTarget.HttpMethodValueValuesEnum.GET,
          relativeUrl=yaml_job.url,
          appEngineRouting=messages.AppEngineRouting(service=yaml_job.target)),
      retryConfig=retry_config,
      description=yaml_job.description,
      legacyAppEngineCron=scheduler_api.jobs.legacy_cron,
      schedule=messages.Schedule(
          schedule=yaml_job.schedule,
          timeZone=yaml_job.timezone if yaml_job.timezone else 'UTC'))
Exemplo n.º 2
0
 def testConvertTaskAgeLimit(self):
     combinations_to_test = (
         ('2m', '120s'),
         ('1.5h', '5400s'),
         ('8.5s', '8s'),
         ('1d', '86400s'),
     )
     for time_with_units, time_in_sec in combinations_to_test:
         self.assertEqual(convertors.ConvertTaskAgeLimit(time_with_units),
                          time_in_sec)