contentmonster/classes/vessel.py

48 lines
1.5 KiB
Python
Raw Normal View History

2021-11-20 14:40:07 +00:00
from classes.connection import Connection
2021-11-22 10:14:38 +00:00
from classes.database import Database
from classes.file import File
2021-11-20 14:40:07 +00:00
from paramiko.ssh_exception import SSHException
2021-11-22 10:14:38 +00:00
import pathlib
2021-11-20 14:40:07 +00:00
class Vessel:
@classmethod
def fromConfig(cls, config):
2021-11-22 10:14:38 +00:00
if "TempDir" in config.keys():
tempdir = config["TempDir"]
else:
tempdir = "/tmp/.ContentMonster/"
2021-11-20 14:40:07 +00:00
if "Address" in config.keys():
2021-11-22 10:14:38 +00:00
return cls(config.name.split()[1], config["Address"], pathlib.Path(tempdir))
2021-11-20 14:40:07 +00:00
else:
raise ValueError("Definition for Vessel " + config.name.split()[1] + " does not contain Address!")
2021-11-22 10:14:38 +00:00
def __init__(self, name: str, address: str, tempdir: pathlib.Path):
2021-11-20 14:40:07 +00:00
self.name = name
self.address = address
2021-11-22 10:14:38 +00:00
self.tempdir = tempdir
2021-11-20 14:40:07 +00:00
self._connection = None
2021-11-22 10:14:38 +00:00
self._uploaded = self.getUploadedFromDB()
2021-11-20 14:40:07 +00:00
@property
def connection(self):
if self._connection:
try:
self._connection._listdir()
except SSHException:
self._connection = None
2021-11-22 10:14:38 +00:00
self._connection = self._connection or Connection(self)
return self._connection
def getUploadedFromDB(self):
db = Database()
return db.getCompletionForVessel(self)
def currentUpload(self):
db = Database()
directory, name, _ = db.getFileByUUID(fileuuid := self.connection.getCurrentUploadUUID())
return File(name, directory, fileuuid)
2021-11-20 14:40:07 +00:00
2021-11-22 10:14:38 +00:00
def clearTempDir(self):
return self.connection.clearTempDir()