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

1from ocp_resources.utils.constants import TIMEOUT_4MINUTES 

2from ocp_resources.resource import NamespacedResource 

3 

4 

5class MachineHealthCheck(NamespacedResource): 

6 """ 

7 MachineHealthCheck object. 

8 """ 

9 

10 api_group = NamespacedResource.ApiGroup.MACHINE_OPENSHIFT_IO 

11 

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 

47 

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 ]