Coverage for ocp_resources/catalog_source.py: 0%

20 statements  

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

1from typing import Any, Dict 

2from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource 

3 

4 

5class CatalogSource(NamespacedResource): 

6 """ 

7 https://olm.operatorframework.io/docs/concepts/crds/catalogsource/ 

8 """ 

9 

10 api_group = NamespacedResource.ApiGroup.OPERATORS_COREOS_COM 

11 

12 def __init__( 

13 self, 

14 source_type: str = "", 

15 image: str = "", 

16 display_name: str = "", 

17 publisher: str = "", 

18 update_strategy_registry_poll_interval: str = "", 

19 **kwargs: Any, 

20 ) -> None: 

21 """ 

22 Args: 

23 source_type (str): Name of the source type. 

24 image (str): Image index for the catalog. 

25 display_name (str): Display name for the catalog in the web console and CLI. 

26 publisher (str): Name of the publisher. 

27 update_strategy_registry_poll_interval (str, optional): Time interval between checks of the latest 

28 catalog_source version. 

29 """ 

30 super().__init__(**kwargs) 

31 self.source_type = source_type 

32 self.image = image 

33 self.display_name = display_name 

34 self.publisher = publisher 

35 self.update_strategy_registry_poll_interval = update_strategy_registry_poll_interval 

36 

37 def to_dict(self) -> None: 

38 super().to_dict() 

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

40 if not all([self.source_type, self.image, self.display_name, self.publisher]): 

41 raise MissingRequiredArgumentError(argument="'source_type', 'image', 'display_name' and 'publisher'") 

42 

43 self.res["spec"] = { 

44 "sourceType": self.source_type, 

45 "image": self.image, 

46 "displayName": self.display_name, 

47 "publisher": self.publisher, 

48 } 

49 _spec: Dict[str, Any] = self.res["spec"] 

50 

51 if self.update_strategy_registry_poll_interval: 

52 _spec["updateStrategy"] = {"registryPoll": {"interval": self.update_strategy_registry_poll_interval}}