Skip to content

Commit 521064e

Browse files
committed
based on review comments and offline conversation with dev team
1 parent 025dd62 commit 521064e

File tree

1 file changed

+23
-27
lines changed

1 file changed

+23
-27
lines changed

ocp_resources/node_network_configuration_policy.py

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
)
1111
from ocp_resources.node_network_state import NodeNetworkState
1212
from ocp_resources.resource import Resource, ResourceEditor
13-
from timeout_sampler import TimeoutExpiredError, TimeoutSampler, TimeoutWatch
13+
from timeout_sampler import TimeoutExpiredError, TimeoutSampler, TimeoutWatch, retry
1414

1515
IPV4_STR = "ipv4"
1616
IPV6_STR = "ipv6"
@@ -329,10 +329,7 @@ def _absent_interface(self):
329329
@property
330330
def status(self):
331331
for condition in self.instance.status.conditions:
332-
if (
333-
condition["type"] == self.Conditions.Type.AVAILABLE
334-
and condition["status"] == self.Condition.Status.TRUE
335-
):
332+
if condition["type"] == self.Conditions.Type.AVAILABLE:
336333
return condition["reason"]
337334

338335
def wait_for_configuration_conditions_unknown_or_progressing(self, wait_timeout=30):
@@ -373,32 +370,31 @@ def _process_failed_status(self, failed_condition_reason):
373370

374371
raise NNCPConfigurationFailed(f"Reason: {failed_condition_reason}\n{last_err_msg}")
375372

373+
def get_available_condition(self):
374+
for condition in self.instance.get("status", {}).get("conditions", []):
375+
if condition["type"] == self.Conditions.Type.AVAILABLE:
376+
return condition
377+
378+
@retry(wait_timeout=120, sleep=5)
376379
def wait_for_status_success(self):
377380
failed_condition_reason = self.Conditions.Reason.FAILED_TO_CONFIGURE
378381
no_match_node_condition_reason = self.Conditions.Reason.NO_MATCHING_NODE
379382

380-
# if we get here too fast there are no conditions, we need to wait.
381-
self.wait_for_configuration_conditions_unknown_or_progressing()
382-
383-
samples = TimeoutSampler(wait_timeout=self.success_timeout, sleep=1, func=lambda: self.status)
384-
try:
385-
for sample in samples:
386-
if sample == self.Conditions.Reason.SUCCESSFULLY_CONFIGURED:
387-
self.logger.info(f"NNCP {self.name} configured Successfully")
388-
return sample
389-
390-
elif sample == no_match_node_condition_reason:
391-
raise NNCPConfigurationFailed(f"{self.name}. Reason: {no_match_node_condition_reason}")
392-
393-
elif sample == failed_condition_reason:
394-
self._process_failed_status(failed_condition_reason=failed_condition_reason)
395-
396-
except (TimeoutExpiredError, NNCPConfigurationFailed):
397-
self.logger.error(
398-
f"Unable to configure NNCP {self.name} "
399-
f"{f'nodes: {[node.name for node in self.nodes]}' if self.nodes else ''}"
400-
)
401-
raise
383+
available_condition = [
384+
condition
385+
for condition in self.instance.get("status", {}).get("conditions", [])
386+
if condition and condition["type"] == self.Conditions.Type.AVAILABLE
387+
]
388+
if available_condition and available_condition[0]["status"] == self.Condition.Status.TRUE:
389+
self.logger.info(f"NNCP {self.name} configured Successfully")
390+
return available_condition
391+
392+
elif available_condition[0]["reason"] == no_match_node_condition_reason:
393+
raise NNCPConfigurationFailed(f"{self.name}. Reason: {no_match_node_condition_reason}")
394+
395+
elif available_condition[0]["reason"] == failed_condition_reason:
396+
self.logger.error(f"Available condition: {available_condition}")
397+
self._process_failed_status(failed_condition_reason=failed_condition_reason)
402398

403399
@property
404400
def nnces(self):

0 commit comments

Comments
 (0)