game-mode: report scaled-to-zero workload active
This commit is contained in:
parent
4392df8d0c
commit
a1e197b4e3
@ -81,7 +81,8 @@ class GameModeService:
|
||||
workloads: list[dict[str, Any]] = []
|
||||
for workload in self._workloads():
|
||||
desired, current = self._replicas(workload)
|
||||
set_game_mode_managed_replicas(workload.namespace, workload.name, desired)
|
||||
effective = desired if desired is not None else current
|
||||
set_game_mode_managed_replicas(workload.namespace, workload.name, effective)
|
||||
workloads.append(
|
||||
{
|
||||
"kind": workload.kind,
|
||||
@ -89,11 +90,12 @@ class GameModeService:
|
||||
"name": workload.name,
|
||||
"desired_replicas": desired,
|
||||
"current_replicas": current,
|
||||
"effective_replicas": effective,
|
||||
"restore_replicas": workload.restore_replicas,
|
||||
}
|
||||
)
|
||||
|
||||
active = bool(workloads) and all(item["desired_replicas"] == 0 for item in workloads)
|
||||
active = bool(workloads) and all(item["effective_replicas"] == 0 for item in workloads)
|
||||
game = self._current_game or "unknown"
|
||||
set_game_mode_state(settings.game_mode_node_name, game, active)
|
||||
return {"status": "active" if active else "idle", "active": active, "node": settings.game_mode_node_name, "game": game, "workloads": workloads}
|
||||
|
||||
@ -70,6 +70,18 @@ def test_game_mode_ignores_invalid_workloads_and_fallback_replicas(monkeypatch)
|
||||
assert status["workloads"][0]["desired_replicas"] is None
|
||||
|
||||
|
||||
def test_game_mode_status_uses_current_when_desired_missing(monkeypatch) -> None:
|
||||
monkeypatch.setattr(game_mode_module, "settings", _settings())
|
||||
monkeypatch.setattr(game_mode_module, "get_json", lambda _path: {"spec": {}, "status": {"replicas": 0}})
|
||||
monkeypatch.setattr(game_mode_module, "set_game_mode_state", lambda *args, **kwargs: None)
|
||||
monkeypatch.setattr(game_mode_module, "set_game_mode_managed_replicas", lambda *args, **kwargs: None)
|
||||
|
||||
status = GameModeService().status()
|
||||
|
||||
assert status["active"] is True
|
||||
assert status["workloads"][0]["effective_replicas"] == 0
|
||||
|
||||
|
||||
def test_game_mode_rejects_unsupported_kind(monkeypatch) -> None:
|
||||
monkeypatch.setattr(game_mode_module, "settings", _settings([{"kind": "Job", "namespace": "x", "name": "y"}]))
|
||||
monkeypatch.setattr(game_mode_module, "record_game_mode_transition", lambda *args, **kwargs: None)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user