From 336cf94eb2314de35a7e1e68c8caaeb731aa35ae Mon Sep 17 00:00:00 2001
From: Cristiano Urban <cristiano.urban@inaf.it>
Date: Fri, 6 Dec 2024 12:28:08 +0100
Subject: [PATCH] IBM Spectrum Protect integration: changed the way how we
 calculate the free space in tape + minor changes.

Signed-off-by: Cristiano Urban <cristiano.urban@inaf.it>
---
 transfer_service/store_executor.py | 13 +++++--------
 transfer_service/tape_client.py    |  2 +-
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/transfer_service/store_executor.py b/transfer_service/store_executor.py
index 1767e24..59aee4f 100644
--- a/transfer_service/store_executor.py
+++ b/transfer_service/store_executor.py
@@ -104,18 +104,15 @@ class StoreExecutor(TaskExecutor):
                 storageFreeSpace = free - self.TOL
                 self.logger.debug(f"storageFreeSpace (hot): {storageFreeSpace} B")
             else:
-                self.tapeClient.connect()
-                tapePoolList = self.tapeClient.getPoolList()
-                self.tapeClient.disconnect()
                 try:
-                    self.tapePool = self.dbConn.getTapePool(self.storageId)
+                    self.tapeHSMFilesystem = self.dbConn.getTapeHSMFilesystem(self.storageId)
                 except Exception:
-                    self.logger.exception("FATAL: unable to obtain the tape pool.")
+                    self.logger.exception("FATAL: unable to obtain the tape HSM filesystem.")
                     return False
                 else:
-                    for el in tapePoolList:
-                        if el.getName() == self.tapePool:
-                            storageFreeSpace = el.getFreeSpace() - self.TOL
+                    self.tapeClient.connect()
+                    storageFreeSpace = self.tapeClient.getHSMFilesystemFreeSpace(self.tapeHSMFilesystem) - self.TOL
+                    self.tapeClient.disconnect()
                     self.logger.debug(f"storageFreeSpace (cold): {storageFreeSpace} B")
             if storageFreeSpace < self.dataSize:
                 self.logger.error("FATAL: space available on the storage point is not enough.")
diff --git a/transfer_service/tape_client.py b/transfer_service/tape_client.py
index d4e3c23..20c9dbb 100644
--- a/transfer_service/tape_client.py
+++ b/transfer_service/tape_client.py
@@ -93,7 +93,7 @@ class TapeClient(object):
             else:
                 raise TapeClientException(cmd, exitCode, stderr)
 
-    def getHSMFileSystemFreeSpace(self, HSMFilesystem):
+    def getHSMFilesystemFreeSpace(self, HSMFilesystem):
         "Returns the free space in bytes for a given HSM filesystem."
         cmd = f"{self.DSMDF} -detail {HSMFilesystem} | grep "Free Size" | awk '{ print $3 }'"
         try:
-- 
GitLab