Skip to content

Commit 50bcc32

Browse files
authored
feat: add new BGPSessionState resource (#2521)
1 parent 20f0030 commit 50bcc32

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

ocp_resources/bgp_session_state.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md
2+
3+
from typing import Any
4+
5+
from timeout_sampler import TimeoutExpiredError, TimeoutSampler
6+
7+
from ocp_resources.resource import NamespacedResource
8+
9+
10+
class BGPSessionState(NamespacedResource):
11+
"""
12+
BGPSessionState exposes the status of a BGP Session from the FRR instance running on the node.
13+
"""
14+
15+
api_group: str = NamespacedResource.ApiGroup.FRRK8S_METALLB_IO
16+
17+
def __init__(
18+
self,
19+
**kwargs: Any,
20+
) -> None:
21+
super().__init__(**kwargs)
22+
23+
# End of generated code
24+
25+
def wait_for_session_established(self, timeout: int = 300, sleep: int = 5) -> None:
26+
"""Waits until the BGP session status is 'Established'.
27+
28+
Args:
29+
timeout (int): Maximum time to wait for the BGP session to be established, in seconds.
30+
sleep (int): Time to wait between status checks, in seconds.
31+
32+
Raises:
33+
TimeoutExpiredError: If the BGP session does not reach 'Established' status within the timeout period.
34+
"""
35+
bgp_status = None
36+
try:
37+
for sample in TimeoutSampler(wait_timeout=timeout, sleep=sleep, func=lambda: self.instance):
38+
if sample:
39+
bgp_status = sample.get("status", {}).get("bgpStatus")
40+
if bgp_status == self.Status.ESTABLISHED:
41+
self.logger.info(f"{self.kind} {self.name} bgpStatus is now Established")
42+
return
43+
except TimeoutExpiredError:
44+
self.logger.error(
45+
f"{self.kind} {self.name} did not reach bgpStatus=Established within {timeout}s. "
46+
f"Last bgpStatus: {bgp_status}"
47+
)
48+
raise

ocp_resources/utils/resource_constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class Status:
1717
IMAGE_PULL_BACK_OFF: str = "ImagePullBackOff"
1818
ERR_IMAGE_PULL: str = "ErrImagePull"
1919
ACTIVE: str = "Active"
20+
ESTABLISHED: str = "Established"
2021

2122
class Condition:
2223
UPGRADEABLE: str = "Upgradeable"

0 commit comments

Comments
 (0)