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
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:48 +0200
1from typing import Any, Dict, Optional
3from ocp_resources.resource import NamespacedResource, MissingRequiredArgumentError
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 """
12 api_group = NamespacedResource.ApiGroup.FENCE_AGENTS_REMEDIATION_MEDIK8S_IO
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.
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
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