Coverage for ocp_resources/pipeline.py: 0%

20 statements  

« prev     ^ index     » next       coverage.py v7.6.10, created at 2025-01-30 10:48 +0200

1# API reference: https://tekton.dev/docs/pipelines/pipelines/ 

2 

3from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource 

4 

5 

6class Pipeline(NamespacedResource): 

7 api_group = NamespacedResource.ApiGroup.TEKTON_DEV 

8 

9 def __init__( 

10 self, 

11 tasks=None, 

12 params=None, 

13 final_parallel_tasks=None, 

14 **kwargs, 

15 ): 

16 """ 

17 Args: 

18 tasks (str, optional): actions to perform in pipeline 

19 params (dict, optional): params to support pipelines. 

20 params can be set/changed based on tasks. 

21 example: 'spec': {'params': [{'name': 'sourceTemplateName','type': 'string','default':'openshift'}, 

22 {'name': 'sourceTemplateNamespace', 'type':'string', 'description': 'Namespace pf template'}]} 

23 final_parallel_tasks (list, optional): a list of one or more to be executed in parallel after all other 

24 tasks have completed in parallel. 

25 spec section can't be empty. It requires at least one optional field. 

26 """ 

27 super().__init__(**kwargs) 

28 # TODO: Add a check for tasks when bug https://issues.redhat.com/browse/SRVKP-3019 is resolved. 

29 self.tasks = tasks 

30 self.params = params 

31 self.final_parallel_tasks = final_parallel_tasks 

32 

33 def to_dict(self) -> None: 

34 super().to_dict() 

35 if not self.kind_dict and not self.yaml_file: 

36 if not (self.tasks or self.params or self.final_parallel_tasks): 

37 raise MissingRequiredArgumentError(argument="'tasks' or 'params' or 'final_parallel_tasks'") 

38 

39 self.res["spec"] = {} 

40 if self.params: 

41 self.res["spec"]["params"] = self.params 

42 if self.tasks: 

43 self.res["spec"]["tasks"] = self.tasks 

44 if self.final_parallel_tasks: 

45 self.res["spec"]["finally"] = self.final_parallel_tasks