mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
* Add is_engine_available_to_download API call * Fix issue with worker never throwing error if engine is not found * Add API call to get most recent engine version * Fix some minor import issues * Fix web urls * Fix default server log level * Add progress bar for project download worker_factory downloads missing engine versions * Better error handling when invalid version is given * Add timeouts to engine downloaders
This commit is contained in:
@@ -15,6 +15,11 @@ logger = logging.getLogger()
|
||||
class EngineManager:
|
||||
|
||||
engines_path = "~/zordon-uploads/engines"
|
||||
downloader_classes = {
|
||||
"blender": BlenderDownloader,
|
||||
"ffmpeg": FFMPEGDownloader,
|
||||
# Add more engine types and corresponding downloader classes as needed
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def supported_engines(cls):
|
||||
@@ -99,6 +104,20 @@ class EngineManager:
|
||||
def system_cpu():
|
||||
return platform.machine().lower().replace('amd64', 'x64')
|
||||
|
||||
@classmethod
|
||||
def version_is_available_to_download(cls, engine, version, system_os=None, cpu=None):
|
||||
try:
|
||||
return cls.downloader_classes[engine].version_is_available_to_download(version, system_os, cpu)
|
||||
except Exception as e:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def find_most_recent_version(cls, engine, system_os, cpu, lts_only=False):
|
||||
try:
|
||||
return cls.downloader_classes[engine].find_most_recent_version(system_os, cpu)
|
||||
except Exception as e:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def download_engine(cls, engine, version, system_os=None, cpu=None):
|
||||
existing_download = cls.has_engine_version(engine, version, system_os, cpu)
|
||||
@@ -107,20 +126,15 @@ class EngineManager:
|
||||
return existing_download
|
||||
|
||||
logger.info(f"Requesting download of {engine} {version}")
|
||||
downloader_classes = {
|
||||
"blender": BlenderDownloader,
|
||||
"ffmpeg": FFMPEGDownloader,
|
||||
# Add more engine types and corresponding downloader classes as needed
|
||||
}
|
||||
|
||||
# Check if the provided engine type is valid
|
||||
if engine not in downloader_classes:
|
||||
if engine not in cls.downloader_classes:
|
||||
logger.error("No valid engine found")
|
||||
return
|
||||
|
||||
# Get the appropriate downloader class based on the engine type
|
||||
downloader_classes[engine].download_engine(version, download_location=cls.engines_path,
|
||||
system_os=system_os, cpu=cpu)
|
||||
cls.downloader_classes[engine].download_engine(version, download_location=cls.engines_path,
|
||||
system_os=system_os, cpu=cpu, timeout=300)
|
||||
|
||||
# Check that engine was properly downloaded
|
||||
found_engine = cls.has_engine_version(engine, version, system_os, cpu)
|
||||
|
||||
Reference in New Issue
Block a user