Skip to content

Commit 128dd84

Browse files
committed
fix(watcher): resource version not updated
1 parent 7f9f9dd commit 128dd84

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

schedule_scaling/main.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,17 +190,17 @@ def scale_hpa(
190190
else:
191191
logging.error("API error patching HPA %s/%s: %s", namespace, name, e)
192192

193-
def process_watch_event(ds: DeploymentStore, event: dict) -> None:
193+
def process_watch_event(ds: DeploymentStore, event: dict) -> str:
194194
obj: dict | V1Deployment = event["object"]
195195
event_type = event["type"]
196196

197197
# some events (e.g. BOOKMARK) return a dict
198198
if isinstance(obj, dict):
199199
last_resource_version = obj["metadata"]["resourceVersion"]
200200
else:
201-
last_resource_version = cast(
201+
last_resource_version = cast(str, cast(
202202
V1ObjectMeta, obj.metadata
203-
).resource_version
203+
).resource_version)
204204
logging.debug(f"watch last_resource_version -> {last_resource_version}")
205205

206206
match event_type:
@@ -228,6 +228,8 @@ def process_watch_event(ds: DeploymentStore, event: dict) -> None:
228228
case _:
229229
logging.debug(f"watch {event_type} {obj}")
230230

231+
return last_resource_version
232+
231233

232234

233235
def watch_deployments(ds: DeploymentStore) -> None:
@@ -259,7 +261,7 @@ def watch_deployments(ds: DeploymentStore) -> None:
259261
logging.warning(f"Skipping non dict event data: {event}")
260262
continue
261263

262-
process_watch_event(ds, event)
264+
last_resource_version = process_watch_event(ds, event)
263265

264266
logging.debug(f"Deployments: {ds.deployments}")
265267

tests/test_unit.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ def ds():
2727
)
2828

2929

30-
def create_mock_event(event_type, name, namespace, annotations=None):
30+
def create_mock_event(
31+
event_type, name, namespace, annotations=None, resource_version="123"
32+
):
3133
"""Helper to create a mock watch event."""
3234
return {
3335
"type": event_type,
@@ -36,7 +38,7 @@ def create_mock_event(event_type, name, namespace, annotations=None):
3638
name=name,
3739
namespace=namespace,
3840
annotations=annotations or {},
39-
resource_version="123",
41+
resource_version=resource_version,
4042
)
4143
),
4244
}
@@ -74,6 +76,19 @@ def test_get_delta_sec_not_triggered():
7476
assert delta == 90
7577

7678

79+
def test_process_event_returns_resource_version(ds):
80+
schedule_json = '[{"schedule": "0 9 * * *", "replicas": 5}]'
81+
event = create_mock_event(
82+
"ADDED",
83+
"app-1",
84+
"default",
85+
{"zalando.org/schedule-actions": schedule_json},
86+
resource_version="12345",
87+
)
88+
89+
assert process_watch_event(ds, event) == "12345"
90+
91+
7792
def test_process_event_added_with_schedule(ds):
7893
schedule_json = '[{"schedule": "0 9 * * *", "replicas": 5}]'
7994
event = create_mock_event(

0 commit comments

Comments
 (0)