From 158e96c7c2ddf4c874719d50b38e1b6f95d954ba Mon Sep 17 00:00:00 2001 From: Cristiano Urban Date: Fri, 12 Mar 2021 09:59:11 +0100 Subject: [PATCH] Enabled md5sum files recall test from tape. Signed-off-by: Cristiano Urban --- transfer_service/import_amqp_server.py | 6 +++-- transfer_service/tape_client.py | 33 ++++++++++++++++++-------- transfer_service/vos_ts.conf | 7 ++++-- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/transfer_service/import_amqp_server.py b/transfer_service/import_amqp_server.py index 095d3c2..935e801 100644 --- a/transfer_service/import_amqp_server.py +++ b/transfer_service/import_amqp_server.py @@ -89,8 +89,10 @@ class ImportAMQPServer(AMQPServer): self.dbConn.disconnect() return response else: - #if storageType == "cold": - # self.tapeClient.recallCheksumFiles(self.path) + if storageType == "cold": + self.tapeClient.connect() + self.tapeClient.recallChecksumFiles(self.path) + self.tapeClient.disconnect() [ dirs, files ] = self.systemUtils.scanRecursive(os.path.dirname(self.path)) diff --git a/transfer_service/tape_client.py b/transfer_service/tape_client.py index f6bf6c1..14c7776 100644 --- a/transfer_service/tape_client.py +++ b/transfer_service/tape_client.py @@ -5,28 +5,33 @@ import scp import sys import uuid +from config import Config from tape_task import TapeTask class TapeClient(object): # Constructor - def __init__(self, host, port, user, password): - self.host = host - self.port = port - self.user = user - self.password = password + def __init__(self): + config = Config("vos_ts.conf") + self.params = config.loadSection("spectrum_archive") + self.host = self.params["host"] + self.port = self.params.getint("port") + self.user = self.params["user"] + self.keyFile = self.params["pkey_file_path"] + self.key = paramiko.RSAKey.from_private_key_file(keyFile) self.client = paramiko.SSHClient() self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + self.client.load_system_host_keys() self.scp = None self.taskList = [] # Connects to the tape library frontend def connect(self): - self.client.connect(self.host, - self.port, - self.user, - self.password) + self.client.connect(hostname = self.host, + port = self.port, + username = self.user, + pkey = self.key) # Returns the whole task list def getTaskList(self): @@ -78,7 +83,15 @@ class TapeClient(object): def recallChecksumFiles(self, dirName): cmd = "find $(dirname " + dirName + ") -type f \( -iname \"*-md5sum.txt\" \) | eeadm recall" - stdin, stdout, stderr = self.client.exec_command(cmd) + stdin, stdout, stderr = self.client.exec_command(cmd) + exitCode = stdout.channel.recv_exit_status() + out = open("tape_client_log.txt", "a") + out.write(f"exitCode: {exitCode}\n") + out.close() + if exitCode: + return False + else: + return True # Closes the connection def disconnect(self): diff --git a/transfer_service/vos_ts.conf b/transfer_service/vos_ts.conf index 74fa972..00bec09 100644 --- a/transfer_service/vos_ts.conf +++ b/transfer_service/vos_ts.conf @@ -34,10 +34,13 @@ port = 5672 # Spectrum Archive [spectrum_archive] ; hostname or IP address of the tape library frontend -host = 192.168.56.101 +host = tape-fe.ia2.inaf.it +; SSH port port = 22 +; login user user = root -password = ibm +; SSH private key file absolute path +pkey_file_path = /home/transfer_service/tape/tape_rsa ############################ -- GitLab