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
« 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
5class SriovNetworkNodeState(NamespacedResource):
6 """
7 SriovNetworkNodeState object.
8 """
10 api_group = NamespacedResource.ApiGroup.SRIOVNETWORK_OPENSHIFT_IO
12 class SyncStatus:
13 IN_PROGRESS: str = "InProgress"
15 @property
16 def interfaces(self):
17 return self.instance.status.interfaces
19 @staticmethod
20 def iface_name(iface):
21 return iface.name
23 @staticmethod
24 def pciaddress(iface):
25 return iface.pciAddress
27 @staticmethod
28 def totalvfs(iface):
29 return iface.totalvfs
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
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