Coverage for ocp_resources/cron_job.py: 0%
29 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
1from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
4class CronJob(NamespacedResource):
5 """
6 https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/cron-job-v1/
7 """
9 api_group = NamespacedResource.ApiGroup.BATCH
11 def __init__(
12 self,
13 schedule=None,
14 job_template=None,
15 timezone=None,
16 concurrency_policy=None,
17 starting_deadline_seconds=None,
18 suspend=None,
19 successful_jobs_history_limit=None,
20 failed_jobs_history_limit=None,
21 **kwargs,
22 ):
23 """
24 Args:
25 schedule (str): schedule of the cron job
26 job_template (dict): describes the job that would be created when a cronjob would be executed
27 Example:
28 job_template: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/job-v1/#JobSpec
29 timezone (str, optional): timezone name for the given schedule
30 concurrency_policy (str, optional): indicates how to treat concurrent execution of a job
31 suspend (bool, optional): suspend subsequent executions
32 successful_jobs_history_limit (int, optional): number of successful jobs to retain
33 failed_jobs_history_limit (int, optional): number of failed jobs to retain
34 starting_deadline_seconds (int, optional): deadline in seconds, for starting a job, in case it does not
35 start at scheduled time
36 """
37 super().__init__(**kwargs)
38 self.job_template = job_template
39 self.schedule = schedule
40 self.timezone = timezone
41 self.concurrency_policy = concurrency_policy
42 self.suspend = suspend
43 self.successful_jobs_history_limit = successful_jobs_history_limit
44 self.failed_jobs_history_limit = failed_jobs_history_limit
45 self.starting_deadline_seconds = starting_deadline_seconds
47 def to_dict(self) -> None:
48 super().to_dict()
49 if not self.kind_dict and not self.yaml_file:
50 if not (self.job_template and self.schedule):
51 raise MissingRequiredArgumentError(argument="'job_template' and 'schedule'")
52 self.res.update({
53 "spec": {
54 "jobTemplate": self.job_template,
55 "schedule": self.schedule,
56 }
57 })
58 if self.timezone:
59 self.res["spec"]["timezone"] = self.timezone
60 if self.suspend:
61 self.res["spec"]["suspend"] = self.suspend
62 if self.successful_jobs_history_limit:
63 self.res["spec"]["successfulJobsHistoryLimit"] = self.successful_jobs_history_limit
64 if self.failed_jobs_history_limit:
65 self.res["spec"]["failedJobsHistoryLimit"] = self.failed_jobs_history_limit
66 if self.concurrency_policy:
67 self.res["spec"]["concurrencyPolicy"] = self.concurrency_policy