From de0e09af9da8fa6c10f632abdf9437d5f997bba9 Mon Sep 17 00:00:00 2001 From: IluaAir Date: Thu, 12 Mar 2026 20:13:02 +0300 Subject: [PATCH] Add node refresh functionality to NodeView - Implemented a private `_updater` method to fetch the next node's status. - Added `last_status` and `last_check` properties to retrieve the latest node status and check time. - Introduced a `refresh` property to update the node status and handle errors appropriately. --- oxi/view.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/oxi/view.py b/oxi/view.py index da8adc2..b42e5ed 100644 --- a/oxi/view.py +++ b/oxi/view.py @@ -14,6 +14,11 @@ class NodeView: self._base_url = base_url self._data = data + def _updater(self) -> None: + response = self._session.get(f"{self._base_url}/node/next/{self.full_name}") + response.raise_for_status() + return response.status_code + @property def ip(self): return self._data.get("ip") @@ -30,6 +35,21 @@ class NodeView: def model(self): return self._data.get("model") + @property + def last_status(self): + return self._data.get("last").get("status") + + @property + def last_check(self): + return self._data.get("last").get("start") + + @property + def refresh(self): + result = self._updater() + if result != 200: + raise ValueError(f"Failed to refresh node {self.full_name}") + return "OK" + @cached_property def config(self): return NodeConfig(self._session, self.full_name, self.model, self._base_url)