Commit d6984747 authored by Cristiano Urban's avatar Cristiano Urban
Browse files

Removed 'tape_pool' config param + added getTapePool() method.

parent 34bfa0c6
Loading
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -793,6 +793,26 @@ class DbConnector(object):
        finally:
            self.connPool.putconn(conn, close = False)

    def getTapePool(self, storageId):
        """Returns the tape pool for a given storage id, if the storage is cold. Otherwise it returns 'False'."""
        try:
            conn = self.getConnection()
            cursor = conn.cursor(cursor_factory = RealDictCursor)
            cursor.execute("SELECT tape_pool FROM storage WHERE storage_id = %s;", (storageId,))
            result = cursor.fetchall()
            cursor.close()
        except Exception:
            if not conn.closed:
                conn.rollback()
            raise
        else:
            if result:
                return result[0]["tape_pool"]
            else:
                return False
        finally:
            self.connPool.putconn(conn, close = False)

    ##### Location #####

    def getLocationId(self, destStorageId):
+1 −1
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ class DOIExecutor(TaskExecutor):
                                  1,
                                  self.logger)
        params = config.loadSection("spectrum_archive")
        self.tapePool = params["tape_pool"]
        #self.tapePool = params["tape_pool"]
        self.tapeClient = TapeClient(params["host"],
                                     params.getint("port"),
                                     params["user"],
+10 −5
Original line number Diff line number Diff line
@@ -61,7 +61,6 @@ class StoreExecutor(TaskExecutor):
                                  1,
                                  self.logger)
        params = config.loadSection("spectrum_archive")
        self.tapePool = params["tape_pool"]
        self.tapeClient = TapeClient(params["host"],
                                     params.getint("port"),
                                     params["user"],
@@ -107,10 +106,16 @@ class StoreExecutor(TaskExecutor):
            else:
                self.tapeClient.connect()
                tapePoolList = self.tapeClient.getPoolList()
                self.tapeClient.disconnect()
                try:
                    self.tapePool = self.dbConn.getTapePool(self.storageId)
                except Exception:
                    self.logger.exception("FATAL: unable to obtain the tape pool.")
                    return False
                else:
                    for el in tapePoolList:
                        if el.getName() == self.tapePool:
                            storageFreeSpace = el.getFreeSpace() - 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.")