From: Guillaume Abrioux Date: Tue, 20 Jun 2023 12:33:42 +0000 (+0200) Subject: node-proxy: add new endpoint for flushing the data X-Git-Tag: testing/wip-batrick-testing-20240411.154038~520^2~76 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=6677a6838493d5c6c6600edcf02d17a95f36b965;p=ceph-ci.git node-proxy: add new endpoint for flushing the data Although this is mostly for devel and debug purposes at the moment, it might be useful to be able to flush the data whenever the user needs it. Signed-off-by: Guillaume Abrioux --- diff --git a/src/cephadm/node-proxy/basesystem.py b/src/cephadm/node-proxy/basesystem.py index 1ec6998add2..a56ad7e8f9d 100644 --- a/src/cephadm/node-proxy/basesystem.py +++ b/src/cephadm/node-proxy/basesystem.py @@ -41,3 +41,6 @@ class BaseSystem: def start_client(self) -> None: raise NotImplementedError() + + def flush(self) -> None: + raise NotImplementedError() diff --git a/src/cephadm/node-proxy/redfish_system.py b/src/cephadm/node-proxy/redfish_system.py index 3da45ff11a5..f23e41af79e 100644 --- a/src/cephadm/node-proxy/redfish_system.py +++ b/src/cephadm/node-proxy/redfish_system.py @@ -147,3 +147,15 @@ class RedfishSystem(BaseSystem): log.logger.error(f"Error detected, logging out from redfish api.\n{e}") self.client.logout() raise + + def flush(self) -> None: + log.logger.info("Acquiring lock to flush data.") + self.lock.acquire() + log.logger.info("Lock acquired, flushing data.") + self._system = {} + self.previous_data = {} + log.logger.info("Data flushed.") + self.data_ready = False + log.logger.info("Data marked as not ready.") + self.lock.release() + log.logger.info("Lock released.") diff --git a/src/cephadm/node-proxy/server.py b/src/cephadm/node-proxy/server.py index 5f50ef3a03a..21a3c29b165 100644 --- a/src/cephadm/node-proxy/server.py +++ b/src/cephadm/node-proxy/server.py @@ -160,6 +160,16 @@ class ConfigReload: return 'node-proxy config reloaded' +class Flush: + exposed = True + + def __init__(self, backend: BaseSystem) -> None: + self.backend = backend + + def POST(self) -> str: + self.backend.flush() + return 'node-proxy data flushed' + class API: exposed = True