From 250aa22557ce23f2afed6f022ce354a59c124b5a Mon Sep 17 00:00:00 2001 From: Brett Williams Date: Sat, 6 Jun 2026 01:16:53 -0500 Subject: [PATCH] Update proxy to use similar named methods to new API calls --- src/api/api_server.py | 14 ++++++++++++-- src/api/server_proxy.py | 20 ++++++++++---------- src/distributed_job_manager.py | 2 +- src/ui/add_job_window.py | 8 ++++---- src/ui/engine_browser.py | 4 ++-- src/ui/settings_window.py | 4 ++-- 6 files changed, 31 insertions(+), 21 deletions(-) diff --git a/src/api/api_server.py b/src/api/api_server.py index 8c6d0d9..ad768c9 100755 --- a/src/api/api_server.py +++ b/src/api/api_server.py @@ -441,8 +441,18 @@ def get_engines_info(): return engine_data +@server.get('/api/engines/names') +def get_engine_names(): + result = [] + for engine_class in EngineManager.supported_engines(): + data = EngineManager.all_version_data_for_engine(engine_class.name()) + if data: + result.append(engine_class.name()) + return result + + @server.get('/api/engines/') -def get_engine_info(engine_name): +def get_engine(engine_name): try: response_type = _validated_engine_response_type() engine_class = EngineManager.engine_class_with_name(engine_name) @@ -454,7 +464,7 @@ def get_engine_info(engine_name): @server.get('/api//is_available') -def is_engine_available(engine_name): +def get_engine_availability(engine_name): return {'engine': engine_name, 'available': RenderQueue.is_available_for_job(engine_name), 'cpu_count': int(psutil.cpu_count(logical=False)), 'versions': EngineManager.all_version_data_for_engine(engine_name), diff --git a/src/api/server_proxy.py b/src/api/server_proxy.py index 21ad357..6ff7e17 100644 --- a/src/api/server_proxy.py +++ b/src/api/server_proxy.py @@ -257,15 +257,15 @@ class RenderServerProxy: response = self.request(f'engine_for_filename?filename={os.path.basename(filename)}', timeout) return response.text - def get_installed_engines(self, timeout=5): - return self.get_all_engine_info(timeout=timeout) - - def is_engine_available(self, engine_name:str, timeout=5): + def get_engine_availability(self, engine_name:str, timeout=5): return self.request_data(f'{engine_name}/is_available', timeout) - def get_all_engine_info(self, response_type='standard', timeout=5): + def get_engine_names(self, timeout=5): + return self.request_data('engines/names', timeout=timeout) + + def get_engines(self, response_type='standard', timeout=5): """ - Fetches all engine information from the server. + Fetches engine information from the server. Args: response_type (str, optional): Returns standard or full version of engine info @@ -277,7 +277,7 @@ class RenderServerProxy: all_data = self.request_data(f'engines?response_type={response_type}', timeout=timeout) return all_data - def get_engine_info(self, engine_name:str, response_type='standard', timeout=5): + def get_engine(self, engine_name:str, response_type='standard', timeout=5): """ Fetches specific engine information from the server. @@ -291,9 +291,9 @@ class RenderServerProxy: """ return self.request_data(f'engines/{engine_name}?response_type={response_type}', timeout) - def delete_engine(self, engine_name:str, version:str, system_os=None, cpu=None): + def delete_engine_download(self, engine_name:str, version:str, system_os=None, cpu=None): """ - Sends a request to the server to delete a specific engine. + Sends a request to the server to delete a specific engine download. Args: engine_name (str): The name of the engine to delete. @@ -305,7 +305,7 @@ class RenderServerProxy: Response: The response from the server. """ form_data = {'engine': engine_name, 'version': version, 'system_os': system_os, 'cpu': cpu} - return requests.post(f'http://{self.hostname}:{self.port}/api/delete_engine', json=form_data) + return self._post('delete_engine', json=form_data) # -------------------------------------------- # Download Files: diff --git a/src/distributed_job_manager.py b/src/distributed_job_manager.py index c9198b2..98aa1c0 100644 --- a/src/distributed_job_manager.py +++ b/src/distributed_job_manager.py @@ -276,7 +276,7 @@ class DistributedJobManager: host_properties = ZeroconfServer.get_hostname_properties(hostname) if host_properties.get('api_version') == API_VERSION: if not system_os or (system_os and system_os == host_properties.get('system_os')): - response = RenderServerProxy(hostname).is_engine_available(engine_name) + response = RenderServerProxy(hostname).get_engine_availability(engine_name) if response and response.get('available', False): found_available_servers.append(response) diff --git a/src/ui/add_job_window.py b/src/ui/add_job_window.py index 1e73688..0da814f 100644 --- a/src/ui/add_job_window.py +++ b/src/ui/add_job_window.py @@ -66,7 +66,7 @@ class NewRenderJobForm(QWidget): # Job / Server Data self.server_proxy = RenderServerProxy(socket.gethostname()) self.project_info = None - self.installed_engines = {} + self.installed_engines = [] self.preferred_engine = None # Setup @@ -345,7 +345,7 @@ class NewRenderJobForm(QWidget): self.engine_version_combo.addItem('latest') self.file_format_combo.clear() if current_engine: - engine_info = self.server_proxy.get_engine_info(current_engine, 'full', timeout=10) + engine_info = self.server_proxy.get_engine(current_engine, 'full', timeout=10) self.current_engine_options = engine_info.get('options', []) if not engine_info: raise FileNotFoundError(f"Cannot get information about engine '{current_engine}'") @@ -404,7 +404,7 @@ class NewRenderJobForm(QWidget): """Called by the GetProjectInfoWorker - Do not call directly.""" try: - self.engine_type.addItems(self.installed_engines.keys()) + self.engine_type.addItems(self.installed_engines) self.engine_type.setCurrentText(self.preferred_engine) self.engine_changed() @@ -633,7 +633,7 @@ class GetProjectInfoWorker(QThread): def run(self): try: # get the engine info and add them all to the ui - self.window.installed_engines = self.window.server_proxy.get_installed_engines() + self.window.installed_engines = self.window.server_proxy.get_engine_names() # select the best engine for the file type self.window.preferred_engine = self.window.server_proxy.get_engine_for_filename(self.project_path) diff --git a/src/ui/engine_browser.py b/src/ui/engine_browser.py index bf60f78..37c0cf7 100644 --- a/src/ui/engine_browser.py +++ b/src/ui/engine_browser.py @@ -93,7 +93,7 @@ class EngineBrowserWindow(QMainWindow): def update_table(self): def update_table_worker(): - raw_server_data = RenderServerProxy(self.hostname).get_all_engine_info() + raw_server_data = RenderServerProxy(self.hostname).get_engines() if not raw_server_data: return @@ -158,7 +158,7 @@ class EngineBrowserWindow(QMainWindow): if reply is not QMessageBox.StandardButton.Yes: return - result = RenderServerProxy(self.hostname).delete_engine( + result = RenderServerProxy(self.hostname).delete_engine_download( engine_info['engine'], engine_info['version'], engine_info.get('system_os'), engine_info.get('cpu'), ) if result.ok: diff --git a/src/ui/settings_window.py b/src/ui/settings_window.py index 9734e67..f10465a 100644 --- a/src/ui/settings_window.py +++ b/src/ui/settings_window.py @@ -37,7 +37,7 @@ class GetEngineInfoWorker(QThread): self.parent = parent def run(self): - data = RenderServerProxy(socket.gethostname()).get_all_engine_info() + data = RenderServerProxy(socket.gethostname()).get_engines() self.done.emit(data) class SettingsWindow(QMainWindow): @@ -549,4 +549,4 @@ if __name__ == "__main__": app = QApplication([]) window = SettingsWindow() window.show() - app.exec() \ No newline at end of file + app.exec()