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: v18.2.4~314^2~77 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=1dcb8c7948caec1955ff0c7431419405b663ae37;p=ceph.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 (cherry picked from commit 6677a6838493d5c6c6600edcf02d17a95f36b965) --- diff --git a/src/cephadm/node-proxy/basesystem.py b/src/cephadm/node-proxy/basesystem.py index 1ec6998add22a..a56ad7e8f9d8d 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 3da45ff11a549..f23e41af79ec8 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 5f50ef3a03ac4..21a3c29b165b6 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