Coverage for ocp_resources/sriov_network_node_state.py: 0%

31 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 SriovNetworkNodeState(NamespacedResource): 

6 """ 

7 SriovNetworkNodeState object. 

8 """ 

9 

10 api_group = NamespacedResource.ApiGroup.SRIOVNETWORK_OPENSHIFT_IO 

11 

12 class SyncStatus: 

13 IN_PROGRESS: str = "InProgress" 

14 

15 @property 

16 def interfaces(self): 

17 return self.instance.status.interfaces 

18 

19 @staticmethod 

20 def iface_name(iface): 

21 return iface.name 

22 

23 @staticmethod 

24 def pciaddress(iface): 

25 return iface.pciAddress 

26 

27 @staticmethod 

28 def totalvfs(iface): 

29 return iface.totalvfs 

30 

31 def wait_for_status_sync(self, wanted_status, timeout=1000): 

32 self.logger.info(f"Wait for {self.kind} {self.name} status to be {wanted_status}") 

33 try: 

34 timeout_watcher = TimeoutWatch(timeout=timeout) 

35 for sample in TimeoutSampler( 

36 wait_timeout=timeout, 

37 sleep=1, 

38 func=lambda: self.exists, 

39 ): 

40 if sample: 

41 break 

42 

43 for sample in TimeoutSampler( 

44 wait_timeout=timeout_watcher.remaining_time(), 

45 sleep=3, 

46 func=lambda: self.instance.status.syncStatus, 

47 ): 

48 if sample == wanted_status: 

49 return 

50 except TimeoutExpiredError: 

51 self.logger.error(f"after {timeout} seconds, {self.name} status is {self.instance.status.syncStatus}") 

52 raise