|
22 | 22 | from .... import config
|
23 | 23 | from ....deploy_manager import DeployManagerBase, KubeEventType
|
24 | 24 | from ....exceptions import ConfigError
|
| 25 | +from ....managed_object import ManagedObject |
25 | 26 | from ....reconcile import ReconciliationResult
|
26 | 27 | from ..filters import FilterManager
|
27 | 28 | from ..leader_election import LeadershipManagerBase
|
@@ -427,9 +428,30 @@ def _create_timer_event_for_request(
|
427 | 428 | log.debug3("Pushing requeue request to timer: %s", future_request)
|
428 | 429 |
|
429 | 430 | return self.timer_thread.put_event(
|
430 |
| - requeue_time, self.push_request, future_request |
| 431 | + requeue_time, self._push_updated_request, future_request |
431 | 432 | )
|
432 | 433 |
|
| 434 | + def _push_updated_request(self, request: ReconcileRequest): |
| 435 | + """_push_updated_request is a helper function to ensure that when submitting a requeue |
| 436 | + event we always fetch the latest resource. |
| 437 | +
|
| 438 | + Args: |
| 439 | + request (ReconcileRequest): The request to push |
| 440 | + """ |
| 441 | + |
| 442 | + success, current_resource = self.deploy_manager.get_object_current_state( |
| 443 | + kind=request.resource.kind, |
| 444 | + api_version=request.resource.api_version, |
| 445 | + name=request.resource.name, |
| 446 | + namespace=request.resource.namespace, |
| 447 | + ) |
| 448 | + if not success: |
| 449 | + log.debug2("Unable to locate resource for requeue request: %s", request) |
| 450 | + return |
| 451 | + |
| 452 | + request.resource = ManagedObject(current_resource) |
| 453 | + self.push_request(request) |
| 454 | + |
433 | 455 | ## Pending Event Helpers ###################################################
|
434 | 456 |
|
435 | 457 | def _handle_pending_reconcile(self, uid: str) -> bool:
|
|
0 commit comments