Coverage for ocp_resources/fence_agent_remediation_templates.py: 0%

32 statements  

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

1from typing import Any, Dict, Optional 

2 

3from ocp_resources.resource import NamespacedResource, MissingRequiredArgumentError 

4 

5 

6class FenceAgentsRemediationTemplate(NamespacedResource): 

7 """ 

8 FenceAgentsRemediationTemplate CRD for managing fencing agents in a Kubernetes cluster. 

9 API Reference: https://github.com/medik8s/fence-agents-remediation 

10 """ 

11 

12 api_group = NamespacedResource.ApiGroup.FENCE_AGENTS_REMEDIATION_MEDIK8S_IO 

13 

14 def __init__( 

15 self, 

16 agent: str, 

17 remediation_strategy: Optional[str] = None, 

18 retry_count: Optional[int] = None, 

19 retry_interval: Optional[str] = None, 

20 remediation_timeout: Optional[str] = None, 

21 shared_parameters: Optional[Dict[str, str]] = None, 

22 node_parameters: Optional[Dict[str, Any]] = None, 

23 **kwargs: Any, 

24 ) -> None: 

25 """ 

26 Initialize a FenceAgentsRemediationTemplate object. 

27 

28 Args: 

29 agent (str): The name of the fence agent to use. 

30 remediation_strategy (str, optional): The strategy to use for remediation. 

31 retry_count (int, optional): The number of retry attempts for the fencing operation. 

32 retry_interval (str, optional): The interval between retry attempts. 

33 remediation_timeout (str, optional): The timeout for each fencing attempt. 

34 shared_parameters (dict, optional): Parameters common to all nodes for the fencing agent. 

35 node_parameters (dict, optional): Node-specific parameters for the fencing agent. 

36 """ 

37 super().__init__(**kwargs) 

38 self.agent = agent 

39 self.remediation_strategy = remediation_strategy 

40 self.retry_count = retry_count 

41 self.retry_interval = retry_interval 

42 self.remediation_timeout = remediation_timeout 

43 self.shared_parameters = shared_parameters 

44 self.node_parameters = node_parameters 

45 

46 def to_dict(self) -> None: 

47 super().to_dict() 

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

49 if not self.agent: 

50 raise MissingRequiredArgumentError(argument="agent") 

51 _spec = self.res["spec"] = {"template": {"spec": {}}} 

52 _spec["template"]["spec"]["agent"] = self.agent 

53 if self.remediation_strategy: 

54 _spec["template"]["spec"]["remediationStrategy"] = self.remediation_strategy 

55 if self.retry_count is not None: 

56 _spec["template"]["spec"]["retrycount"] = self.retry_count 

57 if self.retry_interval: 

58 _spec["template"]["spec"]["retryinterval"] = self.retry_interval 

59 if self.remediation_timeout: 

60 _spec["template"]["spec"]["remediation_timeout"] = self.remediation_timeout 

61 if self.shared_parameters: 

62 _spec["template"]["spec"]["sharedparameters"] = self.shared_parameters 

63 if self.node_parameters: 

64 _spec["template"]["spec"]["nodeparameters"] = self.node_parameters