Coverage for ocp_resources/rhmi.py: 0%

18 statements  

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

1from ocp_resources.resource import NamespacedResource 

2from timeout_sampler import TimeoutExpiredError, TimeoutSampler, TimeoutWatch 

3 

4 

5class RHMI(NamespacedResource): 

6 """ 

7 RHMI custom resource created by Red Hat Openshift API Management (RHOAM) 

8 https://github.com/integr8ly/integreatly-operator/blob/master/apis/v1alpha1/rhmi_types.go 

9 """ 

10 

11 api_group = NamespacedResource.ApiGroup.INTEGREATLY_ORG 

12 

13 def wait_for_stage_status_complete(self, timeout): 

14 """ 

15 Wait until RHMI stage status is complete. 

16 

17 Args: 

18 timeout (int): Time in seconds to wait for stage status. 

19 

20 Raises: 

21 TimeoutExpiredError: If stage status is not complete. 

22 

23 """ 

24 # TODO: Replace complete_status_str with self.Status.COMPLETE once RHMI `complete` status starts with uppercase 

25 complete_status_str = "complete" 

26 self.logger.info(f"Wait for {self.kind} {self.name} stage status to be {complete_status_str}") 

27 sample = None 

28 try: 

29 timeout_watcher = TimeoutWatch(timeout=timeout) 

30 self.wait(timeout=timeout_watcher.remaining_time()) 

31 timeout_remain = timeout_watcher.remaining_time() 

32 

33 for sample in TimeoutSampler( 

34 wait_timeout=timeout_remain, 

35 sleep=1, 

36 func=lambda: self.instance.status.stage, 

37 ): 

38 if sample == complete_status_str: 

39 return 

40 

41 except TimeoutExpiredError: 

42 self.logger.error(f"after {timeout} seconds, {self.kind} {self.name} stage status is {sample}") 

43 raise