From 6677a6838493d5c6c6600edcf02d17a95f36b965 Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Tue, 20 Jun 2023 14:33:42 +0200 Subject: [PATCH] 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 --- src/cephadm/node-proxy/basesystem.py | 3 +++ src/cephadm/node-proxy/redfish_system.py | 12 ++++++++++++ src/cephadm/node-proxy/server.py | 10 ++++++++++ 3 files changed, 25 insertions(+) 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 -- 2.39.5