Coverage for ocp_resources/machine_health_check.py: 0%
25 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.utils.constants import TIMEOUT_4MINUTES
2from ocp_resources.resource import NamespacedResource
5class MachineHealthCheck(NamespacedResource):
6 """
7 MachineHealthCheck object.
8 """
10 api_group = NamespacedResource.ApiGroup.MACHINE_OPENSHIFT_IO
12 def __init__(
13 self,
14 name=None,
15 namespace=None,
16 cluster_name=None,
17 machineset_name=None,
18 client=None,
19 machine_role="worker",
20 machine_type="worker",
21 node_startup_timeout="120m",
22 max_unhealthy=2, # can also be a persentage, for e.g. "40%"
23 unhealthy_timeout="300s",
24 reboot_strategy=False,
25 teardown=True,
26 yaml_file=None,
27 delete_timeout=TIMEOUT_4MINUTES,
28 **kwargs,
29 ):
30 super().__init__(
31 name=name,
32 namespace=namespace,
33 client=client,
34 teardown=teardown,
35 yaml_file=yaml_file,
36 delete_timeout=delete_timeout,
37 **kwargs,
38 )
39 self.cluster_name = cluster_name
40 self.machineset_name = machineset_name
41 self.machine_role = machine_role
42 self.machine_type = machine_type
43 self.node_startup_timeout = node_startup_timeout
44 self.max_unhealthy = max_unhealthy
45 self.unhealthy_timeout = unhealthy_timeout
46 self.reboot_strategy = reboot_strategy
48 def to_dict(self) -> None:
49 super().to_dict()
50 if not self.kind_dict and not self.yaml_file:
51 if self.reboot_strategy:
52 self.res["metadata"]["annotations"] = {f"{self.api_group}/remediation-strategy": "external-baremetal"}
53 self.res.setdefault("spec", {})
54 self.res["spec"]["nodeStartupTimeout"] = self.node_startup_timeout
55 self.res["spec"]["maxUnhealthy"] = self.max_unhealthy
56 self.res["spec"].setdefault("selector", {})
57 self.res["spec"]["selector"]["matchLabels"] = {
58 f"{self.api_group}/cluster-api-cluster": self.cluster_name,
59 f"{self.api_group}/cluster-api-machine-role": self.machine_role,
60 f"{self.api_group}/cluster-api-machine-type": self.machine_type,
61 f"{self.api_group}/cluster-api-machineset": self.machineset_name,
62 }
63 self.res["spec"]["unhealthyConditions"] = [
64 {
65 "type": self.Condition.READY,
66 "timeout": self.unhealthy_timeout,
67 "status": self.Condition.Status.FALSE,
68 },
69 {
70 "type": self.Condition.READY,
71 "timeout": self.unhealthy_timeout,
72 "status": self.Condition.Status.UNKNOWN,
73 },
74 ]