]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
node-proxy: add new endpoint for flushing the data
authorGuillaume Abrioux <gabrioux@ibm.com>
Tue, 20 Jun 2023 12:33:42 +0000 (14:33 +0200)
committerGuillaume Abrioux <gabrioux@ibm.com>
Thu, 25 Jan 2024 14:52:57 +0000 (14:52 +0000)
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 <gabrioux@ibm.com>
(cherry picked from commit 6677a6838493d5c6c6600edcf02d17a95f36b965)

src/cephadm/node-proxy/basesystem.py
src/cephadm/node-proxy/redfish_system.py
src/cephadm/node-proxy/server.py

index 1ec6998add22aa88a47d1e106aaaa3f155843158..a56ad7e8f9d8d028f1b1a2e50758cbde1a9f57c4 100644 (file)
@@ -41,3 +41,6 @@ class BaseSystem:
 
     def start_client(self) -> None:
         raise NotImplementedError()
+
+    def flush(self) -> None:
+        raise NotImplementedError()
index 3da45ff11a549d7c875e4008b0aaa79dfad645ec..f23e41af79ec83422c59b2bd7ddaafff5e162d19 100644 (file)
@@ -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.")
index 5f50ef3a03ac41c80f5466747fbc8f6eb01998e8..21a3c29b165b6354f7c7dc8fb193df7f73716cd5 100644 (file)
@@ -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